Build Information
Successful build of RevenueCat, reference main (94eb2c), with Swift 6.1 for macOS (SPM) on 11 Dec 2025 16:49:33 UTC.
Swift 6 data race errors: 164
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
117 | Logger.debug(Strings.restoring_purchases)
118 |
119 | 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
120 | if success {
121 | Logger.debug(Strings.restored_purchases)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:155:53: warning: sending value of non-Sendable type '() async -> Bool' risks causing data races; this is an error in the Swift 6 language mode
153 | if let interceptor = self.offerCodeRedemptionInitiatedAction {
154 | // Wait for the interceptor to call resume before proceeding
155 | 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
156 | await withCheckedContinuation { continuation in
157 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:155:53: warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
153 | if let interceptor = self.offerCodeRedemptionInitiatedAction {
154 | // Wait for the interceptor to call resume before proceeding
155 | 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
156 | await withCheckedContinuation { continuation in
157 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Countdown/CountdownComponentViewModel.swift:61: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
59 | deinit {
60 | // Not calling stop because of async needed
61 | 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
62 | timer = nil
63 | 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:62: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
60 | // Not calling stop because of async needed
61 | timer?.connect().cancel()
62 | 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
63 | cancellable = nil
64 | }
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:63: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
61 | timer?.connect().cancel()
62 | timer = nil
63 | 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
64 | }
65 |
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
[1116/1118] Compiling RevenueCatUI ComponentViewState.swift
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:74: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
67 | func createView(for offering: Offering,
| `- note: add '@MainActor' to make instance method 'createView(for:template:configuration:introEligibility:)' part of global actor 'MainActor'
68 | template: PaywallTemplate,
69 | configuration: Result<TemplateViewConfiguration, Error>,
:
72 | case let .success(configuration):
73 | Self.createView(template: template, configuration: configuration)
74 | .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
75 | .task(id: offering) {
76 | await introEligibility.computeEligibility(for: configuration.packages)
:
143 | extension View {
144 |
145 | func adaptTemplateView(with configuration: TemplateViewConfiguration) -> some View {
| `- note: calls to instance method 'adaptTemplateView(with:)' from outside of its actor context are implicitly asynchronous
146 | self
147 | .background(configuration.backgroundView)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:76:68: warning: capture of 'configuration' with non-sendable type 'TemplateViewConfiguration' in a '@Sendable' closure; this is an error in the Swift 6 language mode
74 | .adaptTemplateView(with: configuration)
75 | .task(id: offering) {
76 | 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
77 | }
78 |
/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:80:13: warning: call to main actor-isolated initializer 'init(_:releaseBehavior:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
65 |
66 | @ViewBuilder
67 | func createView(for offering: Offering,
| `- note: add '@MainActor' to make instance method 'createView(for:template:configuration:introEligibility:)' part of global actor 'MainActor'
68 | template: PaywallTemplate,
69 | configuration: Result<TemplateViewConfiguration, Error>,
:
78 |
79 | case let .failure(error):
80 | DebugErrorView(error, releaseBehavior: .emptyView)
| `- warning: call to main actor-isolated initializer 'init(_:releaseBehavior:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
81 | }
82 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Views/DebugErrorView.swift:106:5: note: calls to initializer 'init(_:releaseBehavior:)' from outside of its actor context are implicitly asynchronous
104 | extension DebugErrorView where Content == AnyView {
105 |
106 | init(_ error: Error, releaseBehavior: ReleaseBehavior) {
| |- note: calls to initializer 'init(_:releaseBehavior:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'View'
107 | self.init(
108 | (error as NSError).localizedDescription,
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:125:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
123 | switch template {
124 | case .template1:
125 | 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
126 | case .template2:
127 | 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:127:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
125 | Template1View(configuration)
126 | case .template2:
127 | 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
128 | case .template3:
129 | Template3View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template2View.swift:43:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
41 | private var purchaseHandler: PurchaseHandler
42 |
43 | 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'
44 | self._selectedPackage = .init(initialValue: configuration.packages.default)
45 | self.configuration = configuration
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:129:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
127 | Template2View(configuration)
128 | case .template3:
129 | 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
130 | case .template4:
131 | 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:131:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
129 | Template3View(configuration)
130 | case .template4:
131 | 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
132 | case .template5:
133 | Template5View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template4View.swift:49:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
47 | private var purchaseHandler: PurchaseHandler
48 |
49 | 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'
50 | self.configuration = configuration
51 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:133:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
131 | Template4View(configuration)
132 | case .template5:
133 | 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
134 | case .template7:
135 | Template7View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template5View.swift:48:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
46 | private var purchaseHandler: PurchaseHandler
47 |
48 | 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'
49 | self._selectedPackage = .init(initialValue: configuration.packages.default)
50 | self.configuration = configuration
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:135:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
133 | Template5View(configuration)
134 | case .template7:
135 | 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
136 | }
137 | #endif
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template7View.swift:64:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
62 | }
63 |
64 | 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'
65 | guard let (firstTier, allTiers, tierNames) = configuration.packages.multiTier else {
66 | 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:101: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
99 |
100 | struct HeightPreferenceKey: PreferenceKey {
101 | 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
102 | static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
103 | value = max(value, nextValue())
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:345: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
146 | @State private var autoTimer: Timer?
147 |
148 | @State private var isPaused: Bool = false
| `- note: property declared here
149 | @State private var pauseEndDate: Date?
150 | @State private var isInitialized = false
:
343 | repeats: true
344 | ) { _ in
345 | 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
346 | // If paused, check if 10 seconds have passed
347 | if let pauseEndDate = pauseEndDate, Date() >= pauseEndDate {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:347: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
147 |
148 | @State private var isPaused: Bool = false
149 | @State private var pauseEndDate: Date?
| `- note: property declared here
150 | @State private var isInitialized = false
151 |
:
345 | guard !isPaused else {
346 | // If paused, check if 10 seconds have passed
347 | 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
348 | isPaused = false // Resume auto-play
349 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:348: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
146 | @State private var autoTimer: Timer?
147 |
148 | @State private var isPaused: Bool = false
| `- note: mutation of this property is only permitted within the actor
149 | @State private var pauseEndDate: Date?
150 | @State private var isInitialized = false
:
346 | // If paused, check if 10 seconds have passed
347 | if let pauseEndDate = pauseEndDate, Date() >= pauseEndDate {
348 | 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
349 | }
350 | return
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:357: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
154 |
155 | /// Used to animate opacity for the loop transition
156 | @State private var opacity: CGFloat = 1.0
| `- note: mutation of this property is only permitted within the actor
157 |
158 | // MARK: - Init
:
355 | // Fade out both slide + indicator
356 | withAnimation(.easeInOut(duration: fadeDuration)) {
357 | 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
358 | }
359 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:374: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
138 |
139 | /// The current index (in `data`) of the "active" page.
140 | @State private var index: Int = 0
| `- note: mutation of this property is only permitted within the actor
141 |
142 | /// Real-time drag offset from the user’s finger.
:
372 | case .slide:
373 | withAnimation(.easeInOut(duration: Double(msTransitionTime) / 1000)) {
374 | 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
375 | if loop {
376 | expandDataIfNeeded()
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:376: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
374 | index += 1
375 | if loop {
376 | 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
377 | pruneDataIfNeeded()
378 | } else {
:
442 | // MARK: - Expanding
443 |
444 | 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'
445 | // If index is in the first copy, prepend another
446 | if index < originalCount {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:377: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
375 | if loop {
376 | expandDataIfNeeded()
377 | 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
378 | } else {
379 | index = min(index, data.count - 1)
:
461 | // MARK: - Pruning
462 |
463 | 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'
464 | let copiesInData = data.count / originalCount
465 | let maxCopiesAllowed = 5
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:379: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
138 |
139 | /// The current index (in `data`) of the "active" page.
140 | @State private var index: Int = 0
| `- note: mutation of this property is only permitted within the actor
141 |
142 | /// Real-time drag offset from the user’s finger.
:
377 | pruneDataIfNeeded()
378 | } else {
379 | 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
380 | }
381 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:379: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
138 |
139 | /// The current index (in `data`) of the "active" page.
140 | @State private var index: Int = 0
| `- note: property declared here
141 |
142 | /// Real-time drag offset from the user’s finger.
:
377 | pruneDataIfNeeded()
378 | } else {
379 | 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
380 | }
381 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:379: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
135 |
136 | /// The “expanded” data array, each item with a unique ID.
137 | @State private var data: [CarouselItem<Content>] = []
| `- note: property declared here
138 |
139 | /// The current index (in `data`) of the "active" page.
:
377 | pruneDataIfNeeded()
378 | } else {
379 | 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
380 | }
381 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:125:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
123 | switch template {
124 | case .template1:
125 | 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
126 | case .template2:
127 | Template2View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:127:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
125 | Template1View(configuration)
126 | case .template2:
127 | 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
128 | case .template3:
129 | Template3View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:129:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
127 | Template2View(configuration)
128 | case .template3:
129 | 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
130 | case .template4:
131 | Template4View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:131:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
129 | Template3View(configuration)
130 | case .template4:
131 | 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
132 | case .template5:
133 | Template5View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:133:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
131 | Template4View(configuration)
132 | case .template5:
133 | 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
134 | case .template7:
135 | Template7View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:135:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
133 | Template5View(configuration)
134 | case .template7:
135 | 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
136 | }
137 | #endif
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:74:18: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
72 | case let .success(configuration):
73 | Self.createView(template: template, configuration: configuration)
74 | .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
75 | .task(id: offering) {
76 | await introEligibility.computeEligibility(for: configuration.packages)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:74:18: warning: sending value of non-Sendable type 'some View' risks causing data races; this is an error in the Swift 6 language mode
72 | case let .success(configuration):
73 | Self.createView(template: template, configuration: configuration)
74 | .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
75 | .task(id: offering) {
76 | await introEligibility.computeEligibility(for: configuration.packages)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:119:70: warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
117 | Logger.debug(Strings.restoring_purchases)
118 |
119 | 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
120 | if success {
121 | Logger.debug(Strings.restored_purchases)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:155:53: warning: sending value of non-Sendable type '() async -> Bool' risks causing data races; this is an error in the Swift 6 language mode
153 | if let interceptor = self.offerCodeRedemptionInitiatedAction {
154 | // Wait for the interceptor to call resume before proceeding
155 | 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
156 | await withCheckedContinuation { continuation in
157 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:155:53: warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
153 | if let interceptor = self.offerCodeRedemptionInitiatedAction {
154 | // Wait for the interceptor to call resume before proceeding
155 | 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
156 | await withCheckedContinuation { continuation in
157 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Countdown/CountdownComponentViewModel.swift:61: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
59 | deinit {
60 | // Not calling stop because of async needed
61 | 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
62 | timer = nil
63 | 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:62: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
60 | // Not calling stop because of async needed
61 | timer?.connect().cancel()
62 | 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
63 | cancellable = nil
64 | }
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:63: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
61 | timer?.connect().cancel()
62 | timer = nil
63 | 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
64 | }
65 |
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
[1117/1118] Compiling RevenueCatUI PackageComponentView.swift
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:74: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
67 | func createView(for offering: Offering,
| `- note: add '@MainActor' to make instance method 'createView(for:template:configuration:introEligibility:)' part of global actor 'MainActor'
68 | template: PaywallTemplate,
69 | configuration: Result<TemplateViewConfiguration, Error>,
:
72 | case let .success(configuration):
73 | Self.createView(template: template, configuration: configuration)
74 | .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
75 | .task(id: offering) {
76 | await introEligibility.computeEligibility(for: configuration.packages)
:
143 | extension View {
144 |
145 | func adaptTemplateView(with configuration: TemplateViewConfiguration) -> some View {
| `- note: calls to instance method 'adaptTemplateView(with:)' from outside of its actor context are implicitly asynchronous
146 | self
147 | .background(configuration.backgroundView)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:76:68: warning: capture of 'configuration' with non-sendable type 'TemplateViewConfiguration' in a '@Sendable' closure; this is an error in the Swift 6 language mode
74 | .adaptTemplateView(with: configuration)
75 | .task(id: offering) {
76 | 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
77 | }
78 |
/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:80:13: warning: call to main actor-isolated initializer 'init(_:releaseBehavior:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
65 |
66 | @ViewBuilder
67 | func createView(for offering: Offering,
| `- note: add '@MainActor' to make instance method 'createView(for:template:configuration:introEligibility:)' part of global actor 'MainActor'
68 | template: PaywallTemplate,
69 | configuration: Result<TemplateViewConfiguration, Error>,
:
78 |
79 | case let .failure(error):
80 | DebugErrorView(error, releaseBehavior: .emptyView)
| `- warning: call to main actor-isolated initializer 'init(_:releaseBehavior:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
81 | }
82 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Views/DebugErrorView.swift:106:5: note: calls to initializer 'init(_:releaseBehavior:)' from outside of its actor context are implicitly asynchronous
104 | extension DebugErrorView where Content == AnyView {
105 |
106 | init(_ error: Error, releaseBehavior: ReleaseBehavior) {
| |- note: calls to initializer 'init(_:releaseBehavior:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'View'
107 | self.init(
108 | (error as NSError).localizedDescription,
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:125:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
123 | switch template {
124 | case .template1:
125 | 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
126 | case .template2:
127 | 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:127:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
125 | Template1View(configuration)
126 | case .template2:
127 | 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
128 | case .template3:
129 | Template3View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template2View.swift:43:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
41 | private var purchaseHandler: PurchaseHandler
42 |
43 | 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'
44 | self._selectedPackage = .init(initialValue: configuration.packages.default)
45 | self.configuration = configuration
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:129:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
127 | Template2View(configuration)
128 | case .template3:
129 | 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
130 | case .template4:
131 | 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:131:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
129 | Template3View(configuration)
130 | case .template4:
131 | 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
132 | case .template5:
133 | Template5View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template4View.swift:49:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
47 | private var purchaseHandler: PurchaseHandler
48 |
49 | 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'
50 | self.configuration = configuration
51 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:133:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
131 | Template4View(configuration)
132 | case .template5:
133 | 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
134 | case .template7:
135 | Template7View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template5View.swift:48:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
46 | private var purchaseHandler: PurchaseHandler
47 |
48 | 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'
49 | self._selectedPackage = .init(initialValue: configuration.packages.default)
50 | self.configuration = configuration
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:135:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
133 | Template5View(configuration)
134 | case .template7:
135 | 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
136 | }
137 | #endif
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template7View.swift:64:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
62 | }
63 |
64 | 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'
65 | guard let (firstTier, allTiers, tierNames) = configuration.packages.multiTier else {
66 | 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:101: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
99 |
100 | struct HeightPreferenceKey: PreferenceKey {
101 | 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
102 | static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
103 | value = max(value, nextValue())
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:345: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
146 | @State private var autoTimer: Timer?
147 |
148 | @State private var isPaused: Bool = false
| `- note: property declared here
149 | @State private var pauseEndDate: Date?
150 | @State private var isInitialized = false
:
343 | repeats: true
344 | ) { _ in
345 | 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
346 | // If paused, check if 10 seconds have passed
347 | if let pauseEndDate = pauseEndDate, Date() >= pauseEndDate {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:347: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
147 |
148 | @State private var isPaused: Bool = false
149 | @State private var pauseEndDate: Date?
| `- note: property declared here
150 | @State private var isInitialized = false
151 |
:
345 | guard !isPaused else {
346 | // If paused, check if 10 seconds have passed
347 | 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
348 | isPaused = false // Resume auto-play
349 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:348: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
146 | @State private var autoTimer: Timer?
147 |
148 | @State private var isPaused: Bool = false
| `- note: mutation of this property is only permitted within the actor
149 | @State private var pauseEndDate: Date?
150 | @State private var isInitialized = false
:
346 | // If paused, check if 10 seconds have passed
347 | if let pauseEndDate = pauseEndDate, Date() >= pauseEndDate {
348 | 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
349 | }
350 | return
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:357: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
154 |
155 | /// Used to animate opacity for the loop transition
156 | @State private var opacity: CGFloat = 1.0
| `- note: mutation of this property is only permitted within the actor
157 |
158 | // MARK: - Init
:
355 | // Fade out both slide + indicator
356 | withAnimation(.easeInOut(duration: fadeDuration)) {
357 | 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
358 | }
359 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:374: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
138 |
139 | /// The current index (in `data`) of the "active" page.
140 | @State private var index: Int = 0
| `- note: mutation of this property is only permitted within the actor
141 |
142 | /// Real-time drag offset from the user’s finger.
:
372 | case .slide:
373 | withAnimation(.easeInOut(duration: Double(msTransitionTime) / 1000)) {
374 | 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
375 | if loop {
376 | expandDataIfNeeded()
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:376: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
374 | index += 1
375 | if loop {
376 | 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
377 | pruneDataIfNeeded()
378 | } else {
:
442 | // MARK: - Expanding
443 |
444 | 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'
445 | // If index is in the first copy, prepend another
446 | if index < originalCount {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:377: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
375 | if loop {
376 | expandDataIfNeeded()
377 | 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
378 | } else {
379 | index = min(index, data.count - 1)
:
461 | // MARK: - Pruning
462 |
463 | 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'
464 | let copiesInData = data.count / originalCount
465 | let maxCopiesAllowed = 5
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:379: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
138 |
139 | /// The current index (in `data`) of the "active" page.
140 | @State private var index: Int = 0
| `- note: mutation of this property is only permitted within the actor
141 |
142 | /// Real-time drag offset from the user’s finger.
:
377 | pruneDataIfNeeded()
378 | } else {
379 | 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
380 | }
381 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:379: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
138 |
139 | /// The current index (in `data`) of the "active" page.
140 | @State private var index: Int = 0
| `- note: property declared here
141 |
142 | /// Real-time drag offset from the user’s finger.
:
377 | pruneDataIfNeeded()
378 | } else {
379 | 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
380 | }
381 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:379: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
135 |
136 | /// The “expanded” data array, each item with a unique ID.
137 | @State private var data: [CarouselItem<Content>] = []
| `- note: property declared here
138 |
139 | /// The current index (in `data`) of the "active" page.
:
377 | pruneDataIfNeeded()
378 | } else {
379 | 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
380 | }
381 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:125:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
123 | switch template {
124 | case .template1:
125 | 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
126 | case .template2:
127 | Template2View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:127:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
125 | Template1View(configuration)
126 | case .template2:
127 | 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
128 | case .template3:
129 | Template3View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:129:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
127 | Template2View(configuration)
128 | case .template3:
129 | 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
130 | case .template4:
131 | Template4View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:131:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
129 | Template3View(configuration)
130 | case .template4:
131 | 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
132 | case .template5:
133 | Template5View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:133:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
131 | Template4View(configuration)
132 | case .template5:
133 | 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
134 | case .template7:
135 | Template7View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:135:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
133 | Template5View(configuration)
134 | case .template7:
135 | 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
136 | }
137 | #endif
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:74:18: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
72 | case let .success(configuration):
73 | Self.createView(template: template, configuration: configuration)
74 | .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
75 | .task(id: offering) {
76 | await introEligibility.computeEligibility(for: configuration.packages)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:74:18: warning: sending value of non-Sendable type 'some View' risks causing data races; this is an error in the Swift 6 language mode
72 | case let .success(configuration):
73 | Self.createView(template: template, configuration: configuration)
74 | .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
75 | .task(id: offering) {
76 | await introEligibility.computeEligibility(for: configuration.packages)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:119:70: warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
117 | Logger.debug(Strings.restoring_purchases)
118 |
119 | 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
120 | if success {
121 | Logger.debug(Strings.restored_purchases)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:155:53: warning: sending value of non-Sendable type '() async -> Bool' risks causing data races; this is an error in the Swift 6 language mode
153 | if let interceptor = self.offerCodeRedemptionInitiatedAction {
154 | // Wait for the interceptor to call resume before proceeding
155 | 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
156 | await withCheckedContinuation { continuation in
157 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:155:53: warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
153 | if let interceptor = self.offerCodeRedemptionInitiatedAction {
154 | // Wait for the interceptor to call resume before proceeding
155 | 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
156 | await withCheckedContinuation { continuation in
157 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Countdown/CountdownComponentViewModel.swift:61: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
59 | deinit {
60 | // Not calling stop because of async needed
61 | 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
62 | timer = nil
63 | 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:62: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
60 | // Not calling stop because of async needed
61 | timer?.connect().cancel()
62 | 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
63 | cancellable = nil
64 | }
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:63: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
61 | timer?.connect().cancel()
62 | timer = nil
63 | 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
64 | }
65 |
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
[1118/1118] Compiling RevenueCatUI PackageComponentViewModel.swift
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:74: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
67 | func createView(for offering: Offering,
| `- note: add '@MainActor' to make instance method 'createView(for:template:configuration:introEligibility:)' part of global actor 'MainActor'
68 | template: PaywallTemplate,
69 | configuration: Result<TemplateViewConfiguration, Error>,
:
72 | case let .success(configuration):
73 | Self.createView(template: template, configuration: configuration)
74 | .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
75 | .task(id: offering) {
76 | await introEligibility.computeEligibility(for: configuration.packages)
:
143 | extension View {
144 |
145 | func adaptTemplateView(with configuration: TemplateViewConfiguration) -> some View {
| `- note: calls to instance method 'adaptTemplateView(with:)' from outside of its actor context are implicitly asynchronous
146 | self
147 | .background(configuration.backgroundView)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:76:68: warning: capture of 'configuration' with non-sendable type 'TemplateViewConfiguration' in a '@Sendable' closure; this is an error in the Swift 6 language mode
74 | .adaptTemplateView(with: configuration)
75 | .task(id: offering) {
76 | 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
77 | }
78 |
/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:80:13: warning: call to main actor-isolated initializer 'init(_:releaseBehavior:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
65 |
66 | @ViewBuilder
67 | func createView(for offering: Offering,
| `- note: add '@MainActor' to make instance method 'createView(for:template:configuration:introEligibility:)' part of global actor 'MainActor'
68 | template: PaywallTemplate,
69 | configuration: Result<TemplateViewConfiguration, Error>,
:
78 |
79 | case let .failure(error):
80 | DebugErrorView(error, releaseBehavior: .emptyView)
| `- warning: call to main actor-isolated initializer 'init(_:releaseBehavior:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
81 | }
82 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Views/DebugErrorView.swift:106:5: note: calls to initializer 'init(_:releaseBehavior:)' from outside of its actor context are implicitly asynchronous
104 | extension DebugErrorView where Content == AnyView {
105 |
106 | init(_ error: Error, releaseBehavior: ReleaseBehavior) {
| |- note: calls to initializer 'init(_:releaseBehavior:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from conformance to protocol 'View'
107 | self.init(
108 | (error as NSError).localizedDescription,
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:125:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
123 | switch template {
124 | case .template1:
125 | 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
126 | case .template2:
127 | 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:127:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
125 | Template1View(configuration)
126 | case .template2:
127 | 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
128 | case .template3:
129 | Template3View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template2View.swift:43:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
41 | private var purchaseHandler: PurchaseHandler
42 |
43 | 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'
44 | self._selectedPackage = .init(initialValue: configuration.packages.default)
45 | self.configuration = configuration
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:129:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
127 | Template2View(configuration)
128 | case .template3:
129 | 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
130 | case .template4:
131 | 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:131:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
129 | Template3View(configuration)
130 | case .template4:
131 | 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
132 | case .template5:
133 | Template5View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template4View.swift:49:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
47 | private var purchaseHandler: PurchaseHandler
48 |
49 | 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'
50 | self.configuration = configuration
51 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:133:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
131 | Template4View(configuration)
132 | case .template5:
133 | 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
134 | case .template7:
135 | Template7View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template5View.swift:48:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
46 | private var purchaseHandler: PurchaseHandler
47 |
48 | 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'
49 | self._selectedPackage = .init(initialValue: configuration.packages.default)
50 | self.configuration = configuration
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:135:13: warning: call to main actor-isolated initializer 'init(_:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
116 |
117 | @ViewBuilder
118 | private static func createView(template: PaywallTemplate,
| `- note: add '@MainActor' to make static method 'createView(template:configuration:)' part of global actor 'MainActor'
119 | configuration: TemplateViewConfiguration) -> some View {
120 | #if os(watchOS)
:
133 | Template5View(configuration)
134 | case .template7:
135 | 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
136 | }
137 | #endif
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/Template7View.swift:64:5: note: calls to initializer 'init(_:)' from outside of its actor context are implicitly asynchronous
62 | }
63 |
64 | 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'
65 | guard let (firstTier, allTiers, tierNames) = configuration.packages.multiTier else {
66 | 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:101: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
99 |
100 | struct HeightPreferenceKey: PreferenceKey {
101 | 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
102 | static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
103 | value = max(value, nextValue())
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:345: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
146 | @State private var autoTimer: Timer?
147 |
148 | @State private var isPaused: Bool = false
| `- note: property declared here
149 | @State private var pauseEndDate: Date?
150 | @State private var isInitialized = false
:
343 | repeats: true
344 | ) { _ in
345 | 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
346 | // If paused, check if 10 seconds have passed
347 | if let pauseEndDate = pauseEndDate, Date() >= pauseEndDate {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:347: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
147 |
148 | @State private var isPaused: Bool = false
149 | @State private var pauseEndDate: Date?
| `- note: property declared here
150 | @State private var isInitialized = false
151 |
:
345 | guard !isPaused else {
346 | // If paused, check if 10 seconds have passed
347 | 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
348 | isPaused = false // Resume auto-play
349 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:348: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
146 | @State private var autoTimer: Timer?
147 |
148 | @State private var isPaused: Bool = false
| `- note: mutation of this property is only permitted within the actor
149 | @State private var pauseEndDate: Date?
150 | @State private var isInitialized = false
:
346 | // If paused, check if 10 seconds have passed
347 | if let pauseEndDate = pauseEndDate, Date() >= pauseEndDate {
348 | 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
349 | }
350 | return
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:357: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
154 |
155 | /// Used to animate opacity for the loop transition
156 | @State private var opacity: CGFloat = 1.0
| `- note: mutation of this property is only permitted within the actor
157 |
158 | // MARK: - Init
:
355 | // Fade out both slide + indicator
356 | withAnimation(.easeInOut(duration: fadeDuration)) {
357 | 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
358 | }
359 |
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:374: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
138 |
139 | /// The current index (in `data`) of the "active" page.
140 | @State private var index: Int = 0
| `- note: mutation of this property is only permitted within the actor
141 |
142 | /// Real-time drag offset from the user’s finger.
:
372 | case .slide:
373 | withAnimation(.easeInOut(duration: Double(msTransitionTime) / 1000)) {
374 | 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
375 | if loop {
376 | expandDataIfNeeded()
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:376: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
374 | index += 1
375 | if loop {
376 | 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
377 | pruneDataIfNeeded()
378 | } else {
:
442 | // MARK: - Expanding
443 |
444 | 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'
445 | // If index is in the first copy, prepend another
446 | if index < originalCount {
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:377: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
375 | if loop {
376 | expandDataIfNeeded()
377 | 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
378 | } else {
379 | index = min(index, data.count - 1)
:
461 | // MARK: - Pruning
462 |
463 | 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'
464 | let copiesInData = data.count / originalCount
465 | let maxCopiesAllowed = 5
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:379: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
138 |
139 | /// The current index (in `data`) of the "active" page.
140 | @State private var index: Int = 0
| `- note: mutation of this property is only permitted within the actor
141 |
142 | /// Real-time drag offset from the user’s finger.
:
377 | pruneDataIfNeeded()
378 | } else {
379 | 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
380 | }
381 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:379: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
138 |
139 | /// The current index (in `data`) of the "active" page.
140 | @State private var index: Int = 0
| `- note: property declared here
141 |
142 | /// Real-time drag offset from the user’s finger.
:
377 | pruneDataIfNeeded()
378 | } else {
379 | 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
380 | }
381 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Carousel/CarouselComponentView.swift:379: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
135 |
136 | /// The “expanded” data array, each item with a unique ID.
137 | @State private var data: [CarouselItem<Content>] = []
| `- note: property declared here
138 |
139 | /// The current index (in `data`) of the "active" page.
:
377 | pruneDataIfNeeded()
378 | } else {
379 | 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
380 | }
381 | }
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:125:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
123 | switch template {
124 | case .template1:
125 | 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
126 | case .template2:
127 | Template2View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:127:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
125 | Template1View(configuration)
126 | case .template2:
127 | 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
128 | case .template3:
129 | Template3View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:129:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
127 | Template2View(configuration)
128 | case .template3:
129 | 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
130 | case .template4:
131 | Template4View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:131:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
129 | Template3View(configuration)
130 | case .template4:
131 | 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
132 | case .template5:
133 | Template5View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:133:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
131 | Template4View(configuration)
132 | case .template5:
133 | 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
134 | case .template7:
135 | Template7View(configuration)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:135:13: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
133 | Template5View(configuration)
134 | case .template7:
135 | 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
136 | }
137 | #endif
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:74:18: warning: sending 'configuration' risks causing data races; this is an error in the Swift 6 language mode
72 | case let .success(configuration):
73 | Self.createView(template: template, configuration: configuration)
74 | .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
75 | .task(id: offering) {
76 | await introEligibility.computeEligibility(for: configuration.packages)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/TemplateViewType.swift:74:18: warning: sending value of non-Sendable type 'some View' risks causing data races; this is an error in the Swift 6 language mode
72 | case let .success(configuration):
73 | Self.createView(template: template, configuration: configuration)
74 | .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
75 | .task(id: offering) {
76 | await introEligibility.computeEligibility(for: configuration.packages)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:119:70: warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
117 | Logger.debug(Strings.restoring_purchases)
118 |
119 | 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
120 | if success {
121 | Logger.debug(Strings.restored_purchases)
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:155:53: warning: sending value of non-Sendable type '() async -> Bool' risks causing data races; this is an error in the Swift 6 language mode
153 | if let interceptor = self.offerCodeRedemptionInitiatedAction {
154 | // Wait for the interceptor to call resume before proceeding
155 | 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
156 | await withCheckedContinuation { continuation in
157 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Button/ButtonComponentView.swift:155:53: warning: sending 'self.purchaseHandler' risks causing data races; this is an error in the Swift 6 language mode
153 | if let interceptor = self.offerCodeRedemptionInitiatedAction {
154 | // Wait for the interceptor to call resume before proceeding
155 | 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
156 | await withCheckedContinuation { continuation in
157 | interceptor(resume: ResumeAction { shouldProceed in
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/Templates/V2/Components/Countdown/CountdownComponentViewModel.swift:61: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
59 | deinit {
60 | // Not calling stop because of async needed
61 | 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
62 | timer = nil
63 | 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:62: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
60 | // Not calling stop because of async needed
61 | timer?.connect().cancel()
62 | 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
63 | cancellable = nil
64 | }
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:63: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
61 | timer?.connect().cancel()
62 | timer = nil
63 | 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
64 | }
65 |
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! (44.82s)
Fetching https://github.com/pointfreeco/swift-snapshot-testing from cache
Fetched https://github.com/pointfreeco/swift-snapshot-testing from cache (2.03s)
Fetching https://github.com/quick/nimble
[1/19804] Fetching nimble
Fetched https://github.com/quick/nimble from cache (1.90s)
Computing version for https://github.com/quick/nimble
Computed https://github.com/quick/nimble at 13.7.1 (2.45s)
Fetching https://github.com/mattgallagher/CwlPreconditionTesting.git
[1/1257] Fetching cwlpreconditiontesting
Fetched https://github.com/mattgallagher/CwlPreconditionTesting.git from cache (0.96s)
Computing version for https://github.com/mattgallagher/CwlPreconditionTesting.git
Computed https://github.com/mattgallagher/CwlPreconditionTesting.git at 2.2.2 (1.58s)
Fetching https://github.com/mattgallagher/CwlCatchException.git
[1/460] Fetching cwlcatchexception
Fetched https://github.com/mattgallagher/CwlCatchException.git from cache (0.77s)
Computing version for https://github.com/mattgallagher/CwlCatchException.git
Computed https://github.com/mattgallagher/CwlCatchException.git at 2.2.1 (1.39s)
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/mattgallagher/CwlCatchException.git
Working copy of https://github.com/mattgallagher/CwlCatchException.git resolved at 2.2.1
Creating working copy for https://github.com/quick/nimble
Working copy of https://github.com/quick/nimble resolved at 13.7.1
Creating working copy for https://github.com/pointfreeco/swift-snapshot-testing
Working copy of https://github.com/pointfreeco/swift-snapshot-testing resolved at 26ed3a2b4a2df47917ca9b790a57f91285b923fb
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: 'spi-builder-workspace': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
/Users/admin/builder/spi-builder-workspace/RevenueCatUI/RevenueCatUIDev.xctestplan
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" : {
"revision" : [
"26ed3a2b4a2df47917ca9b790a57f91285b923fb"
]
},
"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/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",
"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/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/CodableStrings.swift",
"Logging/Strings/ConfigureStrings.swift",
"Logging/Strings/CustomerInfoStrings.swift",
"Logging/Strings/DiagnosticsStrings.swift",
"Logging/Strings/ETagStrings.swift",
"Logging/Strings/EligibilityStrings.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/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/LogInCallback.swift",
"Networking/Caching/OfferingsCallback.swift",
"Networking/Caching/ProductEntitlementMappingCallback.swift",
"Networking/Caching/VirtualCurrenciesCallback.swift",
"Networking/Caching/WebBillingProductsCallback.swift",
"Networking/Caching/WebOfferingProductsCallback.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/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/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/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/VirtualCurrenciesAPI.swift",
"Networking/WebBillingAPI.swift",
"Networking/WebBillingHTTPRequestPath.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/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/Networking/EventsRequest+Paywall.swift",
"Paywalls/Events/PaywallEvent.swift",
"Paywalls/Locale+Comparison.swift",
"Paywalls/PaywallCacheWarming.swift",
"Paywalls/PaywallColor.swift",
"Paywalls/PaywallData+Localization.swift",
"Paywalls/PaywallData.swift",
"Paywalls/PaywallFontManagerType.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/PurchaseParams.swift",
"Purchasing/Purchases/Purchases.swift",
"Purchasing/Purchases/PurchasesAreCompletedBy.swift",
"Purchasing/Purchases/PurchasesDelegate.swift",
"Purchasing/Purchases/PurchasesOrchestrator.swift",
"Purchasing/Purchases/PurchasesType.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/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.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" : [
"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/SemanticVersionTests.swift",
"Data/TemplateViewConfigurationTests.swift",
"Data/VariablesTests.swift",
"Helpers/AsyncTestHelpers.swift",
"Helpers/AvailabilityChecks.swift",
"Helpers/CurrentTestCaseTracker.swift",
"Helpers/DataExtensions.swift",
"Helpers/ImageSnapshot.swift",
"Helpers/OSVersionEquivalent.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/LocaleFinderTests.swift",
"PaywallsV2/PaywallPreviewResourcesLoader.swift",
"PaywallsV2/PresentedPartialsTests.swift",
"PaywallsV2/TakeScreenshot.swift",
"PaywallsV2/UIConfigProviderTests.swift",
"PaywallsV2/VariableHandlerV2Tests.swift",
"PresentIfNeededTests.swift",
"PurchaseCompletedHandlerTests.swift",
"Purchasing/MockStoreTransaction.swift",
"Purchasing/PurchaseHandlerTests.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"
],
"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/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/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/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/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/Virtual Currencies/VirtualCurrenciesScrollViewWithOSBackgroundSection.swift",
"CustomerCenter/Views/Virtual Currencies/VirtualCurrencyBalanceListRow.swift",
"CustomerCenter/Views/Virtual Currencies/VirtualCurrencyBalancesScreen.swift",
"Data/Constants.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/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/Bundle+Extensions.swift",
"Helpers/ColorInformation+MultiScheme.swift",
"Helpers/EmergeRenderingMode.swift",
"Helpers/FileImageLoader.swift",
"Helpers/ImageLoader.swift",
"Helpers/Logger.swift",
"Helpers/Optional+Extensions.swift",
"Helpers/Package+VariableDataProvider.swift",
"Helpers/PaywallData+Default.swift",
"Helpers/PreviewHelpers.swift",
"Helpers/PurchaseResultComparator.swift",
"Helpers/ResumeAction.swift",
"Helpers/RuntimeUtils.swift",
"Helpers/StoreProduct+Extensions.swift",
"Helpers/StoreProductDiscount+Extensions.swift",
"Helpers/SubscriptionPeriod+Extensions.swift",
"Helpers/TemplateView+MultiTier.swift",
"Helpers/VersionDetector.swift",
"Modifiers/ConsistentPackageContentView.swift",
"Modifiers/ConsistentTierContentView.swift",
"Modifiers/FitToAspectRatio.swift",
"Modifiers/FooterHidingModifier.swift",
"Modifiers/ViewExtensions.swift",
"PaywallFontProvider.swift",
"PaywallView.swift",
"Purchasing/MockPurchases.swift",
"Purchasing/PaywallPurchasesType.swift",
"Purchasing/PurchaseHandler+TestData.swift",
"Purchasing/PurchaseHandler.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/ComponentsView.swift",
"Templates/V2/Components/Countdown/CountdownComponentView.swift",
"Templates/V2/Components/Countdown/CountdownComponentViewModel.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/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/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/IntroOfferEligibilityContext.swift",
"Templates/V2/EnvironmentObjects/OpenSheet.swift",
"Templates/V2/EnvironmentObjects/PackageContext.swift",
"Templates/V2/EnvironmentObjects/PaywallPromoOfferCache.swift",
"Templates/V2/EnvironmentObjects/ScreenCondition.swift",
"Templates/V2/Localizations/LocaleExtensions.swift",
"Templates/V2/Localizations/LocaleFinder.swift",
"Templates/V2/Localizations/LocalizationDictionaryExtensions.swift",
"Templates/V2/PaywallsV2View.swift",
"Templates/V2/Previews/PreviewMock.swift",
"Templates/V2/Previews/TemplateComponentsViewPreviews/ButtonWithFooterPreview.swift",
"Templates/V2/Previews/TemplateComponentsViewPreviews/FallbackComponentPreview.swift",
"Templates/V2/Previews/TemplateComponentsViewPreviews/FamilySharingTogglePreview.swift",
"Templates/V2/Previews/TemplateComponentsViewPreviews/MultiTierPreview.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",
"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/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/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",
"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/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/CodableStrings.swift",
"Logging/Strings/ConfigureStrings.swift",
"Logging/Strings/CustomerInfoStrings.swift",
"Logging/Strings/DiagnosticsStrings.swift",
"Logging/Strings/ETagStrings.swift",
"Logging/Strings/EligibilityStrings.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/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/LogInCallback.swift",
"Networking/Caching/OfferingsCallback.swift",
"Networking/Caching/ProductEntitlementMappingCallback.swift",
"Networking/Caching/VirtualCurrenciesCallback.swift",
"Networking/Caching/WebBillingProductsCallback.swift",
"Networking/Caching/WebOfferingProductsCallback.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/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/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/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/VirtualCurrenciesAPI.swift",
"Networking/WebBillingAPI.swift",
"Networking/WebBillingHTTPRequestPath.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/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/Networking/EventsRequest+Paywall.swift",
"Paywalls/Events/PaywallEvent.swift",
"Paywalls/Locale+Comparison.swift",
"Paywalls/PaywallCacheWarming.swift",
"Paywalls/PaywallColor.swift",
"Paywalls/PaywallData+Localization.swift",
"Paywalls/PaywallData.swift",
"Paywalls/PaywallFontManagerType.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/PurchaseParams.swift",
"Purchasing/Purchases/Purchases.swift",
"Purchasing/Purchases/PurchasesAreCompletedBy.swift",
"Purchasing/Purchases/PurchasesDelegate.swift",
"Purchasing/Purchases/PurchasesOrchestrator.swift",
"Purchasing/Purchases/PurchasesType.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/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.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.