// swift-tools-version:5.6 import PackageDescription let package = Package( name: "client-ios", defaultLocalization: "en", platforms: [ .iOS(.v14), ], products: [ .library(name: "App", targets: ["App"]), .library(name: "HUD", targets: ["HUD"]), .library(name: "Theme", targets: ["Theme"]), .library(name: "Shared", targets: ["Shared"]), .library(name: "Models", targets: ["Models"]), .library(name: "XXLogger", targets: ["XXLogger"]), .library(name: "Defaults", targets: ["Defaults"]), .library(name: "Bindings", targets: ["Bindings"]), .library(name: "Keychain", targets: ["Keychain"]), .library(name: "Voxophone", targets: ["Voxophone"]), .library(name: "Countries", targets: ["Countries"]), .library(name: "InputField", targets: ["InputField"]), .library(name: "TestHelpers", targets: ["TestHelpers"]), .library(name: "ScanFeature", targets: ["ScanFeature"]), .library(name: "Permissions", targets: ["Permissions"]), .library(name: "MenuFeature", targets: ["MenuFeature"]), .library(name: "Integration", targets: ["Integration"]), .library(name: "ChatFeature", targets: ["ChatFeature"]), .library(name: "PushFeature", targets: ["PushFeature"]), .library(name: "SFTPFeature", targets: ["SFTPFeature"]), .library(name: "CrashService", targets: ["CrashService"]), .library(name: "Presentation", targets: ["Presentation"]), .library(name: "BackupFeature", targets: ["BackupFeature"]), .library(name: "LaunchFeature", targets: ["LaunchFeature"]), .library(name: "iCloudFeature", targets: ["iCloudFeature"]), .library(name: "SearchFeature", targets: ["SearchFeature"]), .library(name: "DrawerFeature", targets: ["DrawerFeature"]), .library(name: "CollectionView", targets: ["CollectionView"]), .library(name: "RestoreFeature", targets: ["RestoreFeature"]), .library(name: "CrashReporting", targets: ["CrashReporting"]), .library(name: "ProfileFeature", targets: ["ProfileFeature"]), .library(name: "ContactFeature", targets: ["ContactFeature"]), .library(name: "NetworkMonitor", targets: ["NetworkMonitor"]), .library(name: "DropboxFeature", targets: ["DropboxFeature"]), .library(name: "VersionChecking", targets: ["VersionChecking"]), .library(name: "SettingsFeature", targets: ["SettingsFeature"]), .library(name: "ChatListFeature", targets: ["ChatListFeature"]), .library(name: "RequestsFeature", targets: ["RequestsFeature"]), .library(name: "ChatInputFeature", targets: ["ChatInputFeature"]), .library(name: "OnboardingFeature", targets: ["OnboardingFeature"]), .library(name: "GoogleDriveFeature", targets: ["GoogleDriveFeature"]), .library(name: "ContactListFeature", targets: ["ContactListFeature"]), .library(name: "DependencyInjection", targets: ["DependencyInjection"]), ], dependencies: [ .package( url: "https://github.com/Quick/Quick", .upToNextMajor(from: "3.0.0") ), .package( url: "https://github.com/Quick/Nimble", .upToNextMajor(from: "9.0.0") ), .package( url: "https://github.com/SnapKit/SnapKit", .upToNextMajor(from: "5.0.1") ), .package( url: "https://github.com/icanzilb/Retry.git", .upToNextMajor(from: "0.6.3") ), .package( url: "https://github.com/ekazaev/ChatLayout", .upToNextMajor(from: "1.1.14") ), .package( url: "https://github.com/ra1028/DifferenceKit", .upToNextMajor(from: "1.2.0") ), .package( url: "https://github.com/apple/swift-protobuf", .upToNextMajor(from: "1.14.0") ), .package( url: "https://github.com/google/GoogleSignIn-iOS", .upToNextMajor(from: "6.1.0") ), .package( url: "https://github.com/dropbox/SwiftyDropbox.git", .upToNextMajor(from: "8.2.1") ), .package( url: "https://github.com/amosavian/FileProvider.git", .upToNextMajor(from: "0.26.0") ), .package( url: "https://github.com/SwiftyBeaver/SwiftyBeaver.git", .upToNextMajor(from: "1.9.5") ), .package( url: "https://github.com/darrarski/ScrollViewController", .upToNextMajor(from: "1.2.0") ), .package( url: "https://github.com/pointfreeco/combine-schedulers", .upToNextMajor(from: "0.5.0") ), .package( url: "https://github.com/kishikawakatsumi/KeychainAccess", .upToNextMajor(from: "4.2.1") ), .package( url: "https://github.com/google/google-api-objectivec-client-for-rest", .upToNextMajor(from: "1.6.0") ), .package( url: "https://git.xx.network/elixxir/client-ios-db.git", .upToNextMajor(from: "1.0.8") ), .package( url: "https://github.com/firebase/firebase-ios-sdk.git", .upToNextMajor(from: "8.10.0") ), .package( url: "https://github.com/darrarski/Shout.git", revision: "df5a662293f0ac15eeb4f2fd3ffd0c07b73d0de0" ), .package( url: "https://github.com/pointfreeco/swift-composable-architecture.git", .upToNextMajor(from: "0.32.0") ), .package( url: "https://github.com/pointfreeco/swift-custom-dump.git", .upToNextMajor(from: "0.5.0") ), .package( url: "https://github.com/pointfreeco/xctest-dynamic-overlay.git", .upToNextMajor(from: "0.3.3") ), ], targets: [ .target( name: "App", dependencies: [ .target(name: "Keychain"), .target(name: "Voxophone"), .target(name: "Permissions"), .target(name: "ScanFeature"), .target(name: "ChatFeature"), .target(name: "MenuFeature"), .target(name: "PushFeature"), .target(name: "SFTPFeature"), .target(name: "ToastFeature"), .target(name: "CrashService"), .target(name: "BackupFeature"), .target(name: "SearchFeature"), .target(name: "LaunchFeature"), .target(name: "iCloudFeature"), .target(name: "DropboxFeature"), .target(name: "ContactFeature"), .target(name: "RestoreFeature"), .target(name: "ProfileFeature"), .target(name: "CrashReporting"), .target(name: "ChatListFeature"), .target(name: "SettingsFeature"), .target(name: "RequestsFeature"), .target(name: "OnboardingFeature"), .target(name: "GoogleDriveFeature"), .target(name: "ContactListFeature"), ] ), .testTarget( name: "AppTests", dependencies: [ .target(name: "App"), ] ), .target( name: "CrashReporting" ), .target( name: "NetworkMonitor" ), .target( name: "VersionChecking" ), .target( name: "DependencyInjection" ), .testTarget( name: "DependencyInjectionTests", dependencies: [ .target(name: "DependencyInjection"), ] ), .target( name: "InputField", dependencies: [ .target(name: "Shared"), ] ), .binaryTarget( name: "Bindings", path: "XCFrameworks/Bindings.xcframework" ), .target( name: "Permissions", dependencies: [ .target(name: "Theme"), .target(name: "Shared"), .target(name: "DependencyInjection"), ] ), .target( name: "PushFeature", dependencies: [ .target(name: "Models"), .target(name: "Defaults"), .target(name: "Integration"), .target(name: "DependencyInjection"), ] ), .target( name: "TestHelpers", dependencies: [ .target(name: "Models"), .target(name: "Presentation"), ] ), .target( name: "Keychain", dependencies: [ .product(name: "KeychainAccess", package: "KeychainAccess"), ] ), .target( name: "Voxophone", dependencies: [ .target(name: "Shared"), ] ), .target( name: "Models", dependencies: [ .product(name: "DifferenceKit", package: "DifferenceKit"), .product(name: "SwiftProtobuf", package: "swift-protobuf"), ] ), .target( name: "Defaults", dependencies: [ .target(name: "DependencyInjection"), ] ), .target( name: "ToastFeature", dependencies: [ .target(name: "Shared"), ] ), .target( name: "CrashService", dependencies: [ .target(name: "CrashReporting"), .product(name: "FirebaseCrashlytics", package: "firebase-ios-sdk"), ] ), .target( name: "SFTPFeature", dependencies: [ .target(name: "HUD"), .target(name: "Models"), .target(name: "Shared"), .target(name: "Keychain"), .target(name: "InputField"), .target(name: "Presentation"), .target(name: "DependencyInjection"), .product(name: "Shout", package: "Shout"), ] ), .target( name: "GoogleDriveFeature", dependencies: [ .product(name: "GoogleSignIn", package: "GoogleSignIn-iOS"), .product(name: "GoogleAPIClientForREST_Drive", package: "google-api-objectivec-client-for-rest"), ], resources: [ .process("Resources"), ] ), .target( name: "iCloudFeature", dependencies: [ .product(name: "FilesProvider", package: "FileProvider"), ] ), .target( name: "DropboxFeature", dependencies: [ .product(name: "SwiftyDropbox", package: "SwiftyDropbox"), ], resources: [ .process("Resources"), ] ), .target( name: "Countries", dependencies: [ .target(name: "Theme"), .target(name: "Shared"), .target(name: "DependencyInjection"), ], resources: [ .process("Resources"), ] ), .target( name: "Theme", dependencies: [ .target(name: "Defaults"), .target(name: "DependencyInjection"), ] ), .testTarget( name: "ThemeTests", dependencies: [ .target(name: "Theme"), .product(name: "Quick", package: "Quick"), .product(name: "Nimble", package: "Nimble"), ] ), .target( name: "DrawerFeature", dependencies: [ .target(name: "Shared"), .target(name: "InputField"), .product(name: "ScrollViewController", package: "ScrollViewController"), ] ), .target( name: "HUD", dependencies: [ .target(name: "Theme"), .target(name: "Shared"), .product(name: "SnapKit", package: "SnapKit"), ] ), .target( name: "XXLogger", dependencies: [ .product(name: "SwiftyBeaver", package: "SwiftyBeaver"), ] ), .target( name: "Shared", dependencies: [ .product(name: "SnapKit", package: "SnapKit"), .product(name: "ChatLayout", package: "ChatLayout"), .product(name: "DifferenceKit", package: "DifferenceKit"), ], exclude: [ "swiftgen.yml", ], resources: [ .process("Resources"), ] ), .target( name: "Integration", dependencies: [ .target(name: "Shared"), .target(name: "Bindings"), .target(name: "XXLogger"), .target(name: "Keychain"), .target(name: "ToastFeature"), .target(name: "BackupFeature"), .target(name: "CrashReporting"), .target(name: "NetworkMonitor"), .target(name: "DependencyInjection"), .product(name: "Retry", package: "Retry"), .product(name: "XXDatabase", package: "client-ios-db"), .product(name: "XXLegacyDatabaseMigrator", package: "client-ios-db"), ], resources: [ .process("Resources"), ] ), .target( name: "Presentation", dependencies: [ .target(name: "Theme"), .target(name: "Shared"), .product(name: "SnapKit", package: "SnapKit"), ] ), .testTarget( name: "PresentationTests", dependencies: [ .target(name: "Presentation"), .product(name: "Quick", package: "Quick"), .product(name: "Nimble", package: "Nimble"), ] ), .target( name: "ChatInputFeature", dependencies: [ .target(name: "Voxophone"), .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), ] ), .target( name: "RestoreFeature", dependencies: [ .target(name: "HUD"), .target(name: "Shared"), .target(name: "SFTPFeature"), .target(name: "Integration"), .target(name: "Presentation"), .target(name: "iCloudFeature"), .target(name: "DropboxFeature"), .target(name: "GoogleDriveFeature"), .target(name: "DependencyInjection"), ] ), .target( name: "ContactFeature", dependencies: [ .target(name: "Shared"), .target(name: "InputField"), .target(name: "ChatFeature"), .target(name: "Presentation"), .product(name: "CombineSchedulers", package: "combine-schedulers"), .product(name: "ScrollViewController", package: "ScrollViewController"), ] ), .testTarget( name: "ContactFeatureTests", dependencies: [ .target(name: "TestHelpers"), .target(name: "ContactFeature"), .product(name: "Quick", package: "Quick"), .product(name: "Nimble", package: "Nimble"), ] ), .target( name: "ChatFeature", dependencies: [ .target(name: "HUD"), .target(name: "Theme"), .target(name: "Shared"), .target(name: "Defaults"), .target(name: "Keychain"), .target(name: "Voxophone"), .target(name: "Integration"), .target(name: "Permissions"), .target(name: "Presentation"), .target(name: "DrawerFeature"), .target(name: "ChatInputFeature"), .target(name: "DependencyInjection"), .product(name: "ChatLayout", package: "ChatLayout"), .product(name: "DifferenceKit", package: "DifferenceKit"), .product(name: "ScrollViewController", package: "ScrollViewController"), ] ), .testTarget( name: "ChatFeatureTests", dependencies: [ .target(name: "ChatFeature"), .target(name: "TestHelpers"), .product(name: "Quick", package: "Quick"), .product(name: "Nimble", package: "Nimble"), ] ), .target( name: "SearchFeature", dependencies: [ .target(name: "HUD"), .target(name: "Shared"), .target(name: "Countries"), .target(name: "Integration"), .target(name: "Presentation"), .target(name: "ContactFeature"), .target(name: "DependencyInjection"), ] ), .testTarget( name: "SearchFeatureTests", dependencies: [ .target(name: "TestHelpers"), .target(name: "SearchFeature"), .product(name: "Quick", package: "Quick"), .product(name: "Nimble", package: "Nimble"), ] ), .target( name: "LaunchFeature", dependencies: [ .target(name: "HUD"), .target(name: "Theme"), .target(name: "Shared"), .target(name: "Defaults"), .target(name: "PushFeature"), .target(name: "Integration"), .target(name: "Permissions"), .target(name: "DropboxFeature"), .target(name: "VersionChecking"), .target(name: "DependencyInjection"), ] ), .target( name: "RequestsFeature", dependencies: [ .target(name: "Theme"), .target(name: "Shared"), .target(name: "Integration"), .target(name: "ToastFeature"), .target(name: "ContactFeature"), .target(name: "DependencyInjection"), .product(name: "DifferenceKit", package: "DifferenceKit"), ] ), .testTarget( name: "RequestsFeatureTests", dependencies: [ .target(name: "TestHelpers"), .target(name: "RequestsFeature"), .product(name: "Quick", package: "Quick"), .product(name: "Nimble", package: "Nimble"), ] ), .target( name: "ProfileFeature", dependencies: [ .target(name: "HUD"), .target(name: "Theme"), .target(name: "Shared"), .target(name: "Keychain"), .target(name: "Defaults"), .target(name: "Countries"), .target(name: "InputField"), .target(name: "MenuFeature"), .target(name: "Permissions"), .target(name: "Integration"), .target(name: "Presentation"), .target(name: "DrawerFeature"), .target(name: "DependencyInjection"), .product(name: "CombineSchedulers", package: "combine-schedulers"), .product(name: "ScrollViewController", package: "ScrollViewController"), ] ), .testTarget( name: "ProfileFeatureTests", dependencies: [ .target(name: "TestHelpers"), .target(name: "ProfileFeature"), .product(name: "Quick", package: "Quick"), .product(name: "Nimble", package: "Nimble"), ] ), .target( name: "ChatListFeature", dependencies: [ .target(name: "Theme"), .target(name: "Shared"), .target(name: "Defaults"), .target(name: "MenuFeature"), .target(name: "ChatFeature"), .target(name: "ProfileFeature"), .target(name: "SettingsFeature"), .target(name: "ContactListFeature"), .target(name: "DependencyInjection"), .product(name: "DifferenceKit", package: "DifferenceKit"), ] ), .testTarget( name: "ChatListFeatureTests", dependencies: [ .target(name: "TestHelpers"), .target(name: "ChatListFeature"), .product(name: "Quick", package: "Quick"), .product(name: "Nimble", package: "Nimble"), ] ), .target( name: "OnboardingFeature", dependencies: [ .target(name: "HUD"), .target(name: "Shared"), .target(name: "Defaults"), .target(name: "Keychain"), .target(name: "Countries"), .target(name: "InputField"), .target(name: "Permissions"), .target(name: "PushFeature"), .target(name: "Integration"), .target(name: "Presentation"), .target(name: "DrawerFeature"), .target(name: "VersionChecking"), .target(name: "DependencyInjection"), .product(name: "CombineSchedulers", package: "combine-schedulers"), .product(name: "ScrollViewController", package: "ScrollViewController"), ] ), .testTarget( name: "OnboardingFeatureTests", dependencies: [ .target(name: "TestHelpers"), .target(name: "OnboardingFeature"), .product(name: "Quick", package: "Quick"), .product(name: "Nimble", package: "Nimble"), ] ), .target( name: "MenuFeature", dependencies: [ .target(name: "Theme"), .target(name: "Shared"), .target(name: "Defaults"), .target(name: "Integration"), .target(name: "Presentation"), .target(name: "DependencyInjection"), ] ), .target( name: "BackupFeature", dependencies: [ .target(name: "HUD"), .target(name: "Shared"), .target(name: "Models"), .target(name: "InputField"), .target(name: "SFTPFeature"), .target(name: "Presentation"), .target(name: "iCloudFeature"), .target(name: "DrawerFeature"), .target(name: "DropboxFeature"), .target(name: "GoogleDriveFeature"), .target(name: "DependencyInjection"), ] ), .target( name: "ScanFeature", dependencies: [ .target(name: "Theme"), .target(name: "Shared"), .target(name: "Countries"), .target(name: "Permissions"), .target(name: "Integration"), .target(name: "Presentation"), .target(name: "ContactFeature"), .target(name: "DependencyInjection"), .product(name: "SnapKit", package: "SnapKit"), ] ), .testTarget( name: "ScanFeatureTests", dependencies: [ .target(name: "ScanFeature"), .target(name: "TestHelpers"), .product(name: "Quick", package: "Quick"), .product(name: "Nimble", package: "Nimble"), ] ), .target( name: "ContactListFeature", dependencies: [ .target(name: "Theme"), .target(name: "Shared"), .target(name: "Integration"), .target(name: "Presentation"), .target(name: "ContactFeature"), .target(name: "DependencyInjection"), .product(name: "DifferenceKit", package: "DifferenceKit"), ] ), .testTarget( name: "ContactListFeatureTests", dependencies: [ .target(name: "TestHelpers"), .target(name: "ContactListFeature"), .product(name: "Quick", package: "Quick"), .product(name: "Nimble", package: "Nimble"), ] ), .target( name: "SettingsFeature", dependencies: [ .target(name: "HUD"), .target(name: "Theme"), .target(name: "Shared"), .target(name: "Defaults"), .target(name: "Keychain"), .target(name: "InputField"), .target(name: "PushFeature"), .target(name: "Permissions"), .target(name: "MenuFeature"), .target(name: "Integration"), .target(name: "Presentation"), .target(name: "DrawerFeature"), .target(name: "DependencyInjection"), .product(name: "CombineSchedulers", package: "combine-schedulers"), .product(name: "ScrollViewController", package: "ScrollViewController"), ] ), .testTarget( name: "SettingsFeatureTests", dependencies: [ .target(name: "TestHelpers"), .target(name: "SettingsFeature"), .product(name: "Quick", package: "Quick"), .product(name: "Nimble", package: "Nimble"), ] ), .target( name: "CollectionView", dependencies: [ .product(name: "ChatLayout", package: "ChatLayout"), .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), ] ), .testTarget( name: "CollectionViewTests", dependencies: [ .target(name: "CollectionView"), .product(name: "CustomDump", package: "swift-custom-dump"), ] ), ] )