diff --git a/Kickstarter.xcodeproj/project.pbxproj b/Kickstarter.xcodeproj/project.pbxproj index 0c1e95461c..0a3dab6078 100644 --- a/Kickstarter.xcodeproj/project.pbxproj +++ b/Kickstarter.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 60; objects = { /* Begin PBXAggregateTarget section */ @@ -1705,9 +1705,7 @@ E1A310292D2845E00062646C /* PledgeOverTimeUseCaseTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1A310272D2845CB0062646C /* PledgeOverTimeUseCaseTests.swift */; }; E1AA8ABF2AEABBB100AC98BF /* Signal+Combine.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1EA34EE2AE1B28400942A04 /* Signal+Combine.swift */; }; E1B214712BFD184500109961 /* KingfisherWebP in Frameworks */ = {isa = PBXBuildFile; productRef = E1B214702BFD184500109961 /* KingfisherWebP */; }; - E1B33F522E538163008903BA /* GraphAPI in Frameworks */ = {isa = PBXBuildFile; productRef = E1B33F512E538163008903BA /* GraphAPI */; }; E1B33F542E538166008903BA /* Apollo in Frameworks */ = {isa = PBXBuildFile; productRef = E1B33F532E538166008903BA /* Apollo */; }; - E1B33F562E53817D008903BA /* GraphAPITestMocks in Frameworks */ = {isa = PBXBuildFile; productRef = E1B33F552E53817D008903BA /* GraphAPITestMocks */; }; E1B813C72BC851CB00DF33CF /* FetchMyBackedProjectsQueryRequestForTests.graphql_test in Resources */ = {isa = PBXBuildFile; fileRef = E1B813C62BC851CB00DF33CF /* FetchMyBackedProjectsQueryRequestForTests.graphql_test */; }; E1B813C92BC851E100DF33CF /* FetchMyBackedProjectsQuery.json in Resources */ = {isa = PBXBuildFile; fileRef = E1B813C82BC851E100DF33CF /* FetchMyBackedProjectsQuery.json */; }; E1B8E3462E20263C00299046 /* GraphQLNullable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1B8E3452E20263C00299046 /* GraphQLNullable.swift */; }; @@ -3424,7 +3422,6 @@ E15803012D8363020000BAB3 /* SearchQuery_FiveResults.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = SearchQuery_FiveResults.json; sourceTree = ""; }; E15803032D8363210000BAB3 /* SearchQuery_AnotherFiveResults.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = SearchQuery_AnotherFiveResults.json; sourceTree = ""; }; E15803052D83632F0000BAB3 /* SearchQuery_EmptyResults.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = SearchQuery_EmptyResults.json; sourceTree = ""; }; - E15E22CD2E54B91B00EE6BB0 /* KDS */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = KDS; sourceTree = ""; }; E16794272B7EAA5200064063 /* OAuthTokenExchange.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OAuthTokenExchange.swift; sourceTree = ""; }; E16794292B85136900064063 /* OAuthTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OAuthTests.swift; sourceTree = ""; }; E16D0B0B2ECCD3A3004F28CC /* ShippingLocationsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShippingLocationsView.swift; sourceTree = ""; }; @@ -3543,7 +3540,6 @@ E1A310212D270C610062646C /* BuildPaymentPlanQueryTestData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BuildPaymentPlanQueryTestData.swift; sourceTree = ""; }; E1A310252D2840680062646C /* PledgeOverTimeUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PledgeOverTimeUseCase.swift; sourceTree = ""; }; E1A310272D2845CB0062646C /* PledgeOverTimeUseCaseTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PledgeOverTimeUseCaseTests.swift; sourceTree = ""; }; - E1B33F502E538157008903BA /* GraphAPI */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = GraphAPI; sourceTree = ""; }; E1B813C62BC851CB00DF33CF /* FetchMyBackedProjectsQueryRequestForTests.graphql_test */ = {isa = PBXFileReference; lastKnownFileType = text; path = FetchMyBackedProjectsQueryRequestForTests.graphql_test; sourceTree = ""; }; E1B813C82BC851E100DF33CF /* FetchMyBackedProjectsQuery.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = FetchMyBackedProjectsQuery.json; sourceTree = ""; }; E1B8E3452E20263C00299046 /* GraphQLNullable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GraphQLNullable.swift; sourceTree = ""; }; @@ -3581,7 +3577,6 @@ 3976B3702E5CBDC300D2DD50 /* SegmentBrazeUI in Frameworks */, 06634FC72807A4EB00950F60 /* Prelude_UIKit in Frameworks */, 600A0EEB2DD23BAA00954829 /* Lottie in Frameworks */, - E147F2902E5F7A6A00825650 /* KDS in Frameworks */, 6078106F2A04191C0050D4F7 /* FirebaseAnalytics in Frameworks */, 60DA510F28C7E04B002E2DF1 /* Kingfisher in Frameworks */, 6078106B2A0419130050D4F7 /* FirebaseCrashlytics in Frameworks */, @@ -3637,7 +3632,6 @@ buildActionMask = 2147483647; files = ( E1B33F542E538166008903BA /* Apollo in Frameworks */, - E1B33F522E538163008903BA /* GraphAPI in Frameworks */, 06634FC52807A4EB00950F60 /* Prelude in Frameworks */, 1998BCB228F60ED400D04077 /* ReactiveExtensions in Frameworks */, 60DA511428C96A65002E2DF1 /* SwiftSoup in Frameworks */, @@ -3665,7 +3659,6 @@ files = ( E18A67532E28241F00BA0376 /* KsApi.framework in Frameworks */, E18A674E2E28236D00BA0376 /* ApolloTestSupport in Frameworks */, - E1B33F562E53817D008903BA /* GraphAPITestMocks in Frameworks */, 33AA26D32E3ACDBC002DBD60 /* ReactiveExtensions-TestHelpers in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6735,8 +6728,6 @@ A7D1F9461C850B7C000D41D5 /* Kickstarter-iOS */, D01587511EEB2DE4006E7684 /* KsApi */, A7C725771C85D36D005A016B /* Library */, - E15E22CD2E54B91B00EE6BB0 /* KDS */, - E1B33F502E538157008903BA /* GraphAPI */, E190EB6F2E29944E006A6DB6 /* graphql */, A7E06C7A1C5A6EB300EBDCC2 /* Products */, ); @@ -7938,6 +7929,7 @@ name = "Kickstarter-Framework-iOS"; packageProductDependencies = ( E1F1DB3E2B7BC09C004EA80B /* Prelude */, + AAF7A9622EE8A635005EFF82 /* ServerDrivenUI */, ); productName = "Kickstarter-iOS-Framework"; productReference = A7C7959E1C873A870081977F /* Kickstarter_Framework.framework */; @@ -8012,8 +8004,8 @@ 06634FC42807A4EB00950F60 /* Prelude */, 60DA511328C96A65002E2DF1 /* SwiftSoup */, 1998BCB128F60ED400D04077 /* ReactiveExtensions */, - E1B33F512E538163008903BA /* GraphAPI */, E1B33F532E538166008903BA /* Apollo */, + AAF7A9662EE8A8A6005EFF82 /* GraphAPI */, ); productName = KsApi; productReference = D01587501EEB2DE4006E7684 /* KsApi.framework */; @@ -8036,7 +8028,7 @@ packageProductDependencies = ( E18A674D2E28236D00BA0376 /* ApolloTestSupport */, 33AA26D22E3ACDBC002DBD60 /* ReactiveExtensions-TestHelpers */, - E1B33F552E53817D008903BA /* GraphAPITestMocks */, + AAF7A9682EE8A8AE005EFF82 /* GraphAPITestMocks */, ); productName = KsApiTests; productReference = D01587581EEB2DE4006E7684 /* KsApiTests.xctest */; @@ -8171,6 +8163,9 @@ E1B2146F2BFD184500109961 /* XCRemoteSwiftPackageReference "KingfisherWebP" */, 600A0EE92DD23BAA00954829 /* XCRemoteSwiftPackageReference "lottie-ios" */, 3976B3682E57AEC200D2DD50 /* XCRemoteSwiftPackageReference "braze-segment-swift" */, + AAF7A9612EE8A635005EFF82 /* XCLocalSwiftPackageReference "ServerDrivenUI" */, + AAF7A9642EE8A817005EFF82 /* XCLocalSwiftPackageReference "GraphAPI" */, + AAF7A9652EE8A829005EFF82 /* XCLocalSwiftPackageReference "KDS" */, ); productRefGroup = A7E06C7A1C5A6EB300EBDCC2 /* Products */; projectDirPath = ""; @@ -11675,6 +11670,21 @@ }; /* End XCConfigurationList section */ +/* Begin XCLocalSwiftPackageReference section */ + AAF7A9612EE8A635005EFF82 /* XCLocalSwiftPackageReference "ServerDrivenUI" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ServerDrivenUI; + }; + AAF7A9642EE8A817005EFF82 /* XCLocalSwiftPackageReference "GraphAPI" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = GraphAPI; + }; + AAF7A9652EE8A829005EFF82 /* XCLocalSwiftPackageReference "KDS" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = KDS; + }; +/* End XCLocalSwiftPackageReference section */ + /* Begin XCRemoteSwiftPackageReference section */ 06634FBC2807A4C300950F60 /* XCRemoteSwiftPackageReference "apollo-ios" */ = { isa = XCRemoteSwiftPackageReference; @@ -11898,6 +11908,20 @@ package = 7049568E299D53ED00B273DF /* XCRemoteSwiftPackageReference "swift-snapshot-testing" */; productName = SnapshotTesting; }; + AAF7A9622EE8A635005EFF82 /* ServerDrivenUI */ = { + isa = XCSwiftPackageProductDependency; + productName = ServerDrivenUI; + }; + AAF7A9662EE8A8A6005EFF82 /* GraphAPI */ = { + isa = XCSwiftPackageProductDependency; + package = AAF7A9642EE8A817005EFF82 /* XCLocalSwiftPackageReference "GraphAPI" */; + productName = GraphAPI; + }; + AAF7A9682EE8A8AE005EFF82 /* GraphAPITestMocks */ = { + isa = XCSwiftPackageProductDependency; + package = AAF7A9642EE8A817005EFF82 /* XCLocalSwiftPackageReference "GraphAPI" */; + productName = GraphAPITestMocks; + }; E113BD902B7D615000D3A809 /* Prelude */ = { isa = XCSwiftPackageProductDependency; package = 06634FC32807A4EB00950F60 /* XCRemoteSwiftPackageReference "Kickstarter-Prelude" */; @@ -11917,19 +11941,11 @@ package = E1B2146F2BFD184500109961 /* XCRemoteSwiftPackageReference "KingfisherWebP" */; productName = KingfisherWebP; }; - E1B33F512E538163008903BA /* GraphAPI */ = { - isa = XCSwiftPackageProductDependency; - productName = GraphAPI; - }; E1B33F532E538166008903BA /* Apollo */ = { isa = XCSwiftPackageProductDependency; package = 06634FBC2807A4C300950F60 /* XCRemoteSwiftPackageReference "apollo-ios" */; productName = Apollo; }; - E1B33F552E53817D008903BA /* GraphAPITestMocks */ = { - isa = XCSwiftPackageProductDependency; - productName = GraphAPITestMocks; - }; E1F1DB3E2B7BC09C004EA80B /* Prelude */ = { isa = XCSwiftPackageProductDependency; package = 06634FC32807A4EB00950F60 /* XCRemoteSwiftPackageReference "Kickstarter-Prelude" */; diff --git a/ServerDrivenUI/.gitignore b/ServerDrivenUI/.gitignore new file mode 100644 index 0000000000..0023a53406 --- /dev/null +++ b/ServerDrivenUI/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/ServerDrivenUI/Package.swift b/ServerDrivenUI/Package.swift new file mode 100644 index 0000000000..b234f77563 --- /dev/null +++ b/ServerDrivenUI/Package.swift @@ -0,0 +1,35 @@ +// swift-tools-version: 6.1 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "ServerDrivenUI", + platforms: [ + .iOS(.v18) + ], + products: [ + // Products define the executables and libraries a package produces, making them visible to other packages. + .library( + name: "ServerDrivenUI", + targets: ["ServerDrivenUI"], + ) + ], + dependencies: [ + .package(name: "KDS", path: "../KDS"), + .package(name: "GraphAPI", path: "../GraphAPI") + ], + targets: [ + .target( + name: "ServerDrivenUI", + dependencies: [ + .byName(name: "KDS"), + .byName(name: "GraphAPI") + ] + ), + .testTarget( + name: "ServerDrivenUITests", + dependencies: ["ServerDrivenUI"] + ) + ] +) diff --git a/ServerDrivenUI/Sources/ServerDrivenUI/ServerDrivenUI.swift b/ServerDrivenUI/Sources/ServerDrivenUI/ServerDrivenUI.swift new file mode 100644 index 0000000000..3cda33f94e --- /dev/null +++ b/ServerDrivenUI/Sources/ServerDrivenUI/ServerDrivenUI.swift @@ -0,0 +1,5 @@ +public class SDUI { + public class func name() -> String { + return "ServerDrivenUI" + } +} diff --git a/ServerDrivenUI/Tests/ServerDrivenUITests/ServerDrivenUITests.swift b/ServerDrivenUI/Tests/ServerDrivenUITests/ServerDrivenUITests.swift new file mode 100644 index 0000000000..e2b40662b7 --- /dev/null +++ b/ServerDrivenUI/Tests/ServerDrivenUITests/ServerDrivenUITests.swift @@ -0,0 +1,6 @@ +@testable import ServerDrivenUI +import Testing + +@Test func example() async throws { + #expect(42 == 42) +}