From 2d5f5d78c330dd838cfa590cbdf1f81a3bf3c56d Mon Sep 17 00:00:00 2001 From: Kieran Osgood Date: Thu, 11 Jun 2026 17:24:57 +0100 Subject: [PATCH] Make ApplePayConfiguration a SwiftUI environment value --- platforms/swift/README.md | 6 +- .../Sources/Scenes/Cart/CartView.swift | 6 +- .../Sources/Scenes/ProductView.swift | 6 +- .../ShopifyAcceleratedCheckoutsApp.swift | 10 +- ...fyAcceleratedCheckouts+Configuration.swift | 27 +- .../Wallets/AcceleratedCheckoutButtons.swift | 12 +- .../Wallets/ApplePay/ApplePayButton.swift | 26 +- .../ApplePay/ApplePayConfiguration.swift | 28 +- .../Wallets/ShopPay/ShopPayButton.swift | 12 +- ...ratedCheckoutButtonsRenderStateTests.swift | 12 +- .../ApplePay/ApplePayIntegrationTests.swift | 12 +- .../ApplePay/ApplePayViewModifierTests.swift | 40 +- .../Wallets/ShopPay/ShopPayButtonTests.swift | 17 +- .../api/ShopifyAcceleratedCheckouts.json | 787 +++++++++--------- 14 files changed, 514 insertions(+), 487 deletions(-) diff --git a/platforms/swift/README.md b/platforms/swift/README.md index fe0378c5..ad0505e4 100644 --- a/platforms/swift/README.md +++ b/platforms/swift/README.md @@ -302,7 +302,7 @@ iOS handles checkout geolocation permission prompts through the system prompt. I ### Configure accelerated checkouts -Create shared configuration objects and inject them into your SwiftUI hierarchy: +Create shared configuration values and inject them into your SwiftUI hierarchy: ```swift import ShopifyAcceleratedCheckouts @@ -325,8 +325,8 @@ struct YourApp: App { var body: some Scene { WindowGroup { ContentView() - .environmentObject(checkoutConfig) - .environmentObject(applePayConfig) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, checkoutConfig) + .environment(\.shopifyApplePayConfiguration, applePayConfig) } } } diff --git a/platforms/swift/Samples/CheckoutKitSwiftDemo/CheckoutKitSwiftDemo/Sources/Scenes/Cart/CartView.swift b/platforms/swift/Samples/CheckoutKitSwiftDemo/CheckoutKitSwiftDemo/Sources/Scenes/Cart/CartView.swift index 56fafe57..08f40e9e 100644 --- a/platforms/swift/Samples/CheckoutKitSwiftDemo/CheckoutKitSwiftDemo/Sources/Scenes/Cart/CartView.swift +++ b/platforms/swift/Samples/CheckoutKitSwiftDemo/CheckoutKitSwiftDemo/Sources/Scenes/Cart/CartView.swift @@ -46,13 +46,15 @@ struct CartView: View { print("[AcceleratedCheckout] Cancelled") } .connect(client) - .environmentObject( + .environment( + \.shopifyAcceleratedCheckoutsConfiguration, ShopifyAcceleratedCheckouts.Configuration( storefrontDomain: InfoDictionary.shared.domain, storefrontAccessToken: InfoDictionary.shared.accessToken ) ) - .environmentObject( + .environment( + \.shopifyApplePayConfiguration, ShopifyAcceleratedCheckouts.ApplePayConfiguration( merchantIdentifier: InfoDictionary.shared.merchantIdentifier, contactFields: [.email, .phone] diff --git a/platforms/swift/Samples/CheckoutKitSwiftDemo/CheckoutKitSwiftDemo/Sources/Scenes/ProductView.swift b/platforms/swift/Samples/CheckoutKitSwiftDemo/CheckoutKitSwiftDemo/Sources/Scenes/ProductView.swift index 1c35fee9..7380fb4c 100644 --- a/platforms/swift/Samples/CheckoutKitSwiftDemo/CheckoutKitSwiftDemo/Sources/Scenes/ProductView.swift +++ b/platforms/swift/Samples/CheckoutKitSwiftDemo/CheckoutKitSwiftDemo/Sources/Scenes/ProductView.swift @@ -123,13 +123,15 @@ struct ProductView: View { .onCancel { print("[AcceleratedCheckout] Cancelled") } - .environmentObject( + .environment( + \.shopifyAcceleratedCheckoutsConfiguration, ShopifyAcceleratedCheckouts.Configuration( storefrontDomain: InfoDictionary.shared.domain, storefrontAccessToken: InfoDictionary.shared.accessToken ) ) - .environmentObject( + .environment( + \.shopifyApplePayConfiguration, ShopifyAcceleratedCheckouts.ApplePayConfiguration( merchantIdentifier: InfoDictionary.shared.merchantIdentifier, contactFields: [.email, .phone] diff --git a/platforms/swift/Samples/ShopifyAcceleratedCheckoutsApp/ShopifyAcceleratedCheckoutsApp/ShopifyAcceleratedCheckoutsApp.swift b/platforms/swift/Samples/ShopifyAcceleratedCheckoutsApp/ShopifyAcceleratedCheckoutsApp/ShopifyAcceleratedCheckoutsApp.swift index a730a465..1bb7bee1 100644 --- a/platforms/swift/Samples/ShopifyAcceleratedCheckoutsApp/ShopifyAcceleratedCheckoutsApp/ShopifyAcceleratedCheckoutsApp.swift +++ b/platforms/swift/Samples/ShopifyAcceleratedCheckoutsApp/ShopifyAcceleratedCheckoutsApp/ShopifyAcceleratedCheckoutsApp.swift @@ -11,13 +11,13 @@ struct ShopifyAcceleratedCheckoutsApp: App { @AppStorage(AppStorageKeys.email.rawValue) var email: String = "" @AppStorage(AppStorageKeys.phone.rawValue) var phone: String = "" @AppStorage(AppStorageKeys.supportedCountries.rawValue) var supportedCountriesString: String = "" - @StateObject private var configuration: ShopifyAcceleratedCheckouts.Configuration + @State private var configuration: ShopifyAcceleratedCheckouts.Configuration init() { let email = UserDefaults.standard.string(forKey: AppStorageKeys.email.rawValue) ?? "" let phone = UserDefaults.standard.string(forKey: AppStorageKeys.phone.rawValue) ?? "" - _configuration = StateObject( - wrappedValue: ShopifyAcceleratedCheckouts.Configuration( + _configuration = State( + initialValue: ShopifyAcceleratedCheckouts.Configuration( storefrontDomain: EnvironmentVariables.storefrontDomain, storefrontAccessToken: EnvironmentVariables.storefrontAccessToken, customer: Self.customer(email: email, phone: phone) @@ -51,8 +51,8 @@ struct ShopifyAcceleratedCheckoutsApp: App { ShopifyAcceleratedCheckouts.logLevel = logLevel updateConfiguration() } - .environmentObject(configuration) - .environmentObject(applePayConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, configuration) + .environment(\.shopifyApplePayConfiguration, applePayConfiguration) } .environment(\.locale, Locale(identifier: locale)) } diff --git a/platforms/swift/Sources/ShopifyAcceleratedCheckouts/ShopifyAcceleratedCheckouts+Configuration.swift b/platforms/swift/Sources/ShopifyAcceleratedCheckouts/ShopifyAcceleratedCheckouts+Configuration.swift index 1db9586a..9a3a085d 100644 --- a/platforms/swift/Sources/ShopifyAcceleratedCheckouts/ShopifyAcceleratedCheckouts+Configuration.swift +++ b/platforms/swift/Sources/ShopifyAcceleratedCheckouts/ShopifyAcceleratedCheckouts+Configuration.swift @@ -3,25 +3,25 @@ import SwiftUI @available(iOS 16.0, *) extension ShopifyAcceleratedCheckouts { - public class Configuration: ObservableObject, Copyable { + public struct Configuration: Sendable, Equatable { /// The domain of the shop without the protocol. /// /// Example: `my-shop.myshopify.com` /// /// See: https://shopify.dev/docs/storefronts/themes/getting-started/build-a-theme#get-the-shop-domain - @Published public var storefrontDomain: String + public var storefrontDomain: String /// The storefront access token. /// /// See: https://shopify.dev/docs/storefronts/themes/getting-started/build-a-theme#get-the-storefront-access-token - @Published public var storefrontAccessToken: String + public var storefrontAccessToken: String /// Data to attach to the buyerIdentity during cart creation /// - Apple Pay sheet will skip requesting email/phone number fields if provided here /// - Customer will *override* existing cart.buyerIdentity if you are using cartId /// /// See: https://shopify.dev/docs/api/storefront/latest/mutations/cartBuyerIdentityUpdate - @Published public var customer: Customer? + public var customer: Customer? public init( storefrontDomain: String, @@ -32,12 +32,6 @@ extension ShopifyAcceleratedCheckouts { self.storefrontAccessToken = storefrontAccessToken self.customer = customer } - - package required init(copy: Configuration) { - storefrontDomain = copy.storefrontDomain - storefrontAccessToken = copy.storefrontAccessToken - customer = copy.customer - } } public struct Customer: Sendable, Equatable { @@ -63,3 +57,16 @@ extension ShopifyAcceleratedCheckouts { } } } + +@available(iOS 16.0, *) +private struct ShopifyAcceleratedCheckoutsConfigurationKey: EnvironmentKey { + static let defaultValue: ShopifyAcceleratedCheckouts.Configuration? = nil +} + +@available(iOS 16.0, *) +extension EnvironmentValues { + public var shopifyAcceleratedCheckoutsConfiguration: ShopifyAcceleratedCheckouts.Configuration? { + get { self[ShopifyAcceleratedCheckoutsConfigurationKey.self] } + set { self[ShopifyAcceleratedCheckoutsConfigurationKey.self] = newValue } + } +} diff --git a/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/AcceleratedCheckoutButtons.swift b/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/AcceleratedCheckoutButtons.swift index 89acc09e..2a7910db 100644 --- a/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/AcceleratedCheckoutButtons.swift +++ b/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/AcceleratedCheckoutButtons.swift @@ -17,8 +17,8 @@ public enum RenderState: Equatable { /// - omission of the `wallets` modifier will render all buttons @available(iOS 16.0, *) public struct AcceleratedCheckoutButtons: View { - @EnvironmentObject - private var configuration: ShopifyAcceleratedCheckouts.Configuration + @Environment(\.shopifyAcceleratedCheckoutsConfiguration) + private var configuration: ShopifyAcceleratedCheckouts.Configuration? let identifier: CheckoutIdentifier public var wallets: [Wallet] = [.shopPay, .applePay] @@ -95,11 +95,19 @@ public struct AcceleratedCheckoutButtons: View { } } + private var resolvedConfiguration: ShopifyAcceleratedCheckouts.Configuration { + guard let configuration else { + fatalError("Missing ShopifyAcceleratedCheckouts.Configuration. Add .environment(\\.shopifyAcceleratedCheckoutsConfiguration, ...) to an ancestor view.") + } + return configuration + } + private func loadShopSettings() async { guard identifier.isValid() else { return } do { currentRenderState = .loading + let configuration = resolvedConfiguration let storefront = StorefrontAPI( storefrontDomain: configuration.storefrontDomain, storefrontAccessToken: configuration.storefrontAccessToken diff --git a/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/ApplePay/ApplePayButton.swift b/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/ApplePay/ApplePayButton.swift index 3985ab04..e529fe4e 100644 --- a/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/ApplePay/ApplePayButton.swift +++ b/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/ApplePay/ApplePayButton.swift @@ -7,15 +7,15 @@ import SwiftUI @available(macOS, unavailable) struct ApplePayButton: View { /// The configuration for Apple Pay - @EnvironmentObject - private var configuration: ShopifyAcceleratedCheckouts.Configuration + @Environment(\.shopifyAcceleratedCheckoutsConfiguration) + private var configuration: ShopifyAcceleratedCheckouts.Configuration? /// The shop settings @EnvironmentObject private var shopSettings: ShopSettings - @EnvironmentObject - private var applePayConfiguration: ShopifyAcceleratedCheckouts.ApplePayConfiguration + @Environment(\.shopifyApplePayConfiguration) + private var applePayConfiguration: ShopifyAcceleratedCheckouts.ApplePayConfiguration? /// The identifier to use for checkout private let identifier: CheckoutIdentifier @@ -58,8 +58,8 @@ struct ApplePayButton: View { label: label, style: style, configuration: ApplePayConfigurationWrapper( - common: configuration, - applePay: applePayConfiguration, + common: resolvedConfiguration, + applePay: resolvedApplePayConfiguration, shopSettings: shopSettings ), eventHandlers: eventHandlers, @@ -69,6 +69,20 @@ struct ApplePayButton: View { } } + private var resolvedConfiguration: ShopifyAcceleratedCheckouts.Configuration { + guard let configuration else { + fatalError("Missing ShopifyAcceleratedCheckouts.Configuration. Add .environment(\\.shopifyAcceleratedCheckoutsConfiguration, ...) to an ancestor view.") + } + return configuration + } + + private var resolvedApplePayConfiguration: ShopifyAcceleratedCheckouts.ApplePayConfiguration { + guard let applePayConfiguration else { + fatalError("Missing ShopifyAcceleratedCheckouts.ApplePayConfiguration. Add .environment(\\.shopifyApplePayConfiguration, ...) to an ancestor view.") + } + return applePayConfiguration + } + func applePayStyle(_ style: PayWithApplePayButtonStyle) -> some View { var view = self view.style = style diff --git a/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/ApplePay/ApplePayConfiguration.swift b/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/ApplePay/ApplePayConfiguration.swift index a42b51dd..0dc451e5 100644 --- a/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/ApplePay/ApplePayConfiguration.swift +++ b/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/ApplePay/ApplePayConfiguration.swift @@ -1,10 +1,9 @@ -import Foundation -import PassKit +import SwiftUI @available(iOS 16.0, *) extension ShopifyAcceleratedCheckouts { /// Contact field types that can be required during Apple Pay checkout. - public enum RequiredContactFields: String { + public enum RequiredContactFields: String, Sendable { case email case phone } @@ -14,7 +13,7 @@ extension ShopifyAcceleratedCheckouts { /// This class encapsulates all necessary settings for enabling Apple Pay as a payment method, /// including merchant identification and required contact information. Supported payment networks /// are automatically determined based on the merchant's Shopify configuration. - public class ApplePayConfiguration: ObservableObject, Copyable { + public struct ApplePayConfiguration: Sendable, Equatable { /// The merchant identifier for Apple Pay transactions. /// /// This value must match one of the merchant identifiers specified by the Merchant IDs @@ -64,12 +63,19 @@ extension ShopifyAcceleratedCheckouts { self.contactFields = contactFields self.supportedShippingCountries = supportedShippingCountries } + } +} - package required init(copy: ApplePayConfiguration) { - merchantIdentifier = copy.merchantIdentifier - contactFields = copy.contactFields - supportedShippingCountries = copy.supportedShippingCountries - } +@available(iOS 16.0, *) +private struct ShopifyApplePayConfigurationKey: EnvironmentKey { + static let defaultValue: ShopifyAcceleratedCheckouts.ApplePayConfiguration? = nil +} + +@available(iOS 16.0, *) +extension EnvironmentValues { + public var shopifyApplePayConfiguration: ShopifyAcceleratedCheckouts.ApplePayConfiguration? { + get { self[ShopifyApplePayConfigurationKey.self] } + set { self[ShopifyApplePayConfigurationKey.self] = newValue } } } @@ -94,8 +100,8 @@ class ApplePayConfigurationWrapper: Copyable { } package required init(copy: ApplePayConfigurationWrapper) { - common = copy.common.copy() - applePay = copy.applePay.copy() + common = copy.common + applePay = copy.applePay shopSettings = copy.shopSettings } } diff --git a/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/ShopPay/ShopPayButton.swift b/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/ShopPay/ShopPayButton.swift index aa073620..229721b8 100644 --- a/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/ShopPay/ShopPayButton.swift +++ b/platforms/swift/Sources/ShopifyAcceleratedCheckouts/Wallets/ShopPay/ShopPayButton.swift @@ -3,7 +3,8 @@ import SwiftUI @available(iOS 16.0, *) internal struct ShopPayButton: View { - @EnvironmentObject private var configuration: ShopifyAcceleratedCheckouts.Configuration + @Environment(\.shopifyAcceleratedCheckoutsConfiguration) + private var configuration: ShopifyAcceleratedCheckouts.Configuration? let identifier: CheckoutIdentifier let eventHandlers: EventHandlers @@ -29,13 +30,20 @@ internal struct ShopPayButton: View { default: Internal_ShopPayButton( identifier: identifier, - configuration: configuration, + configuration: resolvedConfiguration, eventHandlers: eventHandlers, cornerRadius: cornerRadius, client: clientContainer.client ) } } + + private var resolvedConfiguration: ShopifyAcceleratedCheckouts.Configuration { + guard let configuration else { + fatalError("Missing ShopifyAcceleratedCheckouts.Configuration. Add .environment(\\.shopifyAcceleratedCheckoutsConfiguration, ...) to an ancestor view.") + } + return configuration + } } /// Internal_ wrapper component allows `ShopifyAcceleratedCheckouts.Configuration` to be diff --git a/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/AcceleratedCheckoutButtonsRenderStateTests.swift b/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/AcceleratedCheckoutButtonsRenderStateTests.swift index 92f87487..9f2d6597 100644 --- a/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/AcceleratedCheckoutButtonsRenderStateTests.swift +++ b/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/AcceleratedCheckoutButtonsRenderStateTests.swift @@ -20,7 +20,7 @@ final class AcceleratedCheckoutButtonsRenderStateTests: XCTestCase { expectation.fulfill() } } - .environmentObject(ShopifyAcceleratedCheckouts.Configuration.testConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, ShopifyAcceleratedCheckouts.Configuration.testConfiguration) // Render the view to trigger onAppear let hostingController = UIHostingController(rootView: testView) @@ -47,7 +47,7 @@ final class AcceleratedCheckoutButtonsRenderStateTests: XCTestCase { expectation.fulfill() } } - .environmentObject(ShopifyAcceleratedCheckouts.Configuration.testConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, ShopifyAcceleratedCheckouts.Configuration.testConfiguration) // Render the view to trigger onAppear let hostingController = UIHostingController(rootView: testView) @@ -74,7 +74,7 @@ final class AcceleratedCheckoutButtonsRenderStateTests: XCTestCase { expectation.fulfill() } } - .environmentObject(ShopifyAcceleratedCheckouts.Configuration.testConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, ShopifyAcceleratedCheckouts.Configuration.testConfiguration) // Render the view to trigger onAppear let hostingController = UIHostingController(rootView: testView) @@ -101,7 +101,7 @@ final class AcceleratedCheckoutButtonsRenderStateTests: XCTestCase { expectation.fulfill() } } - .environmentObject(ShopifyAcceleratedCheckouts.Configuration.testConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, ShopifyAcceleratedCheckouts.Configuration.testConfiguration) // Render the view to trigger onAppear let hostingController = UIHostingController(rootView: testView) @@ -128,7 +128,7 @@ final class AcceleratedCheckoutButtonsRenderStateTests: XCTestCase { expectation.fulfill() } } - .environmentObject(ShopifyAcceleratedCheckouts.Configuration.testConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, ShopifyAcceleratedCheckouts.Configuration.testConfiguration) // Render the view to trigger onAppear let hostingController = UIHostingController(rootView: testView) @@ -155,7 +155,7 @@ final class AcceleratedCheckoutButtonsRenderStateTests: XCTestCase { expectation.fulfill() } } - .environmentObject(ShopifyAcceleratedCheckouts.Configuration.testConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, ShopifyAcceleratedCheckouts.Configuration.testConfiguration) // Render the view to trigger onAppear let hostingController = UIHostingController(rootView: testView) diff --git a/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/ApplePay/ApplePayIntegrationTests.swift b/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/ApplePay/ApplePayIntegrationTests.swift index 076f5ef5..2267246d 100644 --- a/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/ApplePay/ApplePayIntegrationTests.swift +++ b/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/ApplePay/ApplePayIntegrationTests.swift @@ -60,8 +60,8 @@ final class ApplePayIntegrationTests: XCTestCase { await MainActor.run { let view = AcceleratedCheckoutButtons(cartID: "gid://Shopify/Cart/test-cart") .wallets([.applePay]) - .environmentObject(mockCommonConfiguration) - .environmentObject(mockApplePayConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, mockCommonConfiguration) + .environment(\.shopifyApplePayConfiguration, mockApplePayConfiguration) .environmentObject(mockShopSettings) let hostingController = UIHostingController(rootView: view) @@ -89,8 +89,8 @@ final class ApplePayIntegrationTests: XCTestCase { .onCancel { cancelExpectation.fulfill() } - .environmentObject(mockCommonConfiguration) - .environmentObject(mockApplePayConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, mockCommonConfiguration) + .environment(\.shopifyApplePayConfiguration, mockApplePayConfiguration) .environmentObject(mockShopSettings) let hostingController = UIHostingController(rootView: view) @@ -114,8 +114,8 @@ final class ApplePayIntegrationTests: XCTestCase { // Create hosting controller to render the view let hostingController = UIHostingController( rootView: button - .environmentObject(mockCommonConfiguration) - .environmentObject(mockApplePayConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, mockCommonConfiguration) + .environment(\.shopifyApplePayConfiguration, mockApplePayConfiguration) .environmentObject(mockShopSettings) ) diff --git a/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/ApplePay/ApplePayViewModifierTests.swift b/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/ApplePay/ApplePayViewModifierTests.swift index fb0b7993..bbcce4fd 100644 --- a/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/ApplePay/ApplePayViewModifierTests.swift +++ b/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/ApplePay/ApplePayViewModifierTests.swift @@ -53,8 +53,8 @@ final class ApplePayViewModifierTests: XCTestCase { let view = AcceleratedCheckoutButtons(cartID: "gid://Shopify/Cart/test-cart-id") .onCancel(cancelAction) - .environmentObject(mockConfiguration) - .environmentObject(mockApplePayConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, mockConfiguration) + .environment(\.shopifyApplePayConfiguration, mockApplePayConfiguration) .environmentObject(mockShopSettings) XCTAssertNotNil(view, "View should be created successfully with cancel modifier") @@ -70,8 +70,8 @@ final class ApplePayViewModifierTests: XCTestCase { _ = AcceleratedCheckoutButtons(cartID: "gid://Shopify/Cart/test-cart-id") .onCancel { firstCallbackInvoked = true } .onCancel { secondCallbackInvoked = true } // Should replace the first - .environmentObject(mockConfiguration) - .environmentObject(mockApplePayConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, mockConfiguration) + .environment(\.shopifyApplePayConfiguration, mockApplePayConfiguration) .environmentObject(mockShopSettings) XCTAssertFalse(firstCallbackInvoked, "First callback should not be invoked") @@ -88,8 +88,8 @@ final class ApplePayViewModifierTests: XCTestCase { let view = AcceleratedCheckoutButtons(cartID: "gid://Shopify/Cart/test-cart-id") .onFail(errorAction) - .environmentObject(mockConfiguration) - .environmentObject(mockApplePayConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, mockConfiguration) + .environment(\.shopifyApplePayConfiguration, mockApplePayConfiguration) .environmentObject(mockShopSettings) XCTAssertNotNil(view, "View should be created successfully with error modifier") @@ -114,8 +114,8 @@ final class ApplePayViewModifierTests: XCTestCase { let view = AcceleratedCheckoutButtons(cartID: "gid://Shopify/Cart/test-cart-id") .onFail(errorAction) .onCancel(cancelAction) - .environmentObject(mockConfiguration) - .environmentObject(mockApplePayConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, mockConfiguration) + .environment(\.shopifyApplePayConfiguration, mockApplePayConfiguration) .environmentObject(mockShopSettings) XCTAssertNotNil(view, "View should be created successfully with both modifiers") @@ -132,8 +132,8 @@ final class ApplePayViewModifierTests: XCTestCase { func testEnvironmentValueDefaults() { let view = AcceleratedCheckoutButtons(cartID: "gid://Shopify/Cart/test-cart-id") - .environmentObject(mockConfiguration) - .environmentObject(mockApplePayConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, mockConfiguration) + .environment(\.shopifyApplePayConfiguration, mockApplePayConfiguration) .environmentObject(mockShopSettings) XCTAssertNotNil(view, "View should be created successfully without handlers") @@ -151,8 +151,8 @@ final class ApplePayViewModifierTests: XCTestCase { let view = AcceleratedCheckoutButtons(cartID: "gid://Shopify/Cart/test-cart-id") .onFail(errorAction) .onCancel(cancelAction) - .environmentObject(mockConfiguration) - .environmentObject(mockApplePayConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, mockConfiguration) + .environment(\.shopifyApplePayConfiguration, mockApplePayConfiguration) .environmentObject(mockShopSettings) XCTAssertNotNil(view, "View should be created successfully with all modifiers") @@ -177,8 +177,8 @@ final class ApplePayViewModifierTests: XCTestCase { AcceleratedCheckoutButtons(cartID: "gid://Shopify/Cart/test-cart-id") .onFail { _ in errorCount += 1 } } - .environmentObject(mockConfiguration) - .environmentObject(mockApplePayConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, mockConfiguration) + .environment(\.shopifyApplePayConfiguration, mockApplePayConfiguration) .environmentObject(mockShopSettings) XCTAssertNotNil(view, "View should be created successfully") @@ -195,8 +195,8 @@ final class ApplePayViewModifierTests: XCTestCase { func testCornerRadiusModifier() { let view = AcceleratedCheckoutButtons(cartID: "gid://Shopify/Cart/test-cart-id") .cornerRadius(16) - .environmentObject(mockConfiguration) - .environmentObject(mockApplePayConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, mockConfiguration) + .environment(\.shopifyApplePayConfiguration, mockApplePayConfiguration) .environmentObject(mockShopSettings) XCTAssertNotNil(view, "View should be created successfully with corner radius modifier") @@ -205,8 +205,8 @@ final class ApplePayViewModifierTests: XCTestCase { func testCornerRadiusZeroValue() { let view = AcceleratedCheckoutButtons(cartID: "gid://Shopify/Cart/test-cart-id") .cornerRadius(0) - .environmentObject(mockConfiguration) - .environmentObject(mockApplePayConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, mockConfiguration) + .environment(\.shopifyApplePayConfiguration, mockApplePayConfiguration) .environmentObject(mockShopSettings) XCTAssertNotNil(view, "View should be created successfully with zero corner radius") @@ -215,8 +215,8 @@ final class ApplePayViewModifierTests: XCTestCase { func testCornerRadiusNegativeValue() { let view = AcceleratedCheckoutButtons(cartID: "gid://Shopify/Cart/test-cart-id") .cornerRadius(-10) - .environmentObject(mockConfiguration) - .environmentObject(mockApplePayConfiguration) + .environment(\.shopifyAcceleratedCheckoutsConfiguration, mockConfiguration) + .environment(\.shopifyApplePayConfiguration, mockApplePayConfiguration) .environmentObject(mockShopSettings) XCTAssertNotNil(view, "View should be created successfully with negative corner radius") diff --git a/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/ShopPay/ShopPayButtonTests.swift b/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/ShopPay/ShopPayButtonTests.swift index 82aad973..fe9d460f 100644 --- a/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/ShopPay/ShopPayButtonTests.swift +++ b/platforms/swift/Tests/ShopifyAcceleratedCheckoutsTests/Wallets/ShopPay/ShopPayButtonTests.swift @@ -18,12 +18,12 @@ class ShopPayButtonTests: XCTestCase { // MARK: - ShopPayButton Tests func test_shopPayButton_withValidCartIdentifier_shouldRenderLogo() throws { - let button = ShopPayButton( + let button = Internal_ShopPayButton( identifier: validCartIdentifier, + configuration: testConfiguration, eventHandlers: EventHandlers(), cornerRadius: nil ) - .environmentObject(testConfiguration) // Assert the Shop Pay logo image is present in the button let buttonElement = try button.inspect().find(ViewType.Button.self) @@ -32,12 +32,12 @@ class ShopPayButtonTests: XCTestCase { } func test_shopPayButton_withValidVariantIdentifier_shouldRenderLogo() throws { - let button = ShopPayButton( + let button = Internal_ShopPayButton( identifier: validVariantIdentifier, + configuration: testConfiguration, eventHandlers: EventHandlers(), cornerRadius: nil ) - .environmentObject(testConfiguration) // Assert the Shop Pay logo image is present in the button let buttonElement = try button.inspect().find(ViewType.Button.self) @@ -48,12 +48,12 @@ class ShopPayButtonTests: XCTestCase { // MARK: - ShopPayButton Rendering Tests func test_shopPayButton_shouldHaveShopPayBlueBackground() throws { - let button = ShopPayButton( + let button = Internal_ShopPayButton( identifier: validCartIdentifier, + configuration: testConfiguration, eventHandlers: EventHandlers(), cornerRadius: nil ) - .environmentObject(testConfiguration) let buttonElement = try button.inspect().find(ViewType.Button.self) let hStack = try buttonElement.labelView().hStack() @@ -73,12 +73,12 @@ class ShopPayButtonTests: XCTestCase { for testCase in testCases { try XCTContext.runActivity(named: "Testing \(testCase.description)") { _ in - let button = ShopPayButton( + let button = Internal_ShopPayButton( identifier: validCartIdentifier, + configuration: testConfiguration, eventHandlers: EventHandlers(), cornerRadius: testCase.input ) - .environmentObject(testConfiguration) let buttonElement = try button.inspect().find(ViewType.Button.self) XCTAssertEqual(try buttonElement.cornerRadius(), testCase.expected) @@ -109,7 +109,6 @@ class ShopPayButtonTests: XCTestCase { eventHandlers: EventHandlers(), cornerRadius: nil ) - .environmentObject(testConfiguration) XCTAssertNoThrow(try button.inspect().find(ViewType.EmptyView.self)) } diff --git a/platforms/swift/api/ShopifyAcceleratedCheckouts.json b/platforms/swift/api/ShopifyAcceleratedCheckouts.json index f1294ff4..0fa362c9 100644 --- a/platforms/swift/api/ShopifyAcceleratedCheckouts.json +++ b/platforms/swift/api/ShopifyAcceleratedCheckouts.json @@ -195,13 +195,13 @@ } ], "declKind": "Var", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC16storefrontDomainSSvp", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC16storefrontDomainSSvp", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV16storefrontDomainSSvp", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationV16storefrontDomainSSvp", "moduleName": "ShopifyAcceleratedCheckouts", "declAttributes": [ - "ProjectedValueProperty", - "Custom" + "HasStorage" ], + "hasStorage": true, "accessors": [ { "kind": "Accessor", @@ -216,10 +216,13 @@ } ], "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC16storefrontDomainSSvg", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC16storefrontDomainSSvg", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV16storefrontDomainSSvg", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationV16storefrontDomainSSvg", "moduleName": "ShopifyAcceleratedCheckouts", "implicit": true, + "declAttributes": [ + "Transparent" + ], "accessorKind": "get" }, { @@ -240,92 +243,12 @@ } ], "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC16storefrontDomainSSvs", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC16storefrontDomainSSvs", - "moduleName": "ShopifyAcceleratedCheckouts", - "implicit": true, - "intro_Macosx": "10.15", - "intro_iOS": "16.0", - "intro_tvOS": "13.0", - "intro_watchOS": "6.0", - "declAttributes": [ - "Available", - "Available", - "Available", - "Available" - ], - "accessorKind": "set" - } - ] - }, - { - "kind": "Var", - "name": "$storefrontDomain", - "printedName": "$storefrontDomain", - "children": [ - { - "kind": "TypeNominal", - "name": "Publisher", - "printedName": "Combine.Published.Publisher", - "usr": "s:7Combine9PublishedV9PublisherV" - } - ], - "declKind": "Var", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC17$storefrontDomain7Combine9PublishedV9PublisherVySS_Gvp", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC17$storefrontDomain7Combine9PublishedV9PublisherVySS_Gvp", - "moduleName": "ShopifyAcceleratedCheckouts", - "implicit": true, - "accessors": [ - { - "kind": "Accessor", - "name": "Get", - "printedName": "Get()", - "children": [ - { - "kind": "TypeNominal", - "name": "Publisher", - "printedName": "Combine.Published.Publisher", - "usr": "s:7Combine9PublishedV9PublisherV" - } - ], - "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC17$storefrontDomain7Combine9PublishedV9PublisherVySS_Gvg", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC17$storefrontDomain7Combine9PublishedV9PublisherVySS_Gvg", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV16storefrontDomainSSvs", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationV16storefrontDomainSSvs", "moduleName": "ShopifyAcceleratedCheckouts", "implicit": true, - "accessorKind": "get" - }, - { - "kind": "Accessor", - "name": "Set", - "printedName": "Set()", - "children": [ - { - "kind": "TypeNominal", - "name": "Void", - "printedName": "()" - }, - { - "kind": "TypeNominal", - "name": "Publisher", - "printedName": "Combine.Published.Publisher", - "usr": "s:7Combine9PublishedV9PublisherV" - } - ], - "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC17$storefrontDomain7Combine9PublishedV9PublisherVySS_Gvs", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC17$storefrontDomain7Combine9PublishedV9PublisherVySS_Gvs", - "moduleName": "ShopifyAcceleratedCheckouts", - "implicit": true, - "intro_Macosx": "11.0", - "intro_iOS": "16.0", - "intro_tvOS": "14.0", - "intro_watchOS": "7.0", "declAttributes": [ - "Available", - "Available", - "Available", - "Available" + "Transparent" ], "accessorKind": "set" } @@ -344,13 +267,13 @@ } ], "declKind": "Var", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC21storefrontAccessTokenSSvp", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC21storefrontAccessTokenSSvp", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV21storefrontAccessTokenSSvp", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationV21storefrontAccessTokenSSvp", "moduleName": "ShopifyAcceleratedCheckouts", "declAttributes": [ - "ProjectedValueProperty", - "Custom" + "HasStorage" ], + "hasStorage": true, "accessors": [ { "kind": "Accessor", @@ -365,10 +288,13 @@ } ], "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC21storefrontAccessTokenSSvg", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC21storefrontAccessTokenSSvg", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV21storefrontAccessTokenSSvg", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationV21storefrontAccessTokenSSvg", "moduleName": "ShopifyAcceleratedCheckouts", "implicit": true, + "declAttributes": [ + "Transparent" + ], "accessorKind": "get" }, { @@ -389,92 +315,12 @@ } ], "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC21storefrontAccessTokenSSvs", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC21storefrontAccessTokenSSvs", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV21storefrontAccessTokenSSvs", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationV21storefrontAccessTokenSSvs", "moduleName": "ShopifyAcceleratedCheckouts", "implicit": true, - "intro_Macosx": "10.15", - "intro_iOS": "16.0", - "intro_tvOS": "13.0", - "intro_watchOS": "6.0", "declAttributes": [ - "Available", - "Available", - "Available", - "Available" - ], - "accessorKind": "set" - } - ] - }, - { - "kind": "Var", - "name": "$storefrontAccessToken", - "printedName": "$storefrontAccessToken", - "children": [ - { - "kind": "TypeNominal", - "name": "Publisher", - "printedName": "Combine.Published.Publisher", - "usr": "s:7Combine9PublishedV9PublisherV" - } - ], - "declKind": "Var", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC22$storefrontAccessToken7Combine9PublishedV9PublisherVySS_Gvp", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC22$storefrontAccessToken7Combine9PublishedV9PublisherVySS_Gvp", - "moduleName": "ShopifyAcceleratedCheckouts", - "implicit": true, - "accessors": [ - { - "kind": "Accessor", - "name": "Get", - "printedName": "Get()", - "children": [ - { - "kind": "TypeNominal", - "name": "Publisher", - "printedName": "Combine.Published.Publisher", - "usr": "s:7Combine9PublishedV9PublisherV" - } - ], - "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC22$storefrontAccessToken7Combine9PublishedV9PublisherVySS_Gvg", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC22$storefrontAccessToken7Combine9PublishedV9PublisherVySS_Gvg", - "moduleName": "ShopifyAcceleratedCheckouts", - "implicit": true, - "accessorKind": "get" - }, - { - "kind": "Accessor", - "name": "Set", - "printedName": "Set()", - "children": [ - { - "kind": "TypeNominal", - "name": "Void", - "printedName": "()" - }, - { - "kind": "TypeNominal", - "name": "Publisher", - "printedName": "Combine.Published.Publisher", - "usr": "s:7Combine9PublishedV9PublisherV" - } - ], - "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC22$storefrontAccessToken7Combine9PublishedV9PublisherVySS_Gvs", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC22$storefrontAccessToken7Combine9PublishedV9PublisherVySS_Gvs", - "moduleName": "ShopifyAcceleratedCheckouts", - "implicit": true, - "intro_Macosx": "11.0", - "intro_iOS": "16.0", - "intro_tvOS": "14.0", - "intro_watchOS": "7.0", - "declAttributes": [ - "Available", - "Available", - "Available", - "Available" + "Transparent" ], "accessorKind": "set" } @@ -501,13 +347,14 @@ } ], "declKind": "Var", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC8customerAB8CustomerVSgvp", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC8customerAB8CustomerVSgvp", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV8customerAB8CustomerVSgvp", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationV8customerAB8CustomerVSgvp", "moduleName": "ShopifyAcceleratedCheckouts", "declAttributes": [ - "ProjectedValueProperty", - "Custom" + "HasInitialValue", + "HasStorage" ], + "hasStorage": true, "accessors": [ { "kind": "Accessor", @@ -530,10 +377,13 @@ } ], "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC8customerAB8CustomerVSgvg", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC8customerAB8CustomerVSgvg", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV8customerAB8CustomerVSgvg", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationV8customerAB8CustomerVSgvg", "moduleName": "ShopifyAcceleratedCheckouts", "implicit": true, + "declAttributes": [ + "Transparent" + ], "accessorKind": "get" }, { @@ -562,92 +412,12 @@ } ], "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC8customerAB8CustomerVSgvs", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC8customerAB8CustomerVSgvs", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV8customerAB8CustomerVSgvs", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationV8customerAB8CustomerVSgvs", "moduleName": "ShopifyAcceleratedCheckouts", "implicit": true, - "intro_Macosx": "10.15", - "intro_iOS": "16.0", - "intro_tvOS": "13.0", - "intro_watchOS": "6.0", "declAttributes": [ - "Available", - "Available", - "Available", - "Available" - ], - "accessorKind": "set" - } - ] - }, - { - "kind": "Var", - "name": "$customer", - "printedName": "$customer", - "children": [ - { - "kind": "TypeNominal", - "name": "Publisher", - "printedName": "Combine.Published.Publisher", - "usr": "s:7Combine9PublishedV9PublisherV" - } - ], - "declKind": "Var", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC9$customer7Combine9PublishedV9PublisherVyAB8CustomerVSg_Gvp", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC9$customer7Combine9PublishedV9PublisherVyAB8CustomerVSg_Gvp", - "moduleName": "ShopifyAcceleratedCheckouts", - "implicit": true, - "accessors": [ - { - "kind": "Accessor", - "name": "Get", - "printedName": "Get()", - "children": [ - { - "kind": "TypeNominal", - "name": "Publisher", - "printedName": "Combine.Published.Publisher", - "usr": "s:7Combine9PublishedV9PublisherV" - } - ], - "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC9$customer7Combine9PublishedV9PublisherVyAB8CustomerVSg_Gvg", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC9$customer7Combine9PublishedV9PublisherVyAB8CustomerVSg_Gvg", - "moduleName": "ShopifyAcceleratedCheckouts", - "implicit": true, - "accessorKind": "get" - }, - { - "kind": "Accessor", - "name": "Set", - "printedName": "Set()", - "children": [ - { - "kind": "TypeNominal", - "name": "Void", - "printedName": "()" - }, - { - "kind": "TypeNominal", - "name": "Publisher", - "printedName": "Combine.Published.Publisher", - "usr": "s:7Combine9PublishedV9PublisherV" - } - ], - "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC9$customer7Combine9PublishedV9PublisherVyAB8CustomerVSg_Gvs", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC9$customer7Combine9PublishedV9PublisherVyAB8CustomerVSg_Gvs", - "moduleName": "ShopifyAcceleratedCheckouts", - "implicit": true, - "intro_Macosx": "11.0", - "intro_iOS": "16.0", - "intro_tvOS": "14.0", - "intro_watchOS": "7.0", - "declAttributes": [ - "Available", - "Available", - "Available", - "Available" + "Transparent" ], "accessorKind": "set" } @@ -662,7 +432,7 @@ "kind": "TypeNominal", "name": "Configuration", "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.Configuration", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC" + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV" }, { "kind": "TypeNominal", @@ -693,90 +463,73 @@ } ], "declKind": "Constructor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC16storefrontDomain0E11AccessToken8customerADSS_SSAB8CustomerVSgtcfc", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC16storefrontDomain0E11AccessToken8customerADSS_SSAB8CustomerVSgtcfc", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV16storefrontDomain0E11AccessToken8customerADSS_SSAB8CustomerVSgtcfc", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationV16storefrontDomain0E11AccessToken8customerADSS_SSAB8CustomerVSgtcfc", "moduleName": "ShopifyAcceleratedCheckouts", "init_kind": "Designated" }, { - "kind": "Constructor", - "name": "init", - "printedName": "init(copy:)", + "kind": "Function", + "name": "__derived_struct_equals", + "printedName": "__derived_struct_equals(_:_:)", "children": [ { "kind": "TypeNominal", - "name": "Configuration", - "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.Configuration", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC" + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" }, { "kind": "TypeNominal", "name": "Configuration", "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.Configuration", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC" - } - ], - "declKind": "Constructor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC4copyA2D_tcfc", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC4copyA2D_tcfc", - "moduleName": "ShopifyAcceleratedCheckouts", - "isInternal": true, - "declAttributes": [ - "Required" - ], - "init_kind": "Designated" - }, - { - "kind": "TypeAlias", - "name": "ObjectWillChangePublisher", - "printedName": "ObjectWillChangePublisher", - "children": [ + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV" + }, { "kind": "TypeNominal", - "name": "ObservableObjectPublisher", - "printedName": "Combine.ObservableObjectPublisher", - "usr": "s:7Combine25ObservableObjectPublisherC" + "name": "Configuration", + "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.Configuration", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV" } ], - "declKind": "TypeAlias", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC25ObjectWillChangePublishera", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC25ObjectWillChangePublishera", + "declKind": "Func", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV23__derived_struct_equalsySbAD_ADtFZ", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationV23__derived_struct_equalsySbAD_ADtFZ", "moduleName": "ShopifyAcceleratedCheckouts", + "static": true, "implicit": true, - "intro_iOS": "16.0", "declAttributes": [ - "Available" - ] + "Implements" + ], + "funcSelfKind": "NonMutating" } ], - "declKind": "Class", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationC", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationC", + "declKind": "Struct", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO13ConfigurationV", "moduleName": "ShopifyAcceleratedCheckouts", "isFromExtension": true, - "hasMissingDesignatedInitializers": true, "conformances": [ { "kind": "Conformance", - "name": "ObservableObject", - "printedName": "ObservableObject", - "children": [ - { - "kind": "TypeWitness", - "name": "ObjectWillChangePublisher", - "printedName": "ObjectWillChangePublisher", - "children": [ - { - "kind": "TypeNominal", - "name": "ObservableObjectPublisher", - "printedName": "Combine.ObservableObjectPublisher", - "usr": "s:7Combine25ObservableObjectPublisherC" - } - ] - } - ], - "usr": "s:7Combine16ObservableObjectP", - "mangledName": "$s7Combine16ObservableObjectP" + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" }, { "kind": "Conformance", @@ -1351,6 +1104,20 @@ "usr": "s:SY", "mangledName": "$sSY" }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + }, { "kind": "Conformance", "name": "Copyable", @@ -1385,11 +1152,10 @@ } ], "declKind": "Var", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC18merchantIdentifierSSvp", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC18merchantIdentifierSSvp", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV18merchantIdentifierSSvp", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV18merchantIdentifierSSvp", "moduleName": "ShopifyAcceleratedCheckouts", "declAttributes": [ - "Final", "HasStorage" ], "isLet": true, @@ -1408,12 +1174,11 @@ } ], "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC18merchantIdentifierSSvg", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC18merchantIdentifierSSvg", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV18merchantIdentifierSSvg", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV18merchantIdentifierSSvg", "moduleName": "ShopifyAcceleratedCheckouts", "implicit": true, "declAttributes": [ - "Final", "Transparent" ], "accessorKind": "get" @@ -1441,11 +1206,10 @@ } ], "declKind": "Var", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC13contactFieldsSayAB015RequiredContactH0OGvp", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC13contactFieldsSayAB015RequiredContactH0OGvp", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV13contactFieldsSayAB015RequiredContactH0OGvp", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV13contactFieldsSayAB015RequiredContactH0OGvp", "moduleName": "ShopifyAcceleratedCheckouts", "declAttributes": [ - "Final", "HasStorage" ], "isLet": true, @@ -1472,12 +1236,11 @@ } ], "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC13contactFieldsSayAB015RequiredContactH0OGvg", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC13contactFieldsSayAB015RequiredContactH0OGvg", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV13contactFieldsSayAB015RequiredContactH0OGvg", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV13contactFieldsSayAB015RequiredContactH0OGvg", "moduleName": "ShopifyAcceleratedCheckouts", "implicit": true, "declAttributes": [ - "Final", "Transparent" ], "accessorKind": "get" @@ -1513,11 +1276,10 @@ } ], "declKind": "Var", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC26supportedShippingCountriesShySSGSgvp", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC26supportedShippingCountriesShySSGSgvp", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV26supportedShippingCountriesShySSGSgvp", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV26supportedShippingCountriesShySSGSgvp", "moduleName": "ShopifyAcceleratedCheckouts", "declAttributes": [ - "Final", "HasStorage" ], "isLet": true, @@ -1552,12 +1314,11 @@ } ], "declKind": "Accessor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC26supportedShippingCountriesShySSGSgvg", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC26supportedShippingCountriesShySSGSgvg", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV26supportedShippingCountriesShySSGSgvg", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV26supportedShippingCountriesShySSGSgvg", "moduleName": "ShopifyAcceleratedCheckouts", "implicit": true, "declAttributes": [ - "Final", "Transparent" ], "accessorKind": "get" @@ -1573,7 +1334,7 @@ "kind": "TypeNominal", "name": "ApplePayConfiguration", "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.ApplePayConfiguration", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC" + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV" }, { "kind": "TypeNominal", @@ -1620,90 +1381,73 @@ } ], "declKind": "Constructor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC18merchantIdentifier13contactFields26supportedShippingCountriesADSS_SayAB015RequiredContactJ0OGShySSGSgtcfc", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC18merchantIdentifier13contactFields26supportedShippingCountriesADSS_SayAB015RequiredContactJ0OGShySSGSgtcfc", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV18merchantIdentifier13contactFields26supportedShippingCountriesADSS_SayAB015RequiredContactJ0OGShySSGSgtcfc", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV18merchantIdentifier13contactFields26supportedShippingCountriesADSS_SayAB015RequiredContactJ0OGShySSGSgtcfc", "moduleName": "ShopifyAcceleratedCheckouts", "init_kind": "Designated" }, { - "kind": "Constructor", - "name": "init", - "printedName": "init(copy:)", + "kind": "Function", + "name": "__derived_struct_equals", + "printedName": "__derived_struct_equals(_:_:)", "children": [ { "kind": "TypeNominal", - "name": "ApplePayConfiguration", - "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.ApplePayConfiguration", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC" + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" }, { "kind": "TypeNominal", "name": "ApplePayConfiguration", "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.ApplePayConfiguration", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC" - } - ], - "declKind": "Constructor", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC4copyA2D_tcfc", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC4copyA2D_tcfc", - "moduleName": "ShopifyAcceleratedCheckouts", - "isInternal": true, - "declAttributes": [ - "Required" - ], - "init_kind": "Designated" - }, - { - "kind": "TypeAlias", - "name": "ObjectWillChangePublisher", - "printedName": "ObjectWillChangePublisher", - "children": [ + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV" + }, { "kind": "TypeNominal", - "name": "ObservableObjectPublisher", - "printedName": "Combine.ObservableObjectPublisher", - "usr": "s:7Combine25ObservableObjectPublisherC" + "name": "ApplePayConfiguration", + "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.ApplePayConfiguration", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV" } ], - "declKind": "TypeAlias", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC25ObjectWillChangePublishera", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC25ObjectWillChangePublishera", + "declKind": "Func", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV23__derived_struct_equalsySbAD_ADtFZ", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV23__derived_struct_equalsySbAD_ADtFZ", "moduleName": "ShopifyAcceleratedCheckouts", + "static": true, "implicit": true, - "intro_iOS": "16.0", "declAttributes": [ - "Available" - ] + "Implements" + ], + "funcSelfKind": "NonMutating" } ], - "declKind": "Class", - "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC", - "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationC", + "declKind": "Struct", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV", + "mangledName": "$s27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV", "moduleName": "ShopifyAcceleratedCheckouts", "isFromExtension": true, - "hasMissingDesignatedInitializers": true, "conformances": [ { "kind": "Conformance", - "name": "ObservableObject", - "printedName": "ObservableObject", - "children": [ - { - "kind": "TypeWitness", - "name": "ObjectWillChangePublisher", - "printedName": "ObjectWillChangePublisher", - "children": [ - { - "kind": "TypeNominal", - "name": "ObservableObjectPublisher", - "printedName": "Combine.ObservableObjectPublisher", - "usr": "s:7Combine25ObservableObjectPublisherC" - } - ] - } - ], - "usr": "s:7Combine16ObservableObjectP", - "mangledName": "$s7Combine16ObservableObjectP" + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" }, { "kind": "Conformance", @@ -3555,6 +3299,243 @@ } ] }, + { + "kind": "TypeDecl", + "name": "EnvironmentValues", + "printedName": "EnvironmentValues", + "children": [ + { + "kind": "Var", + "name": "shopifyAcceleratedCheckoutsConfiguration", + "printedName": "shopifyAcceleratedCheckoutsConfiguration", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.Configuration?", + "children": [ + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.Configuration", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:7SwiftUI17EnvironmentValuesV27ShopifyAcceleratedCheckoutsE07shopifyfG13ConfigurationA2DO0I0VSgvp", + "mangledName": "$s7SwiftUI17EnvironmentValuesV27ShopifyAcceleratedCheckoutsE07shopifyfG13ConfigurationA2DO0I0VSgvp", + "moduleName": "ShopifyAcceleratedCheckouts", + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.Configuration?", + "children": [ + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.Configuration", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:7SwiftUI17EnvironmentValuesV27ShopifyAcceleratedCheckoutsE07shopifyfG13ConfigurationA2DO0I0VSgvg", + "mangledName": "$s7SwiftUI17EnvironmentValuesV27ShopifyAcceleratedCheckoutsE07shopifyfG13ConfigurationA2DO0I0VSgvg", + "moduleName": "ShopifyAcceleratedCheckouts", + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.Configuration?", + "children": [ + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.Configuration", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO13ConfigurationV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:7SwiftUI17EnvironmentValuesV27ShopifyAcceleratedCheckoutsE07shopifyfG13ConfigurationA2DO0I0VSgvs", + "mangledName": "$s7SwiftUI17EnvironmentValuesV27ShopifyAcceleratedCheckoutsE07shopifyfG13ConfigurationA2DO0I0VSgvs", + "moduleName": "ShopifyAcceleratedCheckouts", + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "shopifyApplePayConfiguration", + "printedName": "shopifyApplePayConfiguration", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.ApplePayConfiguration?", + "children": [ + { + "kind": "TypeNominal", + "name": "ApplePayConfiguration", + "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.ApplePayConfiguration", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:7SwiftUI17EnvironmentValuesV27ShopifyAcceleratedCheckoutsE28shopifyApplePayConfigurationA2DO0ijK0VSgvp", + "mangledName": "$s7SwiftUI17EnvironmentValuesV27ShopifyAcceleratedCheckoutsE28shopifyApplePayConfigurationA2DO0ijK0VSgvp", + "moduleName": "ShopifyAcceleratedCheckouts", + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.ApplePayConfiguration?", + "children": [ + { + "kind": "TypeNominal", + "name": "ApplePayConfiguration", + "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.ApplePayConfiguration", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:7SwiftUI17EnvironmentValuesV27ShopifyAcceleratedCheckoutsE28shopifyApplePayConfigurationA2DO0ijK0VSgvg", + "mangledName": "$s7SwiftUI17EnvironmentValuesV27ShopifyAcceleratedCheckoutsE28shopifyApplePayConfigurationA2DO0ijK0VSgvg", + "moduleName": "ShopifyAcceleratedCheckouts", + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.ApplePayConfiguration?", + "children": [ + { + "kind": "TypeNominal", + "name": "ApplePayConfiguration", + "printedName": "ShopifyAcceleratedCheckouts.ShopifyAcceleratedCheckouts.ApplePayConfiguration", + "usr": "s:27ShopifyAcceleratedCheckoutsAAO21ApplePayConfigurationV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:7SwiftUI17EnvironmentValuesV27ShopifyAcceleratedCheckoutsE28shopifyApplePayConfigurationA2DO0ijK0VSgvs", + "mangledName": "$s7SwiftUI17EnvironmentValuesV27ShopifyAcceleratedCheckoutsE28shopifyApplePayConfigurationA2DO0ijK0VSgvs", + "moduleName": "ShopifyAcceleratedCheckouts", + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Struct", + "usr": "s:7SwiftUI17EnvironmentValuesV", + "mangledName": "$s7SwiftUI17EnvironmentValuesV", + "moduleName": "SwiftUICore", + "intro_Macosx": "10.15", + "intro_iOS": "13.0", + "intro_tvOS": "13.0", + "intro_watchOS": "6.0", + "declAttributes": [ + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "OriginallyDefinedIn", + "Available", + "Available", + "Available", + "Available" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, { "kind": "TypeDecl", "name": "PKPaymentAuthorizationController",