diff --git a/Package.resolved b/Package.resolved index 0df7c73f7..5b2e5f892 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "c2a3dc302e76c540d06ab4501e4d518278f4c507599b8d925a73be6e0d838533", + "originHash" : "90afa6033b3948dd2483c4119540067594218f6ae758fa47f1d16bbb615d8373", "pins" : [ { "identity" : "async-http-client", @@ -249,8 +249,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/SwiftPackageIndex/SPIManifest.git", "state" : { - "revision" : "df8dfd0295c5ec9840c2987f8adec20381243109", - "version" : "1.8.2" + "revision" : "aace30e17abaa35713022ecc1cf426292b57f980", + "version" : "1.9.0" } }, { diff --git a/Package.swift b/Package.swift index e29326d29..5177de705 100644 --- a/Package.swift +++ b/Package.swift @@ -32,7 +32,7 @@ let package = Package( .package(url: "https://github.com/SwiftPackageIndex/Plot.git", branch: "main"), .package(url: "https://github.com/SwiftPackageIndex/CanonicalPackageURL.git", from: "1.0.0"), .package(url: "https://github.com/SwiftPackageIndex/DependencyResolution.git", from: "1.1.2"), - .package(url: "https://github.com/SwiftPackageIndex/SPIManifest.git", from: "1.2.0"), + .package(url: "https://github.com/SwiftPackageIndex/SPIManifest.git", from: "1.9.0"), .package(url: "https://github.com/SwiftPackageIndex/SemanticVersion.git", from: "0.3.0"), .package(url: "https://github.com/SwiftPackageIndex/ShellOut.git", from: "3.1.4"), .package(url: "https://github.com/swiftlang/swift-package-manager.git", branch: "release/6.1"), diff --git a/Sources/App/Commands/TriggerBuilds.swift b/Sources/App/Commands/TriggerBuilds.swift index 352bb54b1..e1488e181 100644 --- a/Sources/App/Commands/TriggerBuilds.swift +++ b/Sources/App/Commands/TriggerBuilds.swift @@ -383,11 +383,17 @@ struct BuildPair { static let all = Build.Platform.allActive.flatMap { platform in SwiftVersion.allActive.compactMap { swiftVersion in switch platform { + case .android: + // Android is supported from Swift version 6.1+ + return swiftVersion >= .v6_1 ? BuildPair(platform, swiftVersion) : nil case .iOS, .linux, .macosSpm, .macosXcodebuild, .tvOS, .watchOS: return BuildPair(platform, swiftVersion) case .visionOS: // visionOS is only available for Swift versions 5.9+ return swiftVersion >= .v5_9 ? BuildPair(platform, swiftVersion) : nil + case .wasm: + // Android is supported from Swift version 6.1+ + return swiftVersion >= .v6_1 ? BuildPair(platform, swiftVersion) : nil } } } diff --git a/Sources/App/Controllers/CompatibilityMatrix.swift b/Sources/App/Controllers/CompatibilityMatrix.swift index 1e2fbfb75..b7b723f0c 100644 --- a/Sources/App/Controllers/CompatibilityMatrix.swift +++ b/Sources/App/Controllers/CompatibilityMatrix.swift @@ -36,6 +36,8 @@ extension CompatibilityMatrix { case watchOS case tvOS case linux + case wasm + case android static func <(lhs: Self, rhs: Self) -> Bool { allCases.firstIndex(of: lhs)! < allCases.firstIndex(of: rhs)! } } diff --git a/Sources/App/Controllers/PackageController+ShowRoute.swift b/Sources/App/Controllers/PackageController+ShowRoute.swift index 1138d4eff..278abf3cd 100644 --- a/Sources/App/Controllers/PackageController+ShowRoute.swift +++ b/Sources/App/Controllers/PackageController+ShowRoute.swift @@ -51,12 +51,16 @@ extension Array where Element == PackageController.BuildsRoute.BuildInfo { extension Build.Platform { func isCompatible(with other: CompatibilityMatrix.Platform) -> Bool { switch self { + case .android: + return other == .android case .iOS: return other == .iOS case .macosSpm, .macosXcodebuild: return other == .macOS case .tvOS: return other == .tvOS + case .wasm: + return other == .wasm case .watchOS: return other == .watchOS case .visionOS: diff --git a/Sources/App/Core/Extensions/Badge.swift b/Sources/App/Core/Extensions/Badge.swift index 9abb2f5d1..638f71441 100644 --- a/Sources/App/Core/Extensions/Badge.swift +++ b/Sources/App/Core/Extensions/Badge.swift @@ -124,6 +124,10 @@ extension Badge { return .init(left: 4, right: "watchOS") case .linux: return .init(left: 5, right: "Linux") + case .wasm: + return .init(left: 6, right: "Wasm") + case .android: + return .init(left: 7, right: "Android") } } ) diff --git a/Sources/App/Core/Extensions/BuildPair+ext.swift b/Sources/App/Core/Extensions/BuildPair+ext.swift index 59a92c223..1a89ba77e 100644 --- a/Sources/App/Core/Extensions/BuildPair+ext.swift +++ b/Sources/App/Core/Extensions/BuildPair+ext.swift @@ -32,6 +32,10 @@ extension BuildPair { return .visionOS case .watchOS: return .watchOS + case .wasm: + return .wasm + case .android: + return .android } } diff --git a/Sources/App/Core/PackageCollection+generate.swift b/Sources/App/Core/PackageCollection+generate.swift index 2bd789003..f4a1e512c 100644 --- a/Sources/App/Core/PackageCollection+generate.swift +++ b/Sources/App/Core/PackageCollection+generate.swift @@ -296,7 +296,7 @@ extension Array where Element == PackageCollection.Compatibility { private extension PackageCollection.Platform { init(platform: Build.Platform) { switch platform { - case .iOS, .tvOS, .visionOS, .watchOS, .linux: + case .android, .iOS, .tvOS, .visionOS, .watchOS, .linux, .wasm: self.init(name: platform.rawValue) case .macosSpm, .macosXcodebuild: self.init(name: "macos") diff --git a/Sources/App/Core/SearchFilter/Filters/PlatformSearchFilter.swift b/Sources/App/Core/SearchFilter/Filters/PlatformSearchFilter.swift index 2aba671e7..35219f075 100644 --- a/Sources/App/Core/SearchFilter/Filters/PlatformSearchFilter.swift +++ b/Sources/App/Core/SearchFilter/Filters/PlatformSearchFilter.swift @@ -57,6 +57,8 @@ struct PlatformSearchFilter: SearchFilterProtocol { private extension Package.PlatformCompatibility { var displayDescription: String { switch self { + case .android: + return "Android" case .iOS: return "iOS" case .macOS: @@ -67,6 +69,8 @@ private extension Package.PlatformCompatibility { return "tvOS" case .visionOS: return "visionOS" + case .wasm: + return "Wasm" case .watchOS: return "watchOS" } diff --git a/Sources/App/Models/Build+Platform.swift b/Sources/App/Models/Build+Platform.swift index e754c537d..00609146f 100644 --- a/Sources/App/Models/Build+Platform.swift +++ b/Sources/App/Models/Build+Platform.swift @@ -17,49 +17,59 @@ import SPIManifest extension Build { enum Platform: String, Codable, Equatable, CaseIterable { + case android case iOS = "ios" case linux case macosSpm = "macos-spm" case macosXcodebuild = "macos-xcodebuild" case tvOS = "tvos" case visionOS = "visionos" + case wasm case watchOS = "watchos" var name: String { switch self { + case .android: + return "Android" case .iOS: return "iOS" + case .linux: + return "Linux" case .macosSpm: return "macOS - SPM" case .macosXcodebuild: return "macOS - xcodebuild" case .tvOS: return "tvOS" + case .wasm: + return "Wasm" case .watchOS: return "watchOS" case .visionOS: return "visionOS" - case .linux: - return "Linux" } } var displayName: String { switch self { + case .android: + return "Android" case .iOS: return "iOS" + case .linux: + return "Linux" case .macosSpm: return "macOS (SPM)" case .macosXcodebuild: return "macOS (Xcode)" case .tvOS: return "tvOS" + case .wasm: + return "Wasm" case .watchOS: return "watchOS" case .visionOS: return "visionOS" - case .linux: - return "Linux" } } @@ -67,7 +77,7 @@ extension Build { static var allActive: [Self] { // The order of this array defines the platform order on the BuildIndex page. Keep this aliged with the // order in GetRoute.Model.PlatformResults (which is the order in the build matrix on the PackageShow page). - let active: [Self] = [.iOS, .macosSpm, .macosXcodebuild, .visionOS, .tvOS, .watchOS, .linux] + let active: [Self] = [.iOS, .macosSpm, .macosXcodebuild, .visionOS, .tvOS, .watchOS, .linux, .wasm, .android] assert(active.count == allCases.count, "mismatch in Build.Platform and active platform count") return active } @@ -78,6 +88,8 @@ extension Build { /// - Parameter spiManifestPlatform: SPIManifest platform private init(_ spiManifestPlatform: SPIManifest.Platform) { switch spiManifestPlatform { + case .android: + self = .android case .iOS: self = .iOS case .linux: @@ -90,6 +102,8 @@ extension Build { self = .tvOS case .visionOS: self = .visionOS + case .wasm: + self = .wasm case .watchOS: self = .watchOS } diff --git a/Sources/App/Models/Package.swift b/Sources/App/Models/Package.swift index ff6a914a8..ba408af29 100644 --- a/Sources/App/Models/Package.swift +++ b/Sources/App/Models/Package.swift @@ -103,11 +103,13 @@ extension Package: Hashable { extension Package { enum PlatformCompatibility: String, Codable { + case android case iOS = "ios" case macOS = "macos" case linux case tvOS = "tvos" case visionOS = "visionos" + case wasm case watchOS = "watchos" } } diff --git a/Sources/App/Views/PackageController/Builds/BuildShow+Model.swift b/Sources/App/Views/PackageController/Builds/BuildShow+Model.swift index acbef3ad9..58908d5a1 100644 --- a/Sources/App/Views/PackageController/Builds/BuildShow+Model.swift +++ b/Sources/App/Views/PackageController/Builds/BuildShow+Model.swift @@ -107,7 +107,7 @@ extension BuildShow { (.visionOS, let swift), (.watchOS, let swift): return swift.xcodeVersion - case (.macosSpm, _), (.linux, _): + case (.android, _), (.macosSpm, _), (.linux, _), (.wasm, _): return nil } } diff --git a/Sources/App/Views/PackageController/CompatibilityMatrix.Platform+BuildResultPresentable.swift b/Sources/App/Views/PackageController/CompatibilityMatrix.Platform+BuildResultPresentable.swift index a8ed443bc..c7ddce583 100644 --- a/Sources/App/Views/PackageController/CompatibilityMatrix.Platform+BuildResultPresentable.swift +++ b/Sources/App/Views/PackageController/CompatibilityMatrix.Platform+BuildResultPresentable.swift @@ -16,6 +16,8 @@ extension CompatibilityMatrix.Platform: BuildResultPresentable { var displayName: String { switch self { + case .android: + return "Android" case .iOS: return "iOS" case .linux: @@ -26,6 +28,8 @@ extension CompatibilityMatrix.Platform: BuildResultPresentable { return "tvOS" case .visionOS: return "visionOS" + case .wasm: + return "Wasm" case .watchOS: return "watchOS" } @@ -33,8 +37,10 @@ extension CompatibilityMatrix.Platform: BuildResultPresentable { var longDisplayName: String { switch self { - case .macOS, .iOS, .linux, .tvOS, .visionOS, .watchOS: + case .android, .macOS, .iOS, .linux, .tvOS, .visionOS, .watchOS: return displayName + case .wasm: + return "WebAssembly" } } diff --git a/Tests/AppTests/BuildIndexModelTests.swift b/Tests/AppTests/BuildIndexModelTests.swift index 47f0ec1d2..52ca7a566 100644 --- a/Tests/AppTests/BuildIndexModelTests.swift +++ b/Tests/AppTests/BuildIndexModelTests.swift @@ -96,7 +96,7 @@ extension AllTests.BuildIndexModelTests { let matrix = model.buildMatrix // validate - #expect(matrix.values.keys.count == 28) + #expect(matrix.values.keys.count == 30) #expect( matrix.values[.init(swiftVersion: .v3, platform: .iOS)]?.map(\.column.label) == ["1.2.3", "2.0.0-b1", "main"] ) @@ -141,7 +141,7 @@ extension AllTests.BuildIndexModelTests { let matrix = model.buildMatrix // validate - #expect(matrix.values.keys.count == 28) + #expect(matrix.values.keys.count == 30) #expect( matrix.values[.init(swiftVersion: .v3, platform: .iOS)]?.map(\.column.label) == ["1.2.3", "main"] ) diff --git a/Tests/AppTests/BuildTriggerTests.swift b/Tests/AppTests/BuildTriggerTests.swift index 213983e04..ba12a1ef0 100644 --- a/Tests/AppTests/BuildTriggerTests.swift +++ b/Tests/AppTests/BuildTriggerTests.swift @@ -436,14 +436,16 @@ extension AllTests.BuildTriggerTests { // validate // ensure Gitlab requests go out - #expect(queries.count == 28) - #expect(queries.value.map { $0.variables["VERSION_ID"] } == Array(repeating: versionId.uuidString, count: 28)) + #expect(queries.count == 30) + #expect(queries.value.map { $0.variables["VERSION_ID"] } == Array(repeating: versionId.uuidString, count: 30)) let buildPlatforms = queries.value.compactMap { $0.variables["BUILD_PLATFORM"] } #expect(Dictionary(grouping: buildPlatforms, by: { $0 }) - .mapValues(\.count) == ["ios": 4, + .mapValues(\.count) == ["android": 1, + "ios": 4, "macos-spm": 4, "macos-xcodebuild": 4, "linux": 4, + "wasm": 1, "watchos": 4, "visionos": 4, "tvos": 4]) @@ -452,12 +454,12 @@ extension AllTests.BuildTriggerTests { .mapValues(\.count) == [SwiftVersion.v1.description(droppingZeroes: .patch): 7, SwiftVersion.v2.description(droppingZeroes: .patch): 7, SwiftVersion.v3.description(droppingZeroes: .patch): 7, - SwiftVersion.v4.description(droppingZeroes: .patch): 7]) + SwiftVersion.v4.description(droppingZeroes: .patch): 9]) // ensure the Build stubs are created to prevent re-selection let v = try await Version.find(versionId, on: app.db) try await v?.$builds.load(on: app.db) - #expect(v?.builds.count == 28) + #expect(v?.builds.count == 30) // ensure re-selection is empty let candidates = try await fetchBuildCandidates(app.db) @@ -595,11 +597,11 @@ extension AllTests.BuildTriggerTests { try await triggerBuilds(on: app.db, mode: .packageId(pkgId, force: false)) // validate - #expect(triggerCount.value == 28) + #expect(triggerCount.value == 30) // ensure builds are now in progress let v = try await Version.find(versionId, on: app.db) try await v?.$builds.load(on: app.db) - #expect(v?.builds.count == 28) + #expect(v?.builds.count == 30) } } @@ -620,11 +622,11 @@ extension AllTests.BuildTriggerTests { try await triggerBuilds(on: app.db, mode: .packageId(pkgId, force: true)) // validate - #expect(triggerCount.value == 28) + #expect(triggerCount.value == 30) // ensure builds are now in progress let v = try await Version.find(versionId, on: app.db) try await v?.$builds.load(on: app.db) - #expect(v?.builds.count == 28) + #expect(v?.builds.count == 30) } } } @@ -669,7 +671,7 @@ extension AllTests.BuildTriggerTests { try await triggerBuilds(on: app.db, mode: .limit(4)) // validate - only the first batch must be allowed to trigger - #expect(triggerCount.value == 28) + #expect(triggerCount.value == 30) } } } @@ -881,7 +883,7 @@ extension AllTests.BuildTriggerTests { try await triggerBuilds(on: app.db, mode: .packageId(pkgId, force: false)) // validate - #expect(triggerCount.value == 28) + #expect(triggerCount.value == 30) } } } @@ -943,7 +945,7 @@ extension AllTests.BuildTriggerTests { try await triggerBuilds(on: app.db, mode: .packageId(pkgId, force: false)) // validate - #expect(triggerCount.value == 28) + #expect(triggerCount.value == 30) } } } @@ -984,7 +986,7 @@ extension AllTests.BuildTriggerTests { try await triggerBuilds(on: app.db, mode: .packageId(.id0, force: false)) // validate - #expect(triggerCount.value == 28) + #expect(triggerCount.value == 30) } } } @@ -1228,7 +1230,7 @@ extension AllTests.BuildTriggerTests { @Test func BuildPair_all() throws { // Sanity checks for critical counts used in canadidate selection - #expect(BuildPair.all.count == 28) + #expect(BuildPair.all.count == 30) #expect(BuildPair.all == [ .init(.iOS, .v1), .init(.iOS, .v2), @@ -1258,6 +1260,8 @@ extension AllTests.BuildTriggerTests { .init(.linux, .v2), .init(.linux, .v3), .init(.linux, .v4), + .init(.wasm, .v4), + .init(.android, .v4), ]) #expect(BuildPair.allExceptLatestSwiftVersion.count == 21) } @@ -1304,7 +1308,7 @@ extension AllTests.BuildTriggerTests { let res = try await findMissingBuilds(app.db, packageId: pkgId) #expect(res.count == 1) let triggerInfo = try #require(res.first) - #expect(triggerInfo.buildPairs.count == 27) + #expect(triggerInfo.buildPairs.count == 29) #expect(!triggerInfo.buildPairs.contains(.init(.iOS, .v1))) } } diff --git a/Tests/AppTests/PackageTests.swift b/Tests/AppTests/PackageTests.swift index dca150b53..08b5e58cb 100644 --- a/Tests/AppTests/PackageTests.swift +++ b/Tests/AppTests/PackageTests.swift @@ -472,7 +472,7 @@ extension AllTests.PackageTests { let p1 = try #require( try await Package.query(on: app.db).filter(by: "1".url).first() ) - #expect(p1.platformCompatibility == [.iOS, .macOS, .linux, .tvOS, .visionOS, .watchOS]) + #expect(p1.platformCompatibility == [.android, .iOS, .macOS, .linux, .tvOS, .visionOS, .wasm, .watchOS]) let p2 = try #require( try await Package.query(on: app.db).filter(by: "2".url).first() ) diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/BuildIndex_document.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/BuildIndex_document.1.html index e9d778f1a..4934741af 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/BuildIndex_document.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/BuildIndex_document.1.html @@ -11,9 +11,9 @@ foobar – Build Results – Swift Package Index - - - + + + @@ -295,6 +295,60 @@

Swift 6.1

+
  • +
    + Wasm +
    +
    +
    + 1.2.3 +
    +
    + main +
    +
    + 2.0.0-b1 +
    +
    +
    +
    + Pending +
    +
    + Pending +
    +
    + Pending +
    +
    +
  • +
  • +
    + Android +
    +
    +
    + 1.2.3 +
    +
    + main +
    +
    + 2.0.0-b1 +
    +
    +
    +
    + Pending +
    +
    + Pending +
    +
    + Pending +
    +
    +

  • Swift 6.0

    diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document.1.html index 2d31eb49b..73dba0172 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document.1.html @@ -238,6 +238,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -246,6 +248,8 @@

    Compatibility

    +
    +
  • @@ -261,6 +265,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -269,6 +275,8 @@

    Compatibility

    +
    +
  • @@ -284,6 +292,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -292,6 +302,8 @@

    Compatibility

    +
    +
  • diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_app_store_incompatible_license.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_app_store_incompatible_license.1.html index 5dcae399d..6d363ca86 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_app_store_incompatible_license.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_app_store_incompatible_license.1.html @@ -241,6 +241,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -249,6 +251,8 @@

    Compatibility

    +
    +
  • @@ -264,6 +268,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -272,6 +278,8 @@

    Compatibility

    +
    +
  • @@ -287,6 +295,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -295,6 +305,8 @@

    Compatibility

    +
    +
  • diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_binary_targets.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_binary_targets.1.html index 75ca692e0..1aa23d4e7 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_binary_targets.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_binary_targets.1.html @@ -242,6 +242,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -250,6 +252,8 @@

    Compatibility

    +
    +
  • @@ -265,6 +269,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -273,6 +279,8 @@

    Compatibility

    +
    +
  • @@ -288,6 +296,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -296,6 +306,8 @@

    Compatibility

    +
    +
  • diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_canonicalURL_noImageSnapshots.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_canonicalURL_noImageSnapshots.1.html index dfe9bfca7..88eb7778a 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_canonicalURL_noImageSnapshots.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_canonicalURL_noImageSnapshots.1.html @@ -238,6 +238,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -246,6 +248,8 @@

    Compatibility

    +
    +
  • @@ -261,6 +265,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -269,6 +275,8 @@

    Compatibility

    +
    +
  • @@ -284,6 +292,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -292,6 +302,8 @@

    Compatibility

    +
    +
  • diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_customCollection.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_customCollection.1.html index 5428bc64d..62e210bcb 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_customCollection.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_customCollection.1.html @@ -241,6 +241,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -249,6 +251,8 @@

    Compatibility

    +
    +
  • @@ -264,6 +268,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -272,6 +278,8 @@

    Compatibility

    +
    +
  • @@ -287,6 +295,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -295,6 +305,8 @@

    Compatibility

    +
    +
  • diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_emoji_summary.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_emoji_summary.1.html index 154d6206e..fff97494d 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_emoji_summary.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_emoji_summary.1.html @@ -238,6 +238,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -246,6 +248,8 @@

    Compatibility

    +
    +
  • @@ -261,6 +265,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -269,6 +275,8 @@

    Compatibility

    +
    +
  • @@ -284,6 +292,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -292,6 +302,8 @@

    Compatibility

    +
    +
  • diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_few_keywords.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_few_keywords.1.html index 1a609541e..53b67b979 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_few_keywords.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_few_keywords.1.html @@ -269,6 +269,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -277,6 +279,8 @@

    Compatibility

    +
    +
  • @@ -292,6 +296,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -300,6 +306,8 @@

    Compatibility

    +
    +
  • @@ -315,6 +323,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -323,6 +333,8 @@

    Compatibility

    +
    +
  • diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_many_keywords.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_many_keywords.1.html index 4b8e7324d..7d065ce43 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_many_keywords.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_many_keywords.1.html @@ -444,6 +444,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -452,6 +454,8 @@

    Compatibility

    +
    +
  • @@ -467,6 +471,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -475,6 +481,8 @@

    Compatibility

    +
    +
  • @@ -490,6 +498,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -498,6 +508,8 @@

    Compatibility

    +
    +
  • diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_no_authors_activity.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_no_authors_activity.1.html index 8b0fb72fc..c36c058f9 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_no_authors_activity.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_no_authors_activity.1.html @@ -233,6 +233,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -241,6 +243,8 @@

    Compatibility

    +
    +
  • @@ -256,6 +260,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -264,6 +270,8 @@

    Compatibility

    +
    +
  • @@ -279,6 +287,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -287,6 +297,8 @@

    Compatibility

    +
    +
  • diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_no_license.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_no_license.1.html index 8b5aa7f13..80e0fba64 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_no_license.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_no_license.1.html @@ -241,6 +241,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -249,6 +251,8 @@

    Compatibility

    +
    +
  • @@ -264,6 +268,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -272,6 +278,8 @@

    Compatibility

    +
    +
  • @@ -287,6 +295,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -295,6 +305,8 @@

    Compatibility

    +
    +
  • diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_open_source_license.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_open_source_license.1.html index 741118901..899976a86 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_open_source_license.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_open_source_license.1.html @@ -240,6 +240,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -248,6 +250,8 @@

    Compatibility

    +
    +
  • @@ -263,6 +267,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -271,6 +277,8 @@

    Compatibility

    +
    +
  • @@ -286,6 +294,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -294,6 +304,8 @@

    Compatibility

    +
    +
  • diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_other_license.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_other_license.1.html index bb9679297..1eaa97de3 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_other_license.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_other_license.1.html @@ -241,6 +241,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -249,6 +251,8 @@

    Compatibility

    +
    +
  • @@ -264,6 +268,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -272,6 +278,8 @@

    Compatibility

    +
    +
  • @@ -287,6 +295,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -295,6 +305,8 @@

    Compatibility

    +
    +
  • diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_single_row_tables.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_single_row_tables.1.html index c95181316..7f9117d06 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_single_row_tables.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_single_row_tables.1.html @@ -222,6 +222,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -230,6 +232,8 @@

    Compatibility

    +
    +
    diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_withPackageFundingLinks.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_withPackageFundingLinks.1.html index b812e9f55..4c7373a65 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_withPackageFundingLinks.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_withPackageFundingLinks.1.html @@ -246,6 +246,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -254,6 +256,8 @@

    Compatibility

    +
    +
  • @@ -269,6 +273,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -277,6 +283,8 @@

    Compatibility

    +
    +
  • @@ -292,6 +300,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -300,6 +310,8 @@

    Compatibility

    +
    +
  • diff --git a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_with_documentation_link.1.html b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_with_documentation_link.1.html index b28d079e6..66a23d6d0 100644 --- a/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_with_documentation_link.1.html +++ b/Tests/AppTests/__Snapshots__/WebpageSnapshotTests/PackageShow_document_with_documentation_link.1.html @@ -238,6 +238,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -246,6 +248,8 @@

    Compatibility

    +
    +
  • @@ -261,6 +265,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -269,6 +275,8 @@

    Compatibility

    +
    +
  • @@ -284,6 +292,8 @@

    Compatibility

    watchOS
    tvOS
    Linux
    +
    Wasm
    +
    Android
    @@ -292,6 +302,8 @@

    Compatibility

    +
    +