p2p-swift / Package.swift
136 words
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// 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),
    ]
)

static mirror of HEAD · about · clone: git clone https://ird.cod-sursa.ro/p2p-swift.git