// swift-tools-version:6.0 import PackageDescription let package = Package( name: "hhe-po", platforms: [ .macOS(.v14) ], products: [ .executable(name: "App", targets: ["App"]), .library(name: "SharedModels", targets: ["SharedModels"]), .library(name: "DatabaseClient", targets: ["DatabaseClient"]), .library(name: "DatabaseClientLive", targets: ["DatabaseClientLive"]) ], 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 for 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") ], targets: [ .executableTarget( name: "App", dependencies: [ "DatabaseClientLive", .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") ], swiftSettings: swiftSettings ), .testTarget( name: "AppTests", dependencies: [ .target(name: "App"), .product(name: "VaporTesting", package: "vapor") ], 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: "SharedModels", dependencies: [ .product(name: "Dependencies", package: "swift-dependencies") ], swiftSettings: swiftSettings ) ], swiftLanguageModes: [.v5] ) var swiftSettings: [SwiftSetting] { [ .enableUpcomingFeature("DisableOutwardActorInference"), .enableExperimentalFeature("StrictConcurrency=complete"), .enableUpcomingFeature("ExistentialAny"), .enableUpcomingFeature("ConciseMagicFile"), .enableUpcomingFeature("ForwardTrailinClosures") ] }