// swift-tools-version: 6.0
import PackageDescription
let swift6: [SwiftSetting] = [.swiftLanguageMode(.v6)]
let package = Package(
name: "ird-p2p-swift",
platforms: [.iOS(.v16), .macOS(.v13)],
products: [
.library(name: "IrdP2P", targets: ["IrdP2P"]),
],
dependencies: [
// Google WebRTC for Apple platforms as a binary xcframework (module `WebRTC`).
.package(url: "https://github.com/stasel/WebRTC.git", exact: "152.0.0"),
],
targets: [
// Pure CryptoKit: identifiers, HKDF derivations, sealed envelopes, identity. No networking.
.target(name: "IrdP2PCrypto", swiftSettings: swift6),
// The service's wire contract: /ws frames, descriptor, TURN credentials, mailbox HTTP.
.target(name: "IrdP2PSignaling", dependencies: ["IrdP2PCrypto"], swiftSettings: swift6),
// Rooms, peer links, WebRTC data channels, identity storage — the public facade.
.target(
name: "IrdP2P",
dependencies: [
"IrdP2PCrypto",
"IrdP2PSignaling",
.product(name: "WebRTC", package: "WebRTC"),
],
swiftSettings: swift6
),
.testTarget(
name: "IrdP2PCryptoTests",
dependencies: ["IrdP2PCrypto"],
resources: [.copy("Vectors")],
swiftSettings: swift6
),
.testTarget(
name: "IrdP2PSignalingTests",
dependencies: ["IrdP2PSignaling"],
resources: [.copy("Fixtures")],
swiftSettings: swift6
),
.testTarget(name: "IrdP2PTests", dependencies: ["IrdP2P"], swiftSettings: swift6),
]
)