Build Information
Successful build of Mixpanel, reference 7.1.0 (38e63d), with Swift 6.1 for macOS (SPM) on 1 Nov 2026 11:09:52 UTC.
Swift 6 data race errors: 11
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCapturesBuild Log
544 | }
545 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:543:51: warning: capture of 'completion' with non-sendable type '((Bool) -> Void)?' in a '@Sendable' closure
541 | // Dispatch fetch trigger to allow caller to continue
542 | trackingQueue.async { [weak self] in
543 | self?._fetchFlagsIfNeeded(completion: completion)
| |- warning: capture of 'completion' with non-sendable type '((Bool) -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
544 | }
545 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:564:30: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
405 | // --- FeatureFlagManager Class ---
406 |
407 | class FeatureFlagManager: MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
408 |
409 | weak var delegate: MixpanelFlagDelegate? {
:
562 | func reset(completion: (() -> Void)? = nil) {
563 | trackingQueue.async { [weak self] in
564 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
565 | completion?()
566 | return
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:565:17: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
563 | trackingQueue.async { [weak self] in
564 | guard let self = self else {
565 | completion?()
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
566 | return
567 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:605:13: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
405 | // --- FeatureFlagManager Class ---
406 |
407 | class FeatureFlagManager: MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
408 |
409 | weak var delegate: MixpanelFlagDelegate? {
:
603 | }
604 | trackingQueue.async { [weak self] in
605 | self?._fetchFlagsIfNeeded { _ in
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
606 | completion()
607 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:606:17: warning: capture of 'completion' with non-sendable type '() -> Void' in a '@Sendable' closure
604 | trackingQueue.async { [weak self] in
605 | self?._fetchFlagsIfNeeded { _ in
606 | completion()
| |- warning: capture of 'completion' with non-sendable type '() -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
607 | }
608 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:606:17: warning: capture of 'completion' with non-sendable type '() -> Void' in an isolated closure; this is an error in the Swift 6 language mode
604 | trackingQueue.async { [weak self] in
605 | self?._fetchFlagsIfNeeded { _ in
606 | completion()
| |- warning: capture of 'completion' with non-sendable type '() -> Void' in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
607 | }
608 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:690:30: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
405 | // --- FeatureFlagManager Class ---
406 |
407 | class FeatureFlagManager: MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
408 |
409 | weak var delegate: MixpanelFlagDelegate? {
:
688 | ) {
689 | trackingQueue.async { [weak self] in
690 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
691 |
692 | var flagVariant: MixpanelFlagVariant?
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:731:45: warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in a '@Sendable' closure
33 |
34 | // Represents the variant associated with a feature flag
35 | public struct MixpanelFlagVariant: Decodable {
| `- note: consider making struct 'MixpanelFlagVariant' conform to the 'Sendable' protocol
36 | public let key: String // Corresponds to 'variant_key' from API
37 | public let value: Any? // Corresponds to 'variant_value' from API
:
729 | // the fallback as `.flagNotFound` — same treatment the sync impl applies
730 | // in _getVariantSyncImpl.
731 | let result = flagVariant ?? fallback.withSource(.fallback(reason: .flagNotFound))
| `- warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in a '@Sendable' closure
732 | if flagVariant != nil, needsTrackingCheck {
733 | // Perform atomic check-and-track
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:736:44: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in a '@Sendable' closure
734 | self._trackFlagIfNeeded(flagName: flagName, variant: result)
735 | }
736 | DispatchQueue.main.async { completion(result) }
| |- warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
737 |
738 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:731:45: warning: implicit capture of 'fallback' requires that 'MixpanelFlagVariant' conforms to 'Sendable'; this is an error in the Swift 6 language mode
33 |
34 | // Represents the variant associated with a feature flag
35 | public struct MixpanelFlagVariant: Decodable {
| `- note: consider making struct 'MixpanelFlagVariant' conform to the 'Sendable' protocol
36 | public let key: String // Corresponds to 'variant_key' from API
37 | public let value: Any? // Corresponds to 'variant_value' from API
:
729 | // the fallback as `.flagNotFound` — same treatment the sync impl applies
730 | // in _getVariantSyncImpl.
731 | let result = flagVariant ?? fallback.withSource(.fallback(reason: .flagNotFound))
| `- warning: implicit capture of 'fallback' requires that 'MixpanelFlagVariant' conforms to 'Sendable'; this is an error in the Swift 6 language mode
732 | if flagVariant != nil, needsTrackingCheck {
733 | // Perform atomic check-and-track
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:756:42: warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in an isolated closure; this is an error in the Swift 6 language mode
33 |
34 | // Represents the variant associated with a feature flag
35 | public struct MixpanelFlagVariant: Decodable {
| `- note: consider making struct 'MixpanelFlagVariant' conform to the 'Sendable' protocol
36 | public let key: String // Corresponds to 'variant_key' from API
37 | public let value: Any? // Corresponds to 'variant_value' from API
:
754 | // (e.g., the OpenFeature wrapper) can surface a backend/general error
755 | // rather than a not-ready state.
756 | let result = fallback.withSource(.fallback(reason: .backendError))
| `- warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in an isolated closure; this is an error in the Swift 6 language mode
757 | DispatchQueue.main.async { completion(result) }
758 | return
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:757:56: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
755 | // rather than a not-ready state.
756 | let result = fallback.withSource(.fallback(reason: .backendError))
757 | DispatchQueue.main.async { completion(result) }
| |- warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
758 | return
759 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:751:39: warning: capture of 'self' with non-sendable type 'FeatureFlagManager' in a '@Sendable' closure
405 | // --- FeatureFlagManager Class ---
406 |
407 | class FeatureFlagManager: MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
408 |
409 | weak var delegate: MixpanelFlagDelegate? {
:
749 | // variant from `flags` if present (persisted or network) else the fallback.
750 | self.trackingQueue.async {
751 | if !fetchOk, !self.areFlagsReady() {
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager' in a '@Sendable' closure
752 | // Fetch failed and we have no cached/persisted flags to fall back on —
753 | // distinguish this from "flags never loaded" (.notReady) so callers
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:756:42: warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in a '@Sendable' closure
33 |
34 | // Represents the variant associated with a feature flag
35 | public struct MixpanelFlagVariant: Decodable {
| `- note: consider making struct 'MixpanelFlagVariant' conform to the 'Sendable' protocol
36 | public let key: String // Corresponds to 'variant_key' from API
37 | public let value: Any? // Corresponds to 'variant_value' from API
:
754 | // (e.g., the OpenFeature wrapper) can surface a backend/general error
755 | // rather than a not-ready state.
756 | let result = fallback.withSource(.fallback(reason: .backendError))
| `- warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in a '@Sendable' closure
757 | DispatchQueue.main.async { completion(result) }
758 | return
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:757:56: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in a '@Sendable' closure
755 | // rather than a not-ready state.
756 | let result = fallback.withSource(.fallback(reason: .backendError))
757 | DispatchQueue.main.async { completion(result) }
| |- warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
758 | return
759 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:826:30: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
405 | // --- FeatureFlagManager Class ---
406 |
407 | class FeatureFlagManager: MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
408 |
409 | weak var delegate: MixpanelFlagDelegate? {
:
824 | func getAllVariants(completion: @escaping ([String: MixpanelFlagVariant]) -> Void) {
825 | trackingQueue.async { [weak self] in
826 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
827 | DispatchQueue.main.async { completion([:]) }
828 | return
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:827:44: warning: capture of 'completion' with non-sendable type '([String : MixpanelFlagVariant]) -> Void' in a '@Sendable' closure
825 | trackingQueue.async { [weak self] in
826 | guard let self = self else {
827 | DispatchQueue.main.async { completion([:]) }
| |- warning: capture of 'completion' with non-sendable type '([String : MixpanelFlagVariant]) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
828 | return
829 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:859:48: warning: capture of 'completion' with non-sendable type '([String : MixpanelFlagVariant]) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
857 | MixpanelLogger.debug(message: "Flags not yet servable, attempting fetch for getAllVariants...")
858 | self._fetchFlagsIfNeeded { _ in
859 | DispatchQueue.main.async { completion(self._getAllVariantsSyncImpl()) }
| |- warning: capture of 'completion' with non-sendable type '([String : MixpanelFlagVariant]) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
860 | }
861 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:1565:21: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
405 | // --- FeatureFlagManager Class ---
406 |
407 | class FeatureFlagManager: MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
408 |
409 | weak var delegate: MixpanelFlagDelegate? {
:
1563 | DispatchQueue.global(qos: .userInitiated).async { [weak self] in
1564 | // Record to backend (fire-and-forget)
1565 | self?.recordFirstTimeEvent(
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
1566 | flagId: pendingEvent.flagId,
1567 | projectId: pendingEvent.projectId,
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:1566:33: warning: capture of 'pendingEvent' with non-sendable type 'PendingFirstTimeEvent' in a '@Sendable' closure
166 |
167 | /// Represents a pending first-time event definition from the flags endpoint
168 | struct PendingFirstTimeEvent: Decodable {
| `- note: consider making struct 'PendingFirstTimeEvent' conform to the 'Sendable' protocol
169 | let flagKey: String
170 | let flagId: String
:
1564 | // Record to backend (fire-and-forget)
1565 | self?.recordFirstTimeEvent(
1566 | flagId: pendingEvent.flagId,
| `- warning: capture of 'pendingEvent' with non-sendable type 'PendingFirstTimeEvent' in a '@Sendable' closure
1567 | projectId: pendingEvent.projectId,
1568 | firstTimeEventHash: pendingEvent.firstTimeEventHash,
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:1265:13: warning: sending 'handlers' risks causing data races; this is an error in the Swift 6 language mode
1263 |
1264 | DispatchQueue.main.async {
1265 | handlers.forEach { $0(success) }
| |- warning: sending 'handlers' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'handlers' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
1266 | }
1267 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:875:17: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
873 | // Dispatch completion to main queue to avoid potential deadlock
874 | DispatchQueue.main.async {
875 | completion?(false)
| |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
876 | }
877 | return // Exit method
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:1420:13: warning: sending 'delegate' risks causing data races; this is an error in the Swift 6 language mode
1418 | // Dispatch delegate call asynchronously to main thread for safety
1419 | DispatchQueue.main.async {
1420 | delegate.track(event: "$experiment_started", properties: properties)
| |- warning: sending 'delegate' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'delegate' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
1421 | MixpanelLogger.debug(message: "Tracked $experiment_started for \(flagName) (dispatched to main)")
1422 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:859:48: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
857 | MixpanelLogger.debug(message: "Flags not yet servable, attempting fetch for getAllVariants...")
858 | self._fetchFlagsIfNeeded { _ in
859 | DispatchQueue.main.async { completion(self._getAllVariantsSyncImpl()) }
| |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
860 | }
861 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:859:59: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
857 | MixpanelLogger.debug(message: "Flags not yet servable, attempting fetch for getAllVariants...")
858 | self._fetchFlagsIfNeeded { _ in
859 | DispatchQueue.main.async { completion(self._getAllVariantsSyncImpl()) }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
860 | }
861 | }
[44/50] Compiling Mixpanel MixpanelInstance.swift
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:387:43: warning: 'trackAutomaticEvents' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
385 | flushInterval: options.flushInterval,
386 | name: options.instanceName ?? options.token,
387 | trackAutomaticEvents: options.trackAutomaticEvents,
| `- warning: 'trackAutomaticEvents' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
388 | optOutTrackingByDefault: options.optOutTrackingByDefault,
389 | useUniqueDistinctId: options.useUniqueDistinctId,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:476:9: warning: 'trackAutomaticEventsEnabled' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
474 | self.apiToken = apiToken
475 | }
476 | trackAutomaticEventsEnabled = trackAutomaticEvents
| `- warning: 'trackAutomaticEventsEnabled' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
477 | // Capture UI properties (screen size) that require main thread access.
478 | // This is called here to ensure $ae_first_open event includes screen size.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:979:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
977 | if hasOptedOutTracking() {
978 | if let completion = completion {
979 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
980 | }
981 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:986:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
984 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
985 | if let completion = completion {
986 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
987 | }
988 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1042:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1040 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
1041 | if let completion = completion {
1042 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1043 | }
1044 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:991:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
989 | }
990 | trackingQueue.async { [weak self, distinctId, usePeople] in
991 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
992 |
993 | // If there's no anonymousId assigned yet, that means distinctId is stored in the storage. Assigning already stored
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1041:33: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1039 | alias: self.alias,
1040 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
1041 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1042 | DispatchQueue.main.async(execute: completion)
1043 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1080:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1078 | if hasOptedOutTracking() {
1079 | if let completion = completion {
1080 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1081 | }
1082 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1088:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1086 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
1087 | if let completion = completion {
1088 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1089 | }
1090 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1096:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1094 | MixpanelLogger.error(message: "\(self) create alias called with empty alias")
1095 | if let completion = completion {
1096 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1097 | }
1098 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1105:59: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1103 | guard let self = self else {
1104 | if let completion = completion {
1105 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1106 | }
1107 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1149:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1147 | message: "alias: \(alias) matches distinctId: \(distinctId) - skipping api call.")
1148 | if let completion = completion {
1149 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1150 | }
1151 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1103:34: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1101 | if alias != distinctId {
1102 | trackingQueue.async { [weak self, alias] in
1103 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1104 | if let completion = completion {
1105 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1104:41: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1102 | trackingQueue.async { [weak self, alias] in
1103 | guard let self = self else {
1104 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1105 | DispatchQueue.main.async(execute: completion)
1106 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1199:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1197 | let fireUserCompletion: () -> Void = {
1198 | if let completion = completion {
1199 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1200 | }
1201 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1167:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1165 | flush()
1166 | trackingQueue.async { [weak self] in
1167 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1168 | return
1169 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1198:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1196 | let flagManager = self.flags as? FeatureFlagManager
1197 | let fireUserCompletion: () -> Void = {
1198 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1199 | DispatchQueue.main.async(execute: completion)
1200 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1198:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in an isolated closure; this is an error in the Swift 6 language mode
1196 | let flagManager = self.flags as? FeatureFlagManager
1197 | let fireUserCompletion: () -> Void = {
1198 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1199 | DispatchQueue.main.async(execute: completion)
1200 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1312:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1310 | if hasOptedOutTracking() {
1311 | if let completion = completion {
1312 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1313 | }
1314 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1319:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1317 | guard let self = self else {
1318 | if let completion = completion {
1319 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1320 | }
1321 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1317:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1315 | }
1316 | trackingQueue.async { [weak self, completion] in
1317 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1318 | if let completion = completion {
1319 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1318:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1316 | trackingQueue.async { [weak self, completion] in
1317 | guard let self = self else {
1318 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1319 | DispatchQueue.main.async(execute: completion)
1320 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1354:47: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1352 | isFlushing = false
1353 | if let completion = completion {
1354 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1355 | }
1356 | if hasPendingFlush {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1387:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1385 | guard let self = self else {
1386 | if let completion = completion {
1387 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1388 | }
1389 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1395:59: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1393 | guard let self = self else {
1394 | if let completion = completion {
1395 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1396 | }
1397 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1385:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1383 |
1384 | networkQueue.async { [weak self] in
1385 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1386 | if let completion = completion {
1387 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1386:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1384 | networkQueue.async { [weak self] in
1385 | guard let self = self else {
1386 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1387 | DispatchQueue.main.async(execute: completion)
1388 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1391:41: warning: capture of 'batch' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1389 | return
1390 | }
1391 | let result = self.sendBatch(batch, type: type)
| `- warning: capture of 'batch' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1392 | self.trackingQueue.async { [weak self] in
1393 | guard let self = self else {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1393:34: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1391 | let result = self.sendBatch(batch, type: type)
1392 | self.trackingQueue.async { [weak self] in
1393 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1394 | if let completion = completion {
1395 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1394:41: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1392 | self.trackingQueue.async { [weak self] in
1393 | guard let self = self else {
1394 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1395 | DispatchQueue.main.async(execute: completion)
1396 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1459:23: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1457 |
1458 | trackingQueue.async { [weak self, event, properties, epochInterval] in
1459 | guard let self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1460 | return
1461 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1482:29: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1480 | let timedEventsSnapshot = self.trackInstance.track(
1481 | event: event,
1482 | properties: properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1483 | timedEvents: shadowTimedEvents,
1484 | superProperties: shadowSuperProperties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1614:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1612 | let startTime = Date().timeIntervalSince1970
1613 | trackingQueue.async { [weak self, startTime, event] in
1614 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1615 | let timedEvents = self.trackInstance.time(
1616 | event: event, timedEvents: self.timedEvents, startTime: startTime)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1646:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1644 | public func clearTimedEvents() {
1645 | trackingQueue.async { [weak self] in
1646 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1647 | self.readWriteLock.write {
1648 | self.timedEvents = InternalProperties()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1662:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1660 | public func clearTimedEvent(event: String) {
1661 | trackingQueue.async { [weak self, event] in
1662 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1663 |
1664 | let updatedTimedEvents = self.trackInstance.clearTimedEvent(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1688:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1686 | public func clearSuperProperties() {
1687 | trackingQueue.async { [weak self] in
1688 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1689 | self.superProperties = self.trackInstance.clearSuperProperties(self.superProperties)
1690 | MixpanelPersistence.saveSuperProperties(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1708:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1706 | public func registerSuperProperties(_ properties: Properties) {
1707 | trackingQueue.async { [weak self] in
1708 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1709 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(
1710 | properties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1710:17: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1708 | guard let self = self else { return }
1709 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(
1710 | properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1711 | superProperties: self.superProperties)
1712 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1737:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1735 | ) {
1736 | trackingQueue.async { [weak self] in
1737 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1738 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(
1739 | properties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1739:17: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1737 | guard let self = self else { return }
1738 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(
1739 | properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1740 | superProperties: self.superProperties,
1741 | defaultValue: defaultValue)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1741:31: warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1739 | properties,
1740 | superProperties: self.superProperties,
1741 | defaultValue: defaultValue)
| `- warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1742 | self.readWriteLock.write {
1743 | self.superProperties = updatedSuperProperties
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1767:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1765 | public func unregisterSuperProperty(_ propertyName: String) {
1766 | trackingQueue.async { [weak self] in
1767 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1768 | let updatedSuperProperties = self.trackInstance.unregisterSuperProperty(
1769 | propertyName,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1790:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1788 | ) {
1789 | trackingQueue.async { [weak self] in
1790 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1791 | var superPropertiesShadow = self.superProperties
1792 | self.trackInstance.updateSuperProperty(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1793:17: warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
1791 | var superPropertiesShadow = self.superProperties
1792 | self.trackInstance.updateSuperProperty(
1793 | update,
| |- warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1794 | superProperties: &superPropertiesShadow)
1795 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1909:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1907 | public func optOutTracking() {
1908 | trackingQueue.async { [weak self] in
1909 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1910 | if self.people.distinctId != nil {
1911 | self.people.deleteUser()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1968:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1966 | public func optInTracking(distinctId: String? = nil, properties: Properties? = nil) {
1967 | trackingQueue.async { [weak self] in
1968 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1969 | self.readWriteLock.write {
1970 | self.optOutStatus = false
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1978:54: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1976 | self.identify(distinctId: distinctId)
1977 | }
1978 | self.track(event: "$opt_in", properties: properties)
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1979 |
1980 | #if os(iOS) && !targetEnvironment(macCatalyst)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:60:24: warning: static property 'loggers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
58 |
59 | public class MixpanelLogger {
60 | private static var loggers = [MixpanelLogging]()
| |- warning: static property 'loggers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'loggers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'loggers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:61:24: warning: static property 'enabledLevels' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
59 | public class MixpanelLogger {
60 | private static var loggers = [MixpanelLogging]()
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
| |- warning: static property 'enabledLevels' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enabledLevels' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'enabledLevels' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
63 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:62:24: warning: static property 'readWriteLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
60 | private static var loggers = [MixpanelLogging]()
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
| |- warning: static property 'readWriteLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'readWriteLock' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
63 |
64 | /// Add a `MixpanelLogging` object to receive all log messages
/Users/admin/builder/spi-builder-workspace/Sources/ReadWriteLock.swift:10:7: note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | class ReadWriteLock {
| `- note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
11 | private let concurrentQueue: DispatchQueue
12 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:73:23: warning: result of call to 'write(closure:)' is unused
71 | /// Enable log messages of a specific `LogLevel` to be added to the log
72 | class func enableLevel(_ level: MixpanelLogLevel) {
73 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
74 | enabledLevels.insert(level)
75 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:80:23: warning: result of call to 'write(closure:)' is unused
78 | /// Disable log messages of a specific `LogLevel` to prevent them from being logged
79 | class func disableLevel(_ level: MixpanelLogLevel) {
80 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
81 | enabledLevels.remove(level)
82 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelOptions.swift:300:14: warning: 'trackAutomaticEvents' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
298 | self.flushInterval = flushInterval
299 | self.instanceName = instanceName
300 | self.trackAutomaticEvents = trackAutomaticEvents
| `- warning: 'trackAutomaticEvents' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
301 | self.optOutTrackingByDefault = optOutTrackingByDefault
302 | self.useUniqueDistinctId = useUniqueDistinctId
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:617:34: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
615 | // See: https://github.com/mixpanel/mixpanel-swift/issues/522
616 | DispatchQueue.main.async { [weak self] in
617 | guard let self = self else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
618 | self.automaticEvents.initializeEvents(instanceName: self.name)
619 | }
[45/50] Compiling Mixpanel MixpanelLogger.swift
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:387:43: warning: 'trackAutomaticEvents' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
385 | flushInterval: options.flushInterval,
386 | name: options.instanceName ?? options.token,
387 | trackAutomaticEvents: options.trackAutomaticEvents,
| `- warning: 'trackAutomaticEvents' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
388 | optOutTrackingByDefault: options.optOutTrackingByDefault,
389 | useUniqueDistinctId: options.useUniqueDistinctId,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:476:9: warning: 'trackAutomaticEventsEnabled' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
474 | self.apiToken = apiToken
475 | }
476 | trackAutomaticEventsEnabled = trackAutomaticEvents
| `- warning: 'trackAutomaticEventsEnabled' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
477 | // Capture UI properties (screen size) that require main thread access.
478 | // This is called here to ensure $ae_first_open event includes screen size.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:979:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
977 | if hasOptedOutTracking() {
978 | if let completion = completion {
979 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
980 | }
981 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:986:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
984 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
985 | if let completion = completion {
986 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
987 | }
988 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1042:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1040 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
1041 | if let completion = completion {
1042 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1043 | }
1044 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:991:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
989 | }
990 | trackingQueue.async { [weak self, distinctId, usePeople] in
991 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
992 |
993 | // If there's no anonymousId assigned yet, that means distinctId is stored in the storage. Assigning already stored
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1041:33: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1039 | alias: self.alias,
1040 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
1041 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1042 | DispatchQueue.main.async(execute: completion)
1043 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1080:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1078 | if hasOptedOutTracking() {
1079 | if let completion = completion {
1080 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1081 | }
1082 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1088:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1086 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
1087 | if let completion = completion {
1088 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1089 | }
1090 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1096:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1094 | MixpanelLogger.error(message: "\(self) create alias called with empty alias")
1095 | if let completion = completion {
1096 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1097 | }
1098 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1105:59: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1103 | guard let self = self else {
1104 | if let completion = completion {
1105 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1106 | }
1107 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1149:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1147 | message: "alias: \(alias) matches distinctId: \(distinctId) - skipping api call.")
1148 | if let completion = completion {
1149 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1150 | }
1151 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1103:34: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1101 | if alias != distinctId {
1102 | trackingQueue.async { [weak self, alias] in
1103 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1104 | if let completion = completion {
1105 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1104:41: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1102 | trackingQueue.async { [weak self, alias] in
1103 | guard let self = self else {
1104 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1105 | DispatchQueue.main.async(execute: completion)
1106 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1199:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1197 | let fireUserCompletion: () -> Void = {
1198 | if let completion = completion {
1199 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1200 | }
1201 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1167:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1165 | flush()
1166 | trackingQueue.async { [weak self] in
1167 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1168 | return
1169 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1198:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1196 | let flagManager = self.flags as? FeatureFlagManager
1197 | let fireUserCompletion: () -> Void = {
1198 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1199 | DispatchQueue.main.async(execute: completion)
1200 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1198:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in an isolated closure; this is an error in the Swift 6 language mode
1196 | let flagManager = self.flags as? FeatureFlagManager
1197 | let fireUserCompletion: () -> Void = {
1198 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1199 | DispatchQueue.main.async(execute: completion)
1200 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1312:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1310 | if hasOptedOutTracking() {
1311 | if let completion = completion {
1312 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1313 | }
1314 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1319:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1317 | guard let self = self else {
1318 | if let completion = completion {
1319 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1320 | }
1321 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1317:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1315 | }
1316 | trackingQueue.async { [weak self, completion] in
1317 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1318 | if let completion = completion {
1319 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1318:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1316 | trackingQueue.async { [weak self, completion] in
1317 | guard let self = self else {
1318 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1319 | DispatchQueue.main.async(execute: completion)
1320 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1354:47: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1352 | isFlushing = false
1353 | if let completion = completion {
1354 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1355 | }
1356 | if hasPendingFlush {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1387:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1385 | guard let self = self else {
1386 | if let completion = completion {
1387 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1388 | }
1389 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1395:59: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1393 | guard let self = self else {
1394 | if let completion = completion {
1395 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1396 | }
1397 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1385:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1383 |
1384 | networkQueue.async { [weak self] in
1385 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1386 | if let completion = completion {
1387 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1386:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1384 | networkQueue.async { [weak self] in
1385 | guard let self = self else {
1386 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1387 | DispatchQueue.main.async(execute: completion)
1388 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1391:41: warning: capture of 'batch' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1389 | return
1390 | }
1391 | let result = self.sendBatch(batch, type: type)
| `- warning: capture of 'batch' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1392 | self.trackingQueue.async { [weak self] in
1393 | guard let self = self else {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1393:34: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1391 | let result = self.sendBatch(batch, type: type)
1392 | self.trackingQueue.async { [weak self] in
1393 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1394 | if let completion = completion {
1395 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1394:41: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1392 | self.trackingQueue.async { [weak self] in
1393 | guard let self = self else {
1394 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1395 | DispatchQueue.main.async(execute: completion)
1396 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1459:23: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1457 |
1458 | trackingQueue.async { [weak self, event, properties, epochInterval] in
1459 | guard let self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1460 | return
1461 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1482:29: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1480 | let timedEventsSnapshot = self.trackInstance.track(
1481 | event: event,
1482 | properties: properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1483 | timedEvents: shadowTimedEvents,
1484 | superProperties: shadowSuperProperties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1614:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1612 | let startTime = Date().timeIntervalSince1970
1613 | trackingQueue.async { [weak self, startTime, event] in
1614 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1615 | let timedEvents = self.trackInstance.time(
1616 | event: event, timedEvents: self.timedEvents, startTime: startTime)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1646:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1644 | public func clearTimedEvents() {
1645 | trackingQueue.async { [weak self] in
1646 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1647 | self.readWriteLock.write {
1648 | self.timedEvents = InternalProperties()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1662:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1660 | public func clearTimedEvent(event: String) {
1661 | trackingQueue.async { [weak self, event] in
1662 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1663 |
1664 | let updatedTimedEvents = self.trackInstance.clearTimedEvent(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1688:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1686 | public func clearSuperProperties() {
1687 | trackingQueue.async { [weak self] in
1688 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1689 | self.superProperties = self.trackInstance.clearSuperProperties(self.superProperties)
1690 | MixpanelPersistence.saveSuperProperties(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1708:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1706 | public func registerSuperProperties(_ properties: Properties) {
1707 | trackingQueue.async { [weak self] in
1708 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1709 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(
1710 | properties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1710:17: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1708 | guard let self = self else { return }
1709 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(
1710 | properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1711 | superProperties: self.superProperties)
1712 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1737:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1735 | ) {
1736 | trackingQueue.async { [weak self] in
1737 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1738 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(
1739 | properties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1739:17: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1737 | guard let self = self else { return }
1738 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(
1739 | properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1740 | superProperties: self.superProperties,
1741 | defaultValue: defaultValue)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1741:31: warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1739 | properties,
1740 | superProperties: self.superProperties,
1741 | defaultValue: defaultValue)
| `- warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1742 | self.readWriteLock.write {
1743 | self.superProperties = updatedSuperProperties
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1767:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1765 | public func unregisterSuperProperty(_ propertyName: String) {
1766 | trackingQueue.async { [weak self] in
1767 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1768 | let updatedSuperProperties = self.trackInstance.unregisterSuperProperty(
1769 | propertyName,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1790:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1788 | ) {
1789 | trackingQueue.async { [weak self] in
1790 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1791 | var superPropertiesShadow = self.superProperties
1792 | self.trackInstance.updateSuperProperty(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1793:17: warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
1791 | var superPropertiesShadow = self.superProperties
1792 | self.trackInstance.updateSuperProperty(
1793 | update,
| |- warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1794 | superProperties: &superPropertiesShadow)
1795 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1909:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1907 | public func optOutTracking() {
1908 | trackingQueue.async { [weak self] in
1909 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1910 | if self.people.distinctId != nil {
1911 | self.people.deleteUser()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1968:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1966 | public func optInTracking(distinctId: String? = nil, properties: Properties? = nil) {
1967 | trackingQueue.async { [weak self] in
1968 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1969 | self.readWriteLock.write {
1970 | self.optOutStatus = false
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1978:54: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1976 | self.identify(distinctId: distinctId)
1977 | }
1978 | self.track(event: "$opt_in", properties: properties)
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1979 |
1980 | #if os(iOS) && !targetEnvironment(macCatalyst)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:60:24: warning: static property 'loggers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
58 |
59 | public class MixpanelLogger {
60 | private static var loggers = [MixpanelLogging]()
| |- warning: static property 'loggers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'loggers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'loggers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:61:24: warning: static property 'enabledLevels' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
59 | public class MixpanelLogger {
60 | private static var loggers = [MixpanelLogging]()
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
| |- warning: static property 'enabledLevels' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enabledLevels' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'enabledLevels' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
63 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:62:24: warning: static property 'readWriteLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
60 | private static var loggers = [MixpanelLogging]()
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
| |- warning: static property 'readWriteLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'readWriteLock' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
63 |
64 | /// Add a `MixpanelLogging` object to receive all log messages
/Users/admin/builder/spi-builder-workspace/Sources/ReadWriteLock.swift:10:7: note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | class ReadWriteLock {
| `- note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
11 | private let concurrentQueue: DispatchQueue
12 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:73:23: warning: result of call to 'write(closure:)' is unused
71 | /// Enable log messages of a specific `LogLevel` to be added to the log
72 | class func enableLevel(_ level: MixpanelLogLevel) {
73 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
74 | enabledLevels.insert(level)
75 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:80:23: warning: result of call to 'write(closure:)' is unused
78 | /// Disable log messages of a specific `LogLevel` to prevent them from being logged
79 | class func disableLevel(_ level: MixpanelLogLevel) {
80 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
81 | enabledLevels.remove(level)
82 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelOptions.swift:300:14: warning: 'trackAutomaticEvents' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
298 | self.flushInterval = flushInterval
299 | self.instanceName = instanceName
300 | self.trackAutomaticEvents = trackAutomaticEvents
| `- warning: 'trackAutomaticEvents' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
301 | self.optOutTrackingByDefault = optOutTrackingByDefault
302 | self.useUniqueDistinctId = useUniqueDistinctId
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:617:34: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
615 | // See: https://github.com/mixpanel/mixpanel-swift/issues/522
616 | DispatchQueue.main.async { [weak self] in
617 | guard let self = self else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
618 | self.automaticEvents.initializeEvents(instanceName: self.name)
619 | }
[46/50] Compiling Mixpanel MixpanelOptions.swift
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:387:43: warning: 'trackAutomaticEvents' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
385 | flushInterval: options.flushInterval,
386 | name: options.instanceName ?? options.token,
387 | trackAutomaticEvents: options.trackAutomaticEvents,
| `- warning: 'trackAutomaticEvents' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
388 | optOutTrackingByDefault: options.optOutTrackingByDefault,
389 | useUniqueDistinctId: options.useUniqueDistinctId,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:476:9: warning: 'trackAutomaticEventsEnabled' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
474 | self.apiToken = apiToken
475 | }
476 | trackAutomaticEventsEnabled = trackAutomaticEvents
| `- warning: 'trackAutomaticEventsEnabled' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
477 | // Capture UI properties (screen size) that require main thread access.
478 | // This is called here to ensure $ae_first_open event includes screen size.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:979:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
977 | if hasOptedOutTracking() {
978 | if let completion = completion {
979 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
980 | }
981 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:986:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
984 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
985 | if let completion = completion {
986 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
987 | }
988 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1042:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1040 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
1041 | if let completion = completion {
1042 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1043 | }
1044 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:991:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
989 | }
990 | trackingQueue.async { [weak self, distinctId, usePeople] in
991 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
992 |
993 | // If there's no anonymousId assigned yet, that means distinctId is stored in the storage. Assigning already stored
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1041:33: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1039 | alias: self.alias,
1040 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
1041 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1042 | DispatchQueue.main.async(execute: completion)
1043 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1080:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1078 | if hasOptedOutTracking() {
1079 | if let completion = completion {
1080 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1081 | }
1082 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1088:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1086 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
1087 | if let completion = completion {
1088 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1089 | }
1090 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1096:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1094 | MixpanelLogger.error(message: "\(self) create alias called with empty alias")
1095 | if let completion = completion {
1096 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1097 | }
1098 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1105:59: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1103 | guard let self = self else {
1104 | if let completion = completion {
1105 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1106 | }
1107 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1149:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1147 | message: "alias: \(alias) matches distinctId: \(distinctId) - skipping api call.")
1148 | if let completion = completion {
1149 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1150 | }
1151 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1103:34: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1101 | if alias != distinctId {
1102 | trackingQueue.async { [weak self, alias] in
1103 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1104 | if let completion = completion {
1105 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1104:41: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1102 | trackingQueue.async { [weak self, alias] in
1103 | guard let self = self else {
1104 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1105 | DispatchQueue.main.async(execute: completion)
1106 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1199:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1197 | let fireUserCompletion: () -> Void = {
1198 | if let completion = completion {
1199 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1200 | }
1201 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1167:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1165 | flush()
1166 | trackingQueue.async { [weak self] in
1167 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1168 | return
1169 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1198:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1196 | let flagManager = self.flags as? FeatureFlagManager
1197 | let fireUserCompletion: () -> Void = {
1198 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1199 | DispatchQueue.main.async(execute: completion)
1200 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1198:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in an isolated closure; this is an error in the Swift 6 language mode
1196 | let flagManager = self.flags as? FeatureFlagManager
1197 | let fireUserCompletion: () -> Void = {
1198 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1199 | DispatchQueue.main.async(execute: completion)
1200 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1312:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1310 | if hasOptedOutTracking() {
1311 | if let completion = completion {
1312 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1313 | }
1314 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1319:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1317 | guard let self = self else {
1318 | if let completion = completion {
1319 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1320 | }
1321 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1317:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1315 | }
1316 | trackingQueue.async { [weak self, completion] in
1317 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1318 | if let completion = completion {
1319 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1318:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1316 | trackingQueue.async { [weak self, completion] in
1317 | guard let self = self else {
1318 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1319 | DispatchQueue.main.async(execute: completion)
1320 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1354:47: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1352 | isFlushing = false
1353 | if let completion = completion {
1354 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1355 | }
1356 | if hasPendingFlush {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1387:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1385 | guard let self = self else {
1386 | if let completion = completion {
1387 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1388 | }
1389 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1395:59: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1393 | guard let self = self else {
1394 | if let completion = completion {
1395 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1396 | }
1397 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1385:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1383 |
1384 | networkQueue.async { [weak self] in
1385 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1386 | if let completion = completion {
1387 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1386:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1384 | networkQueue.async { [weak self] in
1385 | guard let self = self else {
1386 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1387 | DispatchQueue.main.async(execute: completion)
1388 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1391:41: warning: capture of 'batch' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1389 | return
1390 | }
1391 | let result = self.sendBatch(batch, type: type)
| `- warning: capture of 'batch' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1392 | self.trackingQueue.async { [weak self] in
1393 | guard let self = self else {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1393:34: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1391 | let result = self.sendBatch(batch, type: type)
1392 | self.trackingQueue.async { [weak self] in
1393 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1394 | if let completion = completion {
1395 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1394:41: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1392 | self.trackingQueue.async { [weak self] in
1393 | guard let self = self else {
1394 | if let completion = completion {
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1395 | DispatchQueue.main.async(execute: completion)
1396 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1459:23: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1457 |
1458 | trackingQueue.async { [weak self, event, properties, epochInterval] in
1459 | guard let self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1460 | return
1461 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1482:29: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1480 | let timedEventsSnapshot = self.trackInstance.track(
1481 | event: event,
1482 | properties: properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1483 | timedEvents: shadowTimedEvents,
1484 | superProperties: shadowSuperProperties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1614:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1612 | let startTime = Date().timeIntervalSince1970
1613 | trackingQueue.async { [weak self, startTime, event] in
1614 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1615 | let timedEvents = self.trackInstance.time(
1616 | event: event, timedEvents: self.timedEvents, startTime: startTime)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1646:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1644 | public func clearTimedEvents() {
1645 | trackingQueue.async { [weak self] in
1646 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1647 | self.readWriteLock.write {
1648 | self.timedEvents = InternalProperties()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1662:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1660 | public func clearTimedEvent(event: String) {
1661 | trackingQueue.async { [weak self, event] in
1662 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1663 |
1664 | let updatedTimedEvents = self.trackInstance.clearTimedEvent(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1688:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1686 | public func clearSuperProperties() {
1687 | trackingQueue.async { [weak self] in
1688 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1689 | self.superProperties = self.trackInstance.clearSuperProperties(self.superProperties)
1690 | MixpanelPersistence.saveSuperProperties(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1708:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1706 | public func registerSuperProperties(_ properties: Properties) {
1707 | trackingQueue.async { [weak self] in
1708 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1709 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(
1710 | properties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1710:17: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1708 | guard let self = self else { return }
1709 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(
1710 | properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1711 | superProperties: self.superProperties)
1712 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1737:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1735 | ) {
1736 | trackingQueue.async { [weak self] in
1737 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1738 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(
1739 | properties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1739:17: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1737 | guard let self = self else { return }
1738 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(
1739 | properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1740 | superProperties: self.superProperties,
1741 | defaultValue: defaultValue)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1741:31: warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1739 | properties,
1740 | superProperties: self.superProperties,
1741 | defaultValue: defaultValue)
| `- warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1742 | self.readWriteLock.write {
1743 | self.superProperties = updatedSuperProperties
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1767:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1765 | public func unregisterSuperProperty(_ propertyName: String) {
1766 | trackingQueue.async { [weak self] in
1767 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1768 | let updatedSuperProperties = self.trackInstance.unregisterSuperProperty(
1769 | propertyName,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1790:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1788 | ) {
1789 | trackingQueue.async { [weak self] in
1790 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1791 | var superPropertiesShadow = self.superProperties
1792 | self.trackInstance.updateSuperProperty(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1793:17: warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
1791 | var superPropertiesShadow = self.superProperties
1792 | self.trackInstance.updateSuperProperty(
1793 | update,
| |- warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1794 | superProperties: &superPropertiesShadow)
1795 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1909:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1907 | public func optOutTracking() {
1908 | trackingQueue.async { [weak self] in
1909 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1910 | if self.people.distinctId != nil {
1911 | self.people.deleteUser()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1968:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1966 | public func optInTracking(distinctId: String? = nil, properties: Properties? = nil) {
1967 | trackingQueue.async { [weak self] in
1968 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1969 | self.readWriteLock.write {
1970 | self.optOutStatus = false
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1978:54: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1976 | self.identify(distinctId: distinctId)
1977 | }
1978 | self.track(event: "$opt_in", properties: properties)
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1979 |
1980 | #if os(iOS) && !targetEnvironment(macCatalyst)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:60:24: warning: static property 'loggers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
58 |
59 | public class MixpanelLogger {
60 | private static var loggers = [MixpanelLogging]()
| |- warning: static property 'loggers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'loggers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'loggers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:61:24: warning: static property 'enabledLevels' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
59 | public class MixpanelLogger {
60 | private static var loggers = [MixpanelLogging]()
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
| |- warning: static property 'enabledLevels' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enabledLevels' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'enabledLevels' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
63 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:62:24: warning: static property 'readWriteLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
60 | private static var loggers = [MixpanelLogging]()
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
| |- warning: static property 'readWriteLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'readWriteLock' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
63 |
64 | /// Add a `MixpanelLogging` object to receive all log messages
/Users/admin/builder/spi-builder-workspace/Sources/ReadWriteLock.swift:10:7: note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | class ReadWriteLock {
| `- note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
11 | private let concurrentQueue: DispatchQueue
12 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:73:23: warning: result of call to 'write(closure:)' is unused
71 | /// Enable log messages of a specific `LogLevel` to be added to the log
72 | class func enableLevel(_ level: MixpanelLogLevel) {
73 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
74 | enabledLevels.insert(level)
75 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:80:23: warning: result of call to 'write(closure:)' is unused
78 | /// Disable log messages of a specific `LogLevel` to prevent them from being logged
79 | class func disableLevel(_ level: MixpanelLogLevel) {
80 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
81 | enabledLevels.remove(level)
82 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelOptions.swift:300:14: warning: 'trackAutomaticEvents' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
298 | self.flushInterval = flushInterval
299 | self.instanceName = instanceName
300 | self.trackAutomaticEvents = trackAutomaticEvents
| `- warning: 'trackAutomaticEvents' is deprecated: Automatic Events are deprecated and will be removed in a future major version. Use autocaptureOptions instead.
301 | self.optOutTrackingByDefault = optOutTrackingByDefault
302 | self.useUniqueDistinctId = useUniqueDistinctId
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:617:34: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
615 | // See: https://github.com/mixpanel/mixpanel-swift/issues/522
616 | DispatchQueue.main.async { [weak self] in
617 | guard let self = self else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
618 | self.automaticEvents.initializeEvents(instanceName: self.name)
619 | }
[47/50] Compiling Mixpanel TouchInterceptor.swift
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:143:29: warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
22 | #endif
23 |
24 | class AutomaticEvents: NSObject, SKPaymentTransactionObserver, SKProductsRequestDelegate {
| `- note: class 'AutomaticEvents' does not conform to the 'Sendable' protocol
25 |
26 | var _minimumSessionDuration: UInt64 = 10000
:
141 | case .purchased:
142 | productIdentifiers.insert(trans.payment.productIdentifier)
143 | awaitingTransactions[trans.payment.productIdentifier] = trans
| `- warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
144 | case .failed: break
145 | case .restored: break
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:151:17: warning: capture of 'productsRequest' with non-sendable type 'SKProductsRequest' in a '@Sendable' closure
149 | }
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
| `- warning: capture of 'productsRequest' with non-sendable type 'SKProductsRequest' in a '@Sendable' closure
152 | productsRequest.delegate = self
153 | productsRequest.start()
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/StoreKit.framework/Headers/SKProductsRequest.h:28:12: note: class 'SKProductsRequest' does not conform to the 'Sendable' protocol
26 | API_DEPRECATED("Use Product.products(for:)", ios(3.0, 18.0), macos(10.7, 15.0), watchos(6.2, 11.0), visionos(1.0, 2.0))
27 | NS_SWIFT_NONSENDABLE
28 | @interface SKProductsRequest : SKRequest {
| `- note: class 'SKProductsRequest' does not conform to the 'Sendable' protocol
29 | @private
30 | id _productsRequestInternal;
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:142:29: warning: mutation of captured var 'productIdentifiers' in concurrently-executing code
140 | switch trans.transactionState {
141 | case .purchased:
142 | productIdentifiers.insert(trans.payment.productIdentifier)
| `- warning: mutation of captured var 'productIdentifiers' in concurrently-executing code
143 | awaitingTransactions[trans.payment.productIdentifier] = trans
144 | case .failed: break
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:150:17: warning: reference to captured var 'productIdentifiers' in concurrently-executing code
148 | }
149 | }
150 | if !productIdentifiers.isEmpty {
| `- warning: reference to captured var 'productIdentifiers' in concurrently-executing code
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
152 | productsRequest.delegate = self
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:151:17: warning: mutation of captured var 'productsRequest' in concurrently-executing code
149 | }
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
| `- warning: mutation of captured var 'productsRequest' in concurrently-executing code
152 | productsRequest.delegate = self
153 | productsRequest.start()
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:151:73: warning: reference to captured var 'productIdentifiers' in concurrently-executing code
149 | }
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
| `- warning: reference to captured var 'productIdentifiers' in concurrently-executing code
152 | productsRequest.delegate = self
153 | productsRequest.start()
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:152:17: warning: reference to captured var 'productsRequest' in concurrently-executing code
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
152 | productsRequest.delegate = self
| `- warning: reference to captured var 'productsRequest' in concurrently-executing code
153 | productsRequest.start()
154 | }
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:153:17: warning: reference to captured var 'productsRequest' in concurrently-executing code
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
152 | productsRequest.delegate = self
153 | productsRequest.start()
| `- warning: reference to captured var 'productsRequest' in concurrently-executing code
154 | }
155 | }
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:166:32: warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
22 | #endif
23 |
24 | class AutomaticEvents: NSObject, SKPaymentTransactionObserver, SKProductsRequestDelegate {
| `- note: class 'AutomaticEvents' does not conform to the 'Sendable' protocol
25 |
26 | var _minimumSessionDuration: UInt64 = 10000
:
164 | awaitingTransactionsWriteLock.async { [self] in
165 | for product in response.products {
166 | if let trans = awaitingTransactions[product.productIdentifier] {
| `- warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
167 | delegate?.track(
168 | event: "$ae_iap",
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:20:16: warning: static property 'automaticPropertiesLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class AutomaticProperties {
20 | static let automaticPropertiesLock = ReadWriteLock(label: "automaticPropertiesLock")
| |- warning: static property 'automaticPropertiesLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'automaticPropertiesLock' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | static var properties: InternalProperties = {
/Users/admin/builder/spi-builder-workspace/Sources/ReadWriteLock.swift:10:7: note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | class ReadWriteLock {
| `- note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
11 | private let concurrentQueue: DispatchQueue
12 |
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:22:16: warning: static property 'properties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
20 | static let automaticPropertiesLock = ReadWriteLock(label: "automaticPropertiesLock")
21 |
22 | static var properties: InternalProperties = {
| |- warning: static property 'properties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'properties' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'properties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
23 | var p = InternalProperties()
24 |
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:73:16: warning: static property 'peopleProperties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
71 | }()
72 |
73 | static var peopleProperties: InternalProperties = {
| |- warning: static property 'peopleProperties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'peopleProperties' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'peopleProperties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
74 | var p = InternalProperties()
75 | let infoDict = Bundle.main.infoDictionary
/Users/admin/builder/spi-builder-workspace/Sources/Constants.swift:16:16: warning: static property 'queueSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 | struct QueueConstants {
16 | static var queueSize = 5000
| |- warning: static property 'queueSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'queueSize' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'queueSize' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 | }
18 |
[48/50] Compiling Mixpanel AutomaticEvents.swift
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:143:29: warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
22 | #endif
23 |
24 | class AutomaticEvents: NSObject, SKPaymentTransactionObserver, SKProductsRequestDelegate {
| `- note: class 'AutomaticEvents' does not conform to the 'Sendable' protocol
25 |
26 | var _minimumSessionDuration: UInt64 = 10000
:
141 | case .purchased:
142 | productIdentifiers.insert(trans.payment.productIdentifier)
143 | awaitingTransactions[trans.payment.productIdentifier] = trans
| `- warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
144 | case .failed: break
145 | case .restored: break
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:151:17: warning: capture of 'productsRequest' with non-sendable type 'SKProductsRequest' in a '@Sendable' closure
149 | }
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
| `- warning: capture of 'productsRequest' with non-sendable type 'SKProductsRequest' in a '@Sendable' closure
152 | productsRequest.delegate = self
153 | productsRequest.start()
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/StoreKit.framework/Headers/SKProductsRequest.h:28:12: note: class 'SKProductsRequest' does not conform to the 'Sendable' protocol
26 | API_DEPRECATED("Use Product.products(for:)", ios(3.0, 18.0), macos(10.7, 15.0), watchos(6.2, 11.0), visionos(1.0, 2.0))
27 | NS_SWIFT_NONSENDABLE
28 | @interface SKProductsRequest : SKRequest {
| `- note: class 'SKProductsRequest' does not conform to the 'Sendable' protocol
29 | @private
30 | id _productsRequestInternal;
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:142:29: warning: mutation of captured var 'productIdentifiers' in concurrently-executing code
140 | switch trans.transactionState {
141 | case .purchased:
142 | productIdentifiers.insert(trans.payment.productIdentifier)
| `- warning: mutation of captured var 'productIdentifiers' in concurrently-executing code
143 | awaitingTransactions[trans.payment.productIdentifier] = trans
144 | case .failed: break
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:150:17: warning: reference to captured var 'productIdentifiers' in concurrently-executing code
148 | }
149 | }
150 | if !productIdentifiers.isEmpty {
| `- warning: reference to captured var 'productIdentifiers' in concurrently-executing code
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
152 | productsRequest.delegate = self
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:151:17: warning: mutation of captured var 'productsRequest' in concurrently-executing code
149 | }
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
| `- warning: mutation of captured var 'productsRequest' in concurrently-executing code
152 | productsRequest.delegate = self
153 | productsRequest.start()
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:151:73: warning: reference to captured var 'productIdentifiers' in concurrently-executing code
149 | }
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
| `- warning: reference to captured var 'productIdentifiers' in concurrently-executing code
152 | productsRequest.delegate = self
153 | productsRequest.start()
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:152:17: warning: reference to captured var 'productsRequest' in concurrently-executing code
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
152 | productsRequest.delegate = self
| `- warning: reference to captured var 'productsRequest' in concurrently-executing code
153 | productsRequest.start()
154 | }
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:153:17: warning: reference to captured var 'productsRequest' in concurrently-executing code
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
152 | productsRequest.delegate = self
153 | productsRequest.start()
| `- warning: reference to captured var 'productsRequest' in concurrently-executing code
154 | }
155 | }
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:166:32: warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
22 | #endif
23 |
24 | class AutomaticEvents: NSObject, SKPaymentTransactionObserver, SKProductsRequestDelegate {
| `- note: class 'AutomaticEvents' does not conform to the 'Sendable' protocol
25 |
26 | var _minimumSessionDuration: UInt64 = 10000
:
164 | awaitingTransactionsWriteLock.async { [self] in
165 | for product in response.products {
166 | if let trans = awaitingTransactions[product.productIdentifier] {
| `- warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
167 | delegate?.track(
168 | event: "$ae_iap",
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:20:16: warning: static property 'automaticPropertiesLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class AutomaticProperties {
20 | static let automaticPropertiesLock = ReadWriteLock(label: "automaticPropertiesLock")
| |- warning: static property 'automaticPropertiesLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'automaticPropertiesLock' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | static var properties: InternalProperties = {
/Users/admin/builder/spi-builder-workspace/Sources/ReadWriteLock.swift:10:7: note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | class ReadWriteLock {
| `- note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
11 | private let concurrentQueue: DispatchQueue
12 |
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:22:16: warning: static property 'properties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
20 | static let automaticPropertiesLock = ReadWriteLock(label: "automaticPropertiesLock")
21 |
22 | static var properties: InternalProperties = {
| |- warning: static property 'properties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'properties' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'properties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
23 | var p = InternalProperties()
24 |
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:73:16: warning: static property 'peopleProperties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
71 | }()
72 |
73 | static var peopleProperties: InternalProperties = {
| |- warning: static property 'peopleProperties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'peopleProperties' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'peopleProperties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
74 | var p = InternalProperties()
75 | let infoDict = Bundle.main.infoDictionary
/Users/admin/builder/spi-builder-workspace/Sources/Constants.swift:16:16: warning: static property 'queueSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 | struct QueueConstants {
16 | static var queueSize = 5000
| |- warning: static property 'queueSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'queueSize' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'queueSize' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 | }
18 |
[49/50] Compiling Mixpanel AutomaticProperties.swift
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:143:29: warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
22 | #endif
23 |
24 | class AutomaticEvents: NSObject, SKPaymentTransactionObserver, SKProductsRequestDelegate {
| `- note: class 'AutomaticEvents' does not conform to the 'Sendable' protocol
25 |
26 | var _minimumSessionDuration: UInt64 = 10000
:
141 | case .purchased:
142 | productIdentifiers.insert(trans.payment.productIdentifier)
143 | awaitingTransactions[trans.payment.productIdentifier] = trans
| `- warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
144 | case .failed: break
145 | case .restored: break
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:151:17: warning: capture of 'productsRequest' with non-sendable type 'SKProductsRequest' in a '@Sendable' closure
149 | }
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
| `- warning: capture of 'productsRequest' with non-sendable type 'SKProductsRequest' in a '@Sendable' closure
152 | productsRequest.delegate = self
153 | productsRequest.start()
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/StoreKit.framework/Headers/SKProductsRequest.h:28:12: note: class 'SKProductsRequest' does not conform to the 'Sendable' protocol
26 | API_DEPRECATED("Use Product.products(for:)", ios(3.0, 18.0), macos(10.7, 15.0), watchos(6.2, 11.0), visionos(1.0, 2.0))
27 | NS_SWIFT_NONSENDABLE
28 | @interface SKProductsRequest : SKRequest {
| `- note: class 'SKProductsRequest' does not conform to the 'Sendable' protocol
29 | @private
30 | id _productsRequestInternal;
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:142:29: warning: mutation of captured var 'productIdentifiers' in concurrently-executing code
140 | switch trans.transactionState {
141 | case .purchased:
142 | productIdentifiers.insert(trans.payment.productIdentifier)
| `- warning: mutation of captured var 'productIdentifiers' in concurrently-executing code
143 | awaitingTransactions[trans.payment.productIdentifier] = trans
144 | case .failed: break
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:150:17: warning: reference to captured var 'productIdentifiers' in concurrently-executing code
148 | }
149 | }
150 | if !productIdentifiers.isEmpty {
| `- warning: reference to captured var 'productIdentifiers' in concurrently-executing code
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
152 | productsRequest.delegate = self
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:151:17: warning: mutation of captured var 'productsRequest' in concurrently-executing code
149 | }
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
| `- warning: mutation of captured var 'productsRequest' in concurrently-executing code
152 | productsRequest.delegate = self
153 | productsRequest.start()
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:151:73: warning: reference to captured var 'productIdentifiers' in concurrently-executing code
149 | }
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
| `- warning: reference to captured var 'productIdentifiers' in concurrently-executing code
152 | productsRequest.delegate = self
153 | productsRequest.start()
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:152:17: warning: reference to captured var 'productsRequest' in concurrently-executing code
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
152 | productsRequest.delegate = self
| `- warning: reference to captured var 'productsRequest' in concurrently-executing code
153 | productsRequest.start()
154 | }
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:153:17: warning: reference to captured var 'productsRequest' in concurrently-executing code
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
152 | productsRequest.delegate = self
153 | productsRequest.start()
| `- warning: reference to captured var 'productsRequest' in concurrently-executing code
154 | }
155 | }
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:166:32: warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
22 | #endif
23 |
24 | class AutomaticEvents: NSObject, SKPaymentTransactionObserver, SKProductsRequestDelegate {
| `- note: class 'AutomaticEvents' does not conform to the 'Sendable' protocol
25 |
26 | var _minimumSessionDuration: UInt64 = 10000
:
164 | awaitingTransactionsWriteLock.async { [self] in
165 | for product in response.products {
166 | if let trans = awaitingTransactions[product.productIdentifier] {
| `- warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
167 | delegate?.track(
168 | event: "$ae_iap",
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:20:16: warning: static property 'automaticPropertiesLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class AutomaticProperties {
20 | static let automaticPropertiesLock = ReadWriteLock(label: "automaticPropertiesLock")
| |- warning: static property 'automaticPropertiesLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'automaticPropertiesLock' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | static var properties: InternalProperties = {
/Users/admin/builder/spi-builder-workspace/Sources/ReadWriteLock.swift:10:7: note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | class ReadWriteLock {
| `- note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
11 | private let concurrentQueue: DispatchQueue
12 |
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:22:16: warning: static property 'properties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
20 | static let automaticPropertiesLock = ReadWriteLock(label: "automaticPropertiesLock")
21 |
22 | static var properties: InternalProperties = {
| |- warning: static property 'properties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'properties' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'properties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
23 | var p = InternalProperties()
24 |
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:73:16: warning: static property 'peopleProperties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
71 | }()
72 |
73 | static var peopleProperties: InternalProperties = {
| |- warning: static property 'peopleProperties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'peopleProperties' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'peopleProperties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
74 | var p = InternalProperties()
75 | let infoDict = Bundle.main.infoDictionary
/Users/admin/builder/spi-builder-workspace/Sources/Constants.swift:16:16: warning: static property 'queueSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 | struct QueueConstants {
16 | static var queueSize = 5000
| |- warning: static property 'queueSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'queueSize' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'queueSize' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 | }
18 |
[50/50] Compiling Mixpanel Constants.swift
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:143:29: warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
22 | #endif
23 |
24 | class AutomaticEvents: NSObject, SKPaymentTransactionObserver, SKProductsRequestDelegate {
| `- note: class 'AutomaticEvents' does not conform to the 'Sendable' protocol
25 |
26 | var _minimumSessionDuration: UInt64 = 10000
:
141 | case .purchased:
142 | productIdentifiers.insert(trans.payment.productIdentifier)
143 | awaitingTransactions[trans.payment.productIdentifier] = trans
| `- warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
144 | case .failed: break
145 | case .restored: break
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:151:17: warning: capture of 'productsRequest' with non-sendable type 'SKProductsRequest' in a '@Sendable' closure
149 | }
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
| `- warning: capture of 'productsRequest' with non-sendable type 'SKProductsRequest' in a '@Sendable' closure
152 | productsRequest.delegate = self
153 | productsRequest.start()
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/StoreKit.framework/Headers/SKProductsRequest.h:28:12: note: class 'SKProductsRequest' does not conform to the 'Sendable' protocol
26 | API_DEPRECATED("Use Product.products(for:)", ios(3.0, 18.0), macos(10.7, 15.0), watchos(6.2, 11.0), visionos(1.0, 2.0))
27 | NS_SWIFT_NONSENDABLE
28 | @interface SKProductsRequest : SKRequest {
| `- note: class 'SKProductsRequest' does not conform to the 'Sendable' protocol
29 | @private
30 | id _productsRequestInternal;
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:142:29: warning: mutation of captured var 'productIdentifiers' in concurrently-executing code
140 | switch trans.transactionState {
141 | case .purchased:
142 | productIdentifiers.insert(trans.payment.productIdentifier)
| `- warning: mutation of captured var 'productIdentifiers' in concurrently-executing code
143 | awaitingTransactions[trans.payment.productIdentifier] = trans
144 | case .failed: break
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:150:17: warning: reference to captured var 'productIdentifiers' in concurrently-executing code
148 | }
149 | }
150 | if !productIdentifiers.isEmpty {
| `- warning: reference to captured var 'productIdentifiers' in concurrently-executing code
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
152 | productsRequest.delegate = self
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:151:17: warning: mutation of captured var 'productsRequest' in concurrently-executing code
149 | }
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
| `- warning: mutation of captured var 'productsRequest' in concurrently-executing code
152 | productsRequest.delegate = self
153 | productsRequest.start()
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:151:73: warning: reference to captured var 'productIdentifiers' in concurrently-executing code
149 | }
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
| `- warning: reference to captured var 'productIdentifiers' in concurrently-executing code
152 | productsRequest.delegate = self
153 | productsRequest.start()
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:152:17: warning: reference to captured var 'productsRequest' in concurrently-executing code
150 | if !productIdentifiers.isEmpty {
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
152 | productsRequest.delegate = self
| `- warning: reference to captured var 'productsRequest' in concurrently-executing code
153 | productsRequest.start()
154 | }
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:153:17: warning: reference to captured var 'productsRequest' in concurrently-executing code
151 | productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
152 | productsRequest.delegate = self
153 | productsRequest.start()
| `- warning: reference to captured var 'productsRequest' in concurrently-executing code
154 | }
155 | }
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticEvents.swift:166:32: warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
22 | #endif
23 |
24 | class AutomaticEvents: NSObject, SKPaymentTransactionObserver, SKProductsRequestDelegate {
| `- note: class 'AutomaticEvents' does not conform to the 'Sendable' protocol
25 |
26 | var _minimumSessionDuration: UInt64 = 10000
:
164 | awaitingTransactionsWriteLock.async { [self] in
165 | for product in response.products {
166 | if let trans = awaitingTransactions[product.productIdentifier] {
| `- warning: capture of 'self' with non-sendable type 'AutomaticEvents' in a '@Sendable' closure
167 | delegate?.track(
168 | event: "$ae_iap",
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:20:16: warning: static property 'automaticPropertiesLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class AutomaticProperties {
20 | static let automaticPropertiesLock = ReadWriteLock(label: "automaticPropertiesLock")
| |- warning: static property 'automaticPropertiesLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'automaticPropertiesLock' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | static var properties: InternalProperties = {
/Users/admin/builder/spi-builder-workspace/Sources/ReadWriteLock.swift:10:7: note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | class ReadWriteLock {
| `- note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
11 | private let concurrentQueue: DispatchQueue
12 |
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:22:16: warning: static property 'properties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
20 | static let automaticPropertiesLock = ReadWriteLock(label: "automaticPropertiesLock")
21 |
22 | static var properties: InternalProperties = {
| |- warning: static property 'properties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'properties' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'properties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
23 | var p = InternalProperties()
24 |
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:73:16: warning: static property 'peopleProperties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
71 | }()
72 |
73 | static var peopleProperties: InternalProperties = {
| |- warning: static property 'peopleProperties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'peopleProperties' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'peopleProperties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
74 | var p = InternalProperties()
75 | let infoDict = Bundle.main.infoDictionary
/Users/admin/builder/spi-builder-workspace/Sources/Constants.swift:16:16: warning: static property 'queueSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 | struct QueueConstants {
16 | static var queueSize = 5000
| |- warning: static property 'queueSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'queueSize' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'queueSize' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 | }
18 |
Build complete! (11.76s)
Fetching https://github.com/mixpanel/mixpanel-swift-common.git
[1/781] Fetching mixpanel-swift-common
Fetched https://github.com/mixpanel/mixpanel-swift-common.git from cache (1.30s)
Computing version for https://github.com/mixpanel/mixpanel-swift-common.git
Computed https://github.com/mixpanel/mixpanel-swift-common.git at 2.0.0 (1.92s)
Creating working copy for https://github.com/mixpanel/mixpanel-swift-common.git
Working copy of https://github.com/mixpanel/mixpanel-swift-common.git resolved at 2.0.0
Build complete.
{
"dependencies" : [
{
"identity" : "mixpanel-swift-common",
"requirement" : {
"range" : [
{
"lower_bound" : "2.0.0",
"upper_bound" : "3.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/mixpanel/mixpanel-swift-common.git"
}
],
"manifest_display_name" : "Mixpanel",
"name" : "Mixpanel",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "15.0"
},
{
"name" : "tvos",
"version" : "15.0"
},
{
"name" : "macos",
"version" : "12.0"
},
{
"name" : "watchos",
"version" : "9.0"
}
],
"products" : [
{
"name" : "Mixpanel",
"targets" : [
"Mixpanel"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "Mixpanel",
"module_type" : "SwiftTarget",
"name" : "Mixpanel",
"path" : "Sources",
"product_dependencies" : [
"MixpanelSwiftCommon"
],
"product_memberships" : [
"Mixpanel"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/Mixpanel/PrivacyInfo.xcprivacy",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"Autocapture.swift",
"Autocapture/AutocaptureManager.swift",
"Autocapture/AutocaptureOptions.swift",
"Autocapture/DeadClickDetector.swift",
"Autocapture/ElementIdExtractor.swift",
"Autocapture/Model/ClickEvent.swift",
"Autocapture/RageClickTracker.swift",
"Autocapture/SemanticExtractor.swift",
"Autocapture/TouchInterceptor.swift",
"AutomaticEvents.swift",
"AutomaticProperties.swift",
"Constants.swift",
"CustomOperators.swift",
"Data+Compression.swift",
"Error.swift",
"FeatureFlags.swift",
"FileLogging.swift",
"Flush.swift",
"FlushRequest.swift",
"Group.swift",
"JSONHandler.swift",
"MPDB.swift",
"Mixpanel.swift",
"MixpanelInstance.swift",
"MixpanelLogger.swift",
"MixpanelOptions.swift",
"MixpanelPersistence.swift",
"MixpanelType.swift",
"Network.swift",
"People.swift",
"PrintLogging.swift",
"ReadWriteLock.swift",
"SessionMetadata.swift",
"Track.swift"
],
"type" : "library"
}
],
"tools_version" : "5.7"
}
Done.