// swift-tools-version:6.0 import PackageDescription let package = Package( name: "hhe-po", platforms: [ .macOS(.v14) ], products: [ .executable(name: "App", targets: ["App"]), .library(name: "ApiController", targets: ["ApiController"]), .library(name: "ApiControllerLive", targets: ["ApiControllerLive"]), .library(name: "SharedModels", targets: ["SharedModels"]), .library(name: "DatabaseClient", targets: ["DatabaseClient"]), .library(name: "DatabaseClientLive", targets: ["DatabaseClientLive"]), .library(name: "HtmlSnapshotTesting", targets: ["HtmlSnapshotTesting"]), .library(name: "ViewController", targets: ["ViewController"]), .library(name: "ViewControllerLive", targets: ["ViewControllerLive"]) ], dependencies: [ // 💧 A server-side Swift web framework. .package(url: "https://github.com/vapor/vapor.git", from: "4.110.1"), // 🗄 An ORM for SQL and NoSQL databases. .package(url: "https://github.com/vapor/fluent.git", from: "4.9.0"), // ðŸŠķ Fluent driver for SQLite. .package(url: "https://github.com/vapor/fluent-sqlite-driver.git", from: "4.6.0"), // ðŸ”ĩ Non-blocking, event-driven networking f Swift. Used for, custom executors .package(url: "https://github.com/apple/swift-nio.git", from: "2.65.0"), .package(url: "https://github.com/pointfreeco/swift-dependencies.git", from: "1.6.3"), .package(url: "https://github.com/sliemeobn/elementary.git", from: "0.3.2"), .package(url: "https://github.com/sliemeobn/elementary-htmx.git", from: "0.4.0"), .package(url: "https://github.com/vapor-community/vapor-elementary.git", from: "0.1.0"), .package(url: "https://github.com/pointfreeco/swift-url-routing.git", from: "0.6.2"), .package(url: "https://github.com/pointfreeco/vapor-routing.git", from: "0.1.3"), .package(url: "https://github.com/pointfreeco/swift-snapshot-testing.git", from: "1.17.7"), .package(url: "https://github.com/pointfreeco/swift-case-paths.git", from: "1.6.0") ], targets: [ .executableTarget( name: "App", dependencies: [ .target(name: "ApiControllerLive"), .target(name: "DatabaseClientLive"), .target(name: "ViewControllerLive"), .product(name: "Fluent", package: "fluent"), .product(name: "FluentSQLiteDriver", package: "fluent-sqlite-driver"), .product(name: "Vapor", package: "vapor"), .product(name: "NIOCore", package: "swift-nio"), .product(name: "NIOPosix", package: "swift-nio"), .product(name: "Dependencies", package: "swift-dependencies"), .product(name: "DependenciesMacros", package: "swift-dependencies"), .product(name: "Elementary", package: "elementary"), .product(name: "VaporElementary", package: "vapor-elementary"), .product(name: "ElementaryHTMX", package: "elementary-htmx"), .product(name: "VaporRouting", package: "vapor-routing") ], swiftSettings: swiftSettings ), .target( name: "ApiController", dependencies: [ .target(name: "SharedModels"), .product(name: "Dependencies", package: "swift-dependencies"), .product(name: "DependenciesMacros", package: "swift-dependencies") ], swiftSettings: swiftSettings ), .target( name: "ApiControllerLive", dependencies: [ .target(name: "ApiController"), .target(name: "DatabaseClient") ], swiftSettings: swiftSettings ), .testTarget( name: "ApiRouteTests", dependencies: [ .target(name: "SharedModels") ], swiftSettings: swiftSettings ), .target( name: "DatabaseClient", dependencies: [ "SharedModels", .product(name: "Dependencies", package: "swift-dependencies"), .product(name: "DependenciesMacros", package: "swift-dependencies"), .product(name: "Fluent", package: "fluent"), .product(name: "Vapor", package: "vapor") ], swiftSettings: swiftSettings ), .target( name: "DatabaseClientLive", dependencies: [ "DatabaseClient", .product(name: "Vapor", package: "vapor") ], swiftSettings: swiftSettings ), .testTarget( name: "DatabaseClientTests", dependencies: [ "DatabaseClientLive", .product(name: "FluentSQLiteDriver", package: "fluent-sqlite-driver") ] ), .target( name: "HtmlSnapshotTesting", dependencies: [ .product(name: "Elementary", package: "elementary"), .product(name: "SnapshotTesting", package: "swift-snapshot-testing") ] ), .target( name: "SharedModels", dependencies: [ .product(name: "Dependencies", package: "swift-dependencies"), .product(name: "URLRouting", package: "swift-url-routing"), .product(name: "CasePaths", package: "swift-case-paths") ], swiftSettings: swiftSettings ), .target( name: "ViewController", dependencies: [ .target(name: "SharedModels"), .product(name: "Dependencies", package: "swift-dependencies"), .product(name: "DependenciesMacros", package: "swift-dependencies"), .product(name: "Elementary", package: "elementary") ], swiftSettings: swiftSettings ), .target( name: "ViewControllerLive", dependencies: [ .target(name: "DatabaseClient"), .target(name: "ViewController"), .product(name: "ElementaryHTMX", package: "elementary-htmx"), .product(name: "Vapor", package: "vapor") ], swiftSettings: swiftSettings ), .testTarget( name: "ViewControllerTests", dependencies: [ .target(name: "ViewControllerLive"), .target(name: "HtmlSnapshotTesting") ], resources: [ .copy("__Snapshots__") ], swiftSettings: swiftSettings ), .testTarget( name: "ViewRouteTests", dependencies: [ .target(name: "App"), .product(name: "VaporTesting", package: "vapor") ], swiftSettings: swiftSettings ) ], swiftLanguageModes: [.v5] ) var swiftSettings: [SwiftSetting] { [ .enableUpcomingFeature("DisableOutwardActorInference"), .enableExperimentalFeature("StrictConcurrency=complete"), .enableUpcomingFeature("ExistentialAny"), .enableUpcomingFeature("ConciseMagicFile"), .enableUpcomingFeature("ForwardTrailingClosures") ] }