From f9f314bf3ffcab649958f0958e45e918ece28553 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Thu, 4 Aug 2022 20:15:59 +0100
Subject: [PATCH] Reformat and clean up Package.swift

---
 Package.swift | 1497 ++++++++++++++++++++++---------------------------
 1 file changed, 667 insertions(+), 830 deletions(-)

diff --git a/Package.swift b/Package.swift
index 08f6fef2..c50433ff 100644
--- a/Package.swift
+++ b/Package.swift
@@ -50,842 +50,679 @@ let package = Package(
         .library(name: "OnboardingFeature", targets: ["OnboardingFeature"]),
         .library(name: "GoogleDriveFeature", targets: ["GoogleDriveFeature"]),
         .library(name: "ContactListFeature", targets: ["ContactListFeature"]),
-        .library(name: "DependencyInjection", targets: ["DependencyInjection"])
+        .library(name: "DependencyInjection", targets: ["DependencyInjection"]),
     ],
     dependencies: [
-        .package(url: "https://github.com/Quick/Quick", from: "3.0.0"),
-        .package(url: "https://github.com/Quick/Nimble", from: "9.0.0"),
-        .package(url: "https://github.com/SnapKit/SnapKit", from: "5.0.1"),
-        .package(url: "https://github.com/icanzilb/Retry.git", from: "0.6.3"),
-        .package(url: "https://github.com/ekazaev/ChatLayout", from: "1.1.14"),
-        .package(url: "https://github.com/ra1028/DifferenceKit", from: "1.2.0"),
-        .package(url: "https://github.com/apple/swift-protobuf", from: "1.14.0"),
-        .package(url: "https://github.com/google/GoogleSignIn-iOS", from: "6.1.0"),
-        .package(url: "https://github.com/dropbox/SwiftyDropbox.git", from: "8.2.1"),
-        .package(url: "https://github.com/amosavian/FileProvider.git", from: "0.26.0"),
-        .package(url: "https://github.com/SwiftyBeaver/SwiftyBeaver.git", from: "1.9.5"),
-        .package(url: "https://github.com/darrarski/ScrollViewController", from: "1.2.0"),
-        .package(url: "https://github.com/pointfreeco/combine-schedulers", from: "0.5.0"),
-        .package(url: "https://github.com/kishikawakatsumi/KeychainAccess", from: "4.2.1"),
-        .package(url: "https://github.com/google/google-api-objectivec-client-for-rest", 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")),
+        .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: [
-                "Keychain",
-                "Voxophone",
-                "Permissions",
-                "ScanFeature",
-                "ChatFeature",
-                "MenuFeature",
-                "PushFeature",
-                "SFTPFeature",
-                "ToastFeature",
-                "CrashService",
-                "BackupFeature",
-                "SearchFeature",
-                "LaunchFeature",
-                "iCloudFeature",
-                "DropboxFeature",
-                "ContactFeature",
-                "RestoreFeature",
-                "ProfileFeature",
-                "CrashReporting",
-                "ChatListFeature",
-                "SettingsFeature",
-                "RequestsFeature",
-                "OnboardingFeature",
-                "GoogleDriveFeature",
-                "ContactListFeature"
-            ]
-        ),
-        .target(name: "CrashReporting"),
-        .target(name: "NetworkMonitor"),
-        .target(name: "VersionChecking"),
-        .target(name: "DependencyInjection"),
-        .target(name: "InputField", dependencies: ["Shared"]),
-        .binaryTarget(name: "Bindings", path: "XCFrameworks/Bindings.xcframework"),
-
-        // MARK: - Permissions
-
-            .target(
-                name: "Permissions",
-                dependencies: [
-                    "Theme",
-                    "Shared",
-                    "DependencyInjection"
-                ]
-            ),
-
-        // MARK: - PushFeature
-
-            .target(
-                name: "PushFeature",
-                dependencies: [
-                    "Models",
-                    "Defaults",
-                    "Integration",
-                    "DependencyInjection"
-                ]
-            ),
-
-        // MARK: - TestHelpers
-
-            .target(
-                name: "TestHelpers",
-                dependencies: [
-                    "Models",
-                    "Presentation"
-                ]
-            ),
-
-        // MARK: - Keychain
-
-            .target(
-                name: "Keychain",
-                dependencies: [
-                    .product(
-                        name: "KeychainAccess",
-                        package: "KeychainAccess"
-                    )
-                ]
-            ),
-
-        // MARK: - Voxophone
-
-            .target(
-                name: "Voxophone",
-                dependencies: [
-                    "Shared"
-                ]
-            ),
-
-        // MARK: - Models
-
-            .target(
-                name: "Models",
-                dependencies: [
-                    .product(
-                        name: "DifferenceKit",
-                        package: "DifferenceKit"
-                    ),
-                    .product(
-                        name: "SwiftProtobuf",
-                        package: "swift-protobuf"
-                    )
-                ]
-            ),
-
-        // MARK: - Defaults
-
-            .target(
-                name: "Defaults",
-                dependencies: [
-                    "DependencyInjection"
-                ]
-            ),
-
-        // MARK: - ToastFeature
-
-            .target(
-                name: "ToastFeature",
-                dependencies: [
-                    "Shared"
-                ]
-            ),
-
-        // MARK: - CrashService
-
-            .target(
-                name: "CrashService",
-                dependencies: [
-                    "CrashReporting",
-                    .product(
-                        name: "FirebaseCrashlytics",
-                        package: "firebase-ios-sdk"
-                    )
-                ]
-            ),
-
-        // MARK: - SFTPFeature
-
-            .target(
-                name: "SFTPFeature",
-                dependencies: [
-                    "HUD",
-                    "Models",
-                    "Shared",
-                    "Keychain",
-                    "InputField",
-                    "Presentation",
-                    "DependencyInjection",
-                    .product(
-                        name: "Shout",
-                        package: "Shout"
-                    )
-                ]
-            ),
-
-        // MARK: - GoogleDriveFeature
-
-            .target(
-                name: "GoogleDriveFeature",
-                dependencies: [
-                    .product(
-                        name: "GoogleSignIn",
-                        package: "GoogleSignIn-iOS"
-                    ),
-                    .product(
-                        name: "GoogleAPIClientForREST_Drive",
-                        package: "google-api-objectivec-client-for-rest"
-                    )
-                ],
-                resources: [.process("Resources")]
-            ),
-
-        // MARK: - iCloudFeature
-
-            .target(
-                name: "iCloudFeature",
-                dependencies: [
-                    .product(
-                        name: "FilesProvider",
-                        package: "FileProvider"
-                    )
-                ]
-            ),
-
-        // MARK: - DropboxFeature
-
-            .target(
-                name: "DropboxFeature",
-                dependencies: [
-                    .product(
-                        name: "SwiftyDropbox",
-                        package: "SwiftyDropbox"
-                    )
-                ],
-                resources: [.process("Resources")]
-            ),
-
-        // MARK: - Countries
-
-            .target(
-                name: "Countries",
-                dependencies: [
-                    "Theme",
-                    "Shared",
-                    "DependencyInjection"
-                ],
-                resources: [.process("Resources")]
-            ),
-
-        // MARK: - Theme
-
-            .target(
-                name: "Theme",
-                dependencies: [
-                    "Defaults",
-                    "DependencyInjection"
-                ]
-            ),
-
-        // MARK: - DrawerFeature
-
-            .target(
-                name: "DrawerFeature",
-                dependencies: [
-                    "Shared",
-                    "InputField",
-                    .product(
-                        name: "ScrollViewController",
-                        package: "ScrollViewController"
-                    )
-                ]
-            ),
-
-        // MARK: - HUD
-
-            .target(
-                name: "HUD",
-                dependencies: [
-                    "Theme",
-                    "Shared",
-                    .product(
-                        name: "SnapKit",
-                        package: "SnapKit"
-                    )
-                ]
-            ),
-
-        // MARK: - XXLogger
-
-            .target(
-                name: "XXLogger",
-                dependencies: [
-                    .product(
-                        name: "SwiftyBeaver",
-                        package: "SwiftyBeaver"
-                    )
-                ]
-            ),
-
-        // MARK: - Shared
-
-            .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")]
-            ),
-
-        // MARK: - Integration
-
-            .target(
-                name: "Integration",
-                dependencies: [
-                    "Shared",
-                    "Bindings",
-                    "XXLogger",
-                    "Keychain",
-                    "ToastFeature",
-                    "BackupFeature",
-                    "CrashReporting",
-                    "NetworkMonitor",
-                    "DependencyInjection",
-                    .product(
-                        name: "Retry",
-                        package: "Retry"
-                    ),
-                    .product(
-                        name: "XXDatabase",
-                        package: "client-ios-db"
-                    ),
-                    .product(
-                        name: "XXLegacyDatabaseMigrator",
-                        package: "client-ios-db"
-                    )
-                ],
-                resources: [.process("Resources")]
-            ),
-
-        // MARK: - Presentation
-
-            .target(
-                name: "Presentation",
-                dependencies: [
-                    "Theme",
-                    "Shared",
-                    .product(
-                        name: "SnapKit",
-                        package: "SnapKit"
-                    )
-                ]
-            ),
-
-        // MARK: - ChatInputFeature
-
-            .target(
-                name: "ChatInputFeature",
-                dependencies: [
-                    "Voxophone",
-                    .product(
-                        name: "ComposableArchitecture",
-                        package: "swift-composable-architecture"
-                    )
-                ]
-            ),
-
-        // MARK: - RestoreFeature
-
-            .target(
-                name: "RestoreFeature",
-                dependencies: [
-                    "HUD",
-                    "Shared",
-                    "SFTPFeature",
-                    "Integration",
-                    "Presentation",
-                    "iCloudFeature",
-                    "DropboxFeature",
-                    "GoogleDriveFeature",
-                    "DependencyInjection"
-                ]
-            ),
-
-        // MARK: - ContactFeature
-
-            .target(
-                name: "ContactFeature",
-                dependencies: [
-                    "Shared",
-                    "InputField",
-                    "ChatFeature",
-                    "Presentation",
-                    .product(
-                        name: "CombineSchedulers",
-                        package: "combine-schedulers"
-                    ),
-                    .product(
-                        name: "ScrollViewController",
-                        package: "ScrollViewController"
-                    )
-                ]
-            ),
-
-        // MARK: - ChatFeature
-
-            .target(
-                name: "ChatFeature",
-                dependencies: [
-                    "HUD",
-                    "Theme",
-                    "Shared",
-                    "Defaults",
-                    "Keychain",
-                    "Voxophone",
-                    "Integration",
-                    "Permissions",
-                    "Presentation",
-                    "DrawerFeature",
-                    "ChatInputFeature",
-                    "DependencyInjection",
-                    .product(
-                        name: "ChatLayout",
-                        package: "ChatLayout"
-                    ),
-                    .product(
-                        name: "DifferenceKit",
-                        package: "DifferenceKit"
-                    ),
-                    .product(
-                        name: "ScrollViewController",
-                        package: "ScrollViewController"
-                    )
-                ]
-            ),
-
-        // MARK: - SearchFeature
-
-            .target(
-                name: "SearchFeature",
-                dependencies: [
-                    "HUD",
-                    "Shared",
-                    "Countries",
-                    "Integration",
-                    "Presentation",
-                    "ContactFeature",
-                    "DependencyInjection"
-                ]
-            ),
-
-        // MARK: - LaunchFeature
-
-            .target(
-                name: "LaunchFeature",
-                dependencies: [
-                    "HUD",
-                    "Theme",
-                    "Shared",
-                    "Defaults",
-                    "PushFeature",
-                    "Integration",
-                    "Permissions",
-                    "DropboxFeature",
-                    "VersionChecking",
-                    "DependencyInjection"
-                ]
-            ),
-
-        // MARK: - RequestsFeature
-
-            .target(
-                name: "RequestsFeature",
-                dependencies: [
-                    "Theme",
-                    "Shared",
-                    "Integration",
-                    "ToastFeature",
-                    "ContactFeature",
-                    "DependencyInjection",
-                    .product(
-                        name: "DifferenceKit",
-                        package: "DifferenceKit"
-                    )
-                ]
-            ),
-
-        // MARK: - ProfileFeature
-
-            .target(
-                name: "ProfileFeature",
-                dependencies: [
-                    "HUD",
-                    "Theme",
-                    "Shared",
-                    "Keychain",
-                    "Defaults",
-                    "Countries",
-                    "InputField",
-                    "MenuFeature",
-                    "Permissions",
-                    "Integration",
-                    "Presentation",
-                    "DrawerFeature",
-                    "DependencyInjection",
-                    .product(
-                        name: "CombineSchedulers",
-                        package: "combine-schedulers"
-                    ),
-                    .product(
-                        name: "ScrollViewController",
-                        package: "ScrollViewController"
-                    )
-                ]
-            ),
-
-        // MARK: - ChatListFeature
-
-            .target(
-                name: "ChatListFeature",
-                dependencies: [
-                    "Theme",
-                    "Shared",
-                    "Defaults",
-                    "MenuFeature",
-                    "ChatFeature",
-                    "ProfileFeature",
-                    "SettingsFeature",
-                    "ContactListFeature",
-                    "DependencyInjection",
-                    .product(
-                        name: "DifferenceKit",
-                        package: "DifferenceKit"
-                    )
-                ]
-            ),
-
-        // MARK: - OnboardingFeature
-
-            .target(
-                name: "OnboardingFeature",
-                dependencies: [
-                    "HUD",
-                    "Shared",
-                    "Defaults",
-                    "Keychain",
-                    "Countries",
-                    "InputField",
-                    "Permissions",
-                    "PushFeature",
-                    "Integration",
-                    "Presentation",
-                    "DrawerFeature",
-                    "VersionChecking",
-                    "DependencyInjection",
-                    .product(
-                        name: "CombineSchedulers",
-                        package: "combine-schedulers"
-                    ),
-                    .product(
-                        name: "ScrollViewController",
-                        package: "ScrollViewController"
-                    )
-                ]
-            ),
-
-        // MARK: - MenuFeature
-
-            .target(
-                name: "MenuFeature",
-                dependencies: [
-                    "Theme",
-                    "Shared",
-                    "Defaults",
-                    "Integration",
-                    "Presentation",
-                    "DependencyInjection"
-                ]
-            ),
-
-        // MARK: - BackupFeature
-
-            .target(
-                name: "BackupFeature",
-                dependencies: [
-                    "HUD",
-                    "Shared",
-                    "Models",
-                    "InputField",
-                    "SFTPFeature",
-                    "Presentation",
-                    "iCloudFeature",
-                    "DrawerFeature",
-                    "DropboxFeature",
-                    "GoogleDriveFeature",
-                    "DependencyInjection"
-                ]
-            ),
-
-        // MARK: - ScanFeature
-
-            .target(
-                name: "ScanFeature",
-                dependencies: [
-                    "Theme",
-                    "Shared",
-                    "Countries",
-                    "Permissions",
-                    "Integration",
-                    "Presentation",
-                    "ContactFeature",
-                    "DependencyInjection",
-                    .product(
-                        name: "SnapKit",
-                        package: "SnapKit"
-                    )
-                ]
-            ),
-
-        // MARK: - ContactListFeature
-
-            .target(
-                name: "ContactListFeature",
-                dependencies: [
-                    "Theme",
-                    "Shared",
-                    "Integration",
-                    "Presentation",
-                    "ContactFeature",
-                    "DependencyInjection",
-                    .product(
-                        name: "DifferenceKit",
-                        package: "DifferenceKit"
-                    )
-                ]
-            ),
-
-        // MARK: - SettingsFeature
-
-            .target(
-                name: "SettingsFeature",
-                dependencies: [
-                    "HUD",
-                    "Theme",
-                    "Shared",
-                    "Defaults",
-                    "Keychain",
-                    "InputField",
-                    "PushFeature",
-                    "Permissions",
-                    "MenuFeature",
-                    "Integration",
-                    "Presentation",
-                    "DrawerFeature",
-                    "DependencyInjection",
-                    .product(
-                        name: "CombineSchedulers",
-                        package: "combine-schedulers"
-                    ),
-                    .product(
-                        name: "ScrollViewController",
-                        package: "ScrollViewController"
-                    )
-                ]
-            ),
-
-        // MARK: - DependencyInjectionTests
-
-            .testTarget(
-                name: "DependencyInjectionTests",
-                dependencies: ["DependencyInjection"]
-            ),
-
-        // MARK: - AppTests
-
-            .testTarget(
-                name: "AppTests",
-                dependencies: ["App"]
-            ),
-
-        // MARK: - ProfileFeatureTests
-
-            .testTarget(
-                name: "ProfileFeatureTests",
-                dependencies: [
-                    "TestHelpers",
-                    "ProfileFeature",
-                    .product(name: "Quick", package: "Quick"),
-                    .product(name: "Nimble", package: "Nimble")
-                ]
-            ),
-
-        // MARK: - ContactFeatureTests
-
-            .testTarget(
-                name: "ContactFeatureTests",
-                dependencies: [
-                    "TestHelpers",
-                    "ContactFeature",
-                    .product(name: "Quick", package: "Quick"),
-                    .product(name: "Nimble", package: "Nimble")
-                ]
-            ),
-
-        // MARK: - SearchFeatureTests
-
-            .testTarget(
-                name: "SearchFeatureTests",
-                dependencies: [
-                    "TestHelpers",
-                    "SearchFeature",
-                    .product(name: "Quick", package: "Quick"),
-                    .product(name: "Nimble", package: "Nimble")
-                ]
-            ),
-
-        // MARK: - RequestsFeatureTests
-
-            .testTarget(
-                name: "RequestsFeatureTests",
-                dependencies: [
-                    "TestHelpers",
-                    "RequestsFeature",
-                    .product(name: "Quick", package: "Quick"),
-                    .product(name: "Nimble", package: "Nimble")
-                ]
-            ),
-
-        // MARK: - SettingsFeatureTests
-
-            .testTarget(
-                name: "SettingsFeatureTests",
-                dependencies: [
-                    "TestHelpers",
-                    "SettingsFeature",
-                    .product(name: "Quick", package: "Quick"),
-                    .product(name: "Nimble", package: "Nimble")
-                ]
-            ),
-
-        // MARK: - SettingsFeatureTests
-
-            .testTarget(
-                name: "ChatListFeatureTests",
-                dependencies: [
-                    "TestHelpers",
-                    "ChatListFeature",
-                    .product(name: "Quick", package: "Quick"),
-                    .product(name: "Nimble", package: "Nimble")
-                ]
-            ),
-
-        // MARK: - ContactListFeatureTests
-
-            .testTarget(
-                name: "ContactListFeatureTests",
-                dependencies: [
-                    "TestHelpers",
-                    "ContactListFeature",
-                    .product(name: "Quick", package: "Quick"),
-                    .product(name: "Nimble", package: "Nimble")
-                ]
-            ),
-
-        // MARK: - OnboardingFeatureTests
-
-            .testTarget(
-                name: "OnboardingFeatureTests",
-                dependencies: [
-                    "TestHelpers",
-                    "OnboardingFeature",
-                    .product(name: "Quick", package: "Quick"),
-                    .product(name: "Nimble", package: "Nimble")
-                ]
-            ),
-
-        // MARK: - PresentationTests
-
-            .testTarget(
-                name: "PresentationTests",
-                dependencies: [
-                    "Presentation",
-                    .product(name: "Quick", package: "Quick"),
-                    .product(name: "Nimble", package: "Nimble")
-                ]
-            ),
-
-        // MARK: - ThemeTests
-
-            .testTarget(
-                name: "ThemeTests",
-                dependencies: [
-                    "Theme",
-                    .product(name: "Quick", package: "Quick"),
-                    .product(name: "Nimble", package: "Nimble")
-                ]
-            ),
-
-        // MARK: - ChatFeatureTests
-
-            .testTarget(
-                name: "ChatFeatureTests",
-                dependencies: [
-                    "ChatFeature",
-                    "TestHelpers",
-                    .product(name: "Quick", package: "Quick"),
-                    .product(name: "Nimble", package: "Nimble")
-                ]
-            ),
-
-        // MARK: - ScanFeatureTests
-
-            .testTarget(
-                name: "ScanFeatureTests",
-                dependencies: [
-                    "TestHelpers",
-                    "ScanFeature",
-                    .product(name: "Quick", package: "Quick"),
-                    .product(name: "Nimble", package: "Nimble")
-                ]
-            ),
-
-        // MARK: - CollectionView
-
-            .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"),
-                ]
-            ),
+                .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"),
+            ]
+        ),
     ]
 )
-- 
GitLab