diff --git a/.swiftlint.yml b/.swiftlint.yml
index 5edb94ee..ed64d074 100644
--- a/.swiftlint.yml
+++ b/.swiftlint.yml
@@ -5,6 +5,8 @@ included:
analyzer_rules:
- unused_declaration
- unused_import
+opt_in_rules:
+ - sorted_imports
disabled_rules:
- cyclomatic_complexity
- file_length
diff --git a/Passepartout/App/AppDelegate.swift b/Passepartout/App/AppDelegate.swift
index 5f9e3597..81b82f2c 100644
--- a/Passepartout/App/AppDelegate.swift
+++ b/Passepartout/App/AppDelegate.swift
@@ -24,8 +24,8 @@
//
import Foundation
-import UIKit
import PassepartoutLibrary
+import UIKit
class AppDelegate: UIResponder, UIApplicationDelegate, ObservableObject {
private let mac = MacBundle.shared
diff --git a/Passepartout/App/Constants/Constants+App.swift b/Passepartout/App/Constants/Constants+App.swift
index a6bcc540..4d3112e8 100644
--- a/Passepartout/App/Constants/Constants+App.swift
+++ b/Passepartout/App/Constants/Constants+App.swift
@@ -24,8 +24,8 @@
//
import Foundation
-import UniformTypeIdentifiers
import SwiftyBeaver
+import UniformTypeIdentifiers
extension Constants {
enum App {
diff --git a/Passepartout/App/Constants/Theme.swift b/Passepartout/App/Constants/Theme.swift
index e30d281c..3878fbd7 100644
--- a/Passepartout/App/Constants/Theme.swift
+++ b/Passepartout/App/Constants/Theme.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
-import PassepartoutLibrary
import LocalAuthentication
+import PassepartoutLibrary
+import SwiftUI
extension View {
var themeIdiom: UIUserInterfaceIdiom {
diff --git a/Passepartout/App/Context/AppContext.swift b/Passepartout/App/Context/AppContext.swift
index 3aa58b02..e8c51f72 100644
--- a/Passepartout/App/Context/AppContext.swift
+++ b/Passepartout/App/Context/AppContext.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
import PassepartoutLibrary
@MainActor
diff --git a/Passepartout/App/InApp/LocalProduct.swift b/Passepartout/App/InApp/LocalProduct.swift
index 226d1e5e..751bd2b0 100644
--- a/Passepartout/App/InApp/LocalProduct.swift
+++ b/Passepartout/App/InApp/LocalProduct.swift
@@ -24,8 +24,8 @@
//
import Foundation
-import StoreKit
import PassepartoutLibrary
+import StoreKit
struct LocalProduct: RawRepresentable, Equatable, Hashable {
private static let bundleSubdomain = "ios"
diff --git a/Passepartout/App/InApp/ProductManager.swift b/Passepartout/App/InApp/ProductManager.swift
index 699b1336..0c95b7ac 100644
--- a/Passepartout/App/InApp/ProductManager.swift
+++ b/Passepartout/App/InApp/ProductManager.swift
@@ -23,11 +23,11 @@
// along with Passepartout. If not, see .
//
+import Combine
import Foundation
+import Kvitto
import PassepartoutLibrary
import StoreKit
-import Kvitto
-import Combine
enum ProductError: Error {
case uneligible
diff --git a/Passepartout/App/Intents/IntentsManager.swift b/Passepartout/App/Intents/IntentsManager.swift
index 97decaa4..7a685562 100644
--- a/Passepartout/App/Intents/IntentsManager.swift
+++ b/Passepartout/App/Intents/IntentsManager.swift
@@ -23,10 +23,10 @@
// along with Passepartout. If not, see .
//
+import Combine
import Foundation
import Intents
import IntentsUI
-import Combine
import PassepartoutLibrary
@MainActor
diff --git a/Passepartout/App/Mac/Models/DefaultLightProfileManager.swift b/Passepartout/App/Mac/Models/DefaultLightProfileManager.swift
index fb8c56bd..68addfd8 100644
--- a/Passepartout/App/Mac/Models/DefaultLightProfileManager.swift
+++ b/Passepartout/App/Mac/Models/DefaultLightProfileManager.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
+import Combine
import Foundation
import PassepartoutLibrary
-import Combine
class DefaultLightProfile: LightProfile {
let id: UUID
diff --git a/Passepartout/App/Mac/Models/DefaultLightProviderManager.swift b/Passepartout/App/Mac/Models/DefaultLightProviderManager.swift
index 799163ab..1e920d34 100644
--- a/Passepartout/App/Mac/Models/DefaultLightProviderManager.swift
+++ b/Passepartout/App/Mac/Models/DefaultLightProviderManager.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
import PassepartoutLibrary
class DefaultLightProviderCategory: LightProviderCategory {
diff --git a/Passepartout/App/Mac/Models/DefaultLightVPNManager.swift b/Passepartout/App/Mac/Models/DefaultLightVPNManager.swift
index 3fb9dacf..516d6508 100644
--- a/Passepartout/App/Mac/Models/DefaultLightVPNManager.swift
+++ b/Passepartout/App/Mac/Models/DefaultLightVPNManager.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
+import Combine
import Foundation
import PassepartoutLibrary
-import Combine
class DefaultLightVPNManager: LightVPNManager {
private let vpnManager = VPNManager.shared
diff --git a/Passepartout/App/PassepartoutApp.swift b/Passepartout/App/PassepartoutApp.swift
index db0865a5..3ed1197a 100644
--- a/Passepartout/App/PassepartoutApp.swift
+++ b/Passepartout/App/PassepartoutApp.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
@main
struct PassepartoutApp: App {
diff --git a/Passepartout/App/Reusable/ActivityView.swift b/Passepartout/App/Reusable/ActivityView.swift
index d8568765..e6531c25 100644
--- a/Passepartout/App/Reusable/ActivityView.swift
+++ b/Passepartout/App/Reusable/ActivityView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import UIKit
import SwiftUI
+import UIKit
struct ActivityView: UIViewControllerRepresentable {
let activityItems: [Any]
diff --git a/Passepartout/App/Reusable/IntentAddView.swift b/Passepartout/App/Reusable/IntentAddView.swift
index 3663abb1..e4765c85 100644
--- a/Passepartout/App/Reusable/IntentAddView.swift
+++ b/Passepartout/App/Reusable/IntentAddView.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import Intents
import IntentsUI
+import SwiftUI
struct IntentAddView: UIViewControllerRepresentable {
let shortcut: INShortcut
diff --git a/Passepartout/App/Reusable/IntentEditView.swift b/Passepartout/App/Reusable/IntentEditView.swift
index ee37d015..94a03b79 100644
--- a/Passepartout/App/Reusable/IntentEditView.swift
+++ b/Passepartout/App/Reusable/IntentEditView.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import Intents
import IntentsUI
+import SwiftUI
struct IntentEditView: UIViewControllerRepresentable {
let shortcut: Shortcut
diff --git a/Passepartout/App/Reusable/MailComposerView.swift b/Passepartout/App/Reusable/MailComposerView.swift
index 69602167..e40707b2 100644
--- a/Passepartout/App/Reusable/MailComposerView.swift
+++ b/Passepartout/App/Reusable/MailComposerView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import MessageUI
+import SwiftUI
struct MailComposerView: UIViewControllerRepresentable {
class Coordinator: NSObject, MFMailComposeViewControllerDelegate {
diff --git a/Passepartout/App/Reusable/Reviewer.swift b/Passepartout/App/Reusable/Reviewer.swift
index 7a5a0384..3f3d55db 100644
--- a/Passepartout/App/Reusable/Reviewer.swift
+++ b/Passepartout/App/Reusable/Reviewer.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import UIKit
import StoreKit
+import UIKit
public class Reviewer: ObservableObject {
private struct Keys {
diff --git a/Passepartout/App/Reusable/Validators.swift b/Passepartout/App/Reusable/Validators.swift
index a1d4f5ad..c3329cb4 100644
--- a/Passepartout/App/Reusable/Validators.swift
+++ b/Passepartout/App/Reusable/Validators.swift
@@ -61,13 +61,12 @@ struct Validators {
var sin = sockaddr_in()
var sin6 = sockaddr_in6()
- if string.withCString({ cstring in inet_pton(AF_INET6, cstring, &sin6.sin6_addr) }) == 1 {
- return
+ guard string.withCString({ cstring in inet_pton(AF_INET6, cstring, &sin6.sin6_addr) }) == 1 else {
+ throw ValidationError.ipAddress
}
if string.withCString({ cstring in inet_pton(AF_INET, cstring, &sin.sin_addr) }) == 1 {
- return
+ throw ValidationError.ipAddress
}
- throw ValidationError.ipAddress
}
static func domainName(_ string: String) throws {
diff --git a/Passepartout/App/SceneDelegate+Shortcuts.swift b/Passepartout/App/SceneDelegate+Shortcuts.swift
index eb45011f..9f72156b 100644
--- a/Passepartout/App/SceneDelegate+Shortcuts.swift
+++ b/Passepartout/App/SceneDelegate+Shortcuts.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
enum ShortcutType: String {
case enableVPN
diff --git a/Passepartout/App/SceneDelegate.swift b/Passepartout/App/SceneDelegate.swift
index 2e0d1e74..f1a9e2ba 100644
--- a/Passepartout/App/SceneDelegate.swift
+++ b/Passepartout/App/SceneDelegate.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
func sceneDidEnterBackground(_ scene: UIScene) {
diff --git a/Passepartout/App/Views/AboutView.swift b/Passepartout/App/Views/AboutView.swift
index 47250afc..f9798da3 100644
--- a/Passepartout/App/Views/AboutView.swift
+++ b/Passepartout/App/Views/AboutView.swift
@@ -73,7 +73,7 @@ struct AboutView: View {
private var supportSection: some View {
Section {
Button(L10n.About.Items.JoinCommunity.caption) {
- URL.openURL(redditURL)
+ URL.open(redditURL)
}
Button(L10n.About.Items.ShareTwitter.caption, action: shareOnTwitter)
Button(L10n.About.Items.WriteReview.caption, action: submitReview)
@@ -85,16 +85,16 @@ struct AboutView: View {
private var webSection: some View {
Section {
Button(L10n.About.Items.Website.caption) {
- URL.openURL(homeURL)
+ URL.open(homeURL)
}
Button(Unlocalized.About.faq) {
- URL.openURL(faqURL)
+ URL.open(faqURL)
}
Button(L10n.About.Items.Disclaimer.caption) {
- URL.openURL(disclaimerURL)
+ URL.open(disclaimerURL)
}
Button(L10n.About.Items.PrivacyPolicy.caption) {
- URL.openURL(privacyURL)
+ URL.open(privacyURL)
}
} header: {
Text(L10n.About.Sections.Web.header)
@@ -104,10 +104,10 @@ struct AboutView: View {
private var githubSection: some View {
Section {
Button(Unlocalized.About.readme) {
- URL.openURL(readmeURL)
+ URL.open(readmeURL)
}
Button(Unlocalized.About.changelog) {
- URL.openURL(changelogURL)
+ URL.open(changelogURL)
}
} header: {
Text(Unlocalized.About.github)
@@ -118,11 +118,11 @@ struct AboutView: View {
extension AboutView {
private func shareOnTwitter() {
let url = Unlocalized.Social.twitterIntent(withMessage: shareMessage)
- URL.openURL(url)
+ URL.open(url)
}
private func submitReview() {
let reviewURL = Reviewer.urlForReview(withAppId: Constants.App.appStoreId)
- URL.openURL(reviewURL)
+ URL.open(reviewURL)
}
}
diff --git a/Passepartout/App/Views/AccountView.swift b/Passepartout/App/Views/AccountView.swift
index 0cc13d39..ef822fdf 100644
--- a/Passepartout/App/Views/AccountView.swift
+++ b/Passepartout/App/Views/AccountView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct AccountView: View {
@ObservedObject private var providerManager: ProviderManager
@@ -116,7 +116,7 @@ struct AccountView: View {
}
private func openGuidanceURL(_ url: URL) {
- URL.openURL(url)
+ URL.open(url)
}
}
diff --git a/Passepartout/App/Views/AddHostView+Name.swift b/Passepartout/App/Views/AddHostView+Name.swift
index 79cc68bc..df79ba5a 100644
--- a/Passepartout/App/Views/AddHostView+Name.swift
+++ b/Passepartout/App/Views/AddHostView+Name.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
import TunnelKitOpenVPN
import TunnelKitWireGuard
diff --git a/Passepartout/App/Views/AddProfileMenu.swift b/Passepartout/App/Views/AddProfileMenu.swift
index 4bfc5ecd..459a243d 100644
--- a/Passepartout/App/Views/AddProfileMenu.swift
+++ b/Passepartout/App/Views/AddProfileMenu.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct AddProfileMenu: View {
enum ModalType: Identifiable {
diff --git a/Passepartout/App/Views/AddProfileView.swift b/Passepartout/App/Views/AddProfileView.swift
index b8fa4de4..c1f5abf2 100644
--- a/Passepartout/App/Views/AddProfileView.swift
+++ b/Passepartout/App/Views/AddProfileView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
enum AddProfileView {
struct Bindings {
diff --git a/Passepartout/App/Views/AddProviderView+Name.swift b/Passepartout/App/Views/AddProviderView+Name.swift
index 238c4ad8..d7704d81 100644
--- a/Passepartout/App/Views/AddProviderView+Name.swift
+++ b/Passepartout/App/Views/AddProviderView+Name.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
extension AddProviderView {
struct NameView: View {
diff --git a/Passepartout/App/Views/AddProviderView.swift b/Passepartout/App/Views/AddProviderView.swift
index 30ce06b8..7f48a1ac 100644
--- a/Passepartout/App/Views/AddProviderView.swift
+++ b/Passepartout/App/Views/AddProviderView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct AddProviderView: View {
@ObservedObject private var providerManager: ProviderManager
diff --git a/Passepartout/App/Views/DebugLogView.swift b/Passepartout/App/Views/DebugLogView.swift
index 4f2a3d29..46faa0ff 100644
--- a/Passepartout/App/Views/DebugLogView.swift
+++ b/Passepartout/App/Views/DebugLogView.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import Combine
import PassepartoutLibrary
+import SwiftUI
struct DebugLogView: View {
private let title: String
diff --git a/Passepartout/App/Views/DiagnosticsView+OpenVPN.swift b/Passepartout/App/Views/DiagnosticsView+OpenVPN.swift
index 5cb477ed..ccaeea96 100644
--- a/Passepartout/App/Views/DiagnosticsView+OpenVPN.swift
+++ b/Passepartout/App/Views/DiagnosticsView+OpenVPN.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
import TunnelKitOpenVPN
extension DiagnosticsView {
@@ -178,7 +178,7 @@ extension DiagnosticsView.OpenVPNView {
guard let url = URL.mailto(to: V.recipient, subject: V.subject, body: body) else {
return
}
- guard URL.openURL(url) else {
+ guard URL.open(url) else {
alertType = .emailNotConfigured
return
}
diff --git a/Passepartout/App/Views/DiagnosticsView+WireGuard.swift b/Passepartout/App/Views/DiagnosticsView+WireGuard.swift
index 7d48c552..e9c5b6ae 100644
--- a/Passepartout/App/Views/DiagnosticsView+WireGuard.swift
+++ b/Passepartout/App/Views/DiagnosticsView+WireGuard.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
import TunnelKitWireGuard
extension DiagnosticsView {
diff --git a/Passepartout/App/Views/DiagnosticsView.swift b/Passepartout/App/Views/DiagnosticsView.swift
index f661b022..83c436e8 100644
--- a/Passepartout/App/Views/DiagnosticsView.swift
+++ b/Passepartout/App/Views/DiagnosticsView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct DiagnosticsView: View {
let vpnProtocol: VPNProtocolType
diff --git a/Passepartout/App/Views/DonateView.swift b/Passepartout/App/Views/DonateView.swift
index 6a1e454e..acff2933 100644
--- a/Passepartout/App/Views/DonateView.swift
+++ b/Passepartout/App/Views/DonateView.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
-import StoreKit
import PassepartoutLibrary
+import StoreKit
+import SwiftUI
struct DonateView: View {
enum AlertType: Identifiable {
diff --git a/Passepartout/App/Views/EndpointAdvancedView+OpenVPN.swift b/Passepartout/App/Views/EndpointAdvancedView+OpenVPN.swift
index 8e6fb632..e4c5ebcd 100644
--- a/Passepartout/App/Views/EndpointAdvancedView+OpenVPN.swift
+++ b/Passepartout/App/Views/EndpointAdvancedView+OpenVPN.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
+import PassepartoutLibrary
import SwiftUI
import TunnelKitOpenVPN
-import PassepartoutLibrary
extension EndpointAdvancedView {
struct OpenVPNView: View {
diff --git a/Passepartout/App/Views/EndpointView+OpenVPN.swift b/Passepartout/App/Views/EndpointView+OpenVPN.swift
index 13e7ddb9..983ab461 100644
--- a/Passepartout/App/Views/EndpointView+OpenVPN.swift
+++ b/Passepartout/App/Views/EndpointView+OpenVPN.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
import TunnelKitOpenVPN
extension EndpointView {
diff --git a/Passepartout/App/Views/EndpointView+WireGuard.swift b/Passepartout/App/Views/EndpointView+WireGuard.swift
index e5cf50a7..1cf1196d 100644
--- a/Passepartout/App/Views/EndpointView+WireGuard.swift
+++ b/Passepartout/App/Views/EndpointView+WireGuard.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
import TunnelKitWireGuard
extension EndpointView {
diff --git a/Passepartout/App/Views/EndpointView.swift b/Passepartout/App/Views/EndpointView.swift
index a2400a01..3e8d95cf 100644
--- a/Passepartout/App/Views/EndpointView.swift
+++ b/Passepartout/App/Views/EndpointView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct EndpointView: View {
@ObservedObject private var currentProfile: ObservableProfile
diff --git a/Passepartout/App/Views/InteractiveConnectionView.swift b/Passepartout/App/Views/InteractiveConnectionView.swift
index 7c60e1bc..daf16427 100644
--- a/Passepartout/App/Views/InteractiveConnectionView.swift
+++ b/Passepartout/App/Views/InteractiveConnectionView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct InteractiveConnectionView: View {
@Environment(\.presentationMode) private var presentationMode
diff --git a/Passepartout/App/Views/NetworkSettingsView.swift b/Passepartout/App/Views/NetworkSettingsView.swift
index 6c80541a..d70a0ade 100644
--- a/Passepartout/App/Views/NetworkSettingsView.swift
+++ b/Passepartout/App/Views/NetworkSettingsView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct NetworkSettingsView: View {
@ObservedObject private var currentProfile: ObservableProfile
diff --git a/Passepartout/App/Views/OnDemandView+SSID.swift b/Passepartout/App/Views/OnDemandView+SSID.swift
index 2b72d893..8514b9eb 100644
--- a/Passepartout/App/Views/OnDemandView+SSID.swift
+++ b/Passepartout/App/Views/OnDemandView+SSID.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
extension OnDemandView {
struct SSIDList: View {
diff --git a/Passepartout/App/Views/OnDemandView.swift b/Passepartout/App/Views/OnDemandView.swift
index 6ae8706c..b23b995d 100644
--- a/Passepartout/App/Views/OnDemandView.swift
+++ b/Passepartout/App/Views/OnDemandView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct OnDemandView: View {
@ObservedObject private var productManager: ProductManager
diff --git a/Passepartout/App/Views/OrganizerView+ProfileRow.swift b/Passepartout/App/Views/OrganizerView+ProfileRow.swift
index 712ddab3..6d8579d9 100644
--- a/Passepartout/App/Views/OrganizerView+ProfileRow.swift
+++ b/Passepartout/App/Views/OrganizerView+ProfileRow.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
extension OrganizerView {
struct ProfileRow: View {
diff --git a/Passepartout/App/Views/OrganizerView+Profiles.swift b/Passepartout/App/Views/OrganizerView+Profiles.swift
index 950ccae2..6b42e705 100644
--- a/Passepartout/App/Views/OrganizerView+Profiles.swift
+++ b/Passepartout/App/Views/OrganizerView+Profiles.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
extension OrganizerView {
struct ProfilesList: View {
diff --git a/Passepartout/App/Views/OrganizerView+Scene.swift b/Passepartout/App/Views/OrganizerView+Scene.swift
index 19f64504..b0a754bb 100644
--- a/Passepartout/App/Views/OrganizerView+Scene.swift
+++ b/Passepartout/App/Views/OrganizerView+Scene.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
extension OrganizerView {
struct SceneView: View {
diff --git a/Passepartout/App/Views/OrganizerView.swift b/Passepartout/App/Views/OrganizerView.swift
index 2dfe51e4..b61b5ec7 100644
--- a/Passepartout/App/Views/OrganizerView.swift
+++ b/Passepartout/App/Views/OrganizerView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct OrganizerView: View {
enum ModalType: Identifiable {
@@ -151,7 +151,7 @@ extension OrganizerView {
message: Text(L10n.Organizer.Alerts.Reddit.message),
primaryButton: .default(Text(L10n.Organizer.Alerts.Reddit.Buttons.subscribe)) {
didHandleSubreddit = true
- URL.openURL(redditURL)
+ URL.open(redditURL)
},
secondaryButton: .cancel(Text(L10n.Global.Alerts.Buttons.never)) {
didHandleSubreddit = true
diff --git a/Passepartout/App/Views/PaywallView+Purchase.swift b/Passepartout/App/Views/PaywallView+Purchase.swift
index 86fb0f05..e13f4984 100644
--- a/Passepartout/App/Views/PaywallView+Purchase.swift
+++ b/Passepartout/App/Views/PaywallView+Purchase.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
-import StoreKit
import PassepartoutLibrary
+import StoreKit
+import SwiftUI
extension PaywallView {
struct PurchaseView: View {
diff --git a/Passepartout/App/Views/ProfileView+Configuration.swift b/Passepartout/App/Views/ProfileView+Configuration.swift
index 331f4c90..fa63981e 100644
--- a/Passepartout/App/Views/ProfileView+Configuration.swift
+++ b/Passepartout/App/Views/ProfileView+Configuration.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
extension ProfileView {
struct ConfigurationSection: View {
diff --git a/Passepartout/App/Views/ProfileView+Diagnostics.swift b/Passepartout/App/Views/ProfileView+Diagnostics.swift
index 128045e7..cdcb8537 100644
--- a/Passepartout/App/Views/ProfileView+Diagnostics.swift
+++ b/Passepartout/App/Views/ProfileView+Diagnostics.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
extension ProfileView {
struct DiagnosticsSection: View {
diff --git a/Passepartout/App/Views/ProfileView+Extra.swift b/Passepartout/App/Views/ProfileView+Extra.swift
index 18346f06..e4976a70 100644
--- a/Passepartout/App/Views/ProfileView+Extra.swift
+++ b/Passepartout/App/Views/ProfileView+Extra.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
extension ProfileView {
struct ExtraSection: View {
diff --git a/Passepartout/App/Views/ProfileView+MainMenu.swift b/Passepartout/App/Views/ProfileView+MainMenu.swift
index 8a3d3723..8123322d 100644
--- a/Passepartout/App/Views/ProfileView+MainMenu.swift
+++ b/Passepartout/App/Views/ProfileView+MainMenu.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
extension ProfileView {
struct MainMenu: View {
diff --git a/Passepartout/App/Views/ProfileView+Provider.swift b/Passepartout/App/Views/ProfileView+Provider.swift
index 22b15909..224282de 100644
--- a/Passepartout/App/Views/ProfileView+Provider.swift
+++ b/Passepartout/App/Views/ProfileView+Provider.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
extension ProfileView {
struct ProviderSection: View, ProviderProfileAvailability {
diff --git a/Passepartout/App/Views/ProfileView+Rename.swift b/Passepartout/App/Views/ProfileView+Rename.swift
index 70f8dcc1..26e0eec6 100644
--- a/Passepartout/App/Views/ProfileView+Rename.swift
+++ b/Passepartout/App/Views/ProfileView+Rename.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
extension ProfileView {
struct RenameView: View {
diff --git a/Passepartout/App/Views/ProfileView+VPN.swift b/Passepartout/App/Views/ProfileView+VPN.swift
index 4a20b6b1..f3471a9d 100644
--- a/Passepartout/App/Views/ProfileView+VPN.swift
+++ b/Passepartout/App/Views/ProfileView+VPN.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
extension ProfileView {
struct VPNSection: View {
diff --git a/Passepartout/App/Views/ProfileView.swift b/Passepartout/App/Views/ProfileView.swift
index 16e84730..56e265f6 100644
--- a/Passepartout/App/Views/ProfileView.swift
+++ b/Passepartout/App/Views/ProfileView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct ProfileView: View {
enum ModalType: Int, Identifiable {
diff --git a/Passepartout/App/Views/ProviderLocationView.swift b/Passepartout/App/Views/ProviderLocationView.swift
index a33ffc4a..70a2835c 100644
--- a/Passepartout/App/Views/ProviderLocationView.swift
+++ b/Passepartout/App/Views/ProviderLocationView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct ProviderLocationView: View, ProviderProfileAvailability {
@ObservedObject var providerManager: ProviderManager
diff --git a/Passepartout/App/Views/ProviderPresetView.swift b/Passepartout/App/Views/ProviderPresetView.swift
index 400e14e9..8c71bbe6 100644
--- a/Passepartout/App/Views/ProviderPresetView.swift
+++ b/Passepartout/App/Views/ProviderPresetView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct ProviderPresetView: View {
@Environment(\.presentationMode) private var presentationMode
diff --git a/Passepartout/App/Views/ReportIssueView.swift b/Passepartout/App/Views/ReportIssueView.swift
index 83f1453d..0d7aa40c 100644
--- a/Passepartout/App/Views/ReportIssueView.swift
+++ b/Passepartout/App/Views/ReportIssueView.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import MessageUI
import PassepartoutLibrary
+import SwiftUI
struct ReportIssueView: View {
@Binding private var isPresented: Bool
diff --git a/Passepartout/App/Views/SettingsButton.swift b/Passepartout/App/Views/SettingsButton.swift
index b3ff7358..309cab67 100644
--- a/Passepartout/App/Views/SettingsButton.swift
+++ b/Passepartout/App/Views/SettingsButton.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct SettingsButton: View {
@State private var isPresented = false
diff --git a/Passepartout/App/Views/SettingsView.swift b/Passepartout/App/Views/SettingsView.swift
index ab11033f..577f458d 100644
--- a/Passepartout/App/Views/SettingsView.swift
+++ b/Passepartout/App/Views/SettingsView.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct SettingsView: View {
@ObservedObject private var profileManager: ProfileManager
diff --git a/Passepartout/App/Views/ShortcutsView+Add.swift b/Passepartout/App/Views/ShortcutsView+Add.swift
index 5adea811..d39bd05f 100644
--- a/Passepartout/App/Views/ShortcutsView+Add.swift
+++ b/Passepartout/App/Views/ShortcutsView+Add.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import Intents
import PassepartoutLibrary
+import SwiftUI
extension ShortcutsView {
struct AddView: View {
diff --git a/Passepartout/App/Views/ShortcutsView.swift b/Passepartout/App/Views/ShortcutsView.swift
index bb8c60d8..f127f353 100644
--- a/Passepartout/App/Views/ShortcutsView.swift
+++ b/Passepartout/App/Views/ShortcutsView.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import Intents
import PassepartoutLibrary
+import SwiftUI
struct ShortcutsView: View {
enum ModalType: Identifiable {
diff --git a/Passepartout/App/Views/VPNStatusText.swift b/Passepartout/App/Views/VPNStatusText.swift
index 017aad4c..90a453e5 100644
--- a/Passepartout/App/Views/VPNStatusText.swift
+++ b/Passepartout/App/Views/VPNStatusText.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct VPNStatusText: View {
@ObservedObject private var currentVPNState: ObservableVPNState
diff --git a/Passepartout/App/Views/VPNToggle.swift b/Passepartout/App/Views/VPNToggle.swift
index 1fe5f81c..3d8cb08e 100644
--- a/Passepartout/App/Views/VPNToggle.swift
+++ b/Passepartout/App/Views/VPNToggle.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
struct VPNToggle: View {
@ObservedObject private var profileManager: ProfileManager
diff --git a/Passepartout/App/Views/View+Extensions.swift b/Passepartout/App/Views/View+Extensions.swift
index fc6abc24..94d558d5 100644
--- a/Passepartout/App/Views/View+Extensions.swift
+++ b/Passepartout/App/Views/View+Extensions.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import SwiftUI
import PassepartoutLibrary
+import SwiftUI
import SwiftyBeaver
extension View {
diff --git a/Passepartout/AppShared/Context/CoreContext.swift b/Passepartout/AppShared/Context/CoreContext.swift
index d54a82c2..e320a00b 100644
--- a/Passepartout/AppShared/Context/CoreContext.swift
+++ b/Passepartout/AppShared/Context/CoreContext.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
import PassepartoutLibrary
@MainActor
diff --git a/Passepartout/AppShared/L10n/TunnelKit+L10n.swift b/Passepartout/AppShared/L10n/TunnelKit+L10n.swift
index 7295f10b..59f261f2 100644
--- a/Passepartout/AppShared/L10n/TunnelKit+L10n.swift
+++ b/Passepartout/AppShared/L10n/TunnelKit+L10n.swift
@@ -24,11 +24,11 @@
//
import Foundation
+import NetworkExtension
+import PassepartoutLibrary
import TunnelKitManager
import TunnelKitOpenVPN
import TunnelKitWireGuard
-import NetworkExtension
-import PassepartoutLibrary
extension VPNStatus {
var localizedDescription: String {
diff --git a/Passepartout/Launcher/AppDelegate.swift b/Passepartout/Launcher/AppDelegate.swift
index f2f891fe..ef51e814 100644
--- a/Passepartout/Launcher/AppDelegate.swift
+++ b/Passepartout/Launcher/AppDelegate.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
class AppDelegate: NSObject, NSApplicationDelegate, ObservableObject {
private let appURL = Constants.Launcher.appURL
diff --git a/Passepartout/Mac/Constants/Theme.swift b/Passepartout/Mac/Constants/Theme.swift
index c1642c3e..cd619aa9 100644
--- a/Passepartout/Mac/Constants/Theme.swift
+++ b/Passepartout/Mac/Constants/Theme.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
private let bundle = Constants.Mac.bundle
diff --git a/Passepartout/Mac/Mac/DefaultMacUtils.swift b/Passepartout/Mac/Mac/DefaultMacUtils.swift
index 1bd16f67..f0a7b3a0 100644
--- a/Passepartout/Mac/Mac/DefaultMacUtils.swift
+++ b/Passepartout/Mac/Mac/DefaultMacUtils.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
class DefaultMacUtils: MacUtils {
private(set) lazy var isStartedByLauncher = NSApp.isHidden
diff --git a/Passepartout/Mac/Menu/HostProfileItem.swift b/Passepartout/Mac/Menu/HostProfileItem.swift
index 478b79bf..6874d277 100644
--- a/Passepartout/Mac/Menu/HostProfileItem.swift
+++ b/Passepartout/Mac/Menu/HostProfileItem.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
struct HostProfileItem: Item {
private let viewModel: ViewModel
diff --git a/Passepartout/Mac/Menu/LaunchOnLoginItem+ViewModel.swift b/Passepartout/Mac/Menu/LaunchOnLoginItem+ViewModel.swift
index a5922059..a817f6c6 100644
--- a/Passepartout/Mac/Menu/LaunchOnLoginItem+ViewModel.swift
+++ b/Passepartout/Mac/Menu/LaunchOnLoginItem+ViewModel.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
import ServiceManagement
extension LaunchOnLoginItem {
diff --git a/Passepartout/Mac/Menu/LaunchOnLoginItem.swift b/Passepartout/Mac/Menu/LaunchOnLoginItem.swift
index 42e4048f..f1a2e1eb 100644
--- a/Passepartout/Mac/Menu/LaunchOnLoginItem.swift
+++ b/Passepartout/Mac/Menu/LaunchOnLoginItem.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
struct LaunchOnLoginItem: Item {
private let viewModel: ViewModel
diff --git a/Passepartout/Mac/Menu/PassepartoutMenu+StatusButton.swift b/Passepartout/Mac/Menu/PassepartoutMenu+StatusButton.swift
index f2b87e58..2c6366bc 100644
--- a/Passepartout/Mac/Menu/PassepartoutMenu+StatusButton.swift
+++ b/Passepartout/Mac/Menu/PassepartoutMenu+StatusButton.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
extension PassepartoutMenu {
diff --git a/Passepartout/Mac/Menu/PassepartoutMenu.swift b/Passepartout/Mac/Menu/PassepartoutMenu.swift
index 3dd2c2bb..d76dda4d 100644
--- a/Passepartout/Mac/Menu/PassepartoutMenu.swift
+++ b/Passepartout/Mac/Menu/PassepartoutMenu.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
@MainActor
class PassepartoutMenu {
diff --git a/Passepartout/Mac/Menu/ProfileItemGroup.swift b/Passepartout/Mac/Menu/ProfileItemGroup.swift
index 87a749c1..0773a5ce 100644
--- a/Passepartout/Mac/Menu/ProfileItemGroup.swift
+++ b/Passepartout/Mac/Menu/ProfileItemGroup.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
struct ProfileItemGroup: ItemGroup {
private let profileManager: LightProfileManager
diff --git a/Passepartout/Mac/Menu/ProviderLocationItem.swift b/Passepartout/Mac/Menu/ProviderLocationItem.swift
index 51a086d2..a384e7ce 100644
--- a/Passepartout/Mac/Menu/ProviderLocationItem.swift
+++ b/Passepartout/Mac/Menu/ProviderLocationItem.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
struct ProviderLocationItem: Item {
private let profile: LightProfile
diff --git a/Passepartout/Mac/Menu/ProviderProfileItem.swift b/Passepartout/Mac/Menu/ProviderProfileItem.swift
index 3a6b9f6d..16f1bb04 100644
--- a/Passepartout/Mac/Menu/ProviderProfileItem.swift
+++ b/Passepartout/Mac/Menu/ProviderProfileItem.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
struct ProviderProfileItem: Item {
private let viewModel: ViewModel
diff --git a/Passepartout/Mac/Menu/ProviderServerItem.swift b/Passepartout/Mac/Menu/ProviderServerItem.swift
index 7ae84703..3a069ab7 100644
--- a/Passepartout/Mac/Menu/ProviderServerItem.swift
+++ b/Passepartout/Mac/Menu/ProviderServerItem.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
struct ProviderServerItem: Item {
private let profile: LightProfile
diff --git a/Passepartout/Mac/Menu/VPNItemGroup+ViewModel.swift b/Passepartout/Mac/Menu/VPNItemGroup+ViewModel.swift
index ecd30c43..72d2c6f4 100644
--- a/Passepartout/Mac/Menu/VPNItemGroup+ViewModel.swift
+++ b/Passepartout/Mac/Menu/VPNItemGroup+ViewModel.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
extension VPNItemGroup {
diff --git a/Passepartout/Mac/Menu/VPNItemGroup.swift b/Passepartout/Mac/Menu/VPNItemGroup.swift
index e691d5dd..62c2b180 100644
--- a/Passepartout/Mac/Menu/VPNItemGroup.swift
+++ b/Passepartout/Mac/Menu/VPNItemGroup.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
struct VPNItemGroup: ItemGroup {
private let viewModel: ViewModel
diff --git a/Passepartout/Mac/Menu/VisibilityItem+ViewModel.swift b/Passepartout/Mac/Menu/VisibilityItem+ViewModel.swift
index 5cf18c11..70c29e74 100644
--- a/Passepartout/Mac/Menu/VisibilityItem+ViewModel.swift
+++ b/Passepartout/Mac/Menu/VisibilityItem+ViewModel.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
extension VisibilityItem {
diff --git a/Passepartout/Mac/Menu/VisibilityItem.swift b/Passepartout/Mac/Menu/VisibilityItem.swift
index 8425caa0..eec890af 100644
--- a/Passepartout/Mac/Menu/VisibilityItem.swift
+++ b/Passepartout/Mac/Menu/VisibilityItem.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
struct VisibilityItem: Item {
private let title: String
diff --git a/Passepartout/Mac/Reusable/Item.swift b/Passepartout/Mac/Reusable/Item.swift
index 25ae5aee..32b7f561 100644
--- a/Passepartout/Mac/Reusable/Item.swift
+++ b/Passepartout/Mac/Reusable/Item.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
protocol Item: ItemGroup {
func asMenuItem(withParent parent: NSMenu) -> NSMenuItem
diff --git a/Passepartout/Mac/Reusable/ItemGroup.swift b/Passepartout/Mac/Reusable/ItemGroup.swift
index 8f233fb1..c5bee3b8 100644
--- a/Passepartout/Mac/Reusable/ItemGroup.swift
+++ b/Passepartout/Mac/Reusable/ItemGroup.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
@MainActor
protocol ItemGroup {
diff --git a/Passepartout/Mac/Reusable/ObservableProcessTransformer.swift b/Passepartout/Mac/Reusable/ObservableProcessTransformer.swift
index 66a61ae3..bc7eb9eb 100644
--- a/Passepartout/Mac/Reusable/ObservableProcessTransformer.swift
+++ b/Passepartout/Mac/Reusable/ObservableProcessTransformer.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
class ObservableProcessTransformer: ObservableObject {
static let shared = ObservableProcessTransformer()
diff --git a/Passepartout/Mac/Reusable/SeparatorItem.swift b/Passepartout/Mac/Reusable/SeparatorItem.swift
index 08dd939f..3d3426fb 100644
--- a/Passepartout/Mac/Reusable/SeparatorItem.swift
+++ b/Passepartout/Mac/Reusable/SeparatorItem.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
struct SeparatorItem: Item {
func asMenuItem(withParent parent: NSMenu) -> NSMenuItem {
diff --git a/Passepartout/Mac/Reusable/StaticSystemMenu.swift b/Passepartout/Mac/Reusable/StaticSystemMenu.swift
index 0baa636c..f02bf604 100644
--- a/Passepartout/Mac/Reusable/StaticSystemMenu.swift
+++ b/Passepartout/Mac/Reusable/StaticSystemMenu.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
struct StaticSystemMenu: SystemMenu {
let children: [ItemGroup]
diff --git a/Passepartout/Mac/Reusable/SystemMenu.swift b/Passepartout/Mac/Reusable/SystemMenu.swift
index 07d9e925..d2052f77 100644
--- a/Passepartout/Mac/Reusable/SystemMenu.swift
+++ b/Passepartout/Mac/Reusable/SystemMenu.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
@MainActor
protocol SystemMenu {
diff --git a/Passepartout/Mac/Reusable/TextItem+ViewModel.swift b/Passepartout/Mac/Reusable/TextItem+ViewModel.swift
index e83d562a..ec4e7a2d 100644
--- a/Passepartout/Mac/Reusable/TextItem+ViewModel.swift
+++ b/Passepartout/Mac/Reusable/TextItem+ViewModel.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
extension TextItem {
class ViewModel {
diff --git a/Passepartout/Mac/Reusable/TextItem.swift b/Passepartout/Mac/Reusable/TextItem.swift
index 98488f28..571b6f63 100644
--- a/Passepartout/Mac/Reusable/TextItem.swift
+++ b/Passepartout/Mac/Reusable/TextItem.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import AppKit
+import Foundation
struct TextItem: Item {
enum State {
diff --git a/PassepartoutLibrary/Sources/PassepartoutCore/Models/Profile+NetworkSettings.swift b/PassepartoutLibrary/Sources/PassepartoutCore/Models/Profile+NetworkSettings.swift
index a64d0cab..83b2c8cc 100644
--- a/PassepartoutLibrary/Sources/PassepartoutCore/Models/Profile+NetworkSettings.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutCore/Models/Profile+NetworkSettings.swift
@@ -24,7 +24,6 @@
//
import Foundation
-import TunnelKit
extension Profile {
public struct NetworkSettings: Codable, Equatable {
diff --git a/PassepartoutLibrary/Sources/PassepartoutCore/Models/VPNProtocolType.swift b/PassepartoutLibrary/Sources/PassepartoutCore/Models/VPNProtocolType.swift
index d9fb7e4a..4feb65e6 100644
--- a/PassepartoutLibrary/Sources/PassepartoutCore/Models/VPNProtocolType.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutCore/Models/VPNProtocolType.swift
@@ -25,7 +25,7 @@
import Foundation
-public enum VPNProtocolType: String, Codable {
+public enum VPNProtocolType: String, CaseIterable, Codable {
case openVPN = "ovpn"
case wireGuard = "wg"
diff --git a/PassepartoutLibrary/Sources/PassepartoutLibrary/Exports.swift b/PassepartoutLibrary/Sources/PassepartoutLibrary/Exports.swift
index 9717d973..654742ea 100644
--- a/PassepartoutLibrary/Sources/PassepartoutLibrary/Exports.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutLibrary/Exports.swift
@@ -1,8 +1,8 @@
-@_exported import PassepartoutVPN
+@_exported import PassepartoutCore
@_exported import PassepartoutProfiles
@_exported import PassepartoutProviders
@_exported import PassepartoutServices
@_exported import PassepartoutUtils
-@_exported import PassepartoutCore
+@_exported import PassepartoutVPN
@_exported import TunnelKit
@_exported import TunnelKitCore
diff --git a/PassepartoutLibrary/Sources/PassepartoutLibrary/Managers/UpgradeManager+Migrations.swift b/PassepartoutLibrary/Sources/PassepartoutLibrary/Managers/UpgradeManager+Migrations.swift
index eb3ece6c..d9ca38e2 100644
--- a/PassepartoutLibrary/Sources/PassepartoutLibrary/Managers/UpgradeManager+Migrations.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutLibrary/Managers/UpgradeManager+Migrations.swift
@@ -25,11 +25,11 @@
import Foundation
import GenericJSON
-import TunnelKitCore
-import TunnelKitOpenVPNCore
-import TunnelKitManager
import PassepartoutCore
import PassepartoutUtils
+import TunnelKitCore
+import TunnelKitManager
+import TunnelKitOpenVPNCore
private typealias Map = [String: Any]
diff --git a/PassepartoutLibrary/Sources/PassepartoutLibrary/Managers/UpgradeManager.swift b/PassepartoutLibrary/Sources/PassepartoutLibrary/Managers/UpgradeManager.swift
index 8288cc72..0428060d 100644
--- a/PassepartoutLibrary/Sources/PassepartoutLibrary/Managers/UpgradeManager.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutLibrary/Managers/UpgradeManager.swift
@@ -23,11 +23,11 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
-import SwiftyBeaver
+import Foundation
import PassepartoutCore
import PassepartoutUtils
+import SwiftyBeaver
@MainActor
public final class UpgradeManager: ObservableObject {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/DataModels/CDProfile+CoreDataClass.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/DataModels/CDProfile+CoreDataClass.swift
index 12264597..04a69871 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/DataModels/CDProfile+CoreDataClass.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/DataModels/CDProfile+CoreDataClass.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
@objc(CDProfile)
public class CDProfile: NSManagedObject {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/DataModels/CDProfile+CoreDataProperties.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/DataModels/CDProfile+CoreDataProperties.swift
index a1ac80cd..b4f2950c 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/DataModels/CDProfile+CoreDataProperties.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/DataModels/CDProfile+CoreDataProperties.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
extension CDProfile {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/OpenVPNSettings+Network.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/OpenVPNSettings+Network.swift
index cb447c34..f6ca96de 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/OpenVPNSettings+Network.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/OpenVPNSettings+Network.swift
@@ -24,9 +24,9 @@
//
import Foundation
+import PassepartoutCore
import TunnelKitCore
import TunnelKitOpenVPN
-import PassepartoutCore
extension Profile.OpenVPNSettings: GatewaySettingsProviding {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/PassepartoutDataModels+Profiles.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/PassepartoutDataModels+Profiles.swift
index b1fef1be..b0f684ab 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/PassepartoutDataModels+Profiles.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/PassepartoutDataModels+Profiles.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
import PassepartoutCore
extension PassepartoutDataModels {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/PassepartoutProviders+TunnelKit.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/PassepartoutProviders+TunnelKit.swift
index 0d2eeec6..9012fe27 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/PassepartoutProviders+TunnelKit.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/PassepartoutProviders+TunnelKit.swift
@@ -23,12 +23,12 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
-import TunnelKitOpenVPN
-import TunnelKitWireGuard
+import Foundation
import PassepartoutCore
import PassepartoutUtils
+import TunnelKitOpenVPN
+import TunnelKitWireGuard
extension ProviderServer.Preset {
public var openVPNConfiguration: OpenVPN.Configuration? {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/ProviderManager+Extensions.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/ProviderManager+Extensions.swift
index 343ff60f..a41fe728 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/ProviderManager+Extensions.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/ProviderManager+Extensions.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
import PassepartoutCore
import PassepartoutProviders
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/WireGuardSettings+Network.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/WireGuardSettings+Network.swift
index 87515dc3..af5abf1b 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/WireGuardSettings+Network.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/WireGuardSettings+Network.swift
@@ -24,9 +24,9 @@
//
import Foundation
+import PassepartoutCore
import TunnelKitCore
import TunnelKitWireGuard
-import PassepartoutCore
extension Profile.WireGuardSettings: DNSSettingsProviding {
public var dnsProtocol: DNSProtocol? {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/CoreDataProfileManagerStrategy.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/CoreDataProfileManagerStrategy.swift
index 07ec7a06..1f579073 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/CoreDataProfileManagerStrategy.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/CoreDataProfileManagerStrategy.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
import PassepartoutCore
import PassepartoutUtils
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/PersistenceManager.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/PersistenceManager.swift
index 3a491d02..5d50ddcd 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/PersistenceManager.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/PersistenceManager.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
import PassepartoutCore
import PassepartoutUtils
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManager+Keychain.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManager+Keychain.swift
index 610aa46d..fc2a983e 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManager+Keychain.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManager+Keychain.swift
@@ -24,9 +24,9 @@
//
import Foundation
-import TunnelKitManager
import PassepartoutCore
import PassepartoutUtils
+import TunnelKitManager
extension ProfileManager {
public func savePassword(forProfile profile: Profile, newPassword: String? = nil) {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManager+Processing.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManager+Processing.swift
index a6b505a1..f651db0b 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManager+Processing.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManager+Processing.swift
@@ -24,9 +24,9 @@
//
import Foundation
+import PassepartoutCore
import TunnelKitOpenVPN
import TunnelKitWireGuard
-import PassepartoutCore
extension ProfileManager {
public func profile(withHeader header: Profile.Header, fromContents contents: String, originalURL: URL?, passphrase: String?) throws -> Profile {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManager.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManager.swift
index fd6818bf..6f619a63 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManager.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManager.swift
@@ -23,12 +23,12 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
-import TunnelKitManager
+import Foundation
import PassepartoutCore
-import PassepartoutUtils
import PassepartoutProviders
+import PassepartoutUtils
+import TunnelKitManager
@MainActor
public final class ProfileManager: ObservableObject {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManagerStrategy.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManagerStrategy.swift
index 88201165..d7cff1c2 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManagerStrategy.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Managers/ProfileManagerStrategy.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
import PassepartoutCore
public protocol ProfileManagerStrategy {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Pickers/Picker+Network.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Pickers/Picker+Network.swift
index 7580264b..26ac6291 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Pickers/Picker+Network.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Pickers/Picker+Network.swift
@@ -24,8 +24,8 @@
//
import Foundation
-import TunnelKitCore
import PassepartoutCore
+import TunnelKitCore
extension Network.DNSSettings {
public static func availableConfigurationTypes(forVPNProtocol vpnProtocol: VPNProtocolType) -> [ConfigurationType] {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Repositories/ProfileMapper.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Repositories/ProfileMapper.swift
index df1b8696..31c85136 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Repositories/ProfileMapper.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Repositories/ProfileMapper.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
import PassepartoutCore
import PassepartoutUtils
diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Repositories/ProfileRepository.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Repositories/ProfileRepository.swift
index bd070e4e..4a722090 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Repositories/ProfileRepository.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Repositories/ProfileRepository.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
import PassepartoutCore
import PassepartoutUtils
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructure+CoreDataClass.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructure+CoreDataClass.swift
index 54a39d19..7075ec72 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructure+CoreDataClass.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructure+CoreDataClass.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
@objc(CDInfrastructure)
public class CDInfrastructure: NSManagedObject {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructure+CoreDataProperties.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructure+CoreDataProperties.swift
index 7af01970..a025fb17 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructure+CoreDataProperties.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructure+CoreDataProperties.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
extension CDInfrastructure {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureCategory+CoreDataClass.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureCategory+CoreDataClass.swift
index b78a55f6..3b48f711 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureCategory+CoreDataClass.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureCategory+CoreDataClass.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
@objc(CDInfrastructureCategory)
public class CDInfrastructureCategory: NSManagedObject {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureCategory+CoreDataProperties.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureCategory+CoreDataProperties.swift
index ba1dc05f..1aa8e6ca 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureCategory+CoreDataProperties.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureCategory+CoreDataProperties.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
extension CDInfrastructureCategory {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureDefaultSettings+CoreDataClass.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureDefaultSettings+CoreDataClass.swift
index a6643303..7f4d18db 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureDefaultSettings+CoreDataClass.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureDefaultSettings+CoreDataClass.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
@objc(CDInfrastructureDefaultSettings)
public class CDInfrastructureDefaultSettings: NSManagedObject {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureDefaultSettings+CoreDataProperties.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureDefaultSettings+CoreDataProperties.swift
index 892b30e0..a2b08884 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureDefaultSettings+CoreDataProperties.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureDefaultSettings+CoreDataProperties.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
extension CDInfrastructureDefaultSettings {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureLocation+CoreDataClass.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureLocation+CoreDataClass.swift
index d08dc5b7..9b2c8391 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureLocation+CoreDataClass.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureLocation+CoreDataClass.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
@objc(CDInfrastructureLocation)
public class CDInfrastructureLocation: NSManagedObject {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureLocation+CoreDataProperties.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureLocation+CoreDataProperties.swift
index e0883d40..a4ac1d27 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureLocation+CoreDataProperties.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureLocation+CoreDataProperties.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
extension CDInfrastructureLocation {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructurePreset+CoreDataClass.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructurePreset+CoreDataClass.swift
index 21bad0ab..930a8d0a 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructurePreset+CoreDataClass.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructurePreset+CoreDataClass.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
@objc(CDInfrastructurePreset)
public class CDInfrastructurePreset: NSManagedObject {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructurePreset+CoreDataProperties.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructurePreset+CoreDataProperties.swift
index 26e0d33e..55b6b985 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructurePreset+CoreDataProperties.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructurePreset+CoreDataProperties.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
extension CDInfrastructurePreset {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureServer+CoreDataClass.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureServer+CoreDataClass.swift
index 457c5446..3442f541 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureServer+CoreDataClass.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureServer+CoreDataClass.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
@objc(CDInfrastructureServer)
public class CDInfrastructureServer: NSManagedObject {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureServer+CoreDataProperties.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureServer+CoreDataProperties.swift
index 04f15ac4..06c00f66 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureServer+CoreDataProperties.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDInfrastructureServer+CoreDataProperties.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
extension CDInfrastructureServer {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDProvider+CoreDataClass.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDProvider+CoreDataClass.swift
index 9a5d523b..65a25e19 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDProvider+CoreDataClass.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDProvider+CoreDataClass.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
@objc(CDProvider)
public class CDProvider: NSManagedObject {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDProvider+CoreDataProperties.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDProvider+CoreDataProperties.swift
index f28ddddc..fc16c6e5 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDProvider+CoreDataProperties.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/DataModels/CDProvider+CoreDataProperties.swift
@@ -7,8 +7,8 @@
// This file was automatically generated and should not be edited.
//
-import Foundation
import CoreData
+import Foundation
extension CDProvider {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/Extensions/PassepartoutDataModels+Providers.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/Extensions/PassepartoutDataModels+Providers.swift
index ea121ed5..2059d896 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/Extensions/PassepartoutDataModels+Providers.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/Extensions/PassepartoutDataModels+Providers.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
import PassepartoutCore
extension PassepartoutDataModels {
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/Extensions/PassepartoutProviders+Identifiable.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/Extensions/PassepartoutProviders+Identifiable.swift
index b761e839..00b0fdc0 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/Extensions/PassepartoutProviders+Identifiable.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/Extensions/PassepartoutProviders+Identifiable.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
+import CryptoKit
import Foundation
import PassepartoutCore
-import CryptoKit
// primary keys within infrastructure (pinned: vpnProtocol)
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/Managers/ProviderManager.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/Managers/ProviderManager.swift
index 26e6acc4..960e5b86 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/Managers/ProviderManager.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/Managers/ProviderManager.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
import PassepartoutCore
import PassepartoutServices
import PassepartoutUtils
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/CategoryMapper.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/CategoryMapper.swift
index abe1bac5..616f202e 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/CategoryMapper.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/CategoryMapper.swift
@@ -23,11 +23,11 @@
// along with Passepartout. If not, see .
//
+import CoreData
import Foundation
import PassepartoutCore
import PassepartoutServices
import PassepartoutUtils
-import CoreData
struct CategoryMapper: DTOMapper, ModelMapper {
private let context: NSManagedObjectContext
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/DefaultSettingsMapper.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/DefaultSettingsMapper.swift
index 5a3c1357..01041131 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/DefaultSettingsMapper.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/DefaultSettingsMapper.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
import PassepartoutCore
import PassepartoutServices
import PassepartoutUtils
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/InfrastructureMapper.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/InfrastructureMapper.swift
index 18bee3d5..dda66971 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/InfrastructureMapper.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/InfrastructureMapper.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
import PassepartoutCore
import PassepartoutServices
import PassepartoutUtils
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/InfrastructureRepository.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/InfrastructureRepository.swift
index 9fc13457..068128f7 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/InfrastructureRepository.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/InfrastructureRepository.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
import PassepartoutCore
import PassepartoutServices
import PassepartoutUtils
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/LocationMapper.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/LocationMapper.swift
index 659674b2..d35cb719 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/LocationMapper.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/LocationMapper.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
import PassepartoutCore
import PassepartoutServices
import PassepartoutUtils
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/PresetMapper.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/PresetMapper.swift
index 954312b7..84cb1ca3 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/PresetMapper.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/PresetMapper.swift
@@ -23,12 +23,12 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
+import GenericJSON
import PassepartoutCore
import PassepartoutServices
import PassepartoutUtils
-import GenericJSON
struct PresetMapper: DTOMapper, ModelMapper {
private let context: NSManagedObjectContext
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ProviderMapper.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ProviderMapper.swift
index 7a705e5e..c8c47238 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ProviderMapper.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ProviderMapper.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
import PassepartoutCore
import PassepartoutServices
import PassepartoutUtils
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ProviderRepository.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ProviderRepository.swift
index ffc43c35..a5ad6afc 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ProviderRepository.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ProviderRepository.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
import PassepartoutCore
import PassepartoutServices
import PassepartoutUtils
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ServerMapper.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ServerMapper.swift
index b77f67ca..1064655c 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ServerMapper.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ServerMapper.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
import PassepartoutCore
import PassepartoutServices
import PassepartoutUtils
diff --git a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ServerRepository.swift b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ServerRepository.swift
index 4ed39cbc..95a7d8b2 100644
--- a/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ServerRepository.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutProviders/Repositories/ServerRepository.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
import PassepartoutCore
import PassepartoutServices
import PassepartoutUtils
diff --git a/PassepartoutLibrary/Sources/PassepartoutServices/DefaultWebServices.swift b/PassepartoutLibrary/Sources/PassepartoutServices/DefaultWebServices.swift
index 53d48aa6..ba755e16 100644
--- a/PassepartoutLibrary/Sources/PassepartoutServices/DefaultWebServices.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutServices/DefaultWebServices.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
import PassepartoutUtils
public class DefaultWebServices: WebServices {
diff --git a/PassepartoutLibrary/Sources/PassepartoutServices/WebServices.swift b/PassepartoutLibrary/Sources/PassepartoutServices/WebServices.swift
index 73c11e1f..abdf5312 100644
--- a/PassepartoutLibrary/Sources/PassepartoutServices/WebServices.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutServices/WebServices.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
import PassepartoutUtils
public enum WebError: GenericWebServicesError, LocalizedError {
diff --git a/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/FetchedValueHolder.swift b/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/FetchedValueHolder.swift
index 45b4add9..689a4c15 100644
--- a/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/FetchedValueHolder.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/FetchedValueHolder.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
-import Foundation
-import CoreData
import Combine
+import CoreData
+import Foundation
public class FetchedValueHolder: NSObject, ValueHolder, NSFetchedResultsControllerDelegate {
@Published public var value: V
diff --git a/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/GenericWebServices.swift b/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/GenericWebServices.swift
index 19c57741..c231435e 100644
--- a/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/GenericWebServices.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/GenericWebServices.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
public protocol GenericWebServicesError: Error {
static func httpStatus(_ status: Int) -> Self
diff --git a/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/Persistence.swift b/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/Persistence.swift
index c1832940..d7afd6bf 100644
--- a/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/Persistence.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/Persistence.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
-import Foundation
-import CoreData
import Combine
+import CoreData
+import Foundation
public class Persistence {
private let container: NSPersistentContainer
diff --git a/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/SSIDReader.swift b/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/SSIDReader.swift
index a1a9b43a..02c60216 100644
--- a/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/SSIDReader.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/SSIDReader.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreLocation
+import Foundation
@MainActor
public class SSIDReader: NSObject, ObservableObject {
diff --git a/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+Async.swift b/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+Async.swift
index 2e69f568..21682429 100644
--- a/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+Async.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+Async.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
// https://medium.com/geekculture/from-combine-to-async-await-c08bf1d15b77
diff --git a/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+CoreData.swift b/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+CoreData.swift
index 72dc983a..2dec7ea4 100644
--- a/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+CoreData.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+CoreData.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import CoreData
+import Foundation
extension Utils {
public static func randomizeFetchResults(_ request: NSFetchRequest, in context: NSManagedObjectContext) throws {
diff --git a/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+Strings.swift b/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+Strings.swift
index 3fb211a6..71f01c68 100644
--- a/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+Strings.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+Strings.swift
@@ -69,18 +69,6 @@ extension String {
}
}
-extension CharacterSet {
- public static let filename: CharacterSet = {
- var chars: CharacterSet = .decimalDigits
- let english = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- let symbols = " -_."
- chars.formUnion(CharacterSet(charactersIn: english))
- chars.formUnion(CharacterSet(charactersIn: english.lowercased()))
- chars.formUnion(CharacterSet(charactersIn: symbols))
- return chars
- }()
-}
-
extension NSRegularExpression {
public convenience init(_ pattern: String) {
do {
diff --git a/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+URL.swift b/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+URL.swift
index 8a2e0ce1..3f382ed9 100644
--- a/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+URL.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutUtils/Utils/Utils+URL.swift
@@ -37,7 +37,7 @@ extension URL {
}
@discardableResult
- public static func openURL(_ url: URL) -> Bool {
+ public static func open(_ url: URL) -> Bool {
#if os(iOS)
guard UIApplication.shared.canOpenURL(url) else {
return false
diff --git a/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/OpenVPNSettings+VPNConfiguration.swift b/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/OpenVPNSettings+VPNConfiguration.swift
index 849f83c2..6cfa7f6b 100644
--- a/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/OpenVPNSettings+VPNConfiguration.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/OpenVPNSettings+VPNConfiguration.swift
@@ -24,10 +24,10 @@
//
import Foundation
-import TunnelKitManager
-import TunnelKitOpenVPN
import PassepartoutCore
import PassepartoutUtils
+import TunnelKitManager
+import TunnelKitOpenVPN
extension Profile.OpenVPNSettings: VPNConfigurationProviding {
func vpnConfiguration(_ parameters: VPNConfigurationParameters) throws -> VPNConfiguration {
diff --git a/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/VPNProtocolType+Extensions.swift b/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/VPNProtocolType+Extensions.swift
index d8c1a5de..d25bfd97 100644
--- a/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/VPNProtocolType+Extensions.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/VPNProtocolType+Extensions.swift
@@ -24,9 +24,9 @@
//
import Foundation
+import PassepartoutCore
import TunnelKitOpenVPN
import TunnelKitWireGuard
-import PassepartoutCore
extension VPNProtocolType: Comparable {
public static func < (lhs: Self, rhs: Self) -> Bool {
diff --git a/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/WireGuardSettings+VPNConfiguration.swift b/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/WireGuardSettings+VPNConfiguration.swift
index 0714ccfe..1928e4cb 100644
--- a/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/WireGuardSettings+VPNConfiguration.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/WireGuardSettings+VPNConfiguration.swift
@@ -24,10 +24,10 @@
//
import Foundation
-import TunnelKitManager
-import TunnelKitWireGuard
import PassepartoutCore
import PassepartoutUtils
+import TunnelKitManager
+import TunnelKitWireGuard
extension Profile.WireGuardSettings: VPNConfigurationProviding {
func vpnConfiguration(_ parameters: VPNConfigurationParameters) throws -> VPNConfiguration {
diff --git a/PassepartoutLibrary/Sources/PassepartoutVPN/Managers/TunnelKitVPNManagerStrategy.swift b/PassepartoutLibrary/Sources/PassepartoutVPN/Managers/TunnelKitVPNManagerStrategy.swift
index 16eab035..7c4c932c 100644
--- a/PassepartoutLibrary/Sources/PassepartoutVPN/Managers/TunnelKitVPNManagerStrategy.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutVPN/Managers/TunnelKitVPNManagerStrategy.swift
@@ -23,14 +23,14 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
import NetworkExtension
+import PassepartoutCore
+import PassepartoutUtils
import TunnelKitCore
import TunnelKitManager
import TunnelKitOpenVPNCore
-import PassepartoutCore
-import PassepartoutUtils
public class TunnelKitVPNManagerStrategy: VPNManagerStrategy where VPNType.Configuration == NetworkExtensionConfiguration, VPNType.Extra == NetworkExtensionExtra {
private struct AtomicState: Equatable {
diff --git a/PassepartoutLibrary/Sources/PassepartoutVPN/Managers/VPNManager.swift b/PassepartoutLibrary/Sources/PassepartoutVPN/Managers/VPNManager.swift
index 99218f4e..cfc808ba 100644
--- a/PassepartoutLibrary/Sources/PassepartoutVPN/Managers/VPNManager.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutVPN/Managers/VPNManager.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
import PassepartoutCore
import PassepartoutProfiles
import PassepartoutProviders
diff --git a/PassepartoutLibrary/Sources/PassepartoutVPN/Managers/VPNManagerStrategy.swift b/PassepartoutLibrary/Sources/PassepartoutVPN/Managers/VPNManagerStrategy.swift
index c56ee4f4..75d1b906 100644
--- a/PassepartoutLibrary/Sources/PassepartoutVPN/Managers/VPNManagerStrategy.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutVPN/Managers/VPNManagerStrategy.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import Foundation
import Combine
+import Foundation
import PassepartoutCore
public protocol VPNManagerStrategy {
diff --git a/PassepartoutLibrary/Sources/PassepartoutVPN/Models/ObservableVPNState.swift b/PassepartoutLibrary/Sources/PassepartoutVPN/Models/ObservableVPNState.swift
index b97cf6d0..d5be8b59 100644
--- a/PassepartoutLibrary/Sources/PassepartoutVPN/Models/ObservableVPNState.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutVPN/Models/ObservableVPNState.swift
@@ -24,9 +24,9 @@
//
import Foundation
+import PassepartoutUtils
import TunnelKitCore
import TunnelKitManager
-import PassepartoutUtils
public class ObservableVPNState: ObservableObject {
@Published public internal(set) var isEnabled = false {
diff --git a/PassepartoutLibrary/Sources/PassepartoutVPN/Models/VPNConfiguration.swift b/PassepartoutLibrary/Sources/PassepartoutVPN/Models/VPNConfiguration.swift
index c44ae2a0..49fbeee1 100644
--- a/PassepartoutLibrary/Sources/PassepartoutVPN/Models/VPNConfiguration.swift
+++ b/PassepartoutLibrary/Sources/PassepartoutVPN/Models/VPNConfiguration.swift
@@ -24,9 +24,9 @@
//
import Foundation
-import TunnelKitManager
import NetworkExtension
import PassepartoutCore
+import TunnelKitManager
public typealias VPNConfiguration = (neConfiguration: NetworkExtensionConfiguration, neExtra: NetworkExtensionExtra)
diff --git a/PassepartoutLibrary/Sources/PassepartoutVPN/Pickers/VPNProtocolType+All.swift b/PassepartoutLibrary/Sources/PassepartoutVPN/Pickers/VPNProtocolType+All.swift
deleted file mode 100644
index 5ab0d39e..00000000
--- a/PassepartoutLibrary/Sources/PassepartoutVPN/Pickers/VPNProtocolType+All.swift
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// VPNProtocolType+All.swift
-// Passepartout
-//
-// Created by Davide De Rosa on 6/22/22.
-// Copyright (c) 2023 Davide De Rosa. All rights reserved.
-//
-// https://github.com/passepartoutvpn
-//
-// This file is part of Passepartout.
-//
-// Passepartout is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Passepartout is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Passepartout. If not, see .
-//
-
-import Foundation
-import PassepartoutCore
-
-extension VPNProtocolType {
- public static let allTypes: [VPNProtocolType] = [
- .openVPN,
- .wireGuard
- ].sorted()
-}
diff --git a/PassepartoutLibrary/Tests/PassepartoutCoreTests/CoreTests.swift b/PassepartoutLibrary/Tests/PassepartoutCoreTests/CoreTests.swift
index de136b26..731bf7e2 100644
--- a/PassepartoutLibrary/Tests/PassepartoutCoreTests/CoreTests.swift
+++ b/PassepartoutLibrary/Tests/PassepartoutCoreTests/CoreTests.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import XCTest
@testable import PassepartoutCore
+import XCTest
class CoreTests: XCTestCase {
override func setUp() {
diff --git a/PassepartoutLibrary/Tests/PassepartoutLibraryTests/LibraryTests.swift b/PassepartoutLibrary/Tests/PassepartoutLibraryTests/LibraryTests.swift
index 0a7897e4..c09cffb0 100644
--- a/PassepartoutLibrary/Tests/PassepartoutLibraryTests/LibraryTests.swift
+++ b/PassepartoutLibrary/Tests/PassepartoutLibraryTests/LibraryTests.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import XCTest
@testable import PassepartoutLibrary
+import XCTest
class LibraryTests: XCTestCase {
override func setUp() {
diff --git a/PassepartoutLibrary/Tests/PassepartoutProfilesTests/ProfilesTests.swift b/PassepartoutLibrary/Tests/PassepartoutProfilesTests/ProfilesTests.swift
index 65d015f4..4d40b8ae 100644
--- a/PassepartoutLibrary/Tests/PassepartoutProfilesTests/ProfilesTests.swift
+++ b/PassepartoutLibrary/Tests/PassepartoutProfilesTests/ProfilesTests.swift
@@ -23,10 +23,10 @@
// along with Passepartout. If not, see .
//
-import XCTest
import PassepartoutCore
@testable import PassepartoutProfiles
import SwiftyBeaver
+import XCTest
class ProfilesTests: XCTestCase {
override func setUp() {
diff --git a/PassepartoutLibrary/Tests/PassepartoutProvidersTests/ProvidersTests.swift b/PassepartoutLibrary/Tests/PassepartoutProvidersTests/ProvidersTests.swift
index 8f3deb47..2b8e0042 100644
--- a/PassepartoutLibrary/Tests/PassepartoutProvidersTests/ProvidersTests.swift
+++ b/PassepartoutLibrary/Tests/PassepartoutProvidersTests/ProvidersTests.swift
@@ -23,14 +23,14 @@
// along with Passepartout. If not, see .
//
-import XCTest
-import CoreData
import Combine
+import CoreData
import PassepartoutCore
@testable import PassepartoutProviders
import PassepartoutServices
import PassepartoutUtils
import SwiftyBeaver
+import XCTest
class ProvidersTests: XCTestCase {
private static let persistence: Persistence = {
diff --git a/PassepartoutLibrary/Tests/PassepartoutServicesTests/ServicesTests.swift b/PassepartoutLibrary/Tests/PassepartoutServicesTests/ServicesTests.swift
index 1a55d2ba..141e87e6 100644
--- a/PassepartoutLibrary/Tests/PassepartoutServicesTests/ServicesTests.swift
+++ b/PassepartoutLibrary/Tests/PassepartoutServicesTests/ServicesTests.swift
@@ -23,11 +23,11 @@
// along with Passepartout. If not, see .
//
-import XCTest
import Combine
@testable import PassepartoutServices
import PassepartoutUtils
import SwiftyBeaver
+import XCTest
class ServicesTests: XCTestCase {
let wsLocal = DefaultWebServices.bundledServices(withVersion: "v5")
diff --git a/PassepartoutLibrary/Tests/PassepartoutUtilsTests/UtilsTests.swift b/PassepartoutLibrary/Tests/PassepartoutUtilsTests/UtilsTests.swift
index 6e785bdb..0f7fa420 100644
--- a/PassepartoutLibrary/Tests/PassepartoutUtilsTests/UtilsTests.swift
+++ b/PassepartoutLibrary/Tests/PassepartoutUtilsTests/UtilsTests.swift
@@ -23,9 +23,9 @@
// along with Passepartout. If not, see .
//
-import XCTest
@testable import PassepartoutUtils
import SwiftyBeaver
+import XCTest
class UtilsTests: XCTestCase {
override func setUp() {
diff --git a/PassepartoutLibrary/Tests/PassepartoutVPNTests/VPNTests.swift b/PassepartoutLibrary/Tests/PassepartoutVPNTests/VPNTests.swift
index ec972ce5..a13b6094 100644
--- a/PassepartoutLibrary/Tests/PassepartoutVPNTests/VPNTests.swift
+++ b/PassepartoutLibrary/Tests/PassepartoutVPNTests/VPNTests.swift
@@ -23,8 +23,8 @@
// along with Passepartout. If not, see .
//
-import XCTest
@testable import PassepartoutVPN
+import XCTest
class VPNTests: XCTestCase {
override func setUp() {