The Swift Package Index logo.Swift Package Index

Build Information

Successful build of YouTubeKit, reference 0.4.10 (89854c), with Swift 6.4 for macOS (SPM) on 27 Oct 2026 17:14:04 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-27.0.0.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 5.1.3
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/alexeichhorn/YouTubeKit.git
Reference: 0.4.10
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/alexeichhorn/YouTubeKit
 * tag               0.4.10     -> FETCH_HEAD
HEAD is now at 89854c9 Merge pull request #149 from alexeichhorn/fix/filter-drm-formats
Cloned https://github.com/alexeichhorn/YouTubeKit.git
Revision (git rev-parse @):
89854c93207ad0d2b3d78d6f1aea24595ca66552
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/alexeichhorn/YouTubeKit.git at 0.4.10
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "traits": [
    "default"
  ],
  "dependencies": [
    {
      "identity": "youtubekit",
      "name": "YouTubeKit",
      "url": "https://github.com/alexeichhorn/YouTubeKit.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/YouTubeKit",
      "traits": [
        "default"
      ],
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/alexeichhorn/YouTubeKit.git
[1/2190] Fetching youtubekit
Fetched https://github.com/alexeichhorn/YouTubeKit.git (1.25s)
Creating working copy for https://github.com/alexeichhorn/YouTubeKit.git
Working copy of https://github.com/alexeichhorn/YouTubeKit.git resolved at 0.4.10 (89854c9)
warning: '.resolve-product-dependencies': dependency 'youtubekit' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.4
Building package at path:  $PWD
https://github.com/alexeichhorn/YouTubeKit.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-27.0.0.app xcrun swift build --arch arm64
Building for debugging...
[Pre-planning 1 / 95]
[Planning deferred tasks]
[33 / 43] YouTubeKit_YouTubeKit
[34 / 43]
[35 / 44] YouTubeKit
[44 / 105]
[47 / 105]
[55 / 105]
[57 / 105]
[58 / 105]
[62 / 105]
[64 / 105]
[67 / 105]
[72 / 105]
[75 / 105]
[76 / 105]
[82 / 105]
[83 / 105]
[84 / 105]
[96 / 105] YouTubeKit
[97 / 105] YouTubeKit
[102 / 105] YouTubeKit
Build complete! (10.41 sec)
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:44:15: warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 42 |
 43 |         let codecs: [String]
 44 |         (self.mimeType, codecs) = try Extraction.mimeTypeCodec(format.mimeType)
    |               `- warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 45 |
 46 |         let mimeTypeComponents = self.mimeType.components(separatedBy: "/")
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:46:39: warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 44 |         (self.mimeType, codecs) = try Extraction.mimeTypeCodec(format.mimeType)
 45 |
 46 |         let mimeTypeComponents = self.mimeType.components(separatedBy: "/")
    |                                       `- warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 47 |         self.type = mimeTypeComponents.first ?? ""
 48 |         self.subtype = mimeTypeComponents[safe: 1] ?? ""
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:47:14: warning: 'type' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 45 |
 46 |         let mimeTypeComponents = self.mimeType.components(separatedBy: "/")
 47 |         self.type = mimeTypeComponents.first ?? ""
    |              `- warning: 'type' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 48 |         self.subtype = mimeTypeComponents[safe: 1] ?? ""
 49 |
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:48:14: warning: 'subtype' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 46 |         let mimeTypeComponents = self.mimeType.components(separatedBy: "/")
 47 |         self.type = mimeTypeComponents.first ?? ""
 48 |         self.subtype = mimeTypeComponents[safe: 1] ?? ""
    |              `- warning: 'subtype' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 49 |
 50 |         self.fileExtension = FileExtension(mimeType: self.mimeType)
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:50:59: warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 48 |         self.subtype = mimeTypeComponents[safe: 1] ?? ""
 49 |
 50 |         self.fileExtension = FileExtension(mimeType: self.mimeType)
    |                                                           `- warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 51 |
 52 |         // codec decoding
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:57:21: warning: 'type' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 55 |             self.audioCodec = AudioCodec(rawValue: codecs[1])
 56 |         } else if let codec = codecs.first {
 57 |             if self.type == "audio" {
    |                     `- warning: 'type' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 58 |                 self.audioCodec = AudioCodec(rawValue: codec)
 59 |                 self.videoCodec = nil
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:94:14: warning: 'type' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 92 |
 93 |         // Backward compatibility for deprecated `subtype` and `mimeType`
 94 |         self.type = (remoteStream.videoCodec != nil) ? "video" : "audio"
    |              `- warning: 'type' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 95 |         self.subtype = ""
 96 |         self.mimeType = ""
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:95:14: warning: 'subtype' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 93 |         // Backward compatibility for deprecated `subtype` and `mimeType`
 94 |         self.type = (remoteStream.videoCodec != nil) ? "video" : "audio"
 95 |         self.subtype = ""
    |              `- warning: 'subtype' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 96 |         self.mimeType = ""
 97 |     }
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:96:14: warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 94 |         self.type = (remoteStream.videoCodec != nil) ? "video" : "audio"
 95 |         self.subtype = ""
 96 |         self.mimeType = ""
    |              `- warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 97 |     }
 98 |
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Extensions/AsyncCompatibility.swift:45:87: warning: passing non-Sendable parameter '$0' to function expecting a '@Sendable' closure
43 |
44 |     func data(from url: URL) async throws -> (Data, URLResponse) {
45 |         try await performCancellableDataTask { dataTask(with: url, completionHandler: $0) }
   |                                              |                                        `- warning: passing non-Sendable parameter '$0' to function expecting a '@Sendable' closure
   |                                              `- note: parameter '$0' is implicitly non-Sendable
46 |     }
47 |
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Extensions/AsyncCompatibility.swift:49:91: warning: passing non-Sendable parameter '$0' to function expecting a '@Sendable' closure
47 |
48 |     func data(for request: URLRequest) async throws -> (Data, URLResponse) {
49 |         try await performCancellableDataTask { dataTask(with: request, completionHandler: $0) }
   |                                              |                                            `- warning: passing non-Sendable parameter '$0' to function expecting a '@Sendable' closure
   |                                              `- note: parameter '$0' is implicitly non-Sendable
50 |     }
51 |
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/YouTube.swift:354:19: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
352 |                 do {
353 |                     return nil //try await Extraction.getVideoInfo(fromHTML: watchHTML)  // (temporarily disabled)
354 |                 } catch let error {
    |                   `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
355 |                     os_log("Couldn't extract video info from main watch html: %{public}@", log: log, type: .debug, error.localizedDescription)
356 |                     return nil
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "YouTubeKit",
  "name" : "YouTubeKit",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "YouTubeKit",
      "targets" : [
        "YouTubeKit"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "YouTubeKitTests",
      "module_type" : "SwiftTarget",
      "name" : "YouTubeKitTests",
      "path" : "Tests/YouTubeKitTests",
      "sources" : [
        "CipherTests.swift",
        "ExtensionTests.swift",
        "Extensions.swift",
        "ExtractionTests.swift",
        "ITagsTests.swift",
        "NSigTests.swift",
        "ParserTests.swift",
        "PlayabilityTests.swift",
        "SignatureTests.swift",
        "YouTubeKitTests.swift"
      ],
      "target_dependencies" : [
        "YouTubeKit"
      ],
      "type" : "test"
    },
    {
      "c99name" : "YouTubeKit",
      "module_type" : "SwiftTarget",
      "name" : "YouTubeKit",
      "path" : "Sources/YouTubeKit",
      "product_memberships" : [
        "YouTubeKit"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Resources/astring.umd.js",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Resources/meriyah.umd.js",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Resources/yt_ejs_helper.js",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "Cipher.swift",
        "Errors.swift",
        "Extensions/AsyncCompatibility.swift",
        "Extensions/Concurrency.swift",
        "Extensions/Foundation.swift",
        "Extensions/Lazy.swift",
        "Extensions/Logging.swift",
        "Extensions/RegularExpression.swift",
        "Extensions/Retry.swift",
        "Extensions/URLSessionDelegates.swift",
        "Extensions/WebSocket.swift",
        "Extraction.swift",
        "InnerTube.swift",
        "Models/Codecs.swift",
        "Models/FileExtension.swift",
        "Models/ITag.swift",
        "Models/Livestream.swift",
        "Models/Method.swift",
        "Models/Stream.swift",
        "Models/StreamQuery.swift",
        "Models/YouTubeMetadata.swift",
        "Parser.swift",
        "Remote/AppIdentity.swift",
        "Remote/Chunking.swift",
        "Remote/Models/RemoteStream.swift",
        "Remote/RemoteYouTubeClient.swift",
        "SignatureSolver.swift",
        "YouTube.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
✅  Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path:  $PWD/.docs/alexeichhorn/youtubekit/0.4.10
Repository:               alexeichhorn/YouTubeKit
Swift version used:       6.4
Target:                   YouTubeKit
Extracting symbol information for 'YouTubeKit'...
Finished extracting symbol information for 'YouTubeKit'. (1.84s)
Building documentation for 'YouTubeKit'...
warning: Parameter 'videoID' is missing documentation
  --> Sources/YouTubeKit/YouTube.swift:75:168-75:168
73 |     private let log = OSLog(YouTube.self)
74 |
75 +     /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: `local` on iOS, macOS, tvOS, visionOS; `remote` on watchOS)
   |         ╰─suggestion: Document 'videoID' parameter
76 |     public init(videoID: String, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = .default) {
77 |         self.videoID = videoID
warning: Parameter 'useOAuth' is missing documentation
  --> Sources/YouTubeKit/YouTube.swift:75:168-75:168
73 |     private let log = OSLog(YouTube.self)
74 |
75 +     /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: `local` on iOS, macOS, tvOS, visionOS; `remote` on watchOS)
   |         ╰─suggestion: Document 'useOAuth' parameter
76 |     public init(videoID: String, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = .default) {
77 |         self.videoID = videoID
warning: Parameter 'allowOAuthCache' is missing documentation
  --> Sources/YouTubeKit/YouTube.swift:75:168-75:168
73 |     private let log = OSLog(YouTube.self)
74 |
75 +     /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: `local` on iOS, macOS, tvOS, visionOS; `remote` on watchOS)
   |         ╰─suggestion: Document 'allowOAuthCache' parameter
76 |     public init(videoID: String, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = .default) {
77 |         self.videoID = videoID
warning: Parameter 'proxies' is missing documentation
  --> Sources/YouTubeKit/YouTube.swift:75:168-75:168
73 |     private let log = OSLog(YouTube.self)
74 |
75 +     /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: `local` on iOS, macOS, tvOS, visionOS; `remote` on watchOS)
   |         ╰─suggestion: Document 'proxies' parameter
76 |     public init(videoID: String, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = .default) {
77 |         self.videoID = videoID
warning: Parameter 'proxies' is missing documentation
  --> Sources/YouTubeKit/YouTube.swift:93:168-93:168
91 |     }
92 |
93 +     /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: `local` on iOS, macOS, tvOS, visionOS; `remote` on watchOS)
   |         ╰─suggestion: Document 'proxies' parameter
94 |     public convenience init(url: URL, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = .default) {
95 |         let videoID = Extraction.extractVideoID(from: url.absoluteString) ?? ""
warning: Parameter 'url' is missing documentation
  --> Sources/YouTubeKit/YouTube.swift:93:168-93:168
91 |     }
92 |
93 +     /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: `local` on iOS, macOS, tvOS, visionOS; `remote` on watchOS)
   |         ╰─suggestion: Document 'url' parameter
