Build Information
Successful build of RevenueCat, reference 5.70.0 (8f5f5e), with Swift 6.1 for macOS (SPM) on 30 Apr 2026 12:58:50 UTC.
Swift 6 data race errors: 218
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
841 | struct PurchaseInProgressPreferenceKey: PreferenceKey {
842 |
843 | static var defaultValue: Package?
| |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
844 |
845 | static func reduce(value: inout Package?, nextValue: () -> Package?) {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:854:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
852 | struct RestoreInProgressPreferenceKey: PreferenceKey {
853 |
854 | static var defaultValue: Bool = false
| |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
855 |
856 | static func reduce(value: inout Bool, nextValue: () -> Bool) {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:882:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
880 | }
881 |
882 | static var defaultValue: PurchaseResult?
| |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
883 |
884 | static func reduce(value: inout PurchaseResult?, nextValue: () -> PurchaseResult?) {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:893:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
891 | struct RestoredCustomerInfoPreferenceKey: PreferenceKey {
892 |
893 | static var defaultValue: PurchaseHandler.RestoreResult?
| |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
894 |
895 | static func reduce(value: inout PurchaseHandler.RestoreResult?, nextValue: () -> PurchaseHandler.RestoreResult?) {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:904:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
902 | struct PurchaseErrorPreferenceKey: PreferenceKey {
903 |
904 | static var defaultValue: NSError?
| |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
905 |
906 | static func reduce(value: inout NSError?, nextValue: () -> NSError?) {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:915:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
913 | struct RestoreErrorPreferenceKey: PreferenceKey {
914 |
915 | static var defaultValue: NSError?
| |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
916 |
917 | static func reduce(value: inout NSError?, nextValue: () -> NSError?) {
<unknown>:0: note: a function type must be marked '@Sendable' to conform to 'Sendable'
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:927:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type '(() -> Void)?' may have shared mutable state; this is an error in the Swift 6 language mode
925 | /// `EnvironmentKey` for storing closure triggered when paywall should be dismissed.
926 | struct RequestedDismissalKey: EnvironmentKey {
927 | static let defaultValue: (() -> Void)? = nil
| |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type '(() -> Void)?' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
928 | }
929 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:78:18: warning: call to main actor-isolated instance method 'adaptTemplateView(with:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
65 |
66 | @ViewBuilder // swiftlint:disable:next function_parameter_count
67 | func createView(
| `- note: add '@MainActor' to make instance method 'createView(for:template:configuration:introEligibility:mode:purchaseHandler:)' part of global actor 'MainActor'
68 | for offering: Offering,
69 | template: PaywallTemplate,
:
76 | case let .success(configuration):
77 | Self.createView(template: template, configuration: configuration)
78 | .adaptTemplateView(with: configuration)
| `- warning: call to main actor-isolated instance method 'adaptTemplateView(with:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
79 | .task(id: offering) {
80 | await introEligibility.computeEligibility(for: configuration.packages)
:
152 | extension View {
153 |
154 | func adaptTemplateView(with configuration: TemplateViewConfiguration) -> some View {
| `- note: calls to instance method 'adaptTemplateView(with:)' from outside of its actor context are implicitly asynchronous
155 | self
156 | .background(configuration.backgroundView)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:80:68: warning: capture of 'configuration' with non-sendable type 'TemplateViewConfiguration' in a '@Sendable' closure; this is an error in the Swift 6 language mode
78 | .adaptTemplateView(with: configuration)
79 | .task(id: offering) {
80 | await introEligibility.computeEligibility(for: configuration.packages)
| `- warning: capture of 'configuration' with non-sendable type 'TemplateViewConfiguration' in a '@Sendable' closure; this is an error in the Swift 6 language mode
81 | }
82 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Data/TemplateViewConfiguration.swift:21:8: note: consider making struct 'TemplateViewConfiguration' conform to the 'Sendable' protocol
19 | /// The processed data necessary to render a `TemplateViewType`.
20 | @available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, *)
21 | struct TemplateViewConfiguration {
| `- note: consider making struct 'TemplateViewConfiguration' conform to the 'Sendable' protocol
22 |
23 | let mode: PaywallViewMode
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:84:13: warning: call to main actor-isolated initializer 'init(handler:warning:offering:appName:iconDetailProvider:isFooterPaywall:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
65 |
66 | @ViewBuilder // swiftlint:disable:next function_parameter_count
67 | func createView(
| `- note: add '@MainActor' to make instance method 'createView(for:template:configuration:introEligibility:mode:purchaseHandler:)' part of global actor 'MainActor'
68 | for offering: Offering,
69 | template: PaywallTemplate,
:
82 |
83 | case let .failure(error):
84 | DefaultPaywallView(
| `- warning: call to main actor-isolated initializer 'init(handler:warning:offering:appName:iconDetailProvider:isFooterPaywall:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
85 | handler: purchaseHandler,
86 | warning: .from(error: error),
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Views/DefaultPaywall/DefaultPaywallView.swift:27:5: note: calls to initializer 'init(handler:warning:offering:appName:iconDetailProvider:isFooterPaywall:)' from outside of its actor context are implicitly asynchronous
25 | struct DefaultPaywallView: View {
26 |
27 | init(
| |- note: calls to initializer 'init(handler:warning:offering:appName:iconDetailProvider:isFooterPaywall:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'View'
28 | handler: PurchaseHandler,
29 | warning: PaywallWarning? = nil,
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:134:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
125 |
126 | @ViewBuilder
127 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
128 | configuration: TemplateViewConfiguration) -> some View {
129 | #if os(watchOS)
:
132 | switch template {
133 | case .template1:
134 | Template1View(configuration)
| `- warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
135 | case .template2:
136 | Template2View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template1View.swift:38:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
36 | private var purchaseHandler: PurchaseHandler
37 |
38 | init(_ configuration: TemplateViewConfiguration) {
| |- note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'TemplateViewType'
39 | self.configuration = configuration
40 | self.localization = configuration.packages.single.localization
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:136:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
125 |
126 | @ViewBuilder
127 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
128 | configuration: TemplateViewConfiguration) -> some View {
129 | #if os(watchOS)
:
134 | Template1View(configuration)
135 | case .template2:
136 | Template2View(configuration)
| `- warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
137 | case .template3:
138 | Template3View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template2View.swift:46:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
44 | private var componentInteractionLogger
45 |
46 | init(_ configuration: TemplateViewConfiguration) {
| |- note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'TemplateViewType'
47 | self._selectedPackage = .init(initialValue: configuration.packages.default)
48 | self.configuration = configuration
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:138:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
125 |
126 | @ViewBuilder
127 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
128 | configuration: TemplateViewConfiguration) -> some View {
129 | #if os(watchOS)
:
136 | Template2View(configuration)
137 | case .template3:
138 | Template3View(configuration)
| `- warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
139 | case .template4:
140 | Template4View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template3View.swift:41:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
39 | private var namespace
40 |
41 | init(_ configuration: TemplateViewConfiguration) {
| |- note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'TemplateViewType'
42 | self.configuration = configuration
43 | self.localization = configuration.packages.single.localization
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:140:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
125 |
126 | @ViewBuilder
127 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
128 | configuration: TemplateViewConfiguration) -> some View {
129 | #if os(watchOS)
:
138 | Template3View(configuration)
139 | case .template4:
140 | Template4View(configuration)
| `- warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
141 | case .template5:
142 | Template5View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template4View.swift:52:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
50 | private var componentInteractionLogger
51 |
52 | init(_ configuration: TemplateViewConfiguration) {
| |- note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'TemplateViewType'
53 | self.configuration = configuration
54 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:142:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
125 |
126 | @ViewBuilder
127 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
128 | configuration: TemplateViewConfiguration) -> some View {
129 | #if os(watchOS)
:
140 | Template4View(configuration)
141 | case .template5:
142 | Template5View(configuration)
| `- warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
143 | case .template7:
144 | Template7View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template5View.swift:51:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
49 | private var componentInteractionLogger
50 |
51 | init(_ configuration: TemplateViewConfiguration) {
| |- note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'TemplateViewType'
52 | self._selectedPackage = .init(initialValue: configuration.packages.default)
53 | self.configuration = configuration
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:144:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
125 |
126 | @ViewBuilder
127 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
128 | configuration: TemplateViewConfiguration) -> some View {
129 | #if os(watchOS)
:
142 | Template5View(configuration)
143 | case .template7:
144 | Template7View(configuration)
| `- warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
145 | }
146 | #endif
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template7View.swift:66:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
64 | }
65 |
66 | init(_ configuration: TemplateViewConfiguration) {
| |- note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'TemplateViewType'
67 | guard let (firstTier, allTiers, tierNames) = configuration.packages.multiTier else {
68 | fatalError("Attempted to display a multi-tier template with invalid data: \(configuration.packages)")
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:145:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
143 |
144 | struct HeightPreferenceKey: PreferenceKey {
145 | static var defaultValue: CGFloat = 0
| |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
146 | static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
147 | value = max(value, nextValue())
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:429:20: warning: main actor-isolated property 'isPaused' can not be referenced from a Sendable closure; this is an error in the Swift 6 language mode
196 | @State private var autoTimer: Timer?
197 |
198 | @State private var isPaused: Bool = false
| `- note: property declared here
199 | @State private var pauseEndDate: Date?
200 | @State private var isInitialized = false
:
427 | repeats: true
428 | ) { _ in
429 | guard !isPaused else {
| `- warning: main actor-isolated property 'isPaused' can not be referenced from a Sendable closure; this is an error in the Swift 6 language mode
430 | // If paused, check if 10 seconds have passed
431 | if let pauseEndDate = pauseEndDate, Date() >= pauseEndDate {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:431:39: warning: main actor-isolated property 'pauseEndDate' can not be referenced from a Sendable closure; this is an error in the Swift 6 language mode
197 |
198 | @State private var isPaused: Bool = false
199 | @State private var pauseEndDate: Date?
| `- note: property declared here
200 | @State private var isInitialized = false
201 |
:
429 | guard !isPaused else {
430 | // If paused, check if 10 seconds have passed
431 | if let pauseEndDate = pauseEndDate, Date() >= pauseEndDate {
| `- warning: main actor-isolated property 'pauseEndDate' can not be referenced from a Sendable closure; this is an error in the Swift 6 language mode
432 | isPaused = false // Resume auto-play
433 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:432:21: warning: main actor-isolated property 'isPaused' can not be mutated from a Sendable closure; this is an error in the Swift 6 language mode
196 | @State private var autoTimer: Timer?
197 |
198 | @State private var isPaused: Bool = false
| `- note: mutation of this property is only permitted within the actor
199 | @State private var pauseEndDate: Date?
200 | @State private var isInitialized = false
:
430 | // If paused, check if 10 seconds have passed
431 | if let pauseEndDate = pauseEndDate, Date() >= pauseEndDate {
432 | isPaused = false // Resume auto-play
| `- warning: main actor-isolated property 'isPaused' can not be mutated from a Sendable closure; this is an error in the Swift 6 language mode
433 | }
434 | return
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:441:21: warning: main actor-isolated property 'opacity' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
204 |
205 | /// Used to animate opacity for the loop transition
206 | @State private var opacity: CGFloat = 1.0
| `- note: mutation of this property is only permitted within the actor
207 |
208 | // MARK: - Init
:
439 | // Fade out both slide + indicator
440 | withAnimation(.easeInOut(duration: fadeDuration)) {
441 | opacity = 0
| `- warning: main actor-isolated property 'opacity' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
442 | }
443 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:458:21: warning: main actor-isolated property 'index' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
184 |
185 | /// The current index (in `data`) of the "active" page.
186 | @State private var index: Int = 0
| `- note: mutation of this property is only permitted within the actor
187 |
188 | /// Real-time drag offset from the user's finger.
:
456 | case .slide:
457 | withAnimation(.easeInOut(duration: Double(msTransitionTime) / 1000)) {
458 | index += 1
| `- warning: main actor-isolated property 'index' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
459 | if loop {
460 | expandDataIfNeeded()
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:460:25: warning: call to main actor-isolated instance method 'expandDataIfNeeded()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
458 | index += 1
459 | if loop {
460 | expandDataIfNeeded()
| `- warning: call to main actor-isolated instance method 'expandDataIfNeeded()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
461 | pruneDataIfNeeded()
462 | } else {
:
542 | // MARK: - Expanding
543 |
544 | private func expandDataIfNeeded() {
| |- note: calls to instance method 'expandDataIfNeeded()' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'View'
545 | // If index is in the first copy, prepend another
546 | if index < originalCount {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:461:25: warning: call to main actor-isolated instance method 'pruneDataIfNeeded()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
459 | if loop {
460 | expandDataIfNeeded()
461 | pruneDataIfNeeded()
| `- warning: call to main actor-isolated instance method 'pruneDataIfNeeded()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
462 | } else {
463 | index = min(index, data.count - 1)
:
561 | // MARK: - Pruning
562 |
563 | private func pruneDataIfNeeded() {
| |- note: calls to instance method 'pruneDataIfNeeded()' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'View'
564 | let copiesInData = data.count / originalCount
565 | let maxCopiesAllowed = 5
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:463:25: warning: main actor-isolated property 'index' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
184 |
185 | /// The current index (in `data`) of the "active" page.
186 | @State private var index: Int = 0
| `- note: mutation of this property is only permitted within the actor
187 |
188 | /// Real-time drag offset from the user's finger.
:
461 | pruneDataIfNeeded()
462 | } else {
463 | index = min(index, data.count - 1)
| `- warning: main actor-isolated property 'index' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
464 | }
465 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:463:37: warning: main actor-isolated property 'index' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
184 |
185 | /// The current index (in `data`) of the "active" page.
186 | @State private var index: Int = 0
| `- note: property declared here
187 |
188 | /// Real-time drag offset from the user's finger.
:
461 | pruneDataIfNeeded()
462 | } else {
463 | index = min(index, data.count - 1)
| `- warning: main actor-isolated property 'index' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
464 | }
465 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:463:44: warning: main actor-isolated property 'data' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
181 |
182 | /// The “expanded” data array, each item with a unique ID.
183 | @State private var data: [CarouselItem<Content>] = []
| `- note: property declared here
184 |
185 | /// The current index (in `data`) of the "active" page.
:
461 | pruneDataIfNeeded()
462 | } else {
463 | index = min(index, data.count - 1)
| `- warning: main actor-isolated property 'data' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
464 | }
465 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:233:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
231 | func withPendingPurchaseContinuation<T>(_ continuation: () async throws -> T) async rethrows -> T {
232 | await MainActor.run {
233 | startAction(.pendingPurchaseContinuation)
| |- 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
234 | }
235 | let result = try await continuation()
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:237:16: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
235 | let result = try await continuation()
236 | await MainActor.run {
237 | if actionTypeInProgress == .pendingPurchaseContinuation {
| |- 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
238 | self.actionTypeInProgress = nil
239 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:398:37: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
396 | }
397 |
398 | async let fetchResultTask = self.purchases.workflow(forOfferingIdentifier: identifier)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'self' into async let risks causing data races between nonisolated and task-isolated uses
399 | async let allOfferingsTask = self.purchases.offerings()
400 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:399:38: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
397 |
398 | async let fetchResultTask = self.purchases.workflow(forOfferingIdentifier: identifier)
399 | async let allOfferingsTask = self.purchases.offerings()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'self' into async let risks causing data races between nonisolated and task-isolated uses
400 |
401 | let (fetchResult, allOfferings) = try await (fetchResultTask, allOfferingsTask)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:569:30: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
567 | switch self.purchases.purchasesAreCompletedBy {
568 | case .revenueCat:
569 | return try await performRestorePurchases()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'self' to main actor-isolated instance method 'performRestorePurchases()' risks causing data races between main actor-isolated and task-isolated uses
570 | case .myApp:
571 | return try await performExternalRestoreLogic()
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:571:30: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
569 | return try await performRestorePurchases()
570 | case .myApp:
571 | return try await performExternalRestoreLogic()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'self' to main actor-isolated instance method 'performExternalRestoreLogic()' risks causing data races between main actor-isolated and task-isolated uses
572 | }
573 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:134:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
132 | switch template {
133 | case .template1:
134 | Template1View(configuration)
| |- warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'configuration' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
135 | case .template2:
136 | Template2View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:136:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
134 | Template1View(configuration)
135 | case .template2:
136 | Template2View(configuration)
| |- warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'configuration' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
137 | case .template3:
138 | Template3View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:138:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
136 | Template2View(configuration)
137 | case .template3:
138 | Template3View(configuration)
| |- warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'configuration' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
139 | case .template4:
140 | Template4View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:140:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
138 | Template3View(configuration)
139 | case .template4:
140 | Template4View(configuration)
| |- warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'configuration' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
141 | case .template5:
142 | Template5View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:142:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
140 | Template4View(configuration)
141 | case .template5:
142 | Template5View(configuration)
| |- warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'configuration' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
143 | case .template7:
144 | Template7View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:144:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
142 | Template5View(configuration)
143 | case .template7:
144 | Template7View(configuration)
| |- warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'configuration' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
145 | }
146 | #endif
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:78:18: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
76 | case let .success(configuration):
77 | Self.createView(template: template, configuration: configuration)
78 | .adaptTemplateView(with: configuration)
| |- warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'configuration' to main actor-isolated instance method 'adaptTemplateView(with:)' risks causing data races between main actor-isolated and task-isolated uses
79 | .task(id: offering) {
80 | await introEligibility.computeEligibility(for: configuration.packages)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:78:18: warning: sending value of non-Sendable type 'some View' risks causing data races; this is an error in the Swift 6 language mode
76 | case let .success(configuration):
77 | Self.createView(template: template, configuration: configuration)
78 | .adaptTemplateView(with: configuration)
| |- warning: sending value of non-Sendable type 'some View' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated value of non-Sendable type 'some View' to main actor-isolated instance method 'adaptTemplateView(with:)' risks causing races in between task-isolated and main actor-isolated uses
79 | .task(id: offering) {
80 | await introEligibility.computeEligibility(for: configuration.packages)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:84:13: warning: sending 'purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
82 |
83 | case let .failure(error):
84 | DefaultPaywallView(
| |- warning: sending 'purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'purchaseHandler' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
85 | handler: purchaseHandler,
86 | warning: .from(error: error),
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:149:53: warning: sending value of non-Sendable type '() async -> Bool' risks causing data races; this is an error in the Swift 6 language mode
147 | if let interceptor = self.restoreInitiatedAction {
148 | Logger.debug(Strings.restore_purchases_gate_start)
149 | let result = await self.purchaseHandler.withPendingPurchaseContinuation {
| |- warning: sending value of non-Sendable type '() async -> Bool' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated value of non-Sendable type '() async -> Bool' to nonisolated callee risks causing races in between main actor-isolated and nonisolated uses
150 | await withCheckedContinuation { continuation in
151 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:149:53: warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
147 | if let interceptor = self.restoreInitiatedAction {
148 | Logger.debug(Strings.restore_purchases_gate_start)
149 | let result = await self.purchaseHandler.withPendingPurchaseContinuation {
| |- warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self.purchaseHandler' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
150 | await withCheckedContinuation { continuation in
151 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:162:70: warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
160 | Logger.debug(Strings.restoring_purchases)
161 |
162 | let (customerInfo, success) = try await self.purchaseHandler.restorePurchases()
| |- warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self.purchaseHandler' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
163 | if success {
164 | Logger.debug(Strings.restored_purchases)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:198:53: warning: sending value of non-Sendable type '() async -> Bool' risks causing data races; this is an error in the Swift 6 language mode
196 | if let interceptor = self.offerCodeRedemptionInitiatedAction {
197 | // Wait for the interceptor to call resume before proceeding
198 | let result = await self.purchaseHandler.withPendingPurchaseContinuation {
| |- warning: sending value of non-Sendable type '() async -> Bool' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated value of non-Sendable type '() async -> Bool' to nonisolated callee risks causing races in between main actor-isolated and nonisolated uses
199 | await withCheckedContinuation { continuation in
200 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:198:53: warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
196 | if let interceptor = self.offerCodeRedemptionInitiatedAction {
197 | // Wait for the interceptor to call resume before proceeding
198 | let result = await self.purchaseHandler.withPendingPurchaseContinuation {
| |- warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self.purchaseHandler' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
199 | await withCheckedContinuation { continuation in
200 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Countdown/CountdownComponentViewModel.swift:65:14: warning: cannot access property 'timer' with a non-sendable type 'Timer.TimerPublisher?' from nonisolated deinit; this is an error in the Swift 6 language mode
63 | deinit {
64 | // Not calling stop because of async needed
65 | timer?.connect().cancel()
| `- warning: cannot access property 'timer' with a non-sendable type 'Timer.TimerPublisher?' from nonisolated deinit; this is an error in the Swift 6 language mode
66 | timer = nil
67 | cancellable = nil
Swift.Optional:1:21: note: generic enum 'Optional' does not conform to the 'Sendable' protocol
1 | @frozen public enum Optional<Wrapped> : ~Copyable where Wrapped : ~Copyable {
| `- note: generic enum 'Optional' does not conform to the 'Sendable' protocol
2 | case none
3 | case some(Wrapped)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Countdown/CountdownComponentViewModel.swift:66:15: warning: cannot access property 'timer' with a non-sendable type 'Timer.TimerPublisher?' from nonisolated deinit; this is an error in the Swift 6 language mode
64 | // Not calling stop because of async needed
65 | timer?.connect().cancel()
66 | timer = nil
| `- warning: cannot access property 'timer' with a non-sendable type 'Timer.TimerPublisher?' from nonisolated deinit; this is an error in the Swift 6 language mode
67 | cancellable = nil
68 | }
Swift.Optional:1:21: note: generic enum 'Optional' does not conform to the 'Sendable' protocol
1 | @frozen public enum Optional<Wrapped> : ~Copyable where Wrapped : ~Copyable {
| `- note: generic enum 'Optional' does not conform to the 'Sendable' protocol
2 | case none
3 | case some(Wrapped)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Countdown/CountdownComponentViewModel.swift:67:21: warning: cannot access property 'cancellable' with a non-sendable type 'AnyCancellable?' from nonisolated deinit; this is an error in the Swift 6 language mode
65 | timer?.connect().cancel()
66 | timer = nil
67 | cancellable = nil
| `- warning: cannot access property 'cancellable' with a non-sendable type 'AnyCancellable?' from nonisolated deinit; this is an error in the Swift 6 language mode
68 | }
69 |
Combine.AnyCancellable:2:20: note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
2 | final public class AnyCancellable : Cancellable, Hashable {
| `- note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
3 | public init(_ cancel: @escaping () -> Void)
4 | public init<C>(_ canceller: C) where C : Cancellable
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Countdown/CountdownComponentViewModel.swift:8:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Combine'
6 | //
7 |
8 | import Combine
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Combine'
9 | import Foundation
10 | @_spi(Internal) import RevenueCat
[1219/1219] Compiling RevenueCatUI HeaderComponentView.swift
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/MockPurchases.swift:155:23: warning: capture of 'purchase' with non-sendable type '(@escaping MockPurchases.PurchaseBlock) -> MockPurchases.PurchaseBlock' (aka '(@escaping @Sendable (Package, Optional<PromotionalOffer>, Optional<PaywallEvent>) async throws -> (transaction: Optional<StoreTransaction>, customerInfo: CustomerInfo, userCancelled: Bool)) -> @Sendable (Package, Optional<PromotionalOffer>, Optional<PaywallEvent>) async throws -> (transaction: Optional<StoreTransaction>, customerInfo: CustomerInfo, userCancelled: Bool)') in a '@Sendable' closure; this is an error in the Swift 6 language mode
153 | preferredLocaleOverride: self.preferredLocaleOverride
154 | ) { package, promotionalOffer, paywallEvent in
155 | try await purchase({ pkg, offer, event in
| |- warning: capture of 'purchase' with non-sendable type '(@escaping MockPurchases.PurchaseBlock) -> MockPurchases.PurchaseBlock' (aka '(@escaping @Sendable (Package, Optional<PromotionalOffer>, Optional<PaywallEvent>) async throws -> (transaction: Optional<StoreTransaction>, customerInfo: CustomerInfo, userCancelled: Bool)) -> @Sendable (Package, Optional<PromotionalOffer>, Optional<PaywallEvent>) async throws -> (transaction: Optional<StoreTransaction>, customerInfo: CustomerInfo, userCancelled: Bool)') in a '@Sendable' closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
156 | try await self.purchase(package: pkg, promotionalOffer: offer, paywallEvent: event)
157 | })(package, promotionalOffer, paywallEvent)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/MockPurchases.swift:159:23: warning: capture of 'restore' with non-sendable type '(@escaping MockPurchases.RestoreBlock) -> MockPurchases.RestoreBlock' (aka '(@escaping @Sendable () async throws -> CustomerInfo) -> @Sendable () async throws -> CustomerInfo') in a '@Sendable' closure; this is an error in the Swift 6 language mode
157 | })(package, promotionalOffer, paywallEvent)
158 | } restorePurchases: {
159 | try await restore(self.restorePurchases)()
| |- warning: capture of 'restore' with non-sendable type '(@escaping MockPurchases.RestoreBlock) -> MockPurchases.RestoreBlock' (aka '(@escaping @Sendable () async throws -> CustomerInfo) -> @Sendable () async throws -> CustomerInfo') in a '@Sendable' closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
160 | } trackEvent: { event in
161 | await self.track(paywallEvent: event)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/MockPurchases.swift:188:19: warning: capture of 'trackEvent' with non-sendable type '(@escaping MockPurchases.TrackEventBlock) -> MockPurchases.TrackEventBlock' (aka '(@escaping @Sendable (PaywallEvent) async -> ()) -> @Sendable (PaywallEvent) async -> ()') in a '@Sendable' closure; this is an error in the Swift 6 language mode
186 | try await self.restorePurchases()
187 | } trackEvent: { event in
188 | await trackEvent(self.track(paywallEvent:))(event)
| |- warning: capture of 'trackEvent' with non-sendable type '(@escaping MockPurchases.TrackEventBlock) -> MockPurchases.TrackEventBlock' (aka '(@escaping @Sendable (PaywallEvent) async -> ()) -> @Sendable (PaywallEvent) async -> ()') in a '@Sendable' closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
189 | } customerInfo: {
190 | try await self.customerInfo()
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PaywallEventTracker.swift:244:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'ComponentInteractionLogger' may have shared mutable state; this is an error in the Swift 6 language mode
224 | /// Lightweight wrapper so views can emit control interaction events without depending on the full `PurchaseHandler`.
225 | @available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, *)
226 | struct ComponentInteractionLogger {
| `- note: consider making struct 'ComponentInteractionLogger' conform to the 'Sendable' protocol
227 |
228 | private let action: (PaywallEvent.ComponentInteractionData) -> Bool
:
242 | @available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, *)
243 | struct ComponentInteractionLoggerKey: EnvironmentKey {
244 | static let defaultValue: ComponentInteractionLogger = .init()
| |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'ComponentInteractionLogger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
245 | }
246 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:843:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
841 | struct PurchaseInProgressPreferenceKey: PreferenceKey {
842 |
843 | static var defaultValue: Package?
| |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
844 |
845 | static func reduce(value: inout Package?, nextValue: () -> Package?) {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:854:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
852 | struct RestoreInProgressPreferenceKey: PreferenceKey {
853 |
854 | static var defaultValue: Bool = false
| |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
855 |
856 | static func reduce(value: inout Bool, nextValue: () -> Bool) {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:882:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
880 | }
881 |
882 | static var defaultValue: PurchaseResult?
| |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
883 |
884 | static func reduce(value: inout PurchaseResult?, nextValue: () -> PurchaseResult?) {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:893:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
891 | struct RestoredCustomerInfoPreferenceKey: PreferenceKey {
892 |
893 | static var defaultValue: PurchaseHandler.RestoreResult?
| |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
894 |
895 | static func reduce(value: inout PurchaseHandler.RestoreResult?, nextValue: () -> PurchaseHandler.RestoreResult?) {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:904:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
902 | struct PurchaseErrorPreferenceKey: PreferenceKey {
903 |
904 | static var defaultValue: NSError?
| |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
905 |
906 | static func reduce(value: inout NSError?, nextValue: () -> NSError?) {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:915:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
913 | struct RestoreErrorPreferenceKey: PreferenceKey {
914 |
915 | static var defaultValue: NSError?
| |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
916 |
917 | static func reduce(value: inout NSError?, nextValue: () -> NSError?) {
<unknown>:0: note: a function type must be marked '@Sendable' to conform to 'Sendable'
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:927:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type '(() -> Void)?' may have shared mutable state; this is an error in the Swift 6 language mode
925 | /// `EnvironmentKey` for storing closure triggered when paywall should be dismissed.
926 | struct RequestedDismissalKey: EnvironmentKey {
927 | static let defaultValue: (() -> Void)? = nil
| |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type '(() -> Void)?' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
928 | }
929 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:78:18: warning: call to main actor-isolated instance method 'adaptTemplateView(with:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
65 |
66 | @ViewBuilder // swiftlint:disable:next function_parameter_count
67 | func createView(
| `- note: add '@MainActor' to make instance method 'createView(for:template:configuration:introEligibility:mode:purchaseHandler:)' part of global actor 'MainActor'
68 | for offering: Offering,
69 | template: PaywallTemplate,
:
76 | case let .success(configuration):
77 | Self.createView(template: template, configuration: configuration)
78 | .adaptTemplateView(with: configuration)
| `- warning: call to main actor-isolated instance method 'adaptTemplateView(with:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
79 | .task(id: offering) {
80 | await introEligibility.computeEligibility(for: configuration.packages)
:
152 | extension View {
153 |
154 | func adaptTemplateView(with configuration: TemplateViewConfiguration) -> some View {
| `- note: calls to instance method 'adaptTemplateView(with:)' from outside of its actor context are implicitly asynchronous
155 | self
156 | .background(configuration.backgroundView)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:80:68: warning: capture of 'configuration' with non-sendable type 'TemplateViewConfiguration' in a '@Sendable' closure; this is an error in the Swift 6 language mode
78 | .adaptTemplateView(with: configuration)
79 | .task(id: offering) {
80 | await introEligibility.computeEligibility(for: configuration.packages)
| `- warning: capture of 'configuration' with non-sendable type 'TemplateViewConfiguration' in a '@Sendable' closure; this is an error in the Swift 6 language mode
81 | }
82 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Data/TemplateViewConfiguration.swift:21:8: note: consider making struct 'TemplateViewConfiguration' conform to the 'Sendable' protocol
19 | /// The processed data necessary to render a `TemplateViewType`.
20 | @available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, *)
21 | struct TemplateViewConfiguration {
| `- note: consider making struct 'TemplateViewConfiguration' conform to the 'Sendable' protocol
22 |
23 | let mode: PaywallViewMode
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:84:13: warning: call to main actor-isolated initializer 'init(handler:warning:offering:appName:iconDetailProvider:isFooterPaywall:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
65 |
66 | @ViewBuilder // swiftlint:disable:next function_parameter_count
67 | func createView(
| `- note: add '@MainActor' to make instance method 'createView(for:template:configuration:introEligibility:mode:purchaseHandler:)' part of global actor 'MainActor'
68 | for offering: Offering,
69 | template: PaywallTemplate,
:
82 |
83 | case let .failure(error):
84 | DefaultPaywallView(
| `- warning: call to main actor-isolated initializer 'init(handler:warning:offering:appName:iconDetailProvider:isFooterPaywall:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
85 | handler: purchaseHandler,
86 | warning: .from(error: error),
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Views/DefaultPaywall/DefaultPaywallView.swift:27:5: note: calls to initializer 'init(handler:warning:offering:appName:iconDetailProvider:isFooterPaywall:)' from outside of its actor context are implicitly asynchronous
25 | struct DefaultPaywallView: View {
26 |
27 | init(
| |- note: calls to initializer 'init(handler:warning:offering:appName:iconDetailProvider:isFooterPaywall:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'View'
28 | handler: PurchaseHandler,
29 | warning: PaywallWarning? = nil,
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:134:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
125 |
126 | @ViewBuilder
127 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
128 | configuration: TemplateViewConfiguration) -> some View {
129 | #if os(watchOS)
:
132 | switch template {
133 | case .template1:
134 | Template1View(configuration)
| `- warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
135 | case .template2:
136 | Template2View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template1View.swift:38:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
36 | private var purchaseHandler: PurchaseHandler
37 |
38 | init(_ configuration: TemplateViewConfiguration) {
| |- note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'TemplateViewType'
39 | self.configuration = configuration
40 | self.localization = configuration.packages.single.localization
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:136:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
125 |
126 | @ViewBuilder
127 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
128 | configuration: TemplateViewConfiguration) -> some View {
129 | #if os(watchOS)
:
134 | Template1View(configuration)
135 | case .template2:
136 | Template2View(configuration)
| `- warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
137 | case .template3:
138 | Template3View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template2View.swift:46:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
44 | private var componentInteractionLogger
45 |
46 | init(_ configuration: TemplateViewConfiguration) {
| |- note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'TemplateViewType'
47 | self._selectedPackage = .init(initialValue: configuration.packages.default)
48 | self.configuration = configuration
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:138:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
125 |
126 | @ViewBuilder
127 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
128 | configuration: TemplateViewConfiguration) -> some View {
129 | #if os(watchOS)
:
136 | Template2View(configuration)
137 | case .template3:
138 | Template3View(configuration)
| `- warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
139 | case .template4:
140 | Template4View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template3View.swift:41:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
39 | private var namespace
40 |
41 | init(_ configuration: TemplateViewConfiguration) {
| |- note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'TemplateViewType'
42 | self.configuration = configuration
43 | self.localization = configuration.packages.single.localization
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:140:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
125 |
126 | @ViewBuilder
127 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
128 | configuration: TemplateViewConfiguration) -> some View {
129 | #if os(watchOS)
:
138 | Template3View(configuration)
139 | case .template4:
140 | Template4View(configuration)
| `- warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
141 | case .template5:
142 | Template5View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template4View.swift:52:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
50 | private var componentInteractionLogger
51 |
52 | init(_ configuration: TemplateViewConfiguration) {
| |- note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'TemplateViewType'
53 | self.configuration = configuration
54 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:142:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
125 |
126 | @ViewBuilder
127 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
128 | configuration: TemplateViewConfiguration) -> some View {
129 | #if os(watchOS)
:
140 | Template4View(configuration)
141 | case .template5:
142 | Template5View(configuration)
| `- warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
143 | case .template7:
144 | Template7View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template5View.swift:51:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
49 | private var componentInteractionLogger
50 |
51 | init(_ configuration: TemplateViewConfiguration) {
| |- note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'TemplateViewType'
52 | self._selectedPackage = .init(initialValue: configuration.packages.default)
53 | self.configuration = configuration
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:144:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
125 |
126 | @ViewBuilder
127 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
128 | configuration: TemplateViewConfiguration) -> some View {
129 | #if os(watchOS)
:
142 | Template5View(configuration)
143 | case .template7:
144 | Template7View(configuration)
| `- warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
145 | }
146 | #endif
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template7View.swift:66:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
64 | }
65 |
66 | init(_ configuration: TemplateViewConfiguration) {
| |- note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'TemplateViewType'
67 | guard let (firstTier, allTiers, tierNames) = configuration.packages.multiTier else {
68 | fatalError("Attempted to display a multi-tier template with invalid data: \(configuration.packages)")
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:145:16: warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
143 |
144 | struct HeightPreferenceKey: PreferenceKey {
145 | static var defaultValue: CGFloat = 0
| |- warning: static property 'defaultValue' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
146 | static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
147 | value = max(value, nextValue())
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:429:20: warning: main actor-isolated property 'isPaused' can not be referenced from a Sendable closure; this is an error in the Swift 6 language mode
196 | @State private var autoTimer: Timer?
197 |
198 | @State private var isPaused: Bool = false
| `- note: property declared here
199 | @State private var pauseEndDate: Date?
200 | @State private var isInitialized = false
:
427 | repeats: true
428 | ) { _ in
429 | guard !isPaused else {
| `- warning: main actor-isolated property 'isPaused' can not be referenced from a Sendable closure; this is an error in the Swift 6 language mode
430 | // If paused, check if 10 seconds have passed
431 | if let pauseEndDate = pauseEndDate, Date() >= pauseEndDate {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:431:39: warning: main actor-isolated property 'pauseEndDate' can not be referenced from a Sendable closure; this is an error in the Swift 6 language mode
197 |
198 | @State private var isPaused: Bool = false
199 | @State private var pauseEndDate: Date?
| `- note: property declared here
200 | @State private var isInitialized = false
201 |
:
429 | guard !isPaused else {
430 | // If paused, check if 10 seconds have passed
431 | if let pauseEndDate = pauseEndDate, Date() >= pauseEndDate {
| `- warning: main actor-isolated property 'pauseEndDate' can not be referenced from a Sendable closure; this is an error in the Swift 6 language mode
432 | isPaused = false // Resume auto-play
433 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:432:21: warning: main actor-isolated property 'isPaused' can not be mutated from a Sendable closure; this is an error in the Swift 6 language mode
196 | @State private var autoTimer: Timer?
197 |
198 | @State private var isPaused: Bool = false
| `- note: mutation of this property is only permitted within the actor
199 | @State private var pauseEndDate: Date?
200 | @State private var isInitialized = false
:
430 | // If paused, check if 10 seconds have passed
431 | if let pauseEndDate = pauseEndDate, Date() >= pauseEndDate {
432 | isPaused = false // Resume auto-play
| `- warning: main actor-isolated property 'isPaused' can not be mutated from a Sendable closure; this is an error in the Swift 6 language mode
433 | }
434 | return
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:441:21: warning: main actor-isolated property 'opacity' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
204 |
205 | /// Used to animate opacity for the loop transition
206 | @State private var opacity: CGFloat = 1.0
| `- note: mutation of this property is only permitted within the actor
207 |
208 | // MARK: - Init
:
439 | // Fade out both slide + indicator
440 | withAnimation(.easeInOut(duration: fadeDuration)) {
441 | opacity = 0
| `- warning: main actor-isolated property 'opacity' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
442 | }
443 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:458:21: warning: main actor-isolated property 'index' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
184 |
185 | /// The current index (in `data`) of the "active" page.
186 | @State private var index: Int = 0
| `- note: mutation of this property is only permitted within the actor
187 |
188 | /// Real-time drag offset from the user's finger.
:
456 | case .slide:
457 | withAnimation(.easeInOut(duration: Double(msTransitionTime) / 1000)) {
458 | index += 1
| `- warning: main actor-isolated property 'index' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
459 | if loop {
460 | expandDataIfNeeded()
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:460:25: warning: call to main actor-isolated instance method 'expandDataIfNeeded()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
458 | index += 1
459 | if loop {
460 | expandDataIfNeeded()
| `- warning: call to main actor-isolated instance method 'expandDataIfNeeded()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
461 | pruneDataIfNeeded()
462 | } else {
:
542 | // MARK: - Expanding
543 |
544 | private func expandDataIfNeeded() {
| |- note: calls to instance method 'expandDataIfNeeded()' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'View'
545 | // If index is in the first copy, prepend another
546 | if index < originalCount {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:461:25: warning: call to main actor-isolated instance method 'pruneDataIfNeeded()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
459 | if loop {
460 | expandDataIfNeeded()
461 | pruneDataIfNeeded()
| `- warning: call to main actor-isolated instance method 'pruneDataIfNeeded()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
462 | } else {
463 | index = min(index, data.count - 1)
:
561 | // MARK: - Pruning
562 |
563 | private func pruneDataIfNeeded() {
| |- note: calls to instance method 'pruneDataIfNeeded()' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'View'
564 | let copiesInData = data.count / originalCount
565 | let maxCopiesAllowed = 5
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:463:25: warning: main actor-isolated property 'index' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
184 |
185 | /// The current index (in `data`) of the "active" page.
186 | @State private var index: Int = 0
| `- note: mutation of this property is only permitted within the actor
187 |
188 | /// Real-time drag offset from the user's finger.
:
461 | pruneDataIfNeeded()
462 | } else {
463 | index = min(index, data.count - 1)
| `- warning: main actor-isolated property 'index' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
464 | }
465 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:463:37: warning: main actor-isolated property 'index' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
184 |
185 | /// The current index (in `data`) of the "active" page.
186 | @State private var index: Int = 0
| `- note: property declared here
187 |
188 | /// Real-time drag offset from the user's finger.
:
461 | pruneDataIfNeeded()
462 | } else {
463 | index = min(index, data.count - 1)
| `- warning: main actor-isolated property 'index' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
464 | }
465 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:463:44: warning: main actor-isolated property 'data' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
181 |
182 | /// The “expanded” data array, each item with a unique ID.
183 | @State private var data: [CarouselItem<Content>] = []
| `- note: property declared here
184 |
185 | /// The current index (in `data`) of the "active" page.
:
461 | pruneDataIfNeeded()
462 | } else {
463 | index = min(index, data.count - 1)
| `- warning: main actor-isolated property 'data' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
464 | }
465 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:233:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
231 | func withPendingPurchaseContinuation<T>(_ continuation: () async throws -> T) async rethrows -> T {
232 | await MainActor.run {
233 | startAction(.pendingPurchaseContinuation)
| |- 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
234 | }
235 | let result = try await continuation()
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:237:16: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
235 | let result = try await continuation()
236 | await MainActor.run {
237 | if actionTypeInProgress == .pendingPurchaseContinuation {
| |- 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
238 | self.actionTypeInProgress = nil
239 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:398:37: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
396 | }
397 |
398 | async let fetchResultTask = self.purchases.workflow(forOfferingIdentifier: identifier)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'self' into async let risks causing data races between nonisolated and task-isolated uses
399 | async let allOfferingsTask = self.purchases.offerings()
400 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:399:38: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
397 |
398 | async let fetchResultTask = self.purchases.workflow(forOfferingIdentifier: identifier)
399 | async let allOfferingsTask = self.purchases.offerings()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'self' into async let risks causing data races between nonisolated and task-isolated uses
400 |
401 | let (fetchResult, allOfferings) = try await (fetchResultTask, allOfferingsTask)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:569:30: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
567 | switch self.purchases.purchasesAreCompletedBy {
568 | case .revenueCat:
569 | return try await performRestorePurchases()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'self' to main actor-isolated instance method 'performRestorePurchases()' risks causing data races between main actor-isolated and task-isolated uses
570 | case .myApp:
571 | return try await performExternalRestoreLogic()
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Purchasing/PurchaseHandler.swift:571:30: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
569 | return try await performRestorePurchases()
570 | case .myApp:
571 | return try await performExternalRestoreLogic()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'self' to main actor-isolated instance method 'performExternalRestoreLogic()' risks causing data races between main actor-isolated and task-isolated uses
572 | }
573 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:134:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
132 | switch template {
133 | case .template1:
134 | Template1View(configuration)
| |- warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'configuration' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
135 | case .template2:
136 | Template2View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:136:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
134 | Template1View(configuration)
135 | case .template2:
136 | Template2View(configuration)
| |- warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'configuration' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
137 | case .template3:
138 | Template3View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:138:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
136 | Template2View(configuration)
137 | case .template3:
138 | Template3View(configuration)
| |- warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'configuration' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
139 | case .template4:
140 | Template4View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:140:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
138 | Template3View(configuration)
139 | case .template4:
140 | Template4View(configuration)
| |- warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'configuration' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
141 | case .template5:
142 | Template5View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:142:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
140 | Template4View(configuration)
141 | case .template5:
142 | Template5View(configuration)
| |- warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'configuration' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
143 | case .template7:
144 | Template7View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:144:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
142 | Template5View(configuration)
143 | case .template7:
144 | Template7View(configuration)
| |- warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'configuration' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
145 | }
146 | #endif
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:78:18: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
76 | case let .success(configuration):
77 | Self.createView(template: template, configuration: configuration)
78 | .adaptTemplateView(with: configuration)
| |- warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'configuration' to main actor-isolated instance method 'adaptTemplateView(with:)' risks causing data races between main actor-isolated and task-isolated uses
79 | .task(id: offering) {
80 | await introEligibility.computeEligibility(for: configuration.packages)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:78:18: warning: sending value of non-Sendable type 'some View' risks causing data races; this is an error in the Swift 6 language mode
76 | case let .success(configuration):
77 | Self.createView(template: template, configuration: configuration)
78 | .adaptTemplateView(with: configuration)
| |- warning: sending value of non-Sendable type 'some View' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated value of non-Sendable type 'some View' to main actor-isolated instance method 'adaptTemplateView(with:)' risks causing races in between task-isolated and main actor-isolated uses
79 | .task(id: offering) {
80 | await introEligibility.computeEligibility(for: configuration.packages)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:84:13: warning: sending 'purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
82 |
83 | case let .failure(error):
84 | DefaultPaywallView(
| |- warning: sending 'purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'purchaseHandler' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
85 | handler: purchaseHandler,
86 | warning: .from(error: error),
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:149:53: warning: sending value of non-Sendable type '() async -> Bool' risks causing data races; this is an error in the Swift 6 language mode
147 | if let interceptor = self.restoreInitiatedAction {
148 | Logger.debug(Strings.restore_purchases_gate_start)
149 | let result = await self.purchaseHandler.withPendingPurchaseContinuation {
| |- warning: sending value of non-Sendable type '() async -> Bool' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated value of non-Sendable type '() async -> Bool' to nonisolated callee risks causing races in between main actor-isolated and nonisolated uses
150 | await withCheckedContinuation { continuation in
151 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:149:53: warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
147 | if let interceptor = self.restoreInitiatedAction {
148 | Logger.debug(Strings.restore_purchases_gate_start)
149 | let result = await self.purchaseHandler.withPendingPurchaseContinuation {
| |- warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self.purchaseHandler' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
150 | await withCheckedContinuation { continuation in
151 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:162:70: warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
160 | Logger.debug(Strings.restoring_purchases)
161 |
162 | let (customerInfo, success) = try await self.purchaseHandler.restorePurchases()
| |- warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self.purchaseHandler' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
163 | if success {
164 | Logger.debug(Strings.restored_purchases)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:198:53: warning: sending value of non-Sendable type '() async -> Bool' risks causing data races; this is an error in the Swift 6 language mode
196 | if let interceptor = self.offerCodeRedemptionInitiatedAction {
197 | // Wait for the interceptor to call resume before proceeding
198 | let result = await self.purchaseHandler.withPendingPurchaseContinuation {
| |- warning: sending value of non-Sendable type '() async -> Bool' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated value of non-Sendable type '() async -> Bool' to nonisolated callee risks causing races in between main actor-isolated and nonisolated uses
199 | await withCheckedContinuation { continuation in
200 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:198:53: warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
196 | if let interceptor = self.offerCodeRedemptionInitiatedAction {
197 | // Wait for the interceptor to call resume before proceeding
198 | let result = await self.purchaseHandler.withPendingPurchaseContinuation {
| |- warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self.purchaseHandler' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
199 | await withCheckedContinuation { continuation in
200 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Countdown/CountdownComponentViewModel.swift:65:14: warning: cannot access property 'timer' with a non-sendable type 'Timer.TimerPublisher?' from nonisolated deinit; this is an error in the Swift 6 language mode
63 | deinit {
64 | // Not calling stop because of async needed
65 | timer?.connect().cancel()
| `- warning: cannot access property 'timer' with a non-sendable type 'Timer.TimerPublisher?' from nonisolated deinit; this is an error in the Swift 6 language mode
66 | timer = nil
67 | cancellable = nil
Swift.Optional:1:21: note: generic enum 'Optional' does not conform to the 'Sendable' protocol
1 | @frozen public enum Optional<Wrapped> : ~Copyable where Wrapped : ~Copyable {
| `- note: generic enum 'Optional' does not conform to the 'Sendable' protocol
2 | case none
3 | case some(Wrapped)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Countdown/CountdownComponentViewModel.swift:66:15: warning: cannot access property 'timer' with a non-sendable type 'Timer.TimerPublisher?' from nonisolated deinit; this is an error in the Swift 6 language mode
64 | // Not calling stop because of async needed
65 | timer?.connect().cancel()
66 | timer = nil
| `- warning: cannot access property 'timer' with a non-sendable type 'Timer.TimerPublisher?' from nonisolated deinit; this is an error in the Swift 6 language mode
67 | cancellable = nil
68 | }
Swift.Optional:1:21: note: generic enum 'Optional' does not conform to the 'Sendable' protocol
1 | @frozen public enum Optional<Wrapped> : ~Copyable where Wrapped : ~Copyable {
| `- note: generic enum 'Optional' does not conform to the 'Sendable' protocol
2 | case none
3 | case some(Wrapped)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Countdown/CountdownComponentViewModel.swift:67:21: warning: cannot access property 'cancellable' with a non-sendable type 'AnyCancellable?' from nonisolated deinit; this is an error in the Swift 6 language mode
65 | timer?.connect().cancel()
66 | timer = nil
67 | cancellable = nil
| `- warning: cannot access property 'cancellable' with a non-sendable type 'AnyCancellable?' from nonisolated deinit; this is an error in the Swift 6 language mode
68 | }
69 |
Combine.AnyCancellable:2:20: note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
2 | final public class AnyCancellable : Cancellable, Hashable {
| `- note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
3 | public init(_ cancel: @escaping () -> Void)
4 | public init<C>(_ canceller: C) where C : Cancellable
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Countdown/CountdownComponentViewModel.swift:8:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Combine'
6 | //
7 |
8 | import Combine
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Combine'
9 | import Foundation
10 | @_spi(Internal) import RevenueCat
Build complete! (89.37s)
Fetching https://github.com/quick/nimble
Fetching https://github.com/pointfreeco/swift-snapshot-testing from cache
[1/19823] Fetching nimble
Fetched https://github.com/quick/nimble from cache (37.99s)
Fetched https://github.com/pointfreeco/swift-snapshot-testing from cache (38.02s)
Computing version for https://github.com/pointfreeco/swift-snapshot-testing
Computed https://github.com/pointfreeco/swift-snapshot-testing at 1.18.9 (38.60s)
Fetching https://github.com/pointfreeco/swift-custom-dump from cache
Fetching https://github.com/swiftlang/swift-syntax from cache
Fetched https://github.com/pointfreeco/swift-custom-dump from cache (1.00s)
Fetched https://github.com/swiftlang/swift-syntax from cache (1.94s)
Computing version for https://github.com/quick/nimble
Computed https://github.com/quick/nimble at 13.7.1 (2.49s)
Fetching https://github.com/mattgallagher/CwlPreconditionTesting.git
[1/1257] Fetching cwlpreconditiontesting
Fetched https://github.com/mattgallagher/CwlPreconditionTesting.git from cache (2.95s)
Computing version for https://github.com/mattgallagher/CwlPreconditionTesting.git
Computed https://github.com/mattgallagher/CwlPreconditionTesting.git at 2.2.2 (3.52s)
Fetching https://github.com/mattgallagher/CwlCatchException.git
[1/460] Fetching cwlcatchexception
Fetched https://github.com/mattgallagher/CwlCatchException.git from cache (1.75s)
Computing version for https://github.com/mattgallagher/CwlCatchException.git
Computed https://github.com/mattgallagher/CwlCatchException.git at 2.2.1 (2.33s)
Computing version for https://github.com/pointfreeco/swift-custom-dump
Computed https://github.com/pointfreeco/swift-custom-dump at 1.5.0 (0.45s)
Fetching https://github.com/pointfreeco/xctest-dynamic-overlay from cache
Fetched https://github.com/pointfreeco/xctest-dynamic-overlay from cache (0.64s)
Computing version for https://github.com/swiftlang/swift-syntax
Computed https://github.com/swiftlang/swift-syntax at 602.0.0 (1.53s)
Computing version for https://github.com/pointfreeco/xctest-dynamic-overlay
Computed https://github.com/pointfreeco/xctest-dynamic-overlay at 1.9.0 (0.60s)
Creating working copy for https://github.com/mattgallagher/CwlPreconditionTesting.git
Working copy of https://github.com/mattgallagher/CwlPreconditionTesting.git resolved at 2.2.2
Creating working copy for https://github.com/pointfreeco/swift-custom-dump
Working copy of https://github.com/pointfreeco/swift-custom-dump resolved at 1.5.0
Creating working copy for https://github.com/pointfreeco/xctest-dynamic-overlay
Working copy of https://github.com/pointfreeco/xctest-dynamic-overlay resolved at 1.9.0
Creating working copy for https://github.com/pointfreeco/swift-snapshot-testing
Working copy of https://github.com/pointfreeco/swift-snapshot-testing resolved at 1.18.9
Creating working copy for https://github.com/mattgallagher/CwlCatchException.git
Working copy of https://github.com/mattgallagher/CwlCatchException.git resolved at 2.2.1
Creating working copy for https://github.com/swiftlang/swift-syntax
Working copy of https://github.com/swiftlang/swift-syntax resolved at 602.0.0
Creating working copy for https://github.com/quick/nimble
Working copy of https://github.com/quick/nimble resolved at 13.7.1
warning: 'spi-builder-workspace': Invalid Exclude '/Users/admin/builder/spi-builder-workspace/Tests/RevenueCatUITests/Templates/__Snapshots__': File not found.
warning: 'spi-builder-workspace': ignoring broken symlink /Users/admin/builder/spi-builder-workspace/Tests/RevenueCatUITests/PaywallsV2/__PreviewResources__
warning: 'spi-builder-workspace': Invalid Resource 'PaywallsV2/__PreviewResources__': File not found.
warning: 'nimble': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
/Users/admin/builder/spi-builder-workspace/.build/checkouts/nimble/Sources/Nimble/PrivacyInfo.xcprivacy
Build complete.
{
"default_localization" : "en",
"dependencies" : [
{
"identity" : "nimble",
"requirement" : {
"exact" : [
"13.7.1"
]
},
"type" : "sourceControl",
"url" : "https://github.com/quick/nimble"
},
{
"identity" : "swift-snapshot-testing",
"requirement" : {
"exact" : [
"1.18.9"
]
},
"type" : "sourceControl",
"url" : "https://github.com/pointfreeco/swift-snapshot-testing"
}
],
"manifest_display_name" : "RevenueCat",
"name" : "RevenueCat",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.15"
},
{
"name" : "watchos",
"version" : "6.2"
},
{
"name" : "tvos",
"version" : "13.0"
},
{
"name" : "ios",
"version" : "13.0"
},
{
"name" : "visionos",
"version" : "1.0"
}
],
"products" : [
{
"name" : "RevenueCat",
"targets" : [
"RevenueCat"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "RevenueCat_CustomEntitlementComputation",
"targets" : [
"RevenueCat_CustomEntitlementComputation"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "ReceiptParser",
"targets" : [
"ReceiptParser"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "RevenueCatUI",
"targets" : [
"RevenueCatUI"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "RevenueCat_CustomEntitlementComputation",
"module_type" : "SwiftTarget",
"name" : "RevenueCat_CustomEntitlementComputation",
"path" : "CustomEntitlementComputation",
"product_memberships" : [
"RevenueCat_CustomEntitlementComputation"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/CustomEntitlementComputation/PrivacyInfo.xcprivacy",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"Ads/AdTracker.swift",
"Ads/AdsAPI.swift",
"Ads/Events/AdEvent.swift",
"Ads/Events/AdEventStore.swift",
"Ads/Events/Networking/AdEventsRequest.swift",
"Ads/Events/Networking/AdHTTPRequestPath.swift",
"Ads/Events/Networking/PostAdEventsOperation.swift",
"Ads/Events/StoredAdEvent.swift",
"Ads/Events/StoredAdEventSerializer.swift",
"Ads/RewardVerification/Networking/GetRewardVerificationStatusOperation.swift",
"Ads/RewardVerification/Networking/RewardVerificationStatusCallback.swift",
"Ads/RewardVerification/Networking/RewardVerificationStatusResponse.swift",
"Ads/RewardVerification/RewardVerificationPollStatus.swift",
"Ads/RewardVerification/VerifiedReward.swift",
"Ads/RewardVerification/VirtualCurrencyReward.swift",
"Attribution/ASIdManagerProxy.swift",
"Attribution/AttributionData.swift",
"Attribution/AttributionFetcher.swift",
"Attribution/AttributionNetwork.swift",
"Attribution/AttributionPoster.swift",
"Attribution/AttributionTypeFactory.swift",
"Attribution/TrackingManagerProxy.swift",
"Caching/CacheStatus.swift",
"Caching/Checksum.swift",
"Caching/DeviceCache.swift",
"Caching/DirectoryHelper.swift",
"Caching/FileRepository.swift",
"Caching/InMemoryCachedObject.swift",
"Caching/KeyedDeferredValueStore.swift",
"Caching/LargeItemCacheType.swift",
"Caching/URLWithValidation.swift",
"CodableExtensions/PeriodType+Extensions.swift",
"CodableExtensions/PurchaseOwnershipType+Extensions.swift",
"CodableExtensions/Store+Extensions.swift",
"CustomerCenter/CustomerCenterConfigData.swift",
"CustomerCenter/CustomerCenterPresentationMode.swift",
"CustomerCenter/Events/CustomerCenterEvent.swift",
"CustomerCenter/Events/Networking/EventsRequest+CustomerCenter.swift",
"DeepLink/DeepLinkParser.swift",
"Diagnostics/DiagnosticsEvent.swift",
"Diagnostics/DiagnosticsFileHandler.swift",
"Diagnostics/DiagnosticsTracker.swift",
"Diagnostics/FileHandler.swift",
"Diagnostics/Networking/DiagnosticsEventsRequest.swift",
"Diagnostics/Networking/DiagnosticsHTTPRequestPath.swift",
"Diagnostics/Networking/DiagnosticsPostOperation.swift",
"Diagnostics/Networking/DiagnosticsSynchronizer.swift",
"DocCDocumentation/EmptyFile.swift",
"Error Handling/Assertions.swift",
"Error Handling/BackendError.swift",
"Error Handling/BackendErrorCode.swift",
"Error Handling/DescribableError.swift",
"Error Handling/ErrorCode.swift",
"Error Handling/ErrorDetails.swift",
"Error Handling/ErrorUtils.swift",
"Error Handling/PurchasesError.swift",
"Error Handling/SKError+Extensions.swift",
"Error Handling/StoreKitError+Extensions.swift",
"Error Handling/StoreKitErrorHelper.swift",
"Events/EventsManager.swift",
"Events/FeatureEvents/FeatureEvent.swift",
"Events/FeatureEvents/FeatureEventStore.swift",
"Events/FeatureEvents/Networking/FeatureEventHTTPRequestPath.swift",
"Events/FeatureEvents/Networking/FeatureEventsRequest.swift",
"Events/FeatureEvents/Networking/PostFeatureEventsOperation.swift",
"Events/FeatureEvents/StoredFeatureEvent.swift",
"Events/FeatureEvents/StoredFeatureEventSerializer.swift",
"Events/Networking/EventsHTTPRequestPath.swift",
"FoundationExtensions/Array+Extensions.swift",
"FoundationExtensions/AsyncExtensions.swift",
"FoundationExtensions/Data+Extensions.swift",
"FoundationExtensions/Date+Extensions.swift",
"FoundationExtensions/Decoder+Extensions.swift",
"FoundationExtensions/Dictionary+Extensions.swift",
"FoundationExtensions/DispatchTimeInterval+Extensions.swift",
"FoundationExtensions/Error+Extensions.swift",
"FoundationExtensions/Integer+Extensions.swift",
"FoundationExtensions/Locale+Extensions.swift",
"FoundationExtensions/OperationQueue+Extensions.swift",
"FoundationExtensions/Operators+Extensions.swift",
"FoundationExtensions/Optional+Extensions.swift",
"FoundationExtensions/Result+Extensions.swift",
"FoundationExtensions/Set+Extensions.swift",
"FoundationExtensions/String+Extensions.swift",
"FoundationExtensions/TimeInterval+Extensions.swift",
"FoundationExtensions/UIApplication+RCExtensions.swift",
"FoundationExtensions/UserDefaults+Extensions.swift",
"Identity/CustomerInfo+ActiveDates.swift",
"Identity/CustomerInfo+NonSubscriptions.swift",
"Identity/CustomerInfo.swift",
"Identity/CustomerInfoManager.swift",
"Identity/IdentityManager.swift",
"Identity/ProductPaidPrice.swift",
"Identity/SubscriptionInfo.swift",
"LocalReceiptParsing/BasicTypes/ASN1Container.swift",
"LocalReceiptParsing/BasicTypes/ASN1ObjectIdentifier.swift",
"LocalReceiptParsing/BasicTypes/AppleReceipt.swift",
"LocalReceiptParsing/BasicTypes/InAppPurchase.swift",
"LocalReceiptParsing/Builders/ASN1ContainerBuilder.swift",
"LocalReceiptParsing/Builders/ASN1ObjectIdentifierBuilder.swift",
"LocalReceiptParsing/Builders/AppleReceiptBuilder.swift",
"LocalReceiptParsing/Builders/InAppPurchaseBuilder.swift",
"LocalReceiptParsing/DataConverters/ArraySlice_UInt8+Extensions.swift",
"LocalReceiptParsing/DataConverters/Codable+Extensions.swift",
"LocalReceiptParsing/DataConverters/DateFormatter+Extensions.swift",
"LocalReceiptParsing/DataConverters/UInt8+Extensions.swift",
"LocalReceiptParsing/Helpers/FileReader.swift",
"LocalReceiptParsing/Helpers/LoggerType.swift",
"LocalReceiptParsing/Helpers/ProcessInfo+Extensions.swift",
"LocalReceiptParsing/Helpers/ReceiptParserLogger.swift",
"LocalReceiptParsing/Helpers/ReceiptStrings.swift",
"LocalReceiptParsing/LocalReceiptFetcher.swift",
"LocalReceiptParsing/PurchasesReceiptParser.swift",
"LocalReceiptParsing/ReceiptParsingError.swift",
"Logging/LogIntent.swift",
"Logging/Logger.swift",
"Logging/Strings/AnalyticsStrings.swift",
"Logging/Strings/AttributionStrings.swift",
"Logging/Strings/BackendErrorStrings.swift",
"Logging/Strings/CacheStrings.swift",
"Logging/Strings/CodableStrings.swift",
"Logging/Strings/ConfigureStrings.swift",
"Logging/Strings/CustomerInfoStrings.swift",
"Logging/Strings/DiagnosticsStrings.swift",
"Logging/Strings/ETagStrings.swift",
"Logging/Strings/EligibilityStrings.swift",
"Logging/Strings/EventsManagerStrings.swift",
"Logging/Strings/FileRepositoryStrings.swift",
"Logging/Strings/IdentityStrings.swift",
"Logging/Strings/ManageSubscriptionsStrings.swift",
"Logging/Strings/NetworkStrings.swift",
"Logging/Strings/OfferingStrings.swift",
"Logging/Strings/OfflineEntitlementsStrings.swift",
"Logging/Strings/PaywallsStrings.swift",
"Logging/Strings/PurchaseStrings.swift",
"Logging/Strings/SigningStrings.swift",
"Logging/Strings/StoreKitStrings.swift",
"Logging/Strings/Strings.swift",
"Logging/Strings/TransactionMetadataStrings.swift",
"Logging/Strings/VirtualCurrencyStrings.swift",
"Logging/Strings/WebRedemptionStrings.swift",
"Misc/Box.swift",
"Misc/Codable/AnyDecodable.swift",
"Misc/Codable/AnyEncodable.swift",
"Misc/Codable/DefaultDecodable.swift",
"Misc/Codable/EnsureNonEmptyCollectionDecodable.swift",
"Misc/Codable/IgnoreHashable.swift",
"Misc/Codable/NonEmptyStringDecodable.swift",
"Misc/Codable/RawDataContainer.swift",
"Misc/Concurrency/Atomic.swift",
"Misc/Concurrency/Lock.swift",
"Misc/Concurrency/OperationDispatcher.swift",
"Misc/Concurrency/Purchases+async.swift",
"Misc/Concurrency/Purchases+nonasync.swift",
"Misc/Concurrency/SynchronizedLargeItemCache.swift",
"Misc/Concurrency/SynchronizedUserDefaults.swift",
"Misc/DangerousSettings.swift",
"Misc/DateAndTime/Clock.swift",
"Misc/DateAndTime/DateExtensions.swift",
"Misc/DateAndTime/DateProvider.swift",
"Misc/DateAndTime/ISODurationFormatter.swift",
"Misc/DateAndTime/ISOPeriodFormatter.swift",
"Misc/DateAndTime/TimingUtil.swift",
"Misc/Deprecations.swift",
"Misc/Either.swift",
"Misc/Locale/PreferredLocalesProvider.swift",
"Misc/MacDevice.swift",
"Misc/MapAppStoreDetector.swift",
"Misc/Obsoletions.swift",
"Misc/PlatformInfo.swift",
"Misc/PriceFormatterProvider.swift",
"Misc/RateLimiter.swift",
"Misc/SandboxEnvironmentDetector.swift",
"Misc/StoreKitVersion.swift",
"Misc/SystemInfo.swift",
"Networking/Backend.swift",
"Networking/BackendConfiguration.swift",
"Networking/Caching/CacheFetchPolicy.swift",
"Networking/Caching/CallbackCache.swift",
"Networking/Caching/CallbackCacheStatus.swift",
"Networking/Caching/CustomerCenterConfigCallback.swift",
"Networking/Caching/CustomerInfoCallback.swift",
"Networking/Caching/IsPurchaseAllowedByRestoreBehaviorCallback.swift",
"Networking/Caching/LogInCallback.swift",
"Networking/Caching/OfferingsCallback.swift",
"Networking/Caching/ProductEntitlementMappingCallback.swift",
"Networking/Caching/VirtualCurrenciesCallback.swift",
"Networking/Caching/WebBillingProductsCallback.swift",
"Networking/Caching/WebOfferingProductsCallback.swift",
"Networking/Caching/WorkflowsCallback.swift",
"Networking/ConnectionErrorReason.swift",
"Networking/CustomerAPI.swift",
"Networking/CustomerCenterConfigAPI.swift",
"Networking/HTTPClient/DNSChecker.swift",
"Networking/HTTPClient/ETagManager.swift",
"Networking/HTTPClient/ErrorResponse.swift",
"Networking/HTTPClient/HTTPClient.swift",
"Networking/HTTPClient/HTTPRequest.swift",
"Networking/HTTPClient/HTTPRequestBody.swift",
"Networking/HTTPClient/HTTPRequestPath.swift",
"Networking/HTTPClient/HTTPRequestTimeoutManager.swift",
"Networking/HTTPClient/HTTPResponse.swift",
"Networking/HTTPClient/HTTPResponseBody.swift",
"Networking/HTTPClient/HTTPStatusCode.swift",
"Networking/HTTPClient/NetworkError.swift",
"Networking/HTTPClient/RedirectLoggerTaskDelegate.swift",
"Networking/HTTPClient/SimpleNetworkServiceType.swift",
"Networking/IdentityAPI.swift",
"Networking/InternalAPI.swift",
"Networking/OfferingsAPI.swift",
"Networking/OfflineEntitlementsAPI.swift",
"Networking/Operations/GetCustomerCenterConfigOperation.swift",
"Networking/Operations/GetCustomerInfoOperation.swift",
"Networking/Operations/GetIntroEligibilityOperation.swift",
"Networking/Operations/GetOfferingsOperation.swift",
"Networking/Operations/GetProductEntitlementMappingOperation.swift",
"Networking/Operations/GetVirtualCurrenciesOperation.swift",
"Networking/Operations/GetWebBillingProductsOperation.swift",
"Networking/Operations/GetWebOfferingProductsOperation.swift",
"Networking/Operations/GetWorkflowOperation.swift",
"Networking/Operations/Handling/CustomerInfoResponseHandler.swift",
"Networking/Operations/HealthOperation.swift",
"Networking/Operations/HealthReportAvailabilityOperation.swift",
"Networking/Operations/HealthReportOperation.swift",
"Networking/Operations/LogInOperation.swift",
"Networking/Operations/NetworkOperation.swift",
"Networking/Operations/PostAdServicesTokenOperation.swift",
"Networking/Operations/PostAttributionDataOperation.swift",
"Networking/Operations/PostIsPurchaseAllowedByRestoreBehaviorOperation.swift",
"Networking/Operations/PostOfferForSigningOperation.swift",
"Networking/Operations/PostReceiptDataOperation.swift",
"Networking/Operations/PostRedeemWebPurchaseOperation.swift",
"Networking/Operations/PostSubscriberAttributesOperation.swift",
"Networking/RedeemWebPurchaseAPI.swift",
"Networking/Responses/CustomerCenterConfigResponse.swift",
"Networking/Responses/CustomerInfoResponse.swift",
"Networking/Responses/GetIntroEligibilityResponse.swift",
"Networking/Responses/HealthReportAvailabilityResponse.swift",
"Networking/Responses/HealthReportResponse.swift",
"Networking/Responses/IsPurchaseAllowedByRestoreBehaviorResponse.swift",
"Networking/Responses/OfferingsResponse.swift",
"Networking/Responses/PostOfferResponse.swift",
"Networking/Responses/ProductEntitlementMappingResponse.swift",
"Networking/Responses/RevenueCatUI/PaywallComponentsData.swift",
"Networking/Responses/RevenueCatUI/UIConfig.swift",
"Networking/Responses/VirtualCurrenciesResponse.swift",
"Networking/Responses/WebBillingProductsResponse.swift",
"Networking/Responses/WebOfferingProductsResponse.swift",
"Networking/Responses/WorkflowsResponse.swift",
"Networking/VirtualCurrenciesAPI.swift",
"Networking/WebBillingAPI.swift",
"Networking/WebBillingHTTPRequestPath.swift",
"Networking/Workflows/WorkflowDetailProcessor.swift",
"Networking/Workflows/WorkflowResponseAction.swift",
"Networking/WorkflowsAPI.swift",
"OfflineEntitlements/CustomerInfo+OfflineEntitlements.swift",
"OfflineEntitlements/OfflineCustomerInfoCreator.swift",
"OfflineEntitlements/OfflineEntitlementsManager.swift",
"OfflineEntitlements/ProductEntitlementMapping.swift",
"OfflineEntitlements/ProductEntitlementMappingFetcher.swift",
"OfflineEntitlements/PurchasedProductsFetcher.swift",
"OfflineEntitlements/PurchasedSK2Product.swift",
"Paywalls/Components/Common/Background.swift",
"Paywalls/Components/Common/Border.swift",
"Paywalls/Components/Common/ComponentOverrides.swift",
"Paywalls/Components/Common/Dimension.swift",
"Paywalls/Components/Common/PaywallComponentBase.swift",
"Paywalls/Components/Common/PaywallComponentLocalization.swift",
"Paywalls/Components/Common/PaywallComponentPropertyTypes.swift",
"Paywalls/Components/PaywallButtonComponent.swift",
"Paywalls/Components/PaywallCarouselComponent.swift",
"Paywalls/Components/PaywallCountdownComponent.swift",
"Paywalls/Components/PaywallHeaderComponent.swift",
"Paywalls/Components/PaywallIconComponent.swift",
"Paywalls/Components/PaywallImageComponent.swift",
"Paywalls/Components/PaywallPackageComponent.swift",
"Paywalls/Components/PaywallPurchaseButtonComponent.swift",
"Paywalls/Components/PaywallStackComponent.swift",
"Paywalls/Components/PaywallStickyFooterComponent.swift",
"Paywalls/Components/PaywallTabsComponent.swift",
"Paywalls/Components/PaywallTextComponent.swift",
"Paywalls/Components/PaywallTimelineComponent.swift",
"Paywalls/Components/PaywallV2CacheWarming.swift",
"Paywalls/Components/PaywallVideoComponent.swift",
"Paywalls/Components/Transitions/PaywallAnimation.swift",
"Paywalls/Components/Transitions/PaywallTransition.swift",
"Paywalls/Events/CustomPaywallEvent.swift",
"Paywalls/Events/CustomPaywallImpressionParams.swift",
"Paywalls/Events/Networking/EventsRequest+CustomPaywallImpression.swift",
"Paywalls/Events/Networking/EventsRequest+Paywall.swift",
"Paywalls/Events/PaywallEvent.swift",
"Paywalls/ExitOffer.swift",
"Paywalls/Locale+Comparison.swift",
"Paywalls/PaywallCacheWarming.swift",
"Paywalls/PaywallColor.swift",
"Paywalls/PaywallData+Localization.swift",
"Paywalls/PaywallData.swift",
"Paywalls/PaywallFontManagerType.swift",
"Paywalls/PaywallSource.swift",
"Paywalls/PaywallViewMode.swift",
"Paywalls/SubscriptionHistoryTracker.swift",
"Purchasing/CachingProductsManager.swift",
"Purchasing/CachingTrialOrIntroPriceEligibilityChecker.swift",
"Purchasing/Configuration.swift",
"Purchasing/EntitlementInfo.swift",
"Purchasing/EntitlementInfos.swift",
"Purchasing/IntroEligibility.swift",
"Purchasing/IntroEligibilityCalculator.swift",
"Purchasing/NonSubscriptionTransaction.swift",
"Purchasing/Offering.swift",
"Purchasing/Offerings.swift",
"Purchasing/OfferingsFactory.swift",
"Purchasing/OfferingsManager.swift",
"Purchasing/Package.swift",
"Purchasing/PackageType.swift",
"Purchasing/ProductRequestData+Initialization.swift",
"Purchasing/ProductRequestData.swift",
"Purchasing/ProductsManager.swift",
"Purchasing/ProductsManagerFactory.swift",
"Purchasing/ProductsManagerType.swift",
"Purchasing/ProductsRequestFactory.swift",
"Purchasing/PurchaseOwnershipType.swift",
"Purchasing/Purchases/Attribution.swift",
"Purchasing/Purchases/LocalTransactionMetadata.swift",
"Purchasing/Purchases/LocalTransactionMetadataStore.swift",
"Purchasing/Purchases/PurchaseParams.swift",
"Purchasing/Purchases/Purchases.swift",
"Purchasing/Purchases/PurchasesAreCompletedBy.swift",
"Purchasing/Purchases/PurchasesDelegate.swift",
"Purchasing/Purchases/PurchasesOrchestrator.swift",
"Purchasing/Purchases/PurchasesType.swift",
"Purchasing/Purchases/TransactionMetadataSyncHelper.swift",
"Purchasing/Purchases/TransactionNotifications.swift",
"Purchasing/Purchases/TransactionPoster.swift",
"Purchasing/ReceiptFetcher.swift",
"Purchasing/ReceiptRefreshPolicy.swift",
"Purchasing/SimulatedStore/SimulatedStoreProduct.swift",
"Purchasing/SimulatedStore/SimulatedStoreProductsManager.swift",
"Purchasing/SimulatedStore/SimulatedStorePurchaseHandler.swift",
"Purchasing/SimulatedStore/SimulatedStorePurchaseUI.swift",
"Purchasing/SimulatedStore/SimulatedStoreTransaction.swift",
"Purchasing/SimulatedStore/WebBillingProduct+SimulatedStoreProduct.swift",
"Purchasing/StoreKit1/PaymentQueueWrapper.swift",
"Purchasing/StoreKit1/ProductsFetcherSK1.swift",
"Purchasing/StoreKit1/StoreKit1Wrapper.swift",
"Purchasing/StoreKit1/StoreKitRequestFetcher.swift",
"Purchasing/StoreKit2/Observer Mode/StoreKit2ObserverModePurchaseDetector.swift",
"Purchasing/StoreKit2/ProductsFetcherSK2.swift",
"Purchasing/StoreKit2/SK2AppTransaction.swift",
"Purchasing/StoreKit2/SK2BeginRefundRequestHelper.swift",
"Purchasing/StoreKit2/StoreKit2PromotionalOfferPurchaseOptions.swift",
"Purchasing/StoreKit2/StoreKit2PurchaseIntentListener.swift",
"Purchasing/StoreKit2/StoreKit2Receipt.swift",
"Purchasing/StoreKit2/StoreKit2StorefrontListener.swift",
"Purchasing/StoreKit2/StoreKit2TransactionFetcher.swift",
"Purchasing/StoreKit2/StoreKit2TransactionListener.swift",
"Purchasing/StoreKit2/Win-Back Offers/WinBackOfferEligibilityCalculator.swift",
"Purchasing/StoreKit2/Win-Back Offers/WinBackOfferEligibilityCalculatorType.swift",
"Purchasing/StoreKitAbstractions/EncodedAppleReceipt.swift",
"Purchasing/StoreKitAbstractions/ProductType.swift",
"Purchasing/StoreKitAbstractions/PromotionalOffer.swift",
"Purchasing/StoreKitAbstractions/SK1StoreProduct.swift",
"Purchasing/StoreKitAbstractions/SK1StoreProductDiscount.swift",
"Purchasing/StoreKitAbstractions/SK1StoreTransaction.swift",
"Purchasing/StoreKitAbstractions/SK1Storefront.swift",
"Purchasing/StoreKitAbstractions/SK2StoreProduct.swift",
"Purchasing/StoreKitAbstractions/SK2StoreProductDiscount.swift",
"Purchasing/StoreKitAbstractions/SK2StoreTransaction.swift",
"Purchasing/StoreKitAbstractions/SK2Storefront.swift",
"Purchasing/StoreKitAbstractions/StoreEnvironment.swift",
"Purchasing/StoreKitAbstractions/StoreKitWorkarounds.swift",
"Purchasing/StoreKitAbstractions/StoreProduct.swift",
"Purchasing/StoreKitAbstractions/StoreProductDiscount.swift",
"Purchasing/StoreKitAbstractions/StoreTransaction.swift",
"Purchasing/StoreKitAbstractions/Storefront.swift",
"Purchasing/StoreKitAbstractions/StorefrontProvider.swift",
"Purchasing/StoreKitAbstractions/SubscriptionPeriod.swift",
"Purchasing/StoreKitAbstractions/Test Data/TestStoreProduct.swift",
"Purchasing/StoreKitAbstractions/Test Data/TestStoreProductDiscount.swift",
"Purchasing/StoreKitAbstractions/TestStoreTransaction.swift",
"Purchasing/StoreKitAbstractions/TransactionReason.swift",
"Purchasing/StoreKitAbstractions/WinBackOffer.swift",
"Purchasing/TransactionsFactory.swift",
"Purchasing/TransactionsManager.swift",
"Purchasing/TrialOrIntroPriceEligibilityChecker.swift",
"Security/FakeSigning.swift",
"Security/HTTPRequest+Signing.swift",
"Security/HTTPRequestBody+Signing.swift",
"Security/Signing+ResponseVerification.swift",
"Security/Signing.swift",
"Security/VerificationResult.swift",
"SubscriberAttributes/AttributionDataMigrator.swift",
"SubscriberAttributes/AttributionKey.swift",
"SubscriberAttributes/ReservedSubscriberAttributes.swift",
"SubscriberAttributes/SubscriberAttribute.swift",
"SubscriberAttributes/SubscriberAttributesManager+Appstack.swift",
"SubscriberAttributes/SubscriberAttributesManager.swift",
"Support/BeginRefundRequestHelper.swift",
"Support/DebugUI/DebugContentViews.swift",
"Support/DebugUI/DebugView.swift",
"Support/DebugUI/DebugViewController.swift",
"Support/DebugUI/DebugViewModel.swift",
"Support/DebugUI/DebugViewSheetPresentation.swift",
"Support/DebugUI/ProductStatus+Icon.swift",
"Support/DebugUI/SDKHealthCheckStatus+Icon.swift",
"Support/DebugUI/SDKHealthStatus+Icon.swift",
"Support/FrameworkDisambiguation.swift",
"Support/HealthReport+Validate.swift",
"Support/ManageSubscriptionsHelper.swift",
"Support/PaymentAuthorizationProvider.swift",
"Support/PaywallExtensions.swift",
"Support/PurchasesDiagnostics.swift",
"Support/SDKHealthError+CustomNSError.swift",
"Support/SDKHealthManager.swift",
"Support/StoreMessageType.swift",
"Support/StoreMessagesHelper.swift",
"Support/SwiftVersionCheck.swift",
"Virtual Currencies/VirtualCurrencies.swift",
"Virtual Currencies/VirtualCurrency.swift",
"Virtual Currencies/VirtualCurrencyManager.swift",
"WebPurchaseRedemption/URL+WebPurchaseRedemption.swift",
"WebPurchaseRedemption/WebPurchaseRedemption.swift",
"WebPurchaseRedemption/WebPurchaseRedemptionHelper.swift",
"WebPurchaseRedemption/WebPurchaseRedemptionResult.swift"
],
"type" : "library"
},
{
"c99name" : "RevenueCatUITests",
"module_type" : "SwiftTarget",
"name" : "RevenueCatUITests",
"path" : "Tests/RevenueCatUITests",
"product_dependencies" : [
"Nimble",
"SnapshotTesting"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/RevenueCatUITests/Resources/background.heic",
"rule" : {
"copy" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/RevenueCatUITests/Resources/header.heic",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"AppStyleExtractorTests.swift",
"BaseSnapshotTest.swift",
"CustomerCenter/BaseManageSubscriptionViewModelTests.swift",
"CustomerCenter/ContactSupportUtilitiesTests.swift",
"CustomerCenter/CreateTicketViewTests.swift",
"CustomerCenter/CustomActionDataTests.swift",
"CustomerCenter/CustomerCenterActionWrapperTests.swift",
"CustomerCenter/CustomerCenterViewModelTests.swift",
"CustomerCenter/DiscountsHandlerTests.swift",
"CustomerCenter/EmailValidatorTests.swift",
"CustomerCenter/FeedbackSurveyViewModelTests.swift",
"CustomerCenter/PromotionalOfferViewModelTests.swift",
"CustomerCenter/PromotionalOfferViewTests.swift",
"CustomerCenter/PurchaseCardViewBadgeTests.swift",
"CustomerCenter/PurchaseInformationTests.swift",
"CustomerCenter/SubscriptionDetailViewModelTests.swift",
"CustomerCenter/VirtualCurrencyBalancesScreenViewModelTests.swift",
"Data/LocalizedAlertErrorTests.swift",
"Data/PackageVariablesTests.swift",
"Data/PaywallDataValidationTests.swift",
"Data/PaywallViewConfigurationTests.swift",
"Data/SemanticVersionTests.swift",
"Data/TemplateViewConfigurationTests.swift",
"Data/VariablesTests.swift",
"Helpers/AsyncTestHelpers.swift",
"Helpers/AvailabilityChecks.swift",
"Helpers/ColorComputationHelpersTests.swift",
"Helpers/CurrentTestCaseTracker.swift",
"Helpers/DataExtensions.swift",
"Helpers/ImageSnapshot.swift",
"Helpers/OSVersionEquivalent.swift",
"Helpers/PaywallEventTrackerTestDispatcher.swift",
"Helpers/SnapshotTesting+Extensions.swift",
"Helpers/TestCase.swift",
"Helpers/TestLogHandler.swift",
"ImageLoaderTests.swift",
"LocalizationTests.swift",
"Mocks/MockStoreProductDiscount.swift",
"Mocks/MockTransaction.swift",
"PaywallFooterTests.swift",
"PaywallViewEventsTests.swift",
"PaywallsV2/CarouselStateTests.swift",
"PaywallsV2/CarouselTabSwitchTests.swift",
"PaywallsV2/ConditionDeserializationTests.swift",
"PaywallsV2/FileImageLoaderTests.swift",
"PaywallsV2/LocaleFinderTests.swift",
"PaywallsV2/PackageComponentViewTests.swift",
"PaywallsV2/PackageValidatorTests.swift",
"PaywallsV2/PaywallPreviewResourcesLoader.swift",
"PaywallsV2/PresentedPartialsTests.swift",
"PaywallsV2/TabsPackageInheritanceTests.swift",
"PaywallsV2/TabsPackageSelectionResolverTests.swift",
"PaywallsV2/TakeScreenshot.swift",
"PaywallsV2/TextComponentLocalizationTests.swift",
"PaywallsV2/ToPresentedOverridesTests.swift",
"PaywallsV2/UIConfigProviderTests.swift",
"PaywallsV2/VariableHandlerV2Tests.swift",
"PaywallsV2/VideoAutoplayHandlerTests.swift",
"PaywallsV2/ViewModelFactoryBadgeTests.swift",
"PaywallsV2/ViewModelFactoryTests.swift",
"PaywallsV2/WorkflowNavigatorTests.swift",
"PaywallsV2/WorkflowPaywallViewTests.swift",
"PaywallsV2/WorkflowScreenMapperTests.swift",
"PresentIfNeededTests.swift",
"PurchaseCompletedHandlerTests.swift",
"Purchasing/ControlInteractionLoggerTests.swift",
"Purchasing/MockStoreTransaction.swift",
"Purchasing/PaywallEventTrackerTests.swift",
"Purchasing/PurchaseHandlerTests.swift",
"Purchasing/WorkflowContextTests.swift",
"Templates/ExternalPurchaseAndRestoreTests.swift",
"Templates/OtherPaywallViewTests.swift",
"Templates/PaywallViewDynamicTypeTests.swift",
"Templates/PaywallViewLocalizationTests.swift",
"Templates/Template1ViewTests.swift",
"Templates/Template2ViewTests.swift",
"Templates/Template3ViewTests.swift",
"Templates/Template4ViewTests.swift",
"Templates/Template5ViewTests.swift",
"Templates/Template7ViewTests.swift",
"Templates/TierSelectorComponentInteractionTests.swift"
],
"target_dependencies" : [
"RevenueCatUI"
],
"type" : "test"
},
{
"c99name" : "RevenueCatUI",
"module_type" : "SwiftTarget",
"name" : "RevenueCatUI",
"path" : "RevenueCatUI",
"product_memberships" : [
"RevenueCatUI"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/Media.xcassets",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/ar.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "ar"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/az.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "az"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/background.jpg",
"rule" : {
"copy" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/bg.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "bg"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/ca.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "ca"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/cs.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "cs"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/da.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "da"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/de.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "de"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/el.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "el"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/en.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "en"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/en_AU.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "en_au"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/en_CA.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "en_ca"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/en_GB.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "en_gb"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/en_US.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "en_us"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/es_419.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "es_419"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/es_ES.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "es_es"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/eu.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "eu"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/fi.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "fi"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/fr_CA.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "fr_ca"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/fr_FR.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "fr_fr"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/he.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "he"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/hi.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "hi"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/hr.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "hr"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/hu.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "hu"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/icons.xcassets",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/id.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "id"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/it.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "it"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/ja.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "ja"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/kk.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "kk"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/ko.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "ko"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/ms.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "ms"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/nl.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "nl"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/no.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "no"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/pl.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "pl"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/pt_BR.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "pt_br"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/pt_PT.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "pt_pt"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/ro.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "ro"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/ru.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "ru"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/sk.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "sk"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/sr.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "sr"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/sr_Latn.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "sr_latn"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/sv.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "sv"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/th.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "th"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/tr.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "tr"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/uk.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "uk"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/vi.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "vi"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/zh_Hans.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "zh_hans"
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Resources/zh_Hant.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "zh_hant"
}
}
}
],
"sources" : [
"Binding+Extensions.swift",
"CrossPlatform/PlatformBezierPath.swift",
"CrossPlatform/PlatformColor.swift",
"CrossPlatform/PlatformFont.swift",
"CrossPlatform/PlatformImage.swift",
"CustomerCenter/Abstractions/CustomerCenterPurchasesType.swift",
"CustomerCenter/Actions/CustomerCenterConfigData.HelpPath+PurchaseInformation.swift",
"CustomerCenter/Actions/CustomerCenterView+Actions.swift",
"CustomerCenter/ButtonStyles.swift",
"CustomerCenter/ColorFromAppearance.swift",
"CustomerCenter/ContactSupportUtilities.swift",
"CustomerCenter/CustomerInfo+CurrentEntitlement.swift",
"CustomerCenter/Data/CustomActionData.swift",
"CustomerCenter/Data/CustomerCenterAction.swift",
"CustomerCenter/Data/CustomerCenterActionViewModifier.swift",
"CustomerCenter/Data/CustomerCenterActionWrapper.swift",
"CustomerCenter/Data/CustomerCenterConfigData+Mock.swift",
"CustomerCenter/Data/CustomerCenterEnvironment.swift",
"CustomerCenter/Data/CustomerCenterError.swift",
"CustomerCenter/Data/CustomerCenterManagementOption.swift",
"CustomerCenter/Data/CustomerCenterPurchases.swift",
"CustomerCenter/Data/DiscountsHandler.swift",
"CustomerCenter/Data/EntitlementInfo+Extensions.swift",
"CustomerCenter/Data/FeedbackSurveyData.swift",
"CustomerCenter/Data/LoadPromotionalOfferUseCase.swift",
"CustomerCenter/Data/PromotionalOfferData.swift",
"CustomerCenter/Data/PurchaseInformation+Mock.swift",
"CustomerCenter/Data/PurchaseInformation.swift",
"CustomerCenter/Data/SemanticVersion.swift",
"CustomerCenter/Data/StoreProductDiscount+CustomerCenter.swift",
"CustomerCenter/Data/Transaction.swift",
"CustomerCenter/Extensions/CustomerCenterConfigDataAppearance+Tint.swift",
"CustomerCenter/Extensions/CustomerCenterConfigDataSupport+URL.swift",
"CustomerCenter/Extensions/CustomerInfo+SeeAllPurchases.swift",
"CustomerCenter/Extensions/PurchaseInformation+Creation.swift",
"CustomerCenter/Mocks/MockCustomerCenterPurchases.swift",
"CustomerCenter/Mocks/MockCustomerCenterStoreKitUtilities.swift",
"CustomerCenter/Mocks/MockLoadPromotionalOfferUseCase.swift",
"CustomerCenter/Mocks/PurchaseInformationFixtures.swift",
"CustomerCenter/URLUtilities.swift",
"CustomerCenter/Utilities/CustomerCenterLocalizationStrings.swift",
"CustomerCenter/Utilities/CustomerCenterStoreKitUtilities.swift",
"CustomerCenter/Utilities/CustomerCenterStoreKitUtilitiesType.swift",
"CustomerCenter/Utilities/CustomerCenterStylingUtilities.swift",
"CustomerCenter/Utilities/EmailValidator.swift",
"CustomerCenter/Utilities/IdentifiableURL.swift",
"CustomerCenter/View+PresentCustomerCenter.swift",
"CustomerCenter/ViewModels/BaseManageSubscriptionViewModel.swift",
"CustomerCenter/ViewModels/CustomerCenterViewModel.swift",
"CustomerCenter/ViewModels/CustomerCenterViewState.swift",
"CustomerCenter/ViewModels/FeedbackSurveyViewModel.swift",
"CustomerCenter/ViewModels/NoSubscriptionsCardViewModel.swift",
"CustomerCenter/ViewModels/PromotionalOfferViewModel.swift",
"CustomerCenter/ViewModels/PurchaseHistory/PurchaseDetailItem.swift",
"CustomerCenter/ViewModels/PurchaseHistory/PurchaseDetailViewModel.swift",
"CustomerCenter/ViewModels/PurchaseHistory/PurchaseHistoryViewModel.swift",
"CustomerCenter/ViewModels/PurchaseHistory/PurchaseInformation+History.swift",
"CustomerCenter/ViewModels/RelevantPurchasesListViewModel.swift",
"CustomerCenter/ViewModels/RestorePurchasesAlertViewModel.swift",
"CustomerCenter/ViewModels/SubscriptionDetailViewModel.swift",
"CustomerCenter/ViewModels/VirtualCurrencyBalancesScreenViewModel.swift",
"CustomerCenter/Views/ActiveSubscriptionButtonsView.swift",
"CustomerCenter/Views/AppUpdateWarningView.swift",
"CustomerCenter/Views/CompatibilityLabeledContent.swift",
"CustomerCenter/Views/CompatibilityNavigationStack.swift",
"CustomerCenter/Views/CompatibilityTopBarTrailing.swift",
"CustomerCenter/Views/CreateTicketView.swift",
"CustomerCenter/Views/CustomerCenterNavigationLink.swift",
"CustomerCenter/Views/CustomerCenterNavigationOptions.swift",
"CustomerCenter/Views/CustomerCenterView.swift",
"CustomerCenter/Views/FallbackNoSubscriptionsView.swift",
"CustomerCenter/Views/FeedbackSurveyView.swift",
"CustomerCenter/Views/ManageSubscriptionsButtonsView.swift",
"CustomerCenter/Views/NoSubscriptionsCardView.swift",
"CustomerCenter/Views/PromotionalOfferView.swift",
"CustomerCenter/Views/PurchaseCardView.swift",
"CustomerCenter/Views/PurchaseHistory/PurchaseDetailView.swift",
"CustomerCenter/Views/PurchaseHistory/PurchaseHistoryView.swift",
"CustomerCenter/Views/RelevantPurchasesListView.swift",
"CustomerCenter/Views/RestorePurchasesAlert.swift",
"CustomerCenter/Views/ScrollViewSection.swift",
"CustomerCenter/Views/ScrollViewWithOSBackground.swift",
"CustomerCenter/Views/SubscriptionDetailView.swift",
"CustomerCenter/Views/TintedProgressView.swift",
"CustomerCenter/Views/UIKit Compatibility/CustomerCenterViewController.swift",
"CustomerCenter/Views/UIKit Compatibility/CustomerCenterViewControllerDelegate.swift",
"CustomerCenter/Views/Virtual Currencies/VirtualCurrenciesScrollViewWithOSBackgroundSection.swift",
"CustomerCenter/Views/Virtual Currencies/VirtualCurrencyBalanceListRow.swift",
"CustomerCenter/Views/Virtual Currencies/VirtualCurrencyBalancesScreen.swift",
"Data/ComponentInteractionData+Factories.swift",
"Data/Constants.swift",
"Data/CustomPaywallVariables.swift",
"Data/CustomerInfoFixtures.swift",
"Data/Errors/PaywallError.swift",
"Data/Errors/TemplateError.swift",
"Data/IntroEligibility/IntroEligibilityViewModel.swift",
"Data/IntroEligibility/TrialOrIntroEligibilityChecker+TestData.swift",
"Data/IntroEligibility/TrialOrIntroEligibilityChecker.swift",
"Data/Localization.swift",
"Data/LocalizedAlertError.swift",
"Data/PaywallData+Validation.swift",
"Data/PaywallSourceEnvironment.swift",
"Data/PaywallTemplate.swift",
"Data/PaywallViewConfiguration.swift",
"Data/PaywallViewMode+Extensions.swift",
"Data/ProcessedLocalizedConfiguration.swift",
"Data/Strings.swift",
"Data/TemplateViewConfiguration+Extensions.swift",
"Data/TemplateViewConfiguration+Images.swift",
"Data/TemplateViewConfiguration.swift",
"Data/TestData.swift",
"Data/UserInterfaceIdiom.swift",
"Data/Variables.swift",
"Data/VirtualCurrenciesFixtures.swift",
"Helpers/AppStyleExtractor.swift",
"Helpers/Bundle+Extensions.swift",
"Helpers/ColorComputationHelpers.swift",
"Helpers/ColorInformation+MultiScheme.swift",
"Helpers/DualColorImageGenerator.swift",
"Helpers/EmergeRenderingMode.swift",
"Helpers/ExitOfferHelper.swift",
"Helpers/FileImageLoader.swift",
"Helpers/ImageLoader.swift",
"Helpers/Logger.swift",
"Helpers/Optional+Extensions.swift",
"Helpers/Package+VariableDataProvider.swift",
"Helpers/PaywallData+Default.swift",
"Helpers/PaywallWarning.swift",
"Helpers/PreviewHelpers.swift",
"Helpers/PriceFormatterExtensions.swift",
"Helpers/PurchaseResultComparator.swift",
"Helpers/ResumeAction.swift",
"Helpers/RuntimeUtils.swift",
"Helpers/StoreProduct+Extensions.swift",
"Helpers/TemplateView+MultiTier.swift",
"Helpers/VersionDetector.swift",
"Modifiers/ConsistentPackageContentView.swift",
"Modifiers/ConsistentTierContentView.swift",
"Modifiers/EnvironmentValues+Workflow.swift",
"Modifiers/FitToAspectRatio.swift",
"Modifiers/FooterHidingModifier.swift",
"Modifiers/ViewExtensions.swift",
"PaywallFontProvider.swift",
"PaywallView.swift",
"Purchasing/MockPurchases.swift",
"Purchasing/PaywallEventTracker.swift",
"Purchasing/PaywallPurchasesType.swift",
"Purchasing/PurchaseHandler+TestData.swift",
"Purchasing/PurchaseHandler.swift",
"Purchasing/WorkflowContext.swift",
"Templates/Other platforms/WatchTemplateView.swift",
"Templates/Template1View.swift",
"Templates/Template2View.swift",
"Templates/Template3View.swift",
"Templates/Template4View.swift",
"Templates/Template5View.swift",
"Templates/Template7View.swift",
"Templates/TemplateViewType.swift",
"Templates/V2/Components/Button/BottomSheetView.swift",
"Templates/V2/Components/Button/ButtonComponentView.swift",
"Templates/V2/Components/Button/ButtonComponentViewModel.swift",
"Templates/V2/Components/Carousel/CarouselComponentView.swift",
"Templates/V2/Components/Carousel/CarouselComponentViewModel.swift",
"Templates/V2/Components/Carousel/ScrollViewGestureCoordinator.swift",
"Templates/V2/Components/ComponentsView.swift",
"Templates/V2/Components/Countdown/CountdownComponentView.swift",
"Templates/V2/Components/Countdown/CountdownComponentViewModel.swift",
"Templates/V2/Components/Header/HeaderComponentView.swift",
"Templates/V2/Components/Header/HeaderComponentViewModel.swift",
"Templates/V2/Components/Icon/IconComponentView.swift",
"Templates/V2/Components/Icon/IconComponentViewModel.swift",
"Templates/V2/Components/Image/ImageComponentView.swift",
"Templates/V2/Components/Image/ImageComponentViewModel.swift",
"Templates/V2/Components/Packages/Package/ComponentViewState.swift",
"Templates/V2/Components/Packages/Package/PackageComponentView.swift",
"Templates/V2/Components/Packages/Package/PackageComponentViewModel.swift",
"Templates/V2/Components/Packages/PurchaseButton/PurchaseButtonComponentView.swift",
"Templates/V2/Components/Packages/PurchaseButton/PurchaseButtonComponentViewModel.swift",
"Templates/V2/Components/Root/RootView.swift",
"Templates/V2/Components/Root/RootViewModel.swift",
"Templates/V2/Components/Stack/FlexHStack.swift",
"Templates/V2/Components/Stack/FlexSpacer.swift",
"Templates/V2/Components/Stack/FlexVStack.swift",
"Templates/V2/Components/Stack/JustifyContent.swift",
"Templates/V2/Components/Stack/StackComponentView.swift",
"Templates/V2/Components/Stack/StackComponentViewModel.swift",
"Templates/V2/Components/StickyFooter/StickyFooterComponentView.swift",
"Templates/V2/Components/StickyFooter/StickyFooterComponentViewModel.swift",
"Templates/V2/Components/Tabs/TabControlButtonComponentView.swift",
"Templates/V2/Components/Tabs/TabControlButtonComponentViewModel.swift",
"Templates/V2/Components/Tabs/TabControlComponentView.swift",
"Templates/V2/Components/Tabs/TabControlComponentViewModel.swift",
"Templates/V2/Components/Tabs/TabControlToggleComponentView.swift",
"Templates/V2/Components/Tabs/TabControlToggleComponentViewModel.swift",
"Templates/V2/Components/Tabs/TabsComponentView.swift",
"Templates/V2/Components/Tabs/TabsComponentViewModel.swift",
"Templates/V2/Components/Tabs/TabsPackageSelectionResolver.swift",
"Templates/V2/Components/Text/TextComponentView.swift",
"Templates/V2/Components/Text/TextComponentViewModel.swift",
"Templates/V2/Components/Timeline/TimelineComponentView.swift",
"Templates/V2/Components/Timeline/TimelineComponentViewModel.swift",
"Templates/V2/Components/Video/VideoAutoplayHandler.swift",
"Templates/V2/Components/Video/VideoComponentView.swift",
"Templates/V2/Components/Video/VideoComponentViewModel.swift",
"Templates/V2/Components/Video/VideoPlayerView.swift",
"Templates/V2/Components/Video/VideoPlayerViewNSView.swift",
"Templates/V2/Components/Video/VideoPlayerViewUIView.swift",
"Templates/V2/EnvironmentObjects/CarouselState.swift",
"Templates/V2/EnvironmentObjects/IntroOfferEligibilityContext.swift",
"Templates/V2/EnvironmentObjects/OpenSheet.swift",
"Templates/V2/EnvironmentObjects/PackageContext.swift",
"Templates/V2/EnvironmentObjects/PaywallPromoOfferCache.swift",
"Templates/V2/EnvironmentObjects/PlanSelectionDefaultPackage.swift",
"Templates/V2/EnvironmentObjects/RequestSizeCalculation.swift",
"Templates/V2/EnvironmentObjects/ScreenCondition.swift",
"Templates/V2/EnvironmentObjects/SelectedPackageId.swift",
"Templates/V2/Localizations/LocaleFinder.swift",
"Templates/V2/Localizations/LocalizationDictionaryExtensions.swift",
"Templates/V2/PaywallsV2View.swift",
"Templates/V2/Previews/PreviewMock.swift",
"Templates/V2/Previews/SafeAreaPreviewShell.swift",
"Templates/V2/Previews/TemplateComponentsViewPreviews/ButtonWithFooterPreview.swift",
"Templates/V2/Previews/TemplateComponentsViewPreviews/ConditionalConfigurabilityPreview.swift",
"Templates/V2/Previews/TemplateComponentsViewPreviews/FallbackComponentPreview.swift",
"Templates/V2/Previews/TemplateComponentsViewPreviews/FamilySharingTogglePreview.swift",
"Templates/V2/Previews/TemplateComponentsViewPreviews/HeaderNestedHeroZLayerSafeAreaPreview.swift",
"Templates/V2/Previews/TemplateComponentsViewPreviews/HeaderTextBodyHeroSafeAreaPreview.swift",
"Templates/V2/Previews/TemplateComponentsViewPreviews/MultiTierPreview.swift",
"Templates/V2/Previews/TemplateComponentsViewPreviews/PackageVisibilityPreview.swift",
"Templates/V2/Previews/TemplateComponentsViewPreviews/PurchaseButtonInPackagePreview.swift",
"Templates/V2/Previews/TemplateComponentsViewPreviews/Template1Preview.swift",
"Templates/V2/Variables/VariableHandlerV2.swift",
"Templates/V2/ViewHelpers/ApplySizing.swift",
"Templates/V2/ViewHelpers/BackgroundStyle.swift",
"Templates/V2/ViewHelpers/BadgeModifier.swift",
"Templates/V2/ViewHelpers/DisplayableColor.swift",
"Templates/V2/ViewHelpers/Fill.swift",
"Templates/V2/ViewHelpers/FixMacButtonsModifier.swift",
"Templates/V2/ViewHelpers/ForegroundColorScheme.swift",
"Templates/V2/ViewHelpers/NavigatetoURL.swift",
"Templates/V2/ViewHelpers/ProgressViewModifier.swift",
"Templates/V2/ViewHelpers/ShadowModifier.swift",
"Templates/V2/ViewHelpers/Shape.swift",
"Templates/V2/ViewHelpers/SizeModifier.swift",
"Templates/V2/ViewHelpers/TransitionModifier.swift",
"Templates/V2/ViewModelHelpers/LocalizationProvider.swift",
"Templates/V2/ViewModelHelpers/PackageValidator.swift",
"Templates/V2/ViewModelHelpers/PaywallComponentTypeTransformers.swift",
"Templates/V2/ViewModelHelpers/PaywallComponentViewModel.swift",
"Templates/V2/ViewModelHelpers/PresentedPartials.swift",
"Templates/V2/ViewModelHelpers/UIConfigProvider.swift",
"Templates/V2/ViewModelHelpers/ViewModelFactory.swift",
"Templates/V2/ViewModelHelpers/WorkflowNavigator.swift",
"Templates/V2/ViewModelHelpers/WorkflowScreenMapper.swift",
"Templates/V2/WorkflowPaywallView.swift",
"UIKit/PaywallFooterViewController.swift",
"UIKit/PaywallViewController.swift",
"View+OnRedeemWebPurchaseAttempt.swift",
"View+PresentPaywall.swift",
"View+PresentPaywallFooter.swift",
"View+PurchaseRestoreCompleted.swift",
"Views/AsyncButton.swift",
"Views/CompatibilityContentUnavailableView.swift",
"Views/DebugErrorView.swift",
"Views/DefaultPaywall/AppIconDetailProvider.swift",
"Views/DefaultPaywall/DefaultPaywallPreviews.swift",
"Views/DefaultPaywall/DefaultPaywallView.swift",
"Views/DefaultPaywall/DefaultPaywallWarning.swift",
"Views/DefaultPaywall/DefaultProductCell.swift",
"Views/ErrorDisplay.swift",
"Views/ErrorView.swift",
"Views/FooterView.swift",
"Views/GradientView.swift",
"Views/IconView.swift",
"Views/IntroEligibilityStateView.swift",
"Views/LoadingPaywallView.swift",
"Views/PackageButtonStyle.swift",
"Views/ProgressView.swift",
"Views/PurchaseButton.swift",
"Views/RemoteImage.swift",
"Views/SafariView.swift",
"Views/TemplateBackgroundImageView.swift",
"Views/TemplatePackageSetting.swift",
"Views/TierSelectorView.swift"
],
"target_dependencies" : [
"RevenueCat"
],
"type" : "library"
},
{
"c99name" : "RevenueCat",
"module_type" : "SwiftTarget",
"name" : "RevenueCat",
"path" : "Sources",
"product_memberships" : [
"RevenueCat",
"RevenueCatUI"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/PrivacyInfo.xcprivacy",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"Ads/AdTracker.swift",
"Ads/AdsAPI.swift",
"Ads/Events/AdEvent.swift",
"Ads/Events/AdEventStore.swift",
"Ads/Events/Networking/AdEventsRequest.swift",
"Ads/Events/Networking/AdHTTPRequestPath.swift",
"Ads/Events/Networking/PostAdEventsOperation.swift",
"Ads/Events/StoredAdEvent.swift",
"Ads/Events/StoredAdEventSerializer.swift",
"Ads/RewardVerification/Networking/GetRewardVerificationStatusOperation.swift",
"Ads/RewardVerification/Networking/RewardVerificationStatusCallback.swift",
"Ads/RewardVerification/Networking/RewardVerificationStatusResponse.swift",
"Ads/RewardVerification/RewardVerificationPollStatus.swift",
"Ads/RewardVerification/VerifiedReward.swift",
"Ads/RewardVerification/VirtualCurrencyReward.swift",
"Attribution/ASIdManagerProxy.swift",
"Attribution/AttributionData.swift",
"Attribution/AttributionFetcher.swift",
"Attribution/AttributionNetwork.swift",
"Attribution/AttributionPoster.swift",
"Attribution/AttributionTypeFactory.swift",
"Attribution/TrackingManagerProxy.swift",
"Caching/CacheStatus.swift",
"Caching/Checksum.swift",
"Caching/DeviceCache.swift",
"Caching/DirectoryHelper.swift",
"Caching/FileRepository.swift",
"Caching/InMemoryCachedObject.swift",
"Caching/KeyedDeferredValueStore.swift",
"Caching/LargeItemCacheType.swift",
"Caching/URLWithValidation.swift",
"CodableExtensions/PeriodType+Extensions.swift",
"CodableExtensions/PurchaseOwnershipType+Extensions.swift",
"CodableExtensions/Store+Extensions.swift",
"CustomerCenter/CustomerCenterConfigData.swift",
"CustomerCenter/CustomerCenterPresentationMode.swift",
"CustomerCenter/Events/CustomerCenterEvent.swift",
"CustomerCenter/Events/Networking/EventsRequest+CustomerCenter.swift",
"DeepLink/DeepLinkParser.swift",
"Diagnostics/DiagnosticsEvent.swift",
"Diagnostics/DiagnosticsFileHandler.swift",
"Diagnostics/DiagnosticsTracker.swift",
"Diagnostics/FileHandler.swift",
"Diagnostics/Networking/DiagnosticsEventsRequest.swift",
"Diagnostics/Networking/DiagnosticsHTTPRequestPath.swift",
"Diagnostics/Networking/DiagnosticsPostOperation.swift",
"Diagnostics/Networking/DiagnosticsSynchronizer.swift",
"DocCDocumentation/EmptyFile.swift",
"Error Handling/Assertions.swift",
"Error Handling/BackendError.swift",
"Error Handling/BackendErrorCode.swift",
"Error Handling/DescribableError.swift",
"Error Handling/ErrorCode.swift",
"Error Handling/ErrorDetails.swift",
"Error Handling/ErrorUtils.swift",
"Error Handling/PurchasesError.swift",
"Error Handling/SKError+Extensions.swift",
"Error Handling/StoreKitError+Extensions.swift",
"Error Handling/StoreKitErrorHelper.swift",
"Events/EventsManager.swift",
"Events/FeatureEvents/FeatureEvent.swift",
"Events/FeatureEvents/FeatureEventStore.swift",
"Events/FeatureEvents/Networking/FeatureEventHTTPRequestPath.swift",
"Events/FeatureEvents/Networking/FeatureEventsRequest.swift",
"Events/FeatureEvents/Networking/PostFeatureEventsOperation.swift",
"Events/FeatureEvents/StoredFeatureEvent.swift",
"Events/FeatureEvents/StoredFeatureEventSerializer.swift",
"Events/Networking/EventsHTTPRequestPath.swift",
"FoundationExtensions/Array+Extensions.swift",
"FoundationExtensions/AsyncExtensions.swift",
"FoundationExtensions/Data+Extensions.swift",
"FoundationExtensions/Date+Extensions.swift",
"FoundationExtensions/Decoder+Extensions.swift",
"FoundationExtensions/Dictionary+Extensions.swift",
"FoundationExtensions/DispatchTimeInterval+Extensions.swift",
"FoundationExtensions/Error+Extensions.swift",
"FoundationExtensions/Integer+Extensions.swift",
"FoundationExtensions/Locale+Extensions.swift",
"FoundationExtensions/OperationQueue+Extensions.swift",
"FoundationExtensions/Operators+Extensions.swift",
"FoundationExtensions/Optional+Extensions.swift",
"FoundationExtensions/Result+Extensions.swift",
"FoundationExtensions/Set+Extensions.swift",
"FoundationExtensions/String+Extensions.swift",
"FoundationExtensions/TimeInterval+Extensions.swift",
"FoundationExtensions/UIApplication+RCExtensions.swift",
"FoundationExtensions/UserDefaults+Extensions.swift",
"Identity/CustomerInfo+ActiveDates.swift",
"Identity/CustomerInfo+NonSubscriptions.swift",
"Identity/CustomerInfo.swift",
"Identity/CustomerInfoManager.swift",
"Identity/IdentityManager.swift",
"Identity/ProductPaidPrice.swift",
"Identity/SubscriptionInfo.swift",
"LocalReceiptParsing/BasicTypes/ASN1Container.swift",
"LocalReceiptParsing/BasicTypes/ASN1ObjectIdentifier.swift",
"LocalReceiptParsing/BasicTypes/AppleReceipt.swift",
"LocalReceiptParsing/BasicTypes/InAppPurchase.swift",
"LocalReceiptParsing/Builders/ASN1ContainerBuilder.swift",
"LocalReceiptParsing/Builders/ASN1ObjectIdentifierBuilder.swift",
"LocalReceiptParsing/Builders/AppleReceiptBuilder.swift",
"LocalReceiptParsing/Builders/InAppPurchaseBuilder.swift",
"LocalReceiptParsing/DataConverters/ArraySlice_UInt8+Extensions.swift",
"LocalReceiptParsing/DataConverters/Codable+Extensions.swift",
"LocalReceiptParsing/DataConverters/DateFormatter+Extensions.swift",
"LocalReceiptParsing/DataConverters/UInt8+Extensions.swift",
"LocalReceiptParsing/Helpers/FileReader.swift",
"LocalReceiptParsing/Helpers/LoggerType.swift",
"LocalReceiptParsing/Helpers/ProcessInfo+Extensions.swift",
"LocalReceiptParsing/Helpers/ReceiptParserLogger.swift",
"LocalReceiptParsing/Helpers/ReceiptStrings.swift",
"LocalReceiptParsing/LocalReceiptFetcher.swift",
"LocalReceiptParsing/PurchasesReceiptParser.swift",
"LocalReceiptParsing/ReceiptParsingError.swift",
"Logging/LogIntent.swift",
"Logging/Logger.swift",
"Logging/Strings/AnalyticsStrings.swift",
"Logging/Strings/AttributionStrings.swift",
"Logging/Strings/BackendErrorStrings.swift",
"Logging/Strings/CacheStrings.swift",
"Logging/Strings/CodableStrings.swift",
"Logging/Strings/ConfigureStrings.swift",
"Logging/Strings/CustomerInfoStrings.swift",
"Logging/Strings/DiagnosticsStrings.swift",
"Logging/Strings/ETagStrings.swift",
"Logging/Strings/EligibilityStrings.swift",
"Logging/Strings/EventsManagerStrings.swift",
"Logging/Strings/FileRepositoryStrings.swift",
"Logging/Strings/IdentityStrings.swift",
"Logging/Strings/ManageSubscriptionsStrings.swift",
"Logging/Strings/NetworkStrings.swift",
"Logging/Strings/OfferingStrings.swift",
"Logging/Strings/OfflineEntitlementsStrings.swift",
"Logging/Strings/PaywallsStrings.swift",
"Logging/Strings/PurchaseStrings.swift",
"Logging/Strings/SigningStrings.swift",
"Logging/Strings/StoreKitStrings.swift",
"Logging/Strings/Strings.swift",
"Logging/Strings/TransactionMetadataStrings.swift",
"Logging/Strings/VirtualCurrencyStrings.swift",
"Logging/Strings/WebRedemptionStrings.swift",
"Misc/Box.swift",
"Misc/Codable/AnyDecodable.swift",
"Misc/Codable/AnyEncodable.swift",
"Misc/Codable/DefaultDecodable.swift",
"Misc/Codable/EnsureNonEmptyCollectionDecodable.swift",
"Misc/Codable/IgnoreHashable.swift",
"Misc/Codable/NonEmptyStringDecodable.swift",
"Misc/Codable/RawDataContainer.swift",
"Misc/Concurrency/Atomic.swift",
"Misc/Concurrency/Lock.swift",
"Misc/Concurrency/OperationDispatcher.swift",
"Misc/Concurrency/Purchases+async.swift",
"Misc/Concurrency/Purchases+nonasync.swift",
"Misc/Concurrency/SynchronizedLargeItemCache.swift",
"Misc/Concurrency/SynchronizedUserDefaults.swift",
"Misc/DangerousSettings.swift",
"Misc/DateAndTime/Clock.swift",
"Misc/DateAndTime/DateExtensions.swift",
"Misc/DateAndTime/DateProvider.swift",
"Misc/DateAndTime/ISODurationFormatter.swift",
"Misc/DateAndTime/ISOPeriodFormatter.swift",
"Misc/DateAndTime/TimingUtil.swift",
"Misc/Deprecations.swift",
"Misc/Either.swift",
"Misc/Locale/PreferredLocalesProvider.swift",
"Misc/MacDevice.swift",
"Misc/MapAppStoreDetector.swift",
"Misc/Obsoletions.swift",
"Misc/PlatformInfo.swift",
"Misc/PriceFormatterProvider.swift",
"Misc/RateLimiter.swift",
"Misc/SandboxEnvironmentDetector.swift",
"Misc/StoreKitVersion.swift",
"Misc/SystemInfo.swift",
"Networking/Backend.swift",
"Networking/BackendConfiguration.swift",
"Networking/Caching/CacheFetchPolicy.swift",
"Networking/Caching/CallbackCache.swift",
"Networking/Caching/CallbackCacheStatus.swift",
"Networking/Caching/CustomerCenterConfigCallback.swift",
"Networking/Caching/CustomerInfoCallback.swift",
"Networking/Caching/IsPurchaseAllowedByRestoreBehaviorCallback.swift",
"Networking/Caching/LogInCallback.swift",
"Networking/Caching/OfferingsCallback.swift",
"Networking/Caching/ProductEntitlementMappingCallback.swift",
"Networking/Caching/VirtualCurrenciesCallback.swift",
"Networking/Caching/WebBillingProductsCallback.swift",
"Networking/Caching/WebOfferingProductsCallback.swift",
"Networking/Caching/WorkflowsCallback.swift",
"Networking/ConnectionErrorReason.swift",
"Networking/CustomerAPI.swift",
"Networking/CustomerCenterConfigAPI.swift",
"Networking/HTTPClient/DNSChecker.swift",
"Networking/HTTPClient/ETagManager.swift",
"Networking/HTTPClient/ErrorResponse.swift",
"Networking/HTTPClient/HTTPClient.swift",
"Networking/HTTPClient/HTTPRequest.swift",
"Networking/HTTPClient/HTTPRequestBody.swift",
"Networking/HTTPClient/HTTPRequestPath.swift",
"Networking/HTTPClient/HTTPRequestTimeoutManager.swift",
"Networking/HTTPClient/HTTPResponse.swift",
"Networking/HTTPClient/HTTPResponseBody.swift",
"Networking/HTTPClient/HTTPStatusCode.swift",
"Networking/HTTPClient/NetworkError.swift",
"Networking/HTTPClient/RedirectLoggerTaskDelegate.swift",
"Networking/HTTPClient/SimpleNetworkServiceType.swift",
"Networking/IdentityAPI.swift",
"Networking/InternalAPI.swift",
"Networking/OfferingsAPI.swift",
"Networking/OfflineEntitlementsAPI.swift",
"Networking/Operations/GetCustomerCenterConfigOperation.swift",
"Networking/Operations/GetCustomerInfoOperation.swift",
"Networking/Operations/GetIntroEligibilityOperation.swift",
"Networking/Operations/GetOfferingsOperation.swift",
"Networking/Operations/GetProductEntitlementMappingOperation.swift",
"Networking/Operations/GetVirtualCurrenciesOperation.swift",
"Networking/Operations/GetWebBillingProductsOperation.swift",
"Networking/Operations/GetWebOfferingProductsOperation.swift",
"Networking/Operations/GetWorkflowOperation.swift",
"Networking/Operations/Handling/CustomerInfoResponseHandler.swift",
"Networking/Operations/HealthOperation.swift",
"Networking/Operations/HealthReportAvailabilityOperation.swift",
"Networking/Operations/HealthReportOperation.swift",
"Networking/Operations/LogInOperation.swift",
"Networking/Operations/NetworkOperation.swift",
"Networking/Operations/PostAdServicesTokenOperation.swift",
"Networking/Operations/PostAttributionDataOperation.swift",
"Networking/Operations/PostIsPurchaseAllowedByRestoreBehaviorOperation.swift",
"Networking/Operations/PostOfferForSigningOperation.swift",
"Networking/Operations/PostReceiptDataOperation.swift",
"Networking/Operations/PostRedeemWebPurchaseOperation.swift",
"Networking/Operations/PostSubscriberAttributesOperation.swift",
"Networking/RedeemWebPurchaseAPI.swift",
"Networking/Responses/CustomerCenterConfigResponse.swift",
"Networking/Responses/CustomerInfoResponse.swift",
"Networking/Responses/GetIntroEligibilityResponse.swift",
"Networking/Responses/HealthReportAvailabilityResponse.swift",
"Networking/Responses/HealthReportResponse.swift",
"Networking/Responses/IsPurchaseAllowedByRestoreBehaviorResponse.swift",
"Networking/Responses/OfferingsResponse.swift",
"Networking/Responses/PostOfferResponse.swift",
"Networking/Responses/ProductEntitlementMappingResponse.swift",
"Networking/Responses/RevenueCatUI/PaywallComponentsData.swift",
"Networking/Responses/RevenueCatUI/UIConfig.swift",
"Networking/Responses/VirtualCurrenciesResponse.swift",
"Networking/Responses/WebBillingProductsResponse.swift",
"Networking/Responses/WebOfferingProductsResponse.swift",
"Networking/Responses/WorkflowsResponse.swift",
"Networking/VirtualCurrenciesAPI.swift",
"Networking/WebBillingAPI.swift",
"Networking/WebBillingHTTPRequestPath.swift",
"Networking/Workflows/WorkflowDetailProcessor.swift",
"Networking/Workflows/WorkflowResponseAction.swift",
"Networking/WorkflowsAPI.swift",
"OfflineEntitlements/CustomerInfo+OfflineEntitlements.swift",
"OfflineEntitlements/OfflineCustomerInfoCreator.swift",
"OfflineEntitlements/OfflineEntitlementsManager.swift",
"OfflineEntitlements/ProductEntitlementMapping.swift",
"OfflineEntitlements/ProductEntitlementMappingFetcher.swift",
"OfflineEntitlements/PurchasedProductsFetcher.swift",
"OfflineEntitlements/PurchasedSK2Product.swift",
"Paywalls/Components/Common/Background.swift",
"Paywalls/Components/Common/Border.swift",
"Paywalls/Components/Common/ComponentOverrides.swift",
"Paywalls/Components/Common/Dimension.swift",
"Paywalls/Components/Common/PaywallComponentBase.swift",
"Paywalls/Components/Common/PaywallComponentLocalization.swift",
"Paywalls/Components/Common/PaywallComponentPropertyTypes.swift",
"Paywalls/Components/PaywallButtonComponent.swift",
"Paywalls/Components/PaywallCarouselComponent.swift",
"Paywalls/Components/PaywallCountdownComponent.swift",
"Paywalls/Components/PaywallHeaderComponent.swift",
"Paywalls/Components/PaywallIconComponent.swift",
"Paywalls/Components/PaywallImageComponent.swift",
"Paywalls/Components/PaywallPackageComponent.swift",
"Paywalls/Components/PaywallPurchaseButtonComponent.swift",
"Paywalls/Components/PaywallStackComponent.swift",
"Paywalls/Components/PaywallStickyFooterComponent.swift",
"Paywalls/Components/PaywallTabsComponent.swift",
"Paywalls/Components/PaywallTextComponent.swift",
"Paywalls/Components/PaywallTimelineComponent.swift",
"Paywalls/Components/PaywallV2CacheWarming.swift",
"Paywalls/Components/PaywallVideoComponent.swift",
"Paywalls/Components/Transitions/PaywallAnimation.swift",
"Paywalls/Components/Transitions/PaywallTransition.swift",
"Paywalls/Events/CustomPaywallEvent.swift",
"Paywalls/Events/CustomPaywallImpressionParams.swift",
"Paywalls/Events/Networking/EventsRequest+CustomPaywallImpression.swift",
"Paywalls/Events/Networking/EventsRequest+Paywall.swift",
"Paywalls/Events/PaywallEvent.swift",
"Paywalls/ExitOffer.swift",
"Paywalls/Locale+Comparison.swift",
"Paywalls/PaywallCacheWarming.swift",
"Paywalls/PaywallColor.swift",
"Paywalls/PaywallData+Localization.swift",
"Paywalls/PaywallData.swift",
"Paywalls/PaywallFontManagerType.swift",
"Paywalls/PaywallSource.swift",
"Paywalls/PaywallViewMode.swift",
"Paywalls/SubscriptionHistoryTracker.swift",
"Purchasing/CachingProductsManager.swift",
"Purchasing/CachingTrialOrIntroPriceEligibilityChecker.swift",
"Purchasing/Configuration.swift",
"Purchasing/EntitlementInfo.swift",
"Purchasing/EntitlementInfos.swift",
"Purchasing/IntroEligibility.swift",
"Purchasing/IntroEligibilityCalculator.swift",
"Purchasing/NonSubscriptionTransaction.swift",
"Purchasing/Offering.swift",
"Purchasing/Offerings.swift",
"Purchasing/OfferingsFactory.swift",
"Purchasing/OfferingsManager.swift",
"Purchasing/Package.swift",
"Purchasing/PackageType.swift",
"Purchasing/ProductRequestData+Initialization.swift",
"Purchasing/ProductRequestData.swift",
"Purchasing/ProductsManager.swift",
"Purchasing/ProductsManagerFactory.swift",
"Purchasing/ProductsManagerType.swift",
"Purchasing/ProductsRequestFactory.swift",
"Purchasing/PurchaseOwnershipType.swift",
"Purchasing/Purchases/Attribution.swift",
"Purchasing/Purchases/LocalTransactionMetadata.swift",
"Purchasing/Purchases/LocalTransactionMetadataStore.swift",
"Purchasing/Purchases/PurchaseParams.swift",
"Purchasing/Purchases/Purchases.swift",
"Purchasing/Purchases/PurchasesAreCompletedBy.swift",
"Purchasing/Purchases/PurchasesDelegate.swift",
"Purchasing/Purchases/PurchasesOrchestrator.swift",
"Purchasing/Purchases/PurchasesType.swift",
"Purchasing/Purchases/TransactionMetadataSyncHelper.swift",
"Purchasing/Purchases/TransactionNotifications.swift",
"Purchasing/Purchases/TransactionPoster.swift",
"Purchasing/ReceiptFetcher.swift",
"Purchasing/ReceiptRefreshPolicy.swift",
"Purchasing/SimulatedStore/SimulatedStoreProduct.swift",
"Purchasing/SimulatedStore/SimulatedStoreProductsManager.swift",
"Purchasing/SimulatedStore/SimulatedStorePurchaseHandler.swift",
"Purchasing/SimulatedStore/SimulatedStorePurchaseUI.swift",
"Purchasing/SimulatedStore/SimulatedStoreTransaction.swift",
"Purchasing/SimulatedStore/WebBillingProduct+SimulatedStoreProduct.swift",
"Purchasing/StoreKit1/PaymentQueueWrapper.swift",
"Purchasing/StoreKit1/ProductsFetcherSK1.swift",
"Purchasing/StoreKit1/StoreKit1Wrapper.swift",
"Purchasing/StoreKit1/StoreKitRequestFetcher.swift",
"Purchasing/StoreKit2/Observer Mode/StoreKit2ObserverModePurchaseDetector.swift",
"Purchasing/StoreKit2/ProductsFetcherSK2.swift",
"Purchasing/StoreKit2/SK2AppTransaction.swift",
"Purchasing/StoreKit2/SK2BeginRefundRequestHelper.swift",
"Purchasing/StoreKit2/StoreKit2PromotionalOfferPurchaseOptions.swift",
"Purchasing/StoreKit2/StoreKit2PurchaseIntentListener.swift",
"Purchasing/StoreKit2/StoreKit2Receipt.swift",
"Purchasing/StoreKit2/StoreKit2StorefrontListener.swift",
"Purchasing/StoreKit2/StoreKit2TransactionFetcher.swift",
"Purchasing/StoreKit2/StoreKit2TransactionListener.swift",
"Purchasing/StoreKit2/Win-Back Offers/WinBackOfferEligibilityCalculator.swift",
"Purchasing/StoreKit2/Win-Back Offers/WinBackOfferEligibilityCalculatorType.swift",
"Purchasing/StoreKitAbstractions/EncodedAppleReceipt.swift",
"Purchasing/StoreKitAbstractions/ProductType.swift",
"Purchasing/StoreKitAbstractions/PromotionalOffer.swift",
"Purchasing/StoreKitAbstractions/SK1StoreProduct.swift",
"Purchasing/StoreKitAbstractions/SK1StoreProductDiscount.swift",
"Purchasing/StoreKitAbstractions/SK1StoreTransaction.swift",
"Purchasing/StoreKitAbstractions/SK1Storefront.swift",
"Purchasing/StoreKitAbstractions/SK2StoreProduct.swift",
"Purchasing/StoreKitAbstractions/SK2StoreProductDiscount.swift",
"Purchasing/StoreKitAbstractions/SK2StoreTransaction.swift",
"Purchasing/StoreKitAbstractions/SK2Storefront.swift",
"Purchasing/StoreKitAbstractions/StoreEnvironment.swift",
"Purchasing/StoreKitAbstractions/StoreKitWorkarounds.swift",
"Purchasing/StoreKitAbstractions/StoreProduct.swift",
"Purchasing/StoreKitAbstractions/StoreProductDiscount.swift",
"Purchasing/StoreKitAbstractions/StoreTransaction.swift",
"Purchasing/StoreKitAbstractions/Storefront.swift",
"Purchasing/StoreKitAbstractions/StorefrontProvider.swift",
"Purchasing/StoreKitAbstractions/SubscriptionPeriod.swift",
"Purchasing/StoreKitAbstractions/Test Data/TestStoreProduct.swift",
"Purchasing/StoreKitAbstractions/Test Data/TestStoreProductDiscount.swift",
"Purchasing/StoreKitAbstractions/TestStoreTransaction.swift",
"Purchasing/StoreKitAbstractions/TransactionReason.swift",
"Purchasing/StoreKitAbstractions/WinBackOffer.swift",
"Purchasing/TransactionsFactory.swift",
"Purchasing/TransactionsManager.swift",
"Purchasing/TrialOrIntroPriceEligibilityChecker.swift",
"Security/FakeSigning.swift",
"Security/HTTPRequest+Signing.swift",
"Security/HTTPRequestBody+Signing.swift",
"Security/Signing+ResponseVerification.swift",
"Security/Signing.swift",
"Security/VerificationResult.swift",
"SubscriberAttributes/AttributionDataMigrator.swift",
"SubscriberAttributes/AttributionKey.swift",
"SubscriberAttributes/ReservedSubscriberAttributes.swift",
"SubscriberAttributes/SubscriberAttribute.swift",
"SubscriberAttributes/SubscriberAttributesManager+Appstack.swift",
"SubscriberAttributes/SubscriberAttributesManager.swift",
"Support/BeginRefundRequestHelper.swift",
"Support/DebugUI/DebugContentViews.swift",
"Support/DebugUI/DebugView.swift",
"Support/DebugUI/DebugViewController.swift",
"Support/DebugUI/DebugViewModel.swift",
"Support/DebugUI/DebugViewSheetPresentation.swift",
"Support/DebugUI/ProductStatus+Icon.swift",
"Support/DebugUI/SDKHealthCheckStatus+Icon.swift",
"Support/DebugUI/SDKHealthStatus+Icon.swift",
"Support/FrameworkDisambiguation.swift",
"Support/HealthReport+Validate.swift",
"Support/ManageSubscriptionsHelper.swift",
"Support/PaymentAuthorizationProvider.swift",
"Support/PaywallExtensions.swift",
"Support/PurchasesDiagnostics.swift",
"Support/SDKHealthError+CustomNSError.swift",
"Support/SDKHealthManager.swift",
"Support/StoreMessageType.swift",
"Support/StoreMessagesHelper.swift",
"Support/SwiftVersionCheck.swift",
"Virtual Currencies/VirtualCurrencies.swift",
"Virtual Currencies/VirtualCurrency.swift",
"Virtual Currencies/VirtualCurrencyManager.swift",
"WebPurchaseRedemption/URL+WebPurchaseRedemption.swift",
"WebPurchaseRedemption/WebPurchaseRedemption.swift",
"WebPurchaseRedemption/WebPurchaseRedemptionHelper.swift",
"WebPurchaseRedemption/WebPurchaseRedemptionResult.swift"
],
"type" : "library"
},
{
"c99name" : "ReceiptParserTests",
"module_type" : "SwiftTarget",
"name" : "ReceiptParserTests",
"path" : "Tests/ReceiptParserTests",
"product_dependencies" : [
"Nimble"
],
"sources" : [
"Helpers/MockBundle.swift",
"ReceiptParserFetchingTests.swift"
],
"target_dependencies" : [
"ReceiptParser"
],
"type" : "test"
},
{
"c99name" : "ReceiptParser",
"module_type" : "SwiftTarget",
"name" : "ReceiptParser",
"path" : "LocalReceiptParsing",
"product_memberships" : [
"ReceiptParser"
],
"sources" : [
"BasicTypes/ASN1Container.swift",
"BasicTypes/ASN1ObjectIdentifier.swift",
"BasicTypes/AppleReceipt.swift",
"BasicTypes/InAppPurchase.swift",
"Builders/ASN1ContainerBuilder.swift",
"Builders/ASN1ObjectIdentifierBuilder.swift",
"Builders/AppleReceiptBuilder.swift",
"Builders/InAppPurchaseBuilder.swift",
"DataConverters/ArraySlice_UInt8+Extensions.swift",
"DataConverters/Codable+Extensions.swift",
"DataConverters/DateFormatter+Extensions.swift",
"DataConverters/UInt8+Extensions.swift",
"Helpers/FileReader.swift",
"Helpers/LoggerType.swift",
"Helpers/ProcessInfo+Extensions.swift",
"Helpers/ReceiptParserLogger.swift",
"Helpers/ReceiptStrings.swift",
"LocalReceiptFetcher.swift",
"PurchasesReceiptParser.swift",
"ReceiptParser-only-files/PurchasesReceiptParser+Extensions.swift",
"ReceiptParsingError.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
warning: 'spi-builder-workspace': Invalid Exclude '/Users/admin/builder/spi-builder-workspace/Tests/RevenueCatUITests/Templates/__Snapshots__': File not found.
warning: 'spi-builder-workspace': ignoring broken symlink /Users/admin/builder/spi-builder-workspace/Tests/RevenueCatUITests/PaywallsV2/__PreviewResources__
warning: 'spi-builder-workspace': Invalid Resource 'PaywallsV2/__PreviewResources__': File not found.
Done.