From 6cb030e94d07c2a17fb7f4966170f865c93a325e Mon Sep 17 00:00:00 2001 From: Mark Murray Date: Mon, 22 Jun 2026 16:11:19 +0100 Subject: [PATCH] Add support for auth and color scheme --- .../ShopifyCheckoutKit/CheckoutProtocol.swift | 4 +- .../ShopifyCheckoutKit/CheckoutWebView.swift | 2 +- .../CheckoutWebViewControllerTests.swift | 4 +- .../CheckoutWebViewTests.swift | 10 +- .../swift/api/ShopifyCheckoutProtocol.json | 1867 +++++++++++++---- .../EmbeddedCheckoutProtocol.swift | 45 +- .../EmbeddedCheckoutProtocol+Event.swift | 29 + .../EmbeddedCheckoutProtocolURLTests.swift | 51 +- protocol/scripts/generate_swift_catalog.mjs | 51 + 9 files changed, 1583 insertions(+), 480 deletions(-) diff --git a/platforms/swift/Sources/ShopifyCheckoutKit/CheckoutProtocol.swift b/platforms/swift/Sources/ShopifyCheckoutKit/CheckoutProtocol.swift index 3ac07ce4d..547114dcf 100644 --- a/platforms/swift/Sources/ShopifyCheckoutKit/CheckoutProtocol.swift +++ b/platforms/swift/Sources/ShopifyCheckoutKit/CheckoutProtocol.swift @@ -7,10 +7,10 @@ public enum CheckoutProtocol { public typealias Client = EmbeddedCheckoutProtocol.Client public static func url(for url: URL) -> URL { - EmbeddedCheckoutProtocol.url(for: url, delegations: defaultDelegations) + EmbeddedCheckoutProtocol.url(for: url, options: .init(delegations: defaultDelegations)) } - static let defaultDelegations: [String] = ["window.open"] + static let defaultDelegations: [EmbeddedCheckoutProtocol.Delegation] = [.windowOpen] static let methodNotFoundCode = -32601 static let methodNotFoundMessage = "Method not found" diff --git a/platforms/swift/Sources/ShopifyCheckoutKit/CheckoutWebView.swift b/platforms/swift/Sources/ShopifyCheckoutKit/CheckoutWebView.swift index 8747cd289..dad0b30de 100644 --- a/platforms/swift/Sources/ShopifyCheckoutKit/CheckoutWebView.swift +++ b/platforms/swift/Sources/ShopifyCheckoutKit/CheckoutWebView.swift @@ -459,7 +459,7 @@ extension CheckoutWebView: WKScriptMessageHandler { } if method == EmbeddedCheckoutProtocol.readyMethod, - let response = EmbeddedCheckoutProtocol.acknowledgeReady(body, supportedDelegations: CheckoutProtocol.defaultDelegations) + let response = EmbeddedCheckoutProtocol.acknowledgeReady(body, supportedDelegations: CheckoutProtocol.defaultDelegations.map(\.rawValue)) { OSLogger.shared.debug("Handling ec.ready: sending UCP ready acknowledgement, isPreload: \(isPreloadRequest)") Task { @MainActor in diff --git a/platforms/swift/Tests/ShopifyCheckoutKitTests/CheckoutWebViewControllerTests.swift b/platforms/swift/Tests/ShopifyCheckoutKitTests/CheckoutWebViewControllerTests.swift index 67fcbc2e6..0ebcdf287 100644 --- a/platforms/swift/Tests/ShopifyCheckoutKitTests/CheckoutWebViewControllerTests.swift +++ b/platforms/swift/Tests/ShopifyCheckoutKitTests/CheckoutWebViewControllerTests.swift @@ -75,7 +75,7 @@ class CheckoutWebViewControllerTests: XCTestCase { func test_presentationControllerDidDismiss_doesNotCleanUpBeforeViewDisappears() throws { ShopifyCheckoutKit.configuration.preloading.enabled = true ShopifyCheckoutKit.preload(checkout: url) - let viewController = TestableCheckoutWebViewController(checkoutURL: EmbeddedCheckoutProtocol.url(for: url, delegations: CheckoutProtocol.defaultDelegations), entryPoint: nil) + let viewController = TestableCheckoutWebViewController(checkoutURL: EmbeddedCheckoutProtocol.url(for: url, options: .init(delegations: CheckoutProtocol.defaultDelegations)), entryPoint: nil) viewController.loadViewIfNeeded() let checkoutView = try XCTUnwrap(viewController.checkoutView) @@ -93,7 +93,7 @@ class CheckoutWebViewControllerTests: XCTestCase { func test_viewDidDisappear_cleansUpConsumedPreloadedWebViewWhenDismissed() throws { ShopifyCheckoutKit.configuration.preloading.enabled = true ShopifyCheckoutKit.preload(checkout: url) - let viewController = TestableCheckoutWebViewController(checkoutURL: EmbeddedCheckoutProtocol.url(for: url, delegations: CheckoutProtocol.defaultDelegations), entryPoint: nil) + let viewController = TestableCheckoutWebViewController(checkoutURL: EmbeddedCheckoutProtocol.url(for: url, options: .init(delegations: CheckoutProtocol.defaultDelegations)), entryPoint: nil) viewController.loadViewIfNeeded() let checkoutView = try XCTUnwrap(viewController.checkoutView) diff --git a/platforms/swift/Tests/ShopifyCheckoutKitTests/CheckoutWebViewTests.swift b/platforms/swift/Tests/ShopifyCheckoutKitTests/CheckoutWebViewTests.swift index ad49ba118..6c4bae2b2 100644 --- a/platforms/swift/Tests/ShopifyCheckoutKitTests/CheckoutWebViewTests.swift +++ b/platforms/swift/Tests/ShopifyCheckoutKitTests/CheckoutWebViewTests.swift @@ -284,7 +284,7 @@ class CheckoutWebViewTests: XCTestCase { XCTAssertTrue(CheckoutWebView.preloadCache.hasEntry()) XCTAssertTrue(CheckoutWebView.preloadCache.hasActiveKeepAlive()) - let cached = CheckoutWebView.for(checkout: EmbeddedCheckoutProtocol.url(for: url, delegations: CheckoutProtocol.defaultDelegations)) + let cached = CheckoutWebView.for(checkout: EmbeddedCheckoutProtocol.url(for: url, options: .init(delegations: CheckoutProtocol.defaultDelegations))) XCTAssertTrue(CheckoutWebView.preloadCache.hasEntry()) XCTAssertFalse(CheckoutWebView.preloadCache.hasActiveKeepAlive()) @@ -305,8 +305,8 @@ class CheckoutWebViewTests: XCTestCase { func testPresentingMatchingCheckoutReusesCachedWebViewWithoutEvictingIt() { ShopifyCheckoutKit.preload(checkout: url) - let first = CheckoutWebView.for(checkout: EmbeddedCheckoutProtocol.url(for: url, delegations: CheckoutProtocol.defaultDelegations)) - let second = CheckoutWebView.for(checkout: EmbeddedCheckoutProtocol.url(for: url, delegations: CheckoutProtocol.defaultDelegations)) + let first = CheckoutWebView.for(checkout: EmbeddedCheckoutProtocol.url(for: url, options: .init(delegations: CheckoutProtocol.defaultDelegations))) + let second = CheckoutWebView.for(checkout: EmbeddedCheckoutProtocol.url(for: url, options: .init(delegations: CheckoutProtocol.defaultDelegations))) XCTAssertTrue(first === second) XCTAssertTrue(CheckoutWebView.preloadCache.hasEntry()) @@ -411,7 +411,7 @@ class CheckoutWebViewTests: XCTestCase { func testInvalidateDetachesCachedPreloadedWebView() { ShopifyCheckoutKit.preload(checkout: url) - let cached = CheckoutWebView.for(checkout: EmbeddedCheckoutProtocol.url(for: url, delegations: CheckoutProtocol.defaultDelegations)) + let cached = CheckoutWebView.for(checkout: EmbeddedCheckoutProtocol.url(for: url, options: .init(delegations: CheckoutProtocol.defaultDelegations))) XCTAssertTrue(cached.isBridgeAttached) ShopifyCheckoutKit.invalidate() @@ -422,7 +422,7 @@ class CheckoutWebViewTests: XCTestCase { func testHTTPErrorInvalidatesPreloadCache() throws { ShopifyCheckoutKit.preload(checkout: url) - let cached = CheckoutWebView.for(checkout: EmbeddedCheckoutProtocol.url(for: url, delegations: CheckoutProtocol.defaultDelegations)) + let cached = CheckoutWebView.for(checkout: EmbeddedCheckoutProtocol.url(for: url, options: .init(delegations: CheckoutProtocol.defaultDelegations))) let link = try XCTUnwrap(cached.url) let response = try XCTUnwrap(HTTPURLResponse(url: link, statusCode: 403, httpVersion: nil, headerFields: nil)) diff --git a/platforms/swift/api/ShopifyCheckoutProtocol.json b/platforms/swift/api/ShopifyCheckoutProtocol.json index 6d5fa0d94..c7a3341b8 100644 --- a/platforms/swift/api/ShopifyCheckoutProtocol.json +++ b/platforms/swift/api/ShopifyCheckoutProtocol.json @@ -712,189 +712,208 @@ } ] }, - { - "kind": "Function", - "name": "url", - "printedName": "url(for:delegations:)", - "children": [ - { - "kind": "TypeNominal", - "name": "URL", - "printedName": "Foundation.URL", - "usr": "s:10Foundation3URLV" - }, - { - "kind": "TypeNominal", - "name": "URL", - "printedName": "Foundation.URL", - "usr": "s:10Foundation3URLV" - }, - { - "kind": "TypeNominal", - "name": "Array", - "printedName": "[Swift.String]", - "children": [ - { - "kind": "TypeNominal", - "name": "String", - "printedName": "Swift.String", - "usr": "s:SS" - } - ], - "hasDefaultArg": true, - "usr": "s:Sa" - } - ], - "declKind": "Func", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O3url3for11delegations10Foundation3URLVAI_SaySSGtFZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O3url3for11delegations10Foundation3URLVAI_SaySSGtFZ", - "moduleName": "ShopifyCheckoutProtocol", - "static": true, - "funcSelfKind": "NonMutating" - }, { "kind": "TypeDecl", - "name": "Client", - "printedName": "Client", + "name": "Options", + "printedName": "Options", "children": [ { - "kind": "Constructor", - "name": "init", - "printedName": "init()", + "kind": "Var", + "name": "delegations", + "printedName": "delegations", "children": [ { "kind": "TypeNominal", - "name": "Client", - "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Client", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV" + "name": "Array", + "printedName": "[ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation]", + "children": [ + { + "kind": "TypeNominal", + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" + } + ], + "usr": "s:Sa" } ], - "declKind": "Constructor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientVAEycfc", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientVAEycfc", + "declKind": "Var", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV11delegationsSayAC10DelegationVGvp", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV11delegationsSayAC10DelegationVGvp", "moduleName": "ShopifyCheckoutProtocol", - "init_kind": "Designated" - }, - { - "kind": "Function", - "name": "on", - "printedName": "on(_:perform:)", - "children": [ - { - "kind": "TypeNominal", - "name": "Client", - "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Client", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV" - }, + "declAttributes": [ + "HasStorage" + ], + "hasStorage": true, + "accessors": [ { - "kind": "TypeNominal", - "name": "NotificationDescriptor", - "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor

", + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", "children": [ { "kind": "TypeNominal", - "name": "GenericTypeParam", - "printedName": "P" + "name": "Array", + "printedName": "[ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation]", + "children": [ + { + "kind": "TypeNominal", + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" + } + ], + "usr": "s:Sa" } ], - "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + "declKind": "Accessor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV11delegationsSayAC10DelegationVGvg", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV11delegationsSayAC10DelegationVGvg", + "moduleName": "ShopifyCheckoutProtocol", + "implicit": true, + "declAttributes": [ + "Transparent" + ], + "accessorKind": "get" }, { - "kind": "TypeFunc", - "name": "Function", - "printedName": "(P) -> Swift.Void", + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", "children": [ { - "kind": "TypeNameAlias", + "kind": "TypeNominal", "name": "Void", - "printedName": "Swift.Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation]", "children": [ { "kind": "TypeNominal", - "name": "Void", - "printedName": "()" + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" } - ] - }, - { - "kind": "TypeNominal", - "name": "GenericTypeParam", - "printedName": "P" + ], + "usr": "s:Sa" } - ] + ], + "declKind": "Accessor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV11delegationsSayAC10DelegationVGvs", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV11delegationsSayAC10DelegationVGvs", + "moduleName": "ShopifyCheckoutProtocol", + "implicit": true, + "declAttributes": [ + "Transparent" + ], + "accessorKind": "set" } - ], - "declKind": "Func", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV2on_7performAeA22NotificationDescriptorVyxG_yxYbScMYcctAA12EventPayloadRzlF", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV2on_7performAeA22NotificationDescriptorVyxG_yxYbScMYcctAA12EventPayloadRzlF", - "moduleName": "ShopifyCheckoutProtocol", - "genericSig": "

", - "declAttributes": [ - "DiscardableResult" - ], - "funcSelfKind": "NonMutating" + ] }, { - "kind": "Function", - "name": "on", - "printedName": "on(_:perform:)", + "kind": "Var", + "name": "colorScheme", + "printedName": "colorScheme", "children": [ { "kind": "TypeNominal", - "name": "Client", - "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Client", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV" - }, - { - "kind": "TypeNominal", - "name": "DelegationDescriptor", - "printedName": "ShopifyCheckoutProtocol.DelegationDescriptor", + "name": "Optional", + "printedName": "Swift.String?", "children": [ { "kind": "TypeNominal", - "name": "GenericTypeParam", - "printedName": "P" - }, + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV11colorSchemeSSSgvp", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV11colorSchemeSSSgvp", + "moduleName": "ShopifyCheckoutProtocol", + "declAttributes": [ + "HasInitialValue", + "HasStorage" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ { "kind": "TypeNominal", - "name": "GenericTypeParam", - "printedName": "R" + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" } ], - "usr": "s:23ShopifyCheckoutProtocol20DelegationDescriptorV" + "declKind": "Accessor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV11colorSchemeSSSgvg", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV11colorSchemeSSSgvg", + "moduleName": "ShopifyCheckoutProtocol", + "implicit": true, + "declAttributes": [ + "Transparent" + ], + "accessorKind": "get" }, { - "kind": "TypeFunc", - "name": "Function", - "printedName": "(P) async -> R", + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", "children": [ { "kind": "TypeNominal", - "name": "GenericTypeParam", - "printedName": "R" + "name": "Void", + "printedName": "()" }, { "kind": "TypeNominal", - "name": "GenericTypeParam", - "printedName": "P" + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" } - ] + ], + "declKind": "Accessor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV11colorSchemeSSSgvs", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV11colorSchemeSSSgvs", + "moduleName": "ShopifyCheckoutProtocol", + "implicit": true, + "declAttributes": [ + "Transparent" + ], + "accessorKind": "set" } - ], - "declKind": "Func", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV2on_7performAeA20DelegationDescriptorVyxq_G_q_xYaYbScMYcctAA12EventPayloadRzAA08ResponseK0R_r0_lF", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV2on_7performAeA20DelegationDescriptorVyxq_G_q_xYaYbScMYcctAA12EventPayloadRzAA08ResponseK0R_r0_lF", - "moduleName": "ShopifyCheckoutProtocol", - "genericSig": "", - "declAttributes": [ - "DiscardableResult" - ], - "funcSelfKind": "NonMutating" + ] }, { - "kind": "Function", - "name": "process", - "printedName": "process(_:)", + "kind": "Var", + "name": "auth", + "printedName": "auth", "children": [ { "kind": "TypeNominal", @@ -909,26 +928,153 @@ } ], "usr": "s:Sq" - }, - { - "kind": "TypeNominal", - "name": "String", - "printedName": "Swift.String", - "usr": "s:SS" } ], - "declKind": "Func", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV7processySSSgSSYaF", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV7processySSSgSSYaF", + "declKind": "Var", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV4authSSSgvp", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV4authSSSgvp", "moduleName": "ShopifyCheckoutProtocol", - "funcSelfKind": "NonMutating" - } - ], - "declKind": "Struct", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV", + "declAttributes": [ + "HasInitialValue", + "HasStorage" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV4authSSSgvg", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV4authSSSgvg", + "moduleName": "ShopifyCheckoutProtocol", + "implicit": true, + "declAttributes": [ + "Transparent" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV4authSSSgvs", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV4authSSSgvs", + "moduleName": "ShopifyCheckoutProtocol", + "implicit": true, + "declAttributes": [ + "Transparent" + ], + "accessorKind": "set" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(delegations:colorScheme:auth:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Options", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation]", + "children": [ + { + "kind": "TypeNominal", + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" + } + ], + "hasDefaultArg": true, + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV11delegations11colorScheme4authAESayAC10DelegationVG_SSSgALtcfc", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV11delegations11colorScheme4authAESayAC10DelegationVG_SSSgALtcfc", + "moduleName": "ShopifyCheckoutProtocol", + "init_kind": "Designated" + } + ], + "declKind": "Struct", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV", "moduleName": "ShopifyCheckoutProtocol", - "isFromExtension": true, "conformances": [ { "kind": "Conformance", @@ -962,73 +1108,614 @@ }, { "kind": "Function", - "name": "acknowledgeReady", - "printedName": "acknowledgeReady(_:supportedDelegations:)", + "name": "url", + "printedName": "url(for:options:)", "children": [ { "kind": "TypeNominal", - "name": "Optional", - "printedName": "Swift.String?", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Options", + "hasDefaultArg": true, + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O7OptionsV" + } + ], + "declKind": "Func", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O3url3for7options10Foundation3URLVAI_AC7OptionsVtFZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O3url3for7options10Foundation3URLVAI_AC7OptionsVtFZ", + "moduleName": "ShopifyCheckoutProtocol", + "static": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "TypeDecl", + "name": "Client", + "printedName": "Client", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", "children": [ { "kind": "TypeNominal", - "name": "String", - "printedName": "Swift.String", - "usr": "s:SS" + "name": "Client", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Client", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV" + } + ], + "declKind": "Constructor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientVAEycfc", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientVAEycfc", + "moduleName": "ShopifyCheckoutProtocol", + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "on", + "printedName": "on(_:perform:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Client", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Client", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV" + }, + { + "kind": "TypeNominal", + "name": "NotificationDescriptor", + "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor

", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "P" + } + ], + "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + }, + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(P) -> Swift.Void", + "children": [ + { + "kind": "TypeNameAlias", + "name": "Void", + "printedName": "Swift.Void", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "P" + } + ] } ], - "usr": "s:Sq" - }, - { - "kind": "TypeNominal", - "name": "String", - "printedName": "Swift.String", - "usr": "s:SS" - }, - { - "kind": "TypeNominal", - "name": "Array", - "printedName": "[Swift.String]", - "children": [ + "declKind": "Func", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV2on_7performAeA22NotificationDescriptorVyxG_yxYbScMYcctAA12EventPayloadRzlF", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV2on_7performAeA22NotificationDescriptorVyxG_yxYbScMYcctAA12EventPayloadRzlF", + "moduleName": "ShopifyCheckoutProtocol", + "genericSig": "

", + "declAttributes": [ + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "on", + "printedName": "on(_:perform:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Client", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Client", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV" + }, + { + "kind": "TypeNominal", + "name": "DelegationDescriptor", + "printedName": "ShopifyCheckoutProtocol.DelegationDescriptor", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "P" + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "R" + } + ], + "usr": "s:23ShopifyCheckoutProtocol20DelegationDescriptorV" + }, + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(P) async -> R", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "R" + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "P" + } + ] + } + ], + "declKind": "Func", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV2on_7performAeA20DelegationDescriptorVyxq_G_q_xYaYbScMYcctAA12EventPayloadRzAA08ResponseK0R_r0_lF", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV2on_7performAeA20DelegationDescriptorVyxq_G_q_xYaYbScMYcctAA12EventPayloadRzAA08ResponseK0R_r0_lF", + "moduleName": "ShopifyCheckoutProtocol", + "genericSig": "", + "declAttributes": [ + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "process", + "printedName": "process(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV7processySSSgSSYaF", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV7processySSSgSSYaF", + "moduleName": "ShopifyCheckoutProtocol", + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O6ClientV", + "moduleName": "ShopifyCheckoutProtocol", + "isFromExtension": true, + "conformances": [ + { + "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", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Function", + "name": "acknowledgeReady", + "printedName": "acknowledgeReady(_:supportedDelegations:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[Swift.String]", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "hasDefaultArg": true, + "usr": "s:Sa" + } + ], + "declKind": "Func", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O16acknowledgeReady_20supportedDelegationsSSSgSS_SaySSGtFZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O16acknowledgeReady_20supportedDelegationsSSSgSS_SaySSGtFZ", + "moduleName": "ShopifyCheckoutProtocol", + "static": true, + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "TypeDecl", + "name": "Event", + "printedName": "Event", + "children": [ + { + "kind": "Var", + "name": "ready", + "printedName": "ready", + "children": [ + { + "kind": "TypeNominal", + "name": "RequestDescriptor", + "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", + "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + } + ], + "declKind": "Var", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5readyAA17RequestDescriptorVvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5readyAA17RequestDescriptorVvpZ", + "moduleName": "ShopifyCheckoutProtocol", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "RequestDescriptor", + "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", + "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + } + ], + "declKind": "Accessor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5readyAA17RequestDescriptorVvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5readyAA17RequestDescriptorVvgZ", + "moduleName": "ShopifyCheckoutProtocol", + "static": true, + "implicit": true, + "declAttributes": [ + "Transparent" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "auth", + "printedName": "auth", + "children": [ + { + "kind": "TypeNominal", + "name": "RequestDescriptor", + "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", + "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + } + ], + "declKind": "Var", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO4authAA17RequestDescriptorVvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO4authAA17RequestDescriptorVvpZ", + "moduleName": "ShopifyCheckoutProtocol", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "RequestDescriptor", + "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", + "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + } + ], + "declKind": "Accessor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO4authAA17RequestDescriptorVvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO4authAA17RequestDescriptorVvgZ", + "moduleName": "ShopifyCheckoutProtocol", + "static": true, + "implicit": true, + "declAttributes": [ + "Transparent" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "error", + "printedName": "error", + "children": [ + { + "kind": "TypeNominal", + "name": "NotificationDescriptor", + "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "children": [ + { + "kind": "TypeNominal", + "name": "ErrorResponse", + "printedName": "ShopifyCheckoutProtocol.ErrorResponse", + "usr": "s:23ShopifyCheckoutProtocol13ErrorResponseV" + } + ], + "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + } + ], + "declKind": "Var", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5errorAA22NotificationDescriptorVyAA13ErrorResponseVGvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5errorAA22NotificationDescriptorVyAA13ErrorResponseVGvpZ", + "moduleName": "ShopifyCheckoutProtocol", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "NotificationDescriptor", + "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "children": [ + { + "kind": "TypeNominal", + "name": "ErrorResponse", + "printedName": "ShopifyCheckoutProtocol.ErrorResponse", + "usr": "s:23ShopifyCheckoutProtocol13ErrorResponseV" + } + ], + "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + } + ], + "declKind": "Accessor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5errorAA22NotificationDescriptorVyAA13ErrorResponseVGvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5errorAA22NotificationDescriptorVyAA13ErrorResponseVGvgZ", + "moduleName": "ShopifyCheckoutProtocol", + "static": true, + "implicit": true, + "declAttributes": [ + "Transparent" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "start", + "printedName": "start", + "children": [ + { + "kind": "TypeNominal", + "name": "NotificationDescriptor", + "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "children": [ + { + "kind": "TypeNominal", + "name": "Checkout", + "printedName": "ShopifyCheckoutProtocol.Checkout", + "usr": "s:23ShopifyCheckoutProtocol0B0V" + } + ], + "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + } + ], + "declKind": "Var", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5startAA22NotificationDescriptorVyAA0B0VGvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5startAA22NotificationDescriptorVyAA0B0VGvpZ", + "moduleName": "ShopifyCheckoutProtocol", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "NotificationDescriptor", + "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "children": [ + { + "kind": "TypeNominal", + "name": "Checkout", + "printedName": "ShopifyCheckoutProtocol.Checkout", + "usr": "s:23ShopifyCheckoutProtocol0B0V" + } + ], + "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + } + ], + "declKind": "Accessor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5startAA22NotificationDescriptorVyAA0B0VGvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5startAA22NotificationDescriptorVyAA0B0VGvgZ", + "moduleName": "ShopifyCheckoutProtocol", + "static": true, + "implicit": true, + "declAttributes": [ + "Transparent" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "complete", + "printedName": "complete", + "children": [ + { + "kind": "TypeNominal", + "name": "NotificationDescriptor", + "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "children": [ + { + "kind": "TypeNominal", + "name": "Checkout", + "printedName": "ShopifyCheckoutProtocol.Checkout", + "usr": "s:23ShopifyCheckoutProtocol0B0V" + } + ], + "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + } + ], + "declKind": "Var", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO8completeAA22NotificationDescriptorVyAA0B0VGvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO8completeAA22NotificationDescriptorVyAA0B0VGvpZ", + "moduleName": "ShopifyCheckoutProtocol", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ { - "kind": "TypeNominal", - "name": "String", - "printedName": "Swift.String", - "usr": "s:SS" + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "NotificationDescriptor", + "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "children": [ + { + "kind": "TypeNominal", + "name": "Checkout", + "printedName": "ShopifyCheckoutProtocol.Checkout", + "usr": "s:23ShopifyCheckoutProtocol0B0V" + } + ], + "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + } + ], + "declKind": "Accessor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO8completeAA22NotificationDescriptorVyAA0B0VGvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO8completeAA22NotificationDescriptorVyAA0B0VGvgZ", + "moduleName": "ShopifyCheckoutProtocol", + "static": true, + "implicit": true, + "declAttributes": [ + "Transparent" + ], + "accessorKind": "get" } - ], - "hasDefaultArg": true, - "usr": "s:Sa" - } - ], - "declKind": "Func", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O16acknowledgeReady_20supportedDelegationsSSSgSS_SaySSGtFZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O16acknowledgeReady_20supportedDelegationsSSSgSS_SaySSGtFZ", - "moduleName": "ShopifyCheckoutProtocol", - "static": true, - "isFromExtension": true, - "funcSelfKind": "NonMutating" - }, - { - "kind": "TypeDecl", - "name": "Event", - "printedName": "Event", - "children": [ + ] + }, { "kind": "Var", - "name": "ready", - "printedName": "ready", + "name": "messagesChange", + "printedName": "messagesChange", "children": [ { "kind": "TypeNominal", - "name": "RequestDescriptor", - "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", - "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + "name": "NotificationDescriptor", + "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "children": [ + { + "kind": "TypeNominal", + "name": "Checkout", + "printedName": "ShopifyCheckoutProtocol.Checkout", + "usr": "s:23ShopifyCheckoutProtocol0B0V" + } + ], + "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5readyAA17RequestDescriptorVvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5readyAA17RequestDescriptorVvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO14messagesChangeAA22NotificationDescriptorVyAA0B0VGvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO14messagesChangeAA22NotificationDescriptorVyAA0B0VGvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1045,14 +1732,22 @@ "children": [ { "kind": "TypeNominal", - "name": "RequestDescriptor", - "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", - "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + "name": "NotificationDescriptor", + "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "children": [ + { + "kind": "TypeNominal", + "name": "Checkout", + "printedName": "ShopifyCheckoutProtocol.Checkout", + "usr": "s:23ShopifyCheckoutProtocol0B0V" + } + ], + "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5readyAA17RequestDescriptorVvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5readyAA17RequestDescriptorVvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO14messagesChangeAA22NotificationDescriptorVyAA0B0VGvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO14messagesChangeAA22NotificationDescriptorVyAA0B0VGvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1065,19 +1760,27 @@ }, { "kind": "Var", - "name": "auth", - "printedName": "auth", + "name": "lineItemsChange", + "printedName": "lineItemsChange", "children": [ { "kind": "TypeNominal", - "name": "RequestDescriptor", - "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", - "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + "name": "NotificationDescriptor", + "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "children": [ + { + "kind": "TypeNominal", + "name": "Checkout", + "printedName": "ShopifyCheckoutProtocol.Checkout", + "usr": "s:23ShopifyCheckoutProtocol0B0V" + } + ], + "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO4authAA17RequestDescriptorVvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO4authAA17RequestDescriptorVvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO15lineItemsChangeAA22NotificationDescriptorVyAA0B0VGvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO15lineItemsChangeAA22NotificationDescriptorVyAA0B0VGvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1094,14 +1797,22 @@ "children": [ { "kind": "TypeNominal", - "name": "RequestDescriptor", - "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", - "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + "name": "NotificationDescriptor", + "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "children": [ + { + "kind": "TypeNominal", + "name": "Checkout", + "printedName": "ShopifyCheckoutProtocol.Checkout", + "usr": "s:23ShopifyCheckoutProtocol0B0V" + } + ], + "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO4authAA17RequestDescriptorVvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO4authAA17RequestDescriptorVvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO15lineItemsChangeAA22NotificationDescriptorVyAA0B0VGvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO15lineItemsChangeAA22NotificationDescriptorVyAA0B0VGvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1114,27 +1825,27 @@ }, { "kind": "Var", - "name": "error", - "printedName": "error", + "name": "buyerChange", + "printedName": "buyerChange", "children": [ { "kind": "TypeNominal", "name": "NotificationDescriptor", - "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", "children": [ { "kind": "TypeNominal", - "name": "ErrorResponse", - "printedName": "ShopifyCheckoutProtocol.ErrorResponse", - "usr": "s:23ShopifyCheckoutProtocol13ErrorResponseV" + "name": "Checkout", + "printedName": "ShopifyCheckoutProtocol.Checkout", + "usr": "s:23ShopifyCheckoutProtocol0B0V" } ], "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5errorAA22NotificationDescriptorVyAA13ErrorResponseVGvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5errorAA22NotificationDescriptorVyAA13ErrorResponseVGvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO11buyerChangeAA22NotificationDescriptorVyAA0B0VGvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO11buyerChangeAA22NotificationDescriptorVyAA0B0VGvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1152,21 +1863,21 @@ { "kind": "TypeNominal", "name": "NotificationDescriptor", - "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", "children": [ { "kind": "TypeNominal", - "name": "ErrorResponse", - "printedName": "ShopifyCheckoutProtocol.ErrorResponse", - "usr": "s:23ShopifyCheckoutProtocol13ErrorResponseV" + "name": "Checkout", + "printedName": "ShopifyCheckoutProtocol.Checkout", + "usr": "s:23ShopifyCheckoutProtocol0B0V" } ], "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5errorAA22NotificationDescriptorVyAA13ErrorResponseVGvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5errorAA22NotificationDescriptorVyAA13ErrorResponseVGvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO11buyerChangeAA22NotificationDescriptorVyAA0B0VGvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO11buyerChangeAA22NotificationDescriptorVyAA0B0VGvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1179,8 +1890,8 @@ }, { "kind": "Var", - "name": "start", - "printedName": "start", + "name": "totalsChange", + "printedName": "totalsChange", "children": [ { "kind": "TypeNominal", @@ -1198,8 +1909,8 @@ } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5startAA22NotificationDescriptorVyAA0B0VGvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5startAA22NotificationDescriptorVyAA0B0VGvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO12totalsChangeAA22NotificationDescriptorVyAA0B0VGvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO12totalsChangeAA22NotificationDescriptorVyAA0B0VGvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1230,8 +1941,8 @@ } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5startAA22NotificationDescriptorVyAA0B0VGvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO5startAA22NotificationDescriptorVyAA0B0VGvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO12totalsChangeAA22NotificationDescriptorVyAA0B0VGvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO12totalsChangeAA22NotificationDescriptorVyAA0B0VGvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1244,8 +1955,8 @@ }, { "kind": "Var", - "name": "complete", - "printedName": "complete", + "name": "paymentChange", + "printedName": "paymentChange", "children": [ { "kind": "TypeNominal", @@ -1263,8 +1974,65 @@ } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO8completeAA22NotificationDescriptorVyAA0B0VGvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO8completeAA22NotificationDescriptorVyAA0B0VGvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO13paymentChangeAA22NotificationDescriptorVyAA0B0VGvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO13paymentChangeAA22NotificationDescriptorVyAA0B0VGvpZ", + "moduleName": "ShopifyCheckoutProtocol", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "NotificationDescriptor", + "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "children": [ + { + "kind": "TypeNominal", + "name": "Checkout", + "printedName": "ShopifyCheckoutProtocol.Checkout", + "usr": "s:23ShopifyCheckoutProtocol0B0V" + } + ], + "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + } + ], + "declKind": "Accessor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO13paymentChangeAA22NotificationDescriptorVyAA0B0VGvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO13paymentChangeAA22NotificationDescriptorVyAA0B0VGvgZ", + "moduleName": "ShopifyCheckoutProtocol", + "static": true, + "implicit": true, + "declAttributes": [ + "Transparent" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "paymentInstrumentsChangeRequest", + "printedName": "paymentInstrumentsChangeRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "RequestDescriptor", + "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", + "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + } + ], + "declKind": "Var", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31paymentInstrumentsChangeRequestAA0I10DescriptorVvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31paymentInstrumentsChangeRequestAA0I10DescriptorVvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1281,22 +2049,14 @@ "children": [ { "kind": "TypeNominal", - "name": "NotificationDescriptor", - "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", - "children": [ - { - "kind": "TypeNominal", - "name": "Checkout", - "printedName": "ShopifyCheckoutProtocol.Checkout", - "usr": "s:23ShopifyCheckoutProtocol0B0V" - } - ], - "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + "name": "RequestDescriptor", + "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", + "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO8completeAA22NotificationDescriptorVyAA0B0VGvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO8completeAA22NotificationDescriptorVyAA0B0VGvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31paymentInstrumentsChangeRequestAA0I10DescriptorVvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31paymentInstrumentsChangeRequestAA0I10DescriptorVvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1309,27 +2069,19 @@ }, { "kind": "Var", - "name": "messagesChange", - "printedName": "messagesChange", + "name": "paymentCredentialRequest", + "printedName": "paymentCredentialRequest", "children": [ { "kind": "TypeNominal", - "name": "NotificationDescriptor", - "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", - "children": [ - { - "kind": "TypeNominal", - "name": "Checkout", - "printedName": "ShopifyCheckoutProtocol.Checkout", - "usr": "s:23ShopifyCheckoutProtocol0B0V" - } - ], - "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + "name": "RequestDescriptor", + "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", + "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO14messagesChangeAA22NotificationDescriptorVyAA0B0VGvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO14messagesChangeAA22NotificationDescriptorVyAA0B0VGvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO24paymentCredentialRequestAA0H10DescriptorVvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO24paymentCredentialRequestAA0H10DescriptorVvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1346,22 +2098,14 @@ "children": [ { "kind": "TypeNominal", - "name": "NotificationDescriptor", - "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", - "children": [ - { - "kind": "TypeNominal", - "name": "Checkout", - "printedName": "ShopifyCheckoutProtocol.Checkout", - "usr": "s:23ShopifyCheckoutProtocol0B0V" - } - ], - "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + "name": "RequestDescriptor", + "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", + "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO14messagesChangeAA22NotificationDescriptorVyAA0B0VGvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO14messagesChangeAA22NotificationDescriptorVyAA0B0VGvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO24paymentCredentialRequestAA0H10DescriptorVvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO24paymentCredentialRequestAA0H10DescriptorVvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1374,27 +2118,19 @@ }, { "kind": "Var", - "name": "lineItemsChange", - "printedName": "lineItemsChange", + "name": "windowOpenRequest", + "printedName": "windowOpenRequest", "children": [ { "kind": "TypeNominal", - "name": "NotificationDescriptor", - "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", - "children": [ - { - "kind": "TypeNominal", - "name": "Checkout", - "printedName": "ShopifyCheckoutProtocol.Checkout", - "usr": "s:23ShopifyCheckoutProtocol0B0V" - } - ], - "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + "name": "RequestDescriptor", + "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", + "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO15lineItemsChangeAA22NotificationDescriptorVyAA0B0VGvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO15lineItemsChangeAA22NotificationDescriptorVyAA0B0VGvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17windowOpenRequestAA0H10DescriptorVvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17windowOpenRequestAA0H10DescriptorVvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1411,22 +2147,14 @@ "children": [ { "kind": "TypeNominal", - "name": "NotificationDescriptor", - "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", - "children": [ - { - "kind": "TypeNominal", - "name": "Checkout", - "printedName": "ShopifyCheckoutProtocol.Checkout", - "usr": "s:23ShopifyCheckoutProtocol0B0V" - } - ], - "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + "name": "RequestDescriptor", + "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", + "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO15lineItemsChangeAA22NotificationDescriptorVyAA0B0VGvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO15lineItemsChangeAA22NotificationDescriptorVyAA0B0VGvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17windowOpenRequestAA0H10DescriptorVvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17windowOpenRequestAA0H10DescriptorVvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1439,8 +2167,8 @@ }, { "kind": "Var", - "name": "buyerChange", - "printedName": "buyerChange", + "name": "fulfillmentChange", + "printedName": "fulfillmentChange", "children": [ { "kind": "TypeNominal", @@ -1458,8 +2186,8 @@ } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO11buyerChangeAA22NotificationDescriptorVyAA0B0VGvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO11buyerChangeAA22NotificationDescriptorVyAA0B0VGvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17fulfillmentChangeAA22NotificationDescriptorVyAA0B0VGvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17fulfillmentChangeAA22NotificationDescriptorVyAA0B0VGvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1490,8 +2218,8 @@ } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO11buyerChangeAA22NotificationDescriptorVyAA0B0VGvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO11buyerChangeAA22NotificationDescriptorVyAA0B0VGvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17fulfillmentChangeAA22NotificationDescriptorVyAA0B0VGvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17fulfillmentChangeAA22NotificationDescriptorVyAA0B0VGvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1504,27 +2232,19 @@ }, { "kind": "Var", - "name": "totalsChange", - "printedName": "totalsChange", + "name": "fulfillmentAddressChangeRequest", + "printedName": "fulfillmentAddressChangeRequest", "children": [ { "kind": "TypeNominal", - "name": "NotificationDescriptor", - "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", - "children": [ - { - "kind": "TypeNominal", - "name": "Checkout", - "printedName": "ShopifyCheckoutProtocol.Checkout", - "usr": "s:23ShopifyCheckoutProtocol0B0V" - } - ], - "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + "name": "RequestDescriptor", + "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", + "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO12totalsChangeAA22NotificationDescriptorVyAA0B0VGvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO12totalsChangeAA22NotificationDescriptorVyAA0B0VGvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31fulfillmentAddressChangeRequestAA0I10DescriptorVvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31fulfillmentAddressChangeRequestAA0I10DescriptorVvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1541,22 +2261,14 @@ "children": [ { "kind": "TypeNominal", - "name": "NotificationDescriptor", - "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", - "children": [ - { - "kind": "TypeNominal", - "name": "Checkout", - "printedName": "ShopifyCheckoutProtocol.Checkout", - "usr": "s:23ShopifyCheckoutProtocol0B0V" - } - ], - "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + "name": "RequestDescriptor", + "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", + "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO12totalsChangeAA22NotificationDescriptorVyAA0B0VGvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO12totalsChangeAA22NotificationDescriptorVyAA0B0VGvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31fulfillmentAddressChangeRequestAA0I10DescriptorVvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31fulfillmentAddressChangeRequestAA0I10DescriptorVvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1569,27 +2281,27 @@ }, { "kind": "Var", - "name": "paymentChange", - "printedName": "paymentChange", + "name": "all", + "printedName": "all", "children": [ { "kind": "TypeNominal", - "name": "NotificationDescriptor", - "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "name": "Array", + "printedName": "[Swift.String]", "children": [ { "kind": "TypeNominal", - "name": "Checkout", - "printedName": "ShopifyCheckoutProtocol.Checkout", - "usr": "s:23ShopifyCheckoutProtocol0B0V" + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" } ], - "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + "usr": "s:Sa" } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO13paymentChangeAA22NotificationDescriptorVyAA0B0VGvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO13paymentChangeAA22NotificationDescriptorVyAA0B0VGvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO3allSaySSGvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO3allSaySSGvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1606,22 +2318,22 @@ "children": [ { "kind": "TypeNominal", - "name": "NotificationDescriptor", - "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", + "name": "Array", + "printedName": "[Swift.String]", "children": [ { "kind": "TypeNominal", - "name": "Checkout", - "printedName": "ShopifyCheckoutProtocol.Checkout", - "usr": "s:23ShopifyCheckoutProtocol0B0V" + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" } ], - "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + "usr": "s:Sa" } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO13paymentChangeAA22NotificationDescriptorVyAA0B0VGvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO13paymentChangeAA22NotificationDescriptorVyAA0B0VGvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO3allSaySSGvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO3allSaySSGvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1631,26 +2343,53 @@ "accessorKind": "get" } ] + } + ], + "declKind": "Enum", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO", + "moduleName": "ShopifyCheckoutProtocol", + "isFromExtension": true, + "isEnumExhaustive": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Delegation", + "printedName": "Delegation", + "children": [ { "kind": "Var", - "name": "paymentInstrumentsChangeRequest", - "printedName": "paymentInstrumentsChangeRequest", + "name": "rawValue", + "printedName": "rawValue", "children": [ { "kind": "TypeNominal", - "name": "RequestDescriptor", - "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", - "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31paymentInstrumentsChangeRequestAA0I10DescriptorVvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31paymentInstrumentsChangeRequestAA0I10DescriptorVvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV8rawValueSSvp", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV8rawValueSSvp", "moduleName": "ShopifyCheckoutProtocol", - "static": true, "declAttributes": [ - "HasInitialValue", "HasStorage" ], "isLet": true, @@ -1663,39 +2402,86 @@ "children": [ { "kind": "TypeNominal", - "name": "RequestDescriptor", - "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", - "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31paymentInstrumentsChangeRequestAA0I10DescriptorVvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31paymentInstrumentsChangeRequestAA0I10DescriptorVvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV8rawValueSSvg", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV8rawValueSSvg", "moduleName": "ShopifyCheckoutProtocol", - "static": true, "implicit": true, "declAttributes": [ "Transparent" ], "accessorKind": "get" } - ] + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV8rawValueAESS_tcfc", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV8rawValueAESS_tcfc", + "moduleName": "ShopifyCheckoutProtocol", + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(stringLiteral:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV13stringLiteralAESS_tcfc", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV13stringLiteralAESS_tcfc", + "moduleName": "ShopifyCheckoutProtocol", + "init_kind": "Designated" }, { "kind": "Var", - "name": "paymentCredentialRequest", - "printedName": "paymentCredentialRequest", + "name": "paymentInstrumentsChange", + "printedName": "paymentInstrumentsChange", "children": [ { "kind": "TypeNominal", - "name": "RequestDescriptor", - "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", - "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO24paymentCredentialRequestAA0H10DescriptorVvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO24paymentCredentialRequestAA0H10DescriptorVvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV24paymentInstrumentsChangeAEvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV24paymentInstrumentsChangeAEvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1712,14 +2498,14 @@ "children": [ { "kind": "TypeNominal", - "name": "RequestDescriptor", - "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", - "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO24paymentCredentialRequestAA0H10DescriptorVvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO24paymentCredentialRequestAA0H10DescriptorVvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV24paymentInstrumentsChangeAEvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV24paymentInstrumentsChangeAEvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1732,19 +2518,19 @@ }, { "kind": "Var", - "name": "windowOpenRequest", - "printedName": "windowOpenRequest", + "name": "paymentCredential", + "printedName": "paymentCredential", "children": [ { "kind": "TypeNominal", - "name": "RequestDescriptor", - "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", - "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17windowOpenRequestAA0H10DescriptorVvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17windowOpenRequestAA0H10DescriptorVvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV17paymentCredentialAEvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV17paymentCredentialAEvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1761,14 +2547,14 @@ "children": [ { "kind": "TypeNominal", - "name": "RequestDescriptor", - "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", - "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17windowOpenRequestAA0H10DescriptorVvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17windowOpenRequestAA0H10DescriptorVvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV17paymentCredentialAEvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV17paymentCredentialAEvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1781,27 +2567,19 @@ }, { "kind": "Var", - "name": "fulfillmentChange", - "printedName": "fulfillmentChange", + "name": "fulfillmentAddressChange", + "printedName": "fulfillmentAddressChange", "children": [ { "kind": "TypeNominal", - "name": "NotificationDescriptor", - "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", - "children": [ - { - "kind": "TypeNominal", - "name": "Checkout", - "printedName": "ShopifyCheckoutProtocol.Checkout", - "usr": "s:23ShopifyCheckoutProtocol0B0V" - } - ], - "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17fulfillmentChangeAA22NotificationDescriptorVyAA0B0VGvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17fulfillmentChangeAA22NotificationDescriptorVyAA0B0VGvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV24fulfillmentAddressChangeAEvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV24fulfillmentAddressChangeAEvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1818,22 +2596,14 @@ "children": [ { "kind": "TypeNominal", - "name": "NotificationDescriptor", - "printedName": "ShopifyCheckoutProtocol.NotificationDescriptor", - "children": [ - { - "kind": "TypeNominal", - "name": "Checkout", - "printedName": "ShopifyCheckoutProtocol.Checkout", - "usr": "s:23ShopifyCheckoutProtocol0B0V" - } - ], - "usr": "s:23ShopifyCheckoutProtocol22NotificationDescriptorV" + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17fulfillmentChangeAA22NotificationDescriptorVyAA0B0VGvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO17fulfillmentChangeAA22NotificationDescriptorVyAA0B0VGvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV24fulfillmentAddressChangeAEvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV24fulfillmentAddressChangeAEvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1846,19 +2616,19 @@ }, { "kind": "Var", - "name": "fulfillmentAddressChangeRequest", - "printedName": "fulfillmentAddressChangeRequest", + "name": "windowOpen", + "printedName": "windowOpen", "children": [ { "kind": "TypeNominal", - "name": "RequestDescriptor", - "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", - "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31fulfillmentAddressChangeRequestAA0I10DescriptorVvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31fulfillmentAddressChangeRequestAA0I10DescriptorVvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV10windowOpenAEvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV10windowOpenAEvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1875,14 +2645,14 @@ "children": [ { "kind": "TypeNominal", - "name": "RequestDescriptor", - "printedName": "ShopifyCheckoutProtocol.RequestDescriptor", - "usr": "s:23ShopifyCheckoutProtocol17RequestDescriptorV" + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31fulfillmentAddressChangeRequestAA0I10DescriptorVvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO31fulfillmentAddressChangeRequestAA0I10DescriptorVvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV10windowOpenAEvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV10windowOpenAEvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1901,21 +2671,21 @@ { "kind": "TypeNominal", "name": "Array", - "printedName": "[Swift.String]", + "printedName": "[ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation]", "children": [ { "kind": "TypeNominal", - "name": "String", - "printedName": "Swift.String", - "usr": "s:SS" + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" } ], "usr": "s:Sa" } ], "declKind": "Var", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO3allSaySSGvpZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO3allSaySSGvpZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV3allSayAEGvpZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV3allSayAEGvpZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "declAttributes": [ @@ -1933,21 +2703,21 @@ { "kind": "TypeNominal", "name": "Array", - "printedName": "[Swift.String]", + "printedName": "[ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation]", "children": [ { "kind": "TypeNominal", - "name": "String", - "printedName": "Swift.String", - "usr": "s:SS" + "name": "Delegation", + "printedName": "ShopifyCheckoutProtocol.EmbeddedCheckoutProtocol.Delegation", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV" } ], "usr": "s:Sa" } ], "declKind": "Accessor", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO3allSaySSGvgZ", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO3allSaySSGvgZ", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV3allSayAEGvgZ", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV3allSayAEGvgZ", "moduleName": "ShopifyCheckoutProtocol", "static": true, "implicit": true, @@ -1957,15 +2727,202 @@ "accessorKind": "get" } ] + }, + { + "kind": "TypeAlias", + "name": "ExtendedGraphemeClusterLiteralType", + "printedName": "ExtendedGraphemeClusterLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "TypeAlias", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV34ExtendedGraphemeClusterLiteralTypea", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV34ExtendedGraphemeClusterLiteralTypea", + "moduleName": "ShopifyCheckoutProtocol", + "implicit": true + }, + { + "kind": "TypeAlias", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "TypeAlias", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV8RawValuea", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV8RawValuea", + "moduleName": "ShopifyCheckoutProtocol", + "implicit": true + }, + { + "kind": "TypeAlias", + "name": "StringLiteralType", + "printedName": "StringLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "TypeAlias", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV17StringLiteralTypea", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV17StringLiteralTypea", + "moduleName": "ShopifyCheckoutProtocol", + "implicit": true + }, + { + "kind": "TypeAlias", + "name": "UnicodeScalarLiteralType", + "printedName": "UnicodeScalarLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "TypeAlias", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV24UnicodeScalarLiteralTypea", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV24UnicodeScalarLiteralTypea", + "moduleName": "ShopifyCheckoutProtocol", + "implicit": true } ], - "declKind": "Enum", - "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO", - "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O5EventO", + "declKind": "Struct", + "usr": "s:23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV", + "mangledName": "$s23ShopifyCheckoutProtocol08EmbeddedbC0O10DelegationV", "moduleName": "ShopifyCheckoutProtocol", "isFromExtension": true, - "isEnumExhaustive": true, "conformances": [ + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByStringLiteral", + "printedName": "ExpressibleByStringLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "StringLiteralType", + "printedName": "StringLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:s26ExpressibleByStringLiteralP", + "mangledName": "$ss26ExpressibleByStringLiteralP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByExtendedGraphemeClusterLiteral", + "printedName": "ExpressibleByExtendedGraphemeClusterLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "ExtendedGraphemeClusterLiteralType", + "printedName": "ExtendedGraphemeClusterLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:s43ExpressibleByExtendedGraphemeClusterLiteralP", + "mangledName": "$ss43ExpressibleByExtendedGraphemeClusterLiteralP" + }, + { + "kind": "Conformance", + "name": "ExpressibleByUnicodeScalarLiteral", + "printedName": "ExpressibleByUnicodeScalarLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "UnicodeScalarLiteralType", + "printedName": "UnicodeScalarLiteralType", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:s33ExpressibleByUnicodeScalarLiteralP", + "mangledName": "$ss33ExpressibleByUnicodeScalarLiteralP" + }, { "kind": "Conformance", "name": "Copyable", diff --git a/protocol/languages/swift/Sources/ShopifyCheckoutProtocol/EmbeddedCheckoutProtocol.swift b/protocol/languages/swift/Sources/ShopifyCheckoutProtocol/EmbeddedCheckoutProtocol.swift index 8104a9d95..32373190d 100644 --- a/protocol/languages/swift/Sources/ShopifyCheckoutProtocol/EmbeddedCheckoutProtocol.swift +++ b/protocol/languages/swift/Sources/ShopifyCheckoutProtocol/EmbeddedCheckoutProtocol.swift @@ -7,22 +7,51 @@ public enum EmbeddedCheckoutProtocol { package static let parseErrorCode = -32700 package static let parseErrorMessage = "Parse error" + /// Options controlling the query parameters appended to a checkout URL when + /// initiating the Embedded Checkout Protocol handshake. + public struct Options: Sendable { + public var delegations: [Delegation] + public var colorScheme: String? + public var auth: String? + + public init( + delegations: [Delegation] = [], + colorScheme: String? = nil, + auth: String? = nil + ) { + self.delegations = delegations + self.colorScheme = colorScheme + self.auth = auth + } + } + /// Returns the given checkout URL with the query parameters required to /// initiate the Embedded Checkout Protocol handshake (`ec_version`, - /// `ec_delegate`). - public static func url( - for url: URL, - delegations: [String] = [] - ) -> URL { + /// `ec_delegate`, `ec_auth`, `ec_color_scheme`). + public static func url(for url: URL, options: Options = .init()) -> URL { guard var components = URLComponents(url: url, resolvingAgainstBaseURL: false) else { return url } var queryItems = components.queryItems ?? [] - queryItems.removeAll { $0.name == "ec_version" || $0.name == "ec_delegate" } + queryItems.removeAll { + $0.name == "ec_version" + || $0.name == "ec_delegate" + || $0.name == "ec_auth" + || $0.name == "ec_color_scheme" + } queryItems.append(URLQueryItem(name: "ec_version", value: specVersion)) - if !delegations.isEmpty { - queryItems.append(URLQueryItem(name: "ec_delegate", value: delegations.joined(separator: ","))) + + if !options.delegations.isEmpty { + queryItems.append(URLQueryItem(name: "ec_delegate", value: options.delegations.map(\.rawValue).joined(separator: ","))) + } + + if let auth = options.auth { + queryItems.append(URLQueryItem(name: "ec_auth", value: auth)) + } + + if let colorScheme = options.colorScheme { + queryItems.append(URLQueryItem(name: "ec_color_scheme", value: colorScheme)) } components.queryItems = queryItems diff --git a/protocol/languages/swift/Sources/ShopifyCheckoutProtocol/Generated/EmbeddedCheckoutProtocol+Event.swift b/protocol/languages/swift/Sources/ShopifyCheckoutProtocol/Generated/EmbeddedCheckoutProtocol+Event.swift index 08bf426eb..87c3158e5 100644 --- a/protocol/languages/swift/Sources/ShopifyCheckoutProtocol/Generated/EmbeddedCheckoutProtocol+Event.swift +++ b/protocol/languages/swift/Sources/ShopifyCheckoutProtocol/Generated/EmbeddedCheckoutProtocol+Event.swift @@ -43,3 +43,32 @@ extension EmbeddedCheckoutProtocol { ] } } + +extension EmbeddedCheckoutProtocol { + /// Delegations the host can request from the business, as declared by the + /// service in `x-delegations`. String-backed and open: a host may advertise + /// a delegation this build predates, so unknown values round-trip intact. + public struct Delegation: RawRepresentable, Hashable, Sendable, ExpressibleByStringLiteral { + public let rawValue: String + + public init(rawValue: String) { + self.rawValue = rawValue + } + + public init(stringLiteral value: String) { + self.rawValue = value + } + + public static let paymentInstrumentsChange = Delegation(rawValue: "payment.instruments_change") + public static let paymentCredential = Delegation(rawValue: "payment.credential") + public static let fulfillmentAddressChange = Delegation(rawValue: "fulfillment.address_change") + public static let windowOpen = Delegation(rawValue: "window.open") + + public static let all: [Delegation] = [ + .paymentInstrumentsChange, + .paymentCredential, + .fulfillmentAddressChange, + .windowOpen, + ] + } +} diff --git a/protocol/languages/swift/Tests/ShopifyCheckoutProtocolTests/EmbeddedCheckoutProtocolURLTests.swift b/protocol/languages/swift/Tests/ShopifyCheckoutProtocolTests/EmbeddedCheckoutProtocolURLTests.swift index c0cb99769..73babcfd7 100644 --- a/protocol/languages/swift/Tests/ShopifyCheckoutProtocolTests/EmbeddedCheckoutProtocolURLTests.swift +++ b/protocol/languages/swift/Tests/ShopifyCheckoutProtocolTests/EmbeddedCheckoutProtocolURLTests.swift @@ -21,21 +21,21 @@ struct CheckoutProtocolURLTests { } @Test func appendsSuppliedDelegate() { - let items = queryItems(EmbeddedCheckoutProtocol.url(for: baseURL, delegations: ["window.open"])) + let items = queryItems(EmbeddedCheckoutProtocol.url(for: baseURL, options: .init(delegations: ["window.open"]))) #expect(items.contains(URLQueryItem(name: "ec_delegate", value: "window.open"))) } @Test func joinsMultipleDelegationsWithComma() { let result = EmbeddedCheckoutProtocol.url( for: baseURL, - delegations: ["window.open", "payment.credential"] + options: .init(delegations: ["window.open", "payment.credential"]) ) let items = queryItems(result) #expect(items.contains(URLQueryItem(name: "ec_delegate", value: "window.open,payment.credential"))) } @Test func omitsDelegateWhenEmpty() { - let items = queryItems(EmbeddedCheckoutProtocol.url(for: baseURL, delegations: [])) + let items = queryItems(EmbeddedCheckoutProtocol.url(for: baseURL, options: .init(delegations: []))) #expect(!items.contains(where: { $0.name == "ec_delegate" })) } @@ -49,15 +49,15 @@ struct CheckoutProtocolURLTests { @Test func replacesCallerSuppliedProtocolQueryItems() throws { let url = try #require(URL(string: "https://shop.com/cart/c/abc?ec_version=stale&ec_delegate=custom")) - let items = queryItems(EmbeddedCheckoutProtocol.url(for: url, delegations: ["window.open"])) + let items = queryItems(EmbeddedCheckoutProtocol.url(for: url, options: .init(delegations: ["window.open"]))) #expect(items.filter { $0.name == "ec_version" }.map(\.value) == [EmbeddedCheckoutProtocol.specVersion]) #expect(items.filter { $0.name == "ec_delegate" }.map(\.value) == ["window.open"]) } @Test func isIdempotentOnRecall() { - let once = EmbeddedCheckoutProtocol.url(for: baseURL, delegations: ["window.open"]) - let twice = EmbeddedCheckoutProtocol.url(for: once, delegations: ["window.open"]) + let once = EmbeddedCheckoutProtocol.url(for: baseURL, options: .init(delegations: ["window.open"])) + let twice = EmbeddedCheckoutProtocol.url(for: once, options: .init(delegations: ["window.open"])) let items = queryItems(twice) #expect(items.filter { $0.name == "ec_version" }.count == 1) @@ -66,9 +66,46 @@ struct CheckoutProtocolURLTests { @Test func removesExistingDelegationWhenDelegationsAreEmpty() throws { let url = try #require(URL(string: "https://shop.com/cart/c/abc?ec_delegate=custom")) - let items = queryItems(EmbeddedCheckoutProtocol.url(for: url, delegations: [])) + let items = queryItems(EmbeddedCheckoutProtocol.url(for: url, options: .init(delegations: []))) #expect(items.contains(URLQueryItem(name: "ec_version", value: EmbeddedCheckoutProtocol.specVersion))) #expect(!items.contains { $0.name == "ec_delegate" }) } + + @Test func omitsAuthByDefault() { + let items = queryItems(EmbeddedCheckoutProtocol.url(for: baseURL)) + #expect(!items.contains(where: { $0.name == "ec_auth" })) + } + + @Test func appendsSuppliedAuth() { + let items = queryItems(EmbeddedCheckoutProtocol.url(for: baseURL, options: .init(auth: "token"))) + #expect(items.contains(URLQueryItem(name: "ec_auth", value: "token"))) + } + + @Test func omitsColorSchemeByDefault() { + let items = queryItems(EmbeddedCheckoutProtocol.url(for: baseURL)) + #expect(!items.contains(where: { $0.name == "ec_color_scheme" })) + } + + @Test func appendsSuppliedColorScheme() { + let items = queryItems(EmbeddedCheckoutProtocol.url(for: baseURL, options: .init(colorScheme: "dark"))) + #expect(items.contains(URLQueryItem(name: "ec_color_scheme", value: "dark"))) + } + + @Test func replacesCallerSuppliedAuthAndColorScheme() throws { + let url = try #require(URL(string: "https://shop.com/cart/c/abc?ec_auth=stale&ec_color_scheme=light")) + let items = queryItems(EmbeddedCheckoutProtocol.url(for: url, options: .init(colorScheme: "dark", auth: "token"))) + + #expect(items.filter { $0.name == "ec_auth" }.map(\.value) == ["token"]) + #expect(items.filter { $0.name == "ec_color_scheme" }.map(\.value) == ["dark"]) + } + + @Test func isIdempotentForAuthAndColorSchemeOnRecall() { + let once = EmbeddedCheckoutProtocol.url(for: baseURL, options: .init(colorScheme: "dark", auth: "token")) + let twice = EmbeddedCheckoutProtocol.url(for: once, options: .init(colorScheme: "dark", auth: "token")) + let items = queryItems(twice) + + #expect(items.filter { $0.name == "ec_auth" }.count == 1) + #expect(items.filter { $0.name == "ec_color_scheme" }.count == 1) + } } diff --git a/protocol/scripts/generate_swift_catalog.mjs b/protocol/scripts/generate_swift_catalog.mjs index 45566c88f..3f3ccf6a4 100644 --- a/protocol/scripts/generate_swift_catalog.mjs +++ b/protocol/scripts/generate_swift_catalog.mjs @@ -43,6 +43,16 @@ function methodNameToIdentifier(methodName) { .join(''); } +function delegationToIdentifier(delegation) { + return delegation + .split(/[._]/g) + .filter(Boolean) + .map((part, index) => + index === 0 ? part : part.charAt(0).toUpperCase() + part.slice(1), + ) + .join(''); +} + function resolveMethod(method, openRpcDir) { if (typeof method.$ref !== 'string') { return method; @@ -113,6 +123,19 @@ for (const entry of entries) { seen.add(entry.identifier); } +const delegations = (openRpc['x-delegations'] ?? []).map(delegation => ({ + identifier: delegationToIdentifier(delegation), + value: delegation, +})); + +const seenDelegations = new Set(); +for (const delegation of delegations) { + if (seenDelegations.has(delegation.identifier)) { + throw new Error(`Duplicate delegation identifier: ${delegation.identifier}`); + } + seenDelegations.add(delegation.identifier); +} + const payloadTypes = Array.from( new Set(entries.filter(entry => !entry.isRequest).map(entry => entry.payload)), ).sort(); @@ -143,6 +166,34 @@ ${entries.map(entry => ` ${entry.identifier}.method,`).join('\n')} ] } } + +extension EmbeddedCheckoutProtocol { + /// Delegations the host can request from the business, as declared by the + /// service in \`x-delegations\`. String-backed and open: a host may advertise + /// a delegation this build predates, so unknown values round-trip intact. + public struct Delegation: RawRepresentable, Hashable, Sendable, ExpressibleByStringLiteral { + public let rawValue: String + + public init(rawValue: String) { + self.rawValue = rawValue + } + + public init(stringLiteral value: String) { + self.rawValue = value + } + +${delegations + .map( + delegation => + ` public static let ${delegation.identifier} = Delegation(rawValue: "${delegation.value}")`, + ) + .join('\n')} + + public static let all: [Delegation] = [ +${delegations.map(delegation => ` .${delegation.identifier},`).join('\n')} + ] + } +} `; fs.mkdirSync(path.dirname(outputPath), {recursive: true});