94 |     public convenience init(url: URL, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = .default) {
95 |         let videoID = Extraction.extractVideoID(from: url.absoluteString) ?? ""
warning: Parameter 'allowOAuthCache' is missing documentation
  --> Sources/YouTubeKit/YouTube.swift:93:168-93:168
91 |     }
92 |
93 +     /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: `local` on iOS, macOS, tvOS, visionOS; `remote` on watchOS)
   |         ╰─suggestion: Document 'allowOAuthCache' parameter
94 |     public convenience init(url: URL, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = .default) {
95 |         let videoID = Extraction.extractVideoID(from: url.absoluteString) ?? ""
warning: Parameter 'useOAuth' is missing documentation
  --> Sources/YouTubeKit/YouTube.swift:93:168-93:168
91 |     }
92 |
93 +     /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: `local` on iOS, macOS, tvOS, visionOS; `remote` on watchOS)
   |         ╰─suggestion: Document 'useOAuth' parameter
94 |     public convenience init(url: URL, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = .default) {
95 |         let videoID = Extraction.extractVideoID(from: url.absoluteString) ?? ""
Finished building documentation for 'YouTubeKit' (0.19s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/alexeichhorn/youtubekit/0.4.10
Fetching https://github.com/swiftlang/swift-docc-plugin
[1/2345] Fetching swift-docc-plugin
Fetched https://github.com/swiftlang/swift-docc-plugin (2.79s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.5.0 (5.03s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3849] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit (2.67s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (3.41s)
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.5.0
Building for debugging...
[Planning deferred tasks]
[18 / 41]
[20 / 43] Snippets
[31 / 58] SymbolKit
[35 / 58] Snippets
[43 / 58] SymbolKit
[52 / 59] SymbolKit
[58 / 63] SymbolKit
[59 / 63] snippet-extract-product
[61 / 63] snippet-extract-product
Build complete! (2.41 sec)
Building for debugging...
[Planning deferred tasks]
[3 / 11]
[4 / 12] YouTubeKit
[15 / 23] YouTubeKit
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:44:15: warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 42 |
 43 |         let codecs: [String]
 44 |         (self.mimeType, codecs) = try Extraction.mimeTypeCodec(format.mimeType)
    |               `- warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 45 |
 46 |         let mimeTypeComponents = self.mimeType.components(separatedBy: "/")
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:46:39: warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 44 |         (self.mimeType, codecs) = try Extraction.mimeTypeCodec(format.mimeType)
 45 |
 46 |         let mimeTypeComponents = self.mimeType.components(separatedBy: "/")
    |                                       `- warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 47 |         self.type = mimeTypeComponents.first ?? ""
 48 |         self.subtype = mimeTypeComponents[safe: 1] ?? ""
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:47:14: warning: 'type' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 45 |
 46 |         let mimeTypeComponents = self.mimeType.components(separatedBy: "/")
 47 |         self.type = mimeTypeComponents.first ?? ""
    |              `- warning: 'type' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 48 |         self.subtype = mimeTypeComponents[safe: 1] ?? ""
 49 |
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:48:14: warning: 'subtype' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 46 |         let mimeTypeComponents = self.mimeType.components(separatedBy: "/")
 47 |         self.type = mimeTypeComponents.first ?? ""
 48 |         self.subtype = mimeTypeComponents[safe: 1] ?? ""
    |              `- warning: 'subtype' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 49 |
 50 |         self.fileExtension = FileExtension(mimeType: self.mimeType)
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:50:59: warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 48 |         self.subtype = mimeTypeComponents[safe: 1] ?? ""
 49 |
 50 |         self.fileExtension = FileExtension(mimeType: self.mimeType)
    |                                                           `- warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 51 |
 52 |         // codec decoding
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:57:21: warning: 'type' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 55 |             self.audioCodec = AudioCodec(rawValue: codecs[1])
 56 |         } else if let codec = codecs.first {
 57 |             if self.type == "audio" {
    |                     `- warning: 'type' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 58 |                 self.audioCodec = AudioCodec(rawValue: codec)
 59 |                 self.videoCodec = nil
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:94:14: warning: 'type' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 92 |
 93 |         // Backward compatibility for deprecated `subtype` and `mimeType`
 94 |         self.type = (remoteStream.videoCodec != nil) ? "video" : "audio"
    |              `- warning: 'type' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 95 |         self.subtype = ""
 96 |         self.mimeType = ""
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:95:14: warning: 'subtype' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 93 |         // Backward compatibility for deprecated `subtype` and `mimeType`
 94 |         self.type = (remoteStream.videoCodec != nil) ? "video" : "audio"
 95 |         self.subtype = ""
    |              `- warning: 'subtype' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 96 |         self.mimeType = ""
 97 |     }
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Models/Stream.swift:96:14: warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 94 |         self.type = (remoteStream.videoCodec != nil) ? "video" : "audio"
 95 |         self.subtype = ""
 96 |         self.mimeType = ""
    |              `- warning: 'mimeType' is deprecated: Might be empty if using remote fetching method. Use `videoCodec`, `audioCodec` or `fileExtension` instead. [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
 97 |     }
 98 |
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/YouTube.swift:354:19: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
352 |                 do {
353 |                     return nil //try await Extraction.getVideoInfo(fromHTML: watchHTML)  // (temporarily disabled)
354 |                 } catch let error {
    |                   `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
355 |                     os_log("Couldn't extract video info from main watch html: %{public}@", log: log, type: .debug, error.localizedDescription)
356 |                     return nil
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Extensions/AsyncCompatibility.swift:45:87: warning: passing non-Sendable parameter '$0' to function expecting a '@Sendable' closure
43 |
44 |     func data(from url: URL) async throws -> (Data, URLResponse) {
45 |         try await performCancellableDataTask { dataTask(with: url, completionHandler: $0) }
   |                                              |                                        `- warning: passing non-Sendable parameter '$0' to function expecting a '@Sendable' closure
   |                                              `- note: parameter '$0' is implicitly non-Sendable
46 |     }
47 |
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Extensions/AsyncCompatibility.swift:49:91: warning: passing non-Sendable parameter '$0' to function expecting a '@Sendable' closure
47 |
48 |     func data(for request: URLRequest) async throws -> (Data, URLResponse) {
49 |         try await performCancellableDataTask { dataTask(with: request, completionHandler: $0) }
   |                                              |                                            `- warning: passing non-Sendable parameter '$0' to function expecting a '@Sendable' closure
   |                                              `- note: parameter '$0' is implicitly non-Sendable
50 |     }
51 |
[17 / 19] YouTubeKit
Build complete! (1.63 sec)
     404
3	/Users/admin/builder/spi-builder-workspace/.docs/alexeichhorn/youtubekit/0.4.10
✅  Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/alexeichhorn/youtubekit/0.4.10
File count: 404
Doc size:   3.0MB
Preparing doc bundle ...
Using presigned URL upload - AWS credentials not required
Uploading -alexeichhorn-youtubekit-0.4.10-358066a9.zip to presigned URL
Starting upload of 733953 bytes...
Upload completed successfully
Done.