From 5d89ff7c7927ab42307922b1ddc4adbb13cade4b Mon Sep 17 00:00:00 2001 From: portellaa Date: Thu, 24 Oct 2019 18:51:49 +0100 Subject: [PATCH 1/5] =?UTF-8?q?Improve=20Package.swift=20with=20modules=20?= =?UTF-8?q?=F0=9F=A6=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Package.swift | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index b88b58e2..fd375136 100644 --- a/Package.swift +++ b/Package.swift @@ -1,5 +1,58 @@ +// swift-tools-version:5.1 + import PackageDescription let package = Package( - name: "Alicerce" + name: "Alicerce", + platforms: [ + .iOS(.v10) + ], + products: [ + .library( + name: "Alicerce", + targets: [ + "Analytics", + "Core", + "DeepLinking", + "Extensions", + "Logging", + "Network", + "Observers", + "PerformanceMetrics", + "Persistence", + "Resource", + "Stores", + "View"] + ), + .library(name: "AlicerceAnalytics", targets: ["Analytics"]), + .library(name: "AlicerceCore", targets: ["Core"]), + .library(name: "AlicerceDeepLinking", targets: ["DeepLinking"]), + .library(name: "AlicerceExtensions", targets: ["Extensions"]), + .library(name: "AlicerceLogging", targets: ["Logging"]), + .library(name: "AlicerceNetwork", targets: ["Network"]), + .library(name: "AlicerceObservers", targets: ["Observers"]), + .library(name: "AlicercePerformanceMetrics", targets: ["PerformanceMetrics"]), + .library(name: "AlicercePersistence", targets: ["Persistence"]), + .library(name: "AlicerceResource", targets: ["Resource"]), + .library(name: "AlicerceStores", targets: ["Stores"]), + .library(name: "AlicerceView", targets: ["View"]), + ], + targets: [ + .target(name: "Analytics", dependencies: ["Core"]), + .target(name: "Core", dependencies: ["Extensions"], path: "Sources", sources: ["Shared", "Utils"]), + .target(name: "DeepLinking", dependencies: ["Core"]), + .target(name: "Extensions"), + .target(name: "Logging", dependencies: ["Core"]), + .target(name: "Network", dependencies: ["Resource"]), + .target(name: "Observers", dependencies: ["Core"]), + .target(name: "PerformanceMetrics", dependencies: ["Core"]), + .target(name: "Persistence", dependencies: ["Core", "Logging", "PerformanceMetrics"]), + .target(name: "Resource", dependencies: ["Core"]), + .target( + name: "Stores", + dependencies: ["Core", "Logging", "Network", "PerformanceMetrics", "Persistence", "Resource"] + ), + .target(name: "View", dependencies: ["Core"]) + ], + swiftLanguageVersions: [ .version("5") ] ) From 8251aeb51e85c96b25bdf28f8e4e4f5d79b25901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Pacheco=20Neves?= Date: Mon, 30 Dec 2019 23:50:25 +0000 Subject: [PATCH 2/5] Remove QuartzCore Extension sub-sub-spec --- Alicerce.podspec | 5 ----- Alicerce.xcodeproj/project.pbxproj | 14 +++----------- .../{QuartzCore => UIKit}/CAGradientLayer.swift | 2 +- .../Extensions/{QuartzCore => UIKit}/CALayer.swift | 2 +- 4 files changed, 5 insertions(+), 18 deletions(-) rename Sources/Extensions/{QuartzCore => UIKit}/CAGradientLayer.swift (97%) rename Sources/Extensions/{QuartzCore => UIKit}/CALayer.swift (91%) diff --git a/Alicerce.podspec b/Alicerce.podspec index 562f6fc9..0fb77a17 100644 --- a/Alicerce.podspec +++ b/Alicerce.podspec @@ -48,11 +48,6 @@ Pod::Spec.new do |s| sss.frameworks = 'Foundation' end - ss.subspec 'QuartzCore' do |sss| - sss.source_files = 'Sources/Extensions/QuartzCore/*.{swift,h,m}' - sss.frameworks = 'QuartzCore' - end - ss.subspec 'UIKit' do |sss| sss.source_files = 'Sources/Extensions/UIKit/*.{swift,h,m}' sss.frameworks = 'UIKit' diff --git a/Alicerce.xcodeproj/project.pbxproj b/Alicerce.xcodeproj/project.pbxproj index 1711b51f..7cf26f31 100644 --- a/Alicerce.xcodeproj/project.pbxproj +++ b/Alicerce.xcodeproj/project.pbxproj @@ -787,15 +787,6 @@ path = PerformanceMetrics; sourceTree = ""; }; - 0A266F0B1ED33B29009CD0D7 /* QuartzCore */ = { - isa = PBXGroup; - children = ( - 0A266F0E1ED33B65009CD0D7 /* CAGradientLayer.swift */, - 0A266F0C1ED33B34009CD0D7 /* CALayer.swift */, - ); - path = QuartzCore; - sourceTree = ""; - }; 0A266F101ED33CCE009CD0D7 /* QuartzCore */ = { isa = PBXGroup; children = ( @@ -850,7 +841,6 @@ isa = PBXGroup; children = ( 0A29B930227DCD7A00ECC967 /* Foundation */, - 0A266F0B1ED33B29009CD0D7 /* QuartzCore */, 0A3C2CB91EA7E18500EFB7D4 /* UIKit */, ); path = Extensions; @@ -904,9 +894,11 @@ 0A3C2CB91EA7E18500EFB7D4 /* UIKit */ = { isa = PBXGroup; children = ( - 97FACBA1203612F6008D0AF0 /* UIView.swift */, + 0A266F0E1ED33B65009CD0D7 /* CAGradientLayer.swift */, + 0A266F0C1ED33B34009CD0D7 /* CALayer.swift */, 0A3C2CBE1EA7E18500EFB7D4 /* UIColor.swift */, 1BBEB6081F333E5600D06526 /* UIImage.swift */, + 97FACBA1203612F6008D0AF0 /* UIView.swift */, 0A3C2CBF1EA7E18500EFB7D4 /* UIViewController.swift */, ); path = UIKit; diff --git a/Sources/Extensions/QuartzCore/CAGradientLayer.swift b/Sources/Extensions/UIKit/CAGradientLayer.swift similarity index 97% rename from Sources/Extensions/QuartzCore/CAGradientLayer.swift rename to Sources/Extensions/UIKit/CAGradientLayer.swift index f57af44e..e6bb9868 100644 --- a/Sources/Extensions/QuartzCore/CAGradientLayer.swift +++ b/Sources/Extensions/UIKit/CAGradientLayer.swift @@ -1,4 +1,4 @@ -import QuartzCore +import UIKit extension CAGradientLayer { diff --git a/Sources/Extensions/QuartzCore/CALayer.swift b/Sources/Extensions/UIKit/CALayer.swift similarity index 91% rename from Sources/Extensions/QuartzCore/CALayer.swift rename to Sources/Extensions/UIKit/CALayer.swift index 797b2b2e..c18c85f1 100644 --- a/Sources/Extensions/QuartzCore/CALayer.swift +++ b/Sources/Extensions/UIKit/CALayer.swift @@ -1,4 +1,4 @@ -import QuartzCore +import UIKit extension CALayer { From e22749aa3207c2dc1685ee8a06d82b2fbf94d277 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Pacheco=20Neves?= Date: Mon, 5 Apr 2021 17:29:56 +0100 Subject: [PATCH 3/5] Fix Package.swift and imports, add Package to workspace ## Changes - Fix `Package.swift` by prefixing target names with `Alicerce` since that's the name of the generated frameworks (to use in imports). - Add Alicerce package to the workspace, as well as targets for each SPM product (libraries). - Add necessary imports so that sub-modules are correctly imported if building sub-libraries. --- .../xcshareddata/xcschemes/Alicerce.xcscheme | 67 +++++++++++++ .../xcschemes/AlicerceAnalytics.xcscheme | 67 +++++++++++++ .../xcschemes/AlicerceAutoLayout.xcscheme | 67 +++++++++++++ .../xcschemes/AlicerceCore.xcscheme | 67 +++++++++++++ .../xcschemes/AlicerceDeepLinking.xcscheme | 67 +++++++++++++ .../xcschemes/AlicerceExtensions.xcscheme | 67 +++++++++++++ .../xcschemes/AlicerceLogging.xcscheme | 67 +++++++++++++ .../xcschemes/AlicerceNetwork.xcscheme | 67 +++++++++++++ .../xcschemes/AlicerceObservers.xcscheme | 67 +++++++++++++ .../AlicercePerformanceMetrics.xcscheme | 67 +++++++++++++ .../xcschemes/AlicercePersistence.xcscheme | 67 +++++++++++++ .../AlicerceStackOrchestrator.xcscheme | 67 +++++++++++++ .../xcschemes/AlicerceView.xcscheme | 67 +++++++++++++ Alicerce.xcodeproj/project.pbxproj | 2 +- Alicerce.xcworkspace/contents.xcworkspacedata | 3 + Package.swift | 93 +++++++++++-------- .../Trackers/Analytics+MultiTracker.swift | 4 + Sources/DeepLinking/Route+TrieRouter.swift | 4 + Sources/Logging/Loggers/Log+MultiLogger.swift | 4 + Sources/Logging/Loggers/Logger.swift | 4 + Sources/Logging/Loggers/ModuleLogger.swift | 4 + .../Network/Network+BaseRequestMaking.swift | 4 + Sources/Network/Network+URLSessionError.swift | 4 + .../Network+URLSessionNetworkStack.swift | 4 + .../Network/Network+URLSessionResource.swift | 4 + Sources/Network/Network.swift | 4 + Sources/Network/NetworkStack.swift | 4 + .../Network/Pinning/PublicKeyAlgorithm.swift | 1 + Sources/Network/URLRequestAuthenticator.swift | 4 + .../URLSessionResourceInterceptor.swift | 4 + .../PerformanceMetrics+MultiTracker.swift | 4 + .../Trackers/PerformanceMetricsTracker.swift | 4 + ...NSManagedObjectContext+CoreDataStack.swift | 4 + .../DiskMemoryPersistenceStack.swift | 5 + ...PersistencePerformanceMetricsTracker.swift | 4 + .../StackOrchestrator+Store.swift | 32 ++++--- ...rchestratorPerformanceMetricsTracker.swift | 4 + .../StackOrchestratorStore.swift | 23 +++-- Sources/Utils/AssertDumpsEqual.swift | 4 + 39 files changed, 1044 insertions(+), 62 deletions(-) create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/Alicerce.xcscheme create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/AlicerceAnalytics.xcscheme create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/AlicerceAutoLayout.xcscheme create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/AlicerceCore.xcscheme create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/AlicerceDeepLinking.xcscheme create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/AlicerceExtensions.xcscheme create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/AlicerceLogging.xcscheme create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/AlicerceNetwork.xcscheme create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/AlicerceObservers.xcscheme create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/AlicercePerformanceMetrics.xcscheme create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/AlicercePersistence.xcscheme create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/AlicerceStackOrchestrator.xcscheme create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/AlicerceView.xcscheme diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/Alicerce.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/Alicerce.xcscheme new file mode 100644 index 00000000..4911ab78 --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/Alicerce.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceAnalytics.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceAnalytics.xcscheme new file mode 100644 index 00000000..383093bd --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceAnalytics.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceAutoLayout.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceAutoLayout.xcscheme new file mode 100644 index 00000000..66b31ea2 --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceAutoLayout.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceCore.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceCore.xcscheme new file mode 100644 index 00000000..3aecf694 --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceCore.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceDeepLinking.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceDeepLinking.xcscheme new file mode 100644 index 00000000..dd99d34e --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceDeepLinking.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceExtensions.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceExtensions.xcscheme new file mode 100644 index 00000000..b94d94ea --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceExtensions.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceLogging.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceLogging.xcscheme new file mode 100644 index 00000000..34c424b2 --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceLogging.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceNetwork.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceNetwork.xcscheme new file mode 100644 index 00000000..23b755fc --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceNetwork.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceObservers.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceObservers.xcscheme new file mode 100644 index 00000000..52cca960 --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceObservers.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/AlicercePerformanceMetrics.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/AlicercePerformanceMetrics.xcscheme new file mode 100644 index 00000000..f4b8769a --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/AlicercePerformanceMetrics.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/AlicercePersistence.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/AlicercePersistence.xcscheme new file mode 100644 index 00000000..591538c8 --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/AlicercePersistence.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceStackOrchestrator.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceStackOrchestrator.xcscheme new file mode 100644 index 00000000..5ae209a7 --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceStackOrchestrator.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceView.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceView.xcscheme new file mode 100644 index 00000000..afe3d320 --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/AlicerceView.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Alicerce.xcodeproj/project.pbxproj b/Alicerce.xcodeproj/project.pbxproj index 7cf26f31..9feb1e77 100644 --- a/Alicerce.xcodeproj/project.pbxproj +++ b/Alicerce.xcodeproj/project.pbxproj @@ -1636,7 +1636,7 @@ OBJ_1 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0940; + LastSwiftUpdateCheck = 1240; LastUpgradeCheck = 0930; ORGANIZATIONNAME = Mindera; TargetAttributes = { diff --git a/Alicerce.xcworkspace/contents.xcworkspacedata b/Alicerce.xcworkspace/contents.xcworkspacedata index 1c212d36..4603088f 100644 --- a/Alicerce.xcworkspace/contents.xcworkspacedata +++ b/Alicerce.xcworkspace/contents.xcworkspacedata @@ -1,6 +1,9 @@ + + diff --git a/Package.swift b/Package.swift index fd375136..dc8d7db4 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.1 +// swift-tools-version:5.2 import PackageDescription @@ -11,48 +11,65 @@ let package = Package( .library( name: "Alicerce", targets: [ - "Analytics", - "Core", - "DeepLinking", - "Extensions", - "Logging", - "Network", - "Observers", - "PerformanceMetrics", - "Persistence", - "Resource", - "Stores", - "View"] + "AlicerceAnalytics", + "AlicerceAutoLayout", + "AlicerceCore", + "AlicerceDeepLinking", + "AlicerceExtensions", + "AlicerceLogging", + "AlicerceNetwork", + "AlicerceObservers", + "AlicercePerformanceMetrics", + "AlicercePersistence", + "AlicerceStackOrchestrator", + "AlicerceView" + ] ), - .library(name: "AlicerceAnalytics", targets: ["Analytics"]), - .library(name: "AlicerceCore", targets: ["Core"]), - .library(name: "AlicerceDeepLinking", targets: ["DeepLinking"]), - .library(name: "AlicerceExtensions", targets: ["Extensions"]), - .library(name: "AlicerceLogging", targets: ["Logging"]), - .library(name: "AlicerceNetwork", targets: ["Network"]), - .library(name: "AlicerceObservers", targets: ["Observers"]), - .library(name: "AlicercePerformanceMetrics", targets: ["PerformanceMetrics"]), - .library(name: "AlicercePersistence", targets: ["Persistence"]), - .library(name: "AlicerceResource", targets: ["Resource"]), - .library(name: "AlicerceStores", targets: ["Stores"]), - .library(name: "AlicerceView", targets: ["View"]), + .library(name: "AlicerceAnalytics", targets: ["AlicerceAnalytics"]), + .library(name: "AlicerceAutoLayout", targets: ["AlicerceAutoLayout"]), + .library(name: "AlicerceCore", targets: ["AlicerceCore"]), + .library(name: "AlicerceDeepLinking", targets: ["AlicerceDeepLinking"]), + .library(name: "AlicerceExtensions", targets: ["AlicerceExtensions"]), + .library(name: "AlicerceLogging", targets: ["AlicerceLogging"]), + .library(name: "AlicerceNetwork", targets: ["AlicerceNetwork"]), + .library(name: "AlicerceObservers", targets: ["AlicerceObservers"]), + .library(name: "AlicercePerformanceMetrics", targets: ["AlicercePerformanceMetrics"]), + .library(name: "AlicercePersistence", targets: ["AlicercePersistence"]), + .library(name: "AlicerceStackOrchestrator", targets: ["AlicerceStackOrchestrator"]), + .library(name: "AlicerceView", targets: ["AlicerceView"]) ], targets: [ - .target(name: "Analytics", dependencies: ["Core"]), - .target(name: "Core", dependencies: ["Extensions"], path: "Sources", sources: ["Shared", "Utils"]), - .target(name: "DeepLinking", dependencies: ["Core"]), - .target(name: "Extensions"), - .target(name: "Logging", dependencies: ["Core"]), - .target(name: "Network", dependencies: ["Resource"]), - .target(name: "Observers", dependencies: ["Core"]), - .target(name: "PerformanceMetrics", dependencies: ["Core"]), - .target(name: "Persistence", dependencies: ["Core", "Logging", "PerformanceMetrics"]), - .target(name: "Resource", dependencies: ["Core"]), + .target(name: "AlicerceAnalytics", dependencies: ["AlicerceCore"], path: "Sources/Analytics"), + .target(name: "AlicerceAutoLayout", path: "Sources/AutoLayout"), .target( - name: "Stores", - dependencies: ["Core", "Logging", "Network", "PerformanceMetrics", "Persistence", "Resource"] + name: "AlicerceCore", + dependencies: ["AlicerceExtensions"], + path: "Sources", + sources: ["Shared", "Utils"] ), - .target(name: "View", dependencies: ["Core"]) + .target(name: "AlicerceDeepLinking", dependencies: ["AlicerceCore"], path: "Sources/DeepLinking"), + .target(name: "AlicerceExtensions", path: "Sources/Extensions", sources: ["Foundation", "UIKit"]), + .target(name: "AlicerceLogging", dependencies: ["AlicerceCore"], path: "Sources/Logging"), + .target(name: "AlicerceNetwork", dependencies: ["AlicerceCore"], path: "Sources/Network"), + .target(name: "AlicerceObservers", path: "Sources/Observers"), + .target(name: "AlicercePerformanceMetrics", dependencies: ["AlicerceCore"], path: "Sources/PerformanceMetrics"), + .target( + name: "AlicercePersistence", + dependencies: ["AlicerceCore", "AlicerceLogging", "AlicercePerformanceMetrics"], + path: "Sources/Persistence" + ), + .target( + name: "AlicerceStackOrchestrator", + dependencies: [ + "AlicerceCore", + "AlicerceLogging", + "AlicerceNetwork", + "AlicercePerformanceMetrics", + "AlicercePersistence" + ], + path: "Sources/StackOrchestrator" + ), + .target(name: "AlicerceView", path: "Sources/View") ], swiftLanguageVersions: [ .version("5") ] ) diff --git a/Sources/Analytics/Trackers/Analytics+MultiTracker.swift b/Sources/Analytics/Trackers/Analytics+MultiTracker.swift index e085909e..8bdfdd48 100644 --- a/Sources/Analytics/Trackers/Analytics+MultiTracker.swift +++ b/Sources/Analytics/Trackers/Analytics+MultiTracker.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + public extension Analytics { /// An analytics tracker that forwards analytics events to multiple trackers, while not doing any tracking on its diff --git a/Sources/DeepLinking/Route+TrieRouter.swift b/Sources/DeepLinking/Route+TrieRouter.swift index 9efa80a6..fac84dee 100644 --- a/Sources/DeepLinking/Route+TrieRouter.swift +++ b/Sources/DeepLinking/Route+TrieRouter.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + extension Route { /// An error produced by `TrieRouter` instances. diff --git a/Sources/Logging/Loggers/Log+MultiLogger.swift b/Sources/Logging/Loggers/Log+MultiLogger.swift index 7327552c..1c375347 100644 --- a/Sources/Logging/Loggers/Log+MultiLogger.swift +++ b/Sources/Logging/Loggers/Log+MultiLogger.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + extension Log { /// An implementation of a `LogModule` that can't be created, to allow using a `MultiLogger` without modules. diff --git a/Sources/Logging/Loggers/Logger.swift b/Sources/Logging/Loggers/Logger.swift index de8fc251..d6f8245a 100644 --- a/Sources/Logging/Loggers/Logger.swift +++ b/Sources/Logging/Loggers/Logger.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + /// A type that logs messages with multiple possible severity log levels. public protocol Logger: AnyObject { diff --git a/Sources/Logging/Loggers/ModuleLogger.swift b/Sources/Logging/Loggers/ModuleLogger.swift index 1796b37a..6fcf1813 100644 --- a/Sources/Logging/Loggers/ModuleLogger.swift +++ b/Sources/Logging/Loggers/ModuleLogger.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + /// A type that logs messages with multiple possible severity levels, originating from configurable app modules. public protocol ModuleLogger: Logger { diff --git a/Sources/Network/Network+BaseRequestMaking.swift b/Sources/Network/Network+BaseRequestMaking.swift index 9a1ea635..d0c68493 100644 --- a/Sources/Network/Network+BaseRequestMaking.swift +++ b/Sources/Network/Network+BaseRequestMaking.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + extension Network { /// A base request making witness. diff --git a/Sources/Network/Network+URLSessionError.swift b/Sources/Network/Network+URLSessionError.swift index fd784233..40b9008c 100644 --- a/Sources/Network/Network+URLSessionError.swift +++ b/Sources/Network/Network+URLSessionError.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + extension Network { public enum URLSessionError: Error { diff --git a/Sources/Network/Network+URLSessionNetworkStack.swift b/Sources/Network/Network+URLSessionNetworkStack.swift index e7000cc7..0de9abcf 100644 --- a/Sources/Network/Network+URLSessionNetworkStack.swift +++ b/Sources/Network/Network+URLSessionNetworkStack.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + public protocol URLSessionNetworkStackRepresentable: NetworkStack where Resource == Network.URLSessionResource, diff --git a/Sources/Network/Network+URLSessionResource.swift b/Sources/Network/Network+URLSessionResource.swift index 794f0d76..9958113b 100644 --- a/Sources/Network/Network+URLSessionResource.swift +++ b/Sources/Network/Network+URLSessionResource.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + extension Network { public struct URLSessionResource { diff --git a/Sources/Network/Network.swift b/Sources/Network/Network.swift index b3601b86..d6835c35 100644 --- a/Sources/Network/Network.swift +++ b/Sources/Network/Network.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + public enum Network { public struct Value { diff --git a/Sources/Network/NetworkStack.swift b/Sources/Network/NetworkStack.swift index b26322a0..e3541ae4 100644 --- a/Sources/Network/NetworkStack.swift +++ b/Sources/Network/NetworkStack.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + public protocol NetworkStack: AnyObject { associatedtype Resource diff --git a/Sources/Network/Pinning/PublicKeyAlgorithm.swift b/Sources/Network/Pinning/PublicKeyAlgorithm.swift index 82da2952..2e6afe09 100644 --- a/Sources/Network/Pinning/PublicKeyAlgorithm.swift +++ b/Sources/Network/Pinning/PublicKeyAlgorithm.swift @@ -1,3 +1,4 @@ +import Foundation import Security public enum PublicKeyAlgorithm: CaseIterable { diff --git a/Sources/Network/URLRequestAuthenticator.swift b/Sources/Network/URLRequestAuthenticator.swift index 66e5f0f8..f3d503f0 100644 --- a/Sources/Network/URLRequestAuthenticator.swift +++ b/Sources/Network/URLRequestAuthenticator.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + // A type representing a request authenticator. public protocol URLRequestAuthenticator: AnyObject { diff --git a/Sources/Network/URLSessionResourceInterceptor.swift b/Sources/Network/URLSessionResourceInterceptor.swift index 48bf6f82..ae5c9572 100644 --- a/Sources/Network/URLSessionResourceInterceptor.swift +++ b/Sources/Network/URLSessionResourceInterceptor.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + /// A type representing a resource interceptor. public protocol URLSessionResourceInterceptor { diff --git a/Sources/PerformanceMetrics/Trackers/PerformanceMetrics+MultiTracker.swift b/Sources/PerformanceMetrics/Trackers/PerformanceMetrics+MultiTracker.swift index 7d9db439..b598a3ce 100644 --- a/Sources/PerformanceMetrics/Trackers/PerformanceMetrics+MultiTracker.swift +++ b/Sources/PerformanceMetrics/Trackers/PerformanceMetrics+MultiTracker.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + public extension PerformanceMetrics { /// A performance metrics tracker that forwards performance measuring events to multiple trackers, while not doing diff --git a/Sources/PerformanceMetrics/Trackers/PerformanceMetricsTracker.swift b/Sources/PerformanceMetrics/Trackers/PerformanceMetricsTracker.swift index 6836a664..134a16ef 100644 --- a/Sources/PerformanceMetrics/Trackers/PerformanceMetricsTracker.swift +++ b/Sources/PerformanceMetrics/Trackers/PerformanceMetricsTracker.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceCore) +import AlicerceCore +#endif + /// A type that tracks performance metrics. public protocol PerformanceMetricsTracker: AnyObject { diff --git a/Sources/Persistence/CoreData/NSManagedObjectContext+CoreDataStack.swift b/Sources/Persistence/CoreData/NSManagedObjectContext+CoreDataStack.swift index 7d8e04cd..c9af5374 100644 --- a/Sources/Persistence/CoreData/NSManagedObjectContext+CoreDataStack.swift +++ b/Sources/Persistence/CoreData/NSManagedObjectContext+CoreDataStack.swift @@ -1,5 +1,9 @@ import CoreData +#if canImport(AlicerceLogging) +import AlicerceLogging +#endif + // MARK: - performThrowing public extension NSManagedObjectContext { diff --git a/Sources/Persistence/DiskMemoryPersistenceStack.swift b/Sources/Persistence/DiskMemoryPersistenceStack.swift index 501ece3a..cc9f4593 100644 --- a/Sources/Persistence/DiskMemoryPersistenceStack.swift +++ b/Sources/Persistence/DiskMemoryPersistenceStack.swift @@ -1,6 +1,11 @@ // swiftlint:disable file_length import UIKit +#if canImport(AlicerceCore) && canImport(AlicerceLogging) +import AlicerceCore +import AlicerceLogging +#endif + public extension Persistence { final class DiskMemoryPersistenceStack: NSObject, PersistenceStack { diff --git a/Sources/Persistence/PersistencePerformanceMetricsTracker.swift b/Sources/Persistence/PersistencePerformanceMetricsTracker.swift index f6a4e173..160deb6d 100644 --- a/Sources/Persistence/PersistencePerformanceMetricsTracker.swift +++ b/Sources/Persistence/PersistencePerformanceMetricsTracker.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicercePerformanceMetrics) +import AlicercePerformanceMetrics +#endif + public protocol PersistencePerformanceMetricsTracker: PerformanceMetricsTracker { /// A closure to be used when stopping measuring memory reads/writes. diff --git a/Sources/StackOrchestrator/StackOrchestrator+Store.swift b/Sources/StackOrchestrator/StackOrchestrator+Store.swift index e6a820c6..af2e176f 100644 --- a/Sources/StackOrchestrator/StackOrchestrator+Store.swift +++ b/Sources/StackOrchestrator/StackOrchestrator+Store.swift @@ -1,34 +1,36 @@ import Foundation -extension StackOrchestrator { +#if canImport(AlicerceCore) && canImport(AlicerceLogging) && canImport(AlicerceNetwork) && canImport(AlicercePersistence) +import AlicerceCore +import AlicerceLogging +import AlicerceNetwork +import AlicercePersistence +#endif - open class Store: StackOrchestratorStore - where - NetworkStack: Alicerce.NetworkStack, - PersistenceStack: Alicerce.PersistenceStack, PersistenceStack.Payload == NetworkStack.Remote - { +extension StackOrchestrator { - public typealias Payload = NetworkStack.Remote - public typealias Response = NetworkStack.Response + open class Store: StackOrchestratorStore + where N: NetworkStack, P: PersistenceStack, P.Payload == N.Remote { - public typealias PersistenceKey = PersistenceStack.Key + public typealias Payload = N.Remote + public typealias Response = N.Response - public typealias Resource = FetchResource + public typealias Resource = FetchResource public typealias CompletionClosure = (Result, E>) -> Void public typealias FetchCompletionClosure = CompletionClosure // MARK: - Properties - public let networkStack: NetworkStack - public let persistenceStack: PersistenceStack + public let networkStack: N + public let persistenceStack: P public let performanceMetrics: StackOrchestratorPerformanceMetricsTracker? // MARK: - Initialization public init( - networkStack: NetworkStack, - persistenceStack: PersistenceStack, + networkStack: N, + persistenceStack: P, performanceMetrics: StackOrchestratorPerformanceMetricsTracker? ) { @@ -55,7 +57,7 @@ extension StackOrchestrator { } } - public func clearPersistence(completion: @escaping (Result) -> Void) { + public func clearPersistence(completion: @escaping (Result) -> Void) { persistenceStack.removeAll(completion: completion) } diff --git a/Sources/StackOrchestrator/StackOrchestratorPerformanceMetricsTracker.swift b/Sources/StackOrchestrator/StackOrchestratorPerformanceMetricsTracker.swift index 6dc99857..0034ac29 100644 --- a/Sources/StackOrchestrator/StackOrchestratorPerformanceMetricsTracker.swift +++ b/Sources/StackOrchestrator/StackOrchestratorPerformanceMetricsTracker.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicercePerformanceMetrics) +import AlicercePerformanceMetrics +#endif + public protocol StackOrchestratorPerformanceMetricsTracker: PerformanceMetricsTracker { /// The metadata key used for the model type being parsed. diff --git a/Sources/StackOrchestrator/StackOrchestratorStore.swift b/Sources/StackOrchestrator/StackOrchestratorStore.swift index 92c4433d..bff532f6 100644 --- a/Sources/StackOrchestrator/StackOrchestratorStore.swift +++ b/Sources/StackOrchestrator/StackOrchestratorStore.swift @@ -1,13 +1,20 @@ import Foundation +#if canImport(AlicerceCore) && canImport(AlicerceLogging) && canImport(AlicerceNetwork) && canImport(AlicercePersistence) +import AlicerceCore +import AlicerceLogging +import AlicerceNetwork +import AlicercePersistence +#endif + public protocol StackOrchestratorStore: AnyObject { - associatedtype NetworkStack: Alicerce.NetworkStack - associatedtype PersistenceStack: Alicerce.PersistenceStack where PersistenceStack.Payload == NetworkStack.Remote + associatedtype Network: NetworkStack + associatedtype Persistence: PersistenceStack where Persistence.Payload == Network.Remote - typealias Payload = NetworkStack.Remote - typealias Response = NetworkStack.Response - typealias Resource = StackOrchestrator.FetchResource + typealias Payload = Network.Remote + typealias Response = Network.Response + typealias Resource = StackOrchestrator.FetchResource typealias FetchError = StackOrchestrator.FetchError typealias CompletionClosure = @@ -15,14 +22,14 @@ public protocol StackOrchestratorStore: AnyObject { typealias FetchCompletionClosure = CompletionClosure - var networkStack: NetworkStack { get } - var persistenceStack: PersistenceStack { get } + var networkStack: Network { get } + var persistenceStack: Persistence { get } var performanceMetrics: StackOrchestratorPerformanceMetricsTracker? { get } @discardableResult func fetch(resource: Resource, completion: @escaping FetchCompletionClosure) -> Cancelable - func clearPersistence(completion: @escaping (Result) -> Void) + func clearPersistence(completion: @escaping (Result) -> Void) } extension StackOrchestratorStore { diff --git a/Sources/Utils/AssertDumpsEqual.swift b/Sources/Utils/AssertDumpsEqual.swift index 3ef9725c..250739c1 100644 --- a/Sources/Utils/AssertDumpsEqual.swift +++ b/Sources/Utils/AssertDumpsEqual.swift @@ -1,5 +1,9 @@ import Foundation +#if canImport(AlicerceExtensions) +import AlicerceExtensions +#endif + // Credits to Ole Begemann (@olebegemann) and Tim Vermeulen (@tim_vermeulen) 🙏 // https://oleb.net/blog/2017/03/dump-as-equatable-safeguard/ From f9dd3c1793658ef7c2e6ac5bf75e98747b6f2a23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Pacheco=20Neves?= Date: Mon, 5 Apr 2021 18:43:32 +0100 Subject: [PATCH 4/5] Add SPM build stage to `travis.yml` --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index 65153f0d..1dc427ec 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,6 +28,11 @@ jobs: - xcodebuild $XCODE_ACTION -workspace "$XCODE_WORKSPACE" -scheme "$XCODE_SCHEME" -sdk "$XCODE_SDK" -destination "$XCODE_DESTINATION" -derivedDataPath "$XCODE_DERIVED_DATA_PATH" | xcpretty after_success: - bash <(curl -s https://codecov.io/bash) -D $XCODE_DERIVED_DATA_PATH -J "^$XCODE_SCHEME$" + - stage: SwiftPM Build + env: + - PLATFORM_TARGET=x86_64-apple-ios13.0-simulator + script: + - swift build -Xswiftc "-sdk" -Xswiftc "`xcrun --sdk iphonesimulator --show-sdk-path`" -Xswiftc "-target" -Xswiftc "${PLATFORM_TARGET}" - stage: Pod lib lint script: - pod repo update --silent From b79d10a57ff75c9ed1ad1bfba91331d324664f89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Pacheco=20Neves?= Date: Mon, 5 Apr 2021 18:49:59 +0100 Subject: [PATCH 5/5] Remove duplicated Alicerce scheme, rename SPM one to `Alicerce (SPM)` --- ...cerce.xcscheme => Alicerce (SPM).xcscheme} | 0 .../xcshareddata/xcschemes/Alicerce.xcscheme | 40 +++++++++---------- 2 files changed, 18 insertions(+), 22 deletions(-) rename .swiftpm/xcode/xcshareddata/xcschemes/{Alicerce.xcscheme => Alicerce (SPM).xcscheme} (100%) diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/Alicerce.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/Alicerce (SPM).xcscheme similarity index 100% rename from .swiftpm/xcode/xcshareddata/xcschemes/Alicerce.xcscheme rename to .swiftpm/xcode/xcshareddata/xcschemes/Alicerce (SPM).xcscheme diff --git a/Alicerce.xcodeproj/xcshareddata/xcschemes/Alicerce.xcscheme b/Alicerce.xcodeproj/xcshareddata/xcschemes/Alicerce.xcscheme index b7b683dd..2f16cf8e 100644 --- a/Alicerce.xcodeproj/xcshareddata/xcschemes/Alicerce.xcscheme +++ b/Alicerce.xcodeproj/xcshareddata/xcschemes/Alicerce.xcscheme @@ -40,9 +40,25 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + shouldUseLaunchSchemeArgsEnv = "NO" codeCoverageEnabled = "YES" - onlyGenerateCoverageForSpecifiedTargets = "YES" - shouldUseLaunchSchemeArgsEnv = "NO"> + onlyGenerateCoverageForSpecifiedTargets = "YES"> + + + + + + + + - - - - - - - - - - - -