Build Information
Successful build of YouTubeKit, reference 0.2.4 (c48829
), with Swift 6.0 for macOS (SPM) on 8 Nov 2024 19:37:10 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.1.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Build Log
========================================
RunAll
========================================
Builder version: 4.57.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/alexeichhorn/YouTubeKit.git
Reference: 0.2.4
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/alexeichhorn/YouTubeKit
* tag 0.2.4 -> FETCH_HEAD
HEAD is now at c488296 fxied ParserTests
Cloned https://github.com/alexeichhorn/YouTubeKit.git
Revision (git rev-parse @):
c4882966210b5d116a90c532f89b52448f720f0f
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/alexeichhorn/YouTubeKit.git at 0.2.4
========================================
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",
"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",
"dependencies": [
]
}
]
}
Fetching https://github.com/alexeichhorn/YouTubeKit.git
[1/1031] Fetching youtubekit
Fetched https://github.com/alexeichhorn/YouTubeKit.git from cache (0.94s)
Creating working copy for https://github.com/alexeichhorn/YouTubeKit.git
Working copy of https://github.com/alexeichhorn/YouTubeKit.git resolved at 0.2.4 (c488296)
warning: '.resolve-product-dependencies': dependency 'youtubekit' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.0
Building package at path: $PWD
https://github.com/alexeichhorn/YouTubeKit.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.1.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version--7754E27361AE5C74.txt
[3/26] Emitting module YouTubeKit
[4/26] Compiling YouTubeKit ITag.swift
[5/26] Compiling YouTubeKit Livestream.swift
[6/26] Compiling YouTubeKit StreamQuery.swift
[7/26] Compiling YouTubeKit YouTubeMetadata.swift
[8/26] Compiling YouTubeKit Concurrency.swift
[9/26] Compiling YouTubeKit Foundation.swift
[10/26] Compiling YouTubeKit Lazy.swift
[11/28] Compiling YouTubeKit InnerTube.swift
[12/28] Compiling YouTubeKit Codecs.swift
[13/28] Compiling YouTubeKit FileExtension.swift
[14/28] Compiling YouTubeKit Method.swift
/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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
97 | }
98 |
[15/28] Compiling YouTubeKit Stream.swift
/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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
97 | }
98 |
[16/28] Compiling YouTubeKit URLSessionDelegates.swift
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Extraction.swift:321:25: warning: code after 'continue' will never be executed
319 | continue // Skip the rest of the code as we are removing this stream
320 |
321 | let signature = try cipher.value.getSignature(cipheredSignature: cipheredSignature)
| `- warning: code after 'continue' will never be executed
322 |
323 | os_log("finished descrambling signature for itag=%{public}i", log: log, type: .debug, stream.itag)
[17/28] Compiling YouTubeKit WebSocket.swift
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Extraction.swift:321:25: warning: code after 'continue' will never be executed
319 | continue // Skip the rest of the code as we are removing this stream
320 |
321 | let signature = try cipher.value.getSignature(cipheredSignature: cipheredSignature)
| `- warning: code after 'continue' will never be executed
322 |
323 | os_log("finished descrambling signature for itag=%{public}i", log: log, type: .debug, stream.itag)
[18/28] Compiling YouTubeKit Extraction.swift
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Extraction.swift:321:25: warning: code after 'continue' will never be executed
319 | continue // Skip the rest of the code as we are removing this stream
320 |
321 | let signature = try cipher.value.getSignature(cipheredSignature: cipheredSignature)
| `- warning: code after 'continue' will never be executed
322 |
323 | os_log("finished descrambling signature for itag=%{public}i", log: log, type: .debug, stream.itag)
[19/28] Compiling YouTubeKit Parser.swift
[20/28] Compiling YouTubeKit RemoteStream.swift
[21/28] Compiling YouTubeKit Logging.swift
[22/28] Compiling YouTubeKit RegularExpression.swift
[23/28] Compiling YouTubeKit Retry.swift
[24/28] Compiling YouTubeKit Cipher.swift
[25/28] Compiling YouTubeKit Errors.swift
[26/28] Compiling YouTubeKit AsyncCompatibility.swift
[27/28] Compiling YouTubeKit RemoteYouTubeClient.swift
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/YouTube.swift:328:72: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
326 |
327 | // try extracting video infos from watch html directly as well
328 | let watchVideoInfoTask = Task<InnerTube.VideoInfo?, Never> { [log] in
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
329 | do {
330 | return try await Extraction.getVideoInfo(fromHTML: watchHTML)
| `- note: closure captures 'self' which is accessible to code in the current task
331 | } catch let error {
332 | os_log("Couldn't extract video info from main watch html: %{public}@", log: log, type: .debug, error.localizedDescription)
[28/28] Compiling YouTubeKit YouTube.swift
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/YouTube.swift:328:72: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
326 |
327 | // try extracting video infos from watch html directly as well
328 | let watchVideoInfoTask = Task<InnerTube.VideoInfo?, Never> { [log] in
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
329 | do {
330 | return try await Extraction.getVideoInfo(fromHTML: watchHTML)
| `- note: closure captures 'self' which is accessible to code in the current task
331 | } catch let error {
332 | os_log("Couldn't extract video info from main watch html: %{public}@", log: log, type: .debug, error.localizedDescription)
Build complete! (17.21s)
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",
"ParserTests.swift",
"PlayabilityTests.swift",
"YouTubeKitTests.swift"
],
"target_dependencies" : [
"YouTubeKit"
],
"type" : "test"
},
{
"c99name" : "YouTubeKit",
"module_type" : "SwiftTarget",
"name" : "YouTubeKit",
"path" : "Sources/YouTubeKit",
"product_memberships" : [
"YouTubeKit"
],
"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/Models/RemoteStream.swift",
"Remote/RemoteYouTubeClient.swift",
"YouTube.swift"
],
"type" : "library"
}
],
"tools_version" : "5.8"
}
✅ Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path: $PWD/.docs/alexeichhorn/youtubekit/0.2.4
Repository: alexeichhorn/YouTubeKit
Swift version used: 6.0
Target: YouTubeKit
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/swift-docc-render-artifact/.git/
From https://github.com/swiftlang/swift-docc-render-artifact
* branch 88815688627177b9716a01ca41da19397bd30e47 -> FETCH_HEAD
HEAD is now at 8881568 Update the artifact
Extracting symbol information for 'YouTubeKit'...
Finished extracting symbol information for 'YouTubeKit'. (3.74s)
Building documentation for 'YouTubeKit'...
warning: Parameter 'allowOAuthCache' is missing documentation
--> Sources/YouTubeKit/YouTube.swift:74:120-74:120
72 | private let log = OSLog(YouTube.self)
73 |
74 + /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: only local)
| ╰─suggestion: Document 'allowOAuthCache' parameter
75 | public init(videoID: String, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = [.local]) {
76 | self.videoID = videoID
warning: Parameter 'useOAuth' is missing documentation
--> Sources/YouTubeKit/YouTube.swift:74:120-74:120
72 | private let log = OSLog(YouTube.self)
73 |
74 + /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: only local)
| ╰─suggestion: Document 'useOAuth' parameter
75 | public init(videoID: String, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = [.local]) {
76 | self.videoID = videoID
warning: Parameter 'videoID' is missing documentation
--> Sources/YouTubeKit/YouTube.swift:74:120-74:120
72 | private let log = OSLog(YouTube.self)
73 |
74 + /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: only local)
| ╰─suggestion: Document 'videoID' parameter
75 | public init(videoID: String, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = [.local]) {
76 | self.videoID = videoID
warning: Parameter 'proxies' is missing documentation
--> Sources/YouTubeKit/YouTube.swift:74:120-74:120
72 | private let log = OSLog(YouTube.self)
73 |
74 + /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: only local)
| ╰─suggestion: Document 'proxies' parameter
75 | public init(videoID: String, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = [.local]) {
76 | self.videoID = videoID
warning: Parameter 'proxies' is missing documentation
--> Sources/YouTubeKit/YouTube.swift:88:120-88:120
86 | }
87 |
88 + /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: only local)
| ╰─suggestion: Document 'proxies' parameter
89 | public convenience init(url: URL, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = [.local]) {
90 | let videoID = Extraction.extractVideoID(from: url.absoluteString) ?? ""
warning: Parameter 'allowOAuthCache' is missing documentation
--> Sources/YouTubeKit/YouTube.swift:88:120-88:120
86 | }
87 |
88 + /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: only local)
| ╰─suggestion: Document 'allowOAuthCache' parameter
89 | public convenience init(url: URL, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = [.local]) {
90 | let videoID = Extraction.extractVideoID(from: url.absoluteString) ?? ""
warning: Parameter 'useOAuth' is missing documentation
--> Sources/YouTubeKit/YouTube.swift:88:120-88:120
86 | }
87 |
88 + /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: only local)
| ╰─suggestion: Document 'useOAuth' parameter
89 | public convenience init(url: URL, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = [.local]) {
90 | let videoID = Extraction.extractVideoID(from: url.absoluteString) ?? ""
warning: Parameter 'url' is missing documentation
--> Sources/YouTubeKit/YouTube.swift:88:120-88:120
86 | }
87 |
88 + /// - parameter methods: Methods used to extract streams from the video - ordered by priority (Default: only local)
| ╰─suggestion: Document 'url' parameter
89 | public convenience init(url: URL, proxies: [String: URL] = [:], useOAuth: Bool = false, allowOAuthCache: Bool = false, methods: [ExtractionMethod] = [.local]) {
90 | let videoID = Extraction.extractVideoID(from: url.absoluteString) ?? ""Finished building documentation for 'YouTubeKit' (0.17s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/alexeichhorn/youtubekit/0.2.4
Fetching https://github.com/swiftlang/swift-docc-plugin
[1/2038] Fetching swift-docc-plugin
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (1.24s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.4.3 (2.73s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3178] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (1.30s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (0.68s)
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.4.3
Building for debugging...
[0/8] Write sources
[3/8] Write snippet-extract-tool-entitlement.plist
[4/8] Write swift-version--7754E27361AE5C74.txt
[6/53] Emitting module SymbolKit
[7/57] Compiling SymbolKit DeclarationFragments.swift
[8/57] Compiling SymbolKit Fragment.swift
[9/57] Compiling SymbolKit FragmentKind.swift
[10/57] Compiling SymbolKit FunctionParameter.swift
[11/57] Compiling SymbolKit FunctionSignature.swift
[12/57] Compiling SymbolKit SemanticVersion.swift
[13/57] Compiling SymbolKit AccessControl.swift
[14/57] Compiling SymbolKit Availability.swift
[15/57] Compiling SymbolKit AvailabilityItem.swift
[16/57] Compiling SymbolKit Domain.swift
[17/57] Compiling SymbolKit Identifier.swift
[18/57] Compiling SymbolKit KindIdentifier.swift
[19/57] Compiling SymbolKit Location.swift
[20/57] Compiling SymbolKit Mutability.swift
[21/57] Compiling SymbolKit Mixin+Equals.swift
[22/57] Compiling SymbolKit Mixin+Hash.swift
[23/57] Compiling SymbolKit Mixin.swift
[24/57] Compiling SymbolKit LineList.swift
[25/57] Compiling SymbolKit Position.swift
[26/57] Compiling SymbolKit GenericConstraint.swift
[27/57] Compiling SymbolKit GenericParameter.swift
[28/57] Compiling SymbolKit Generics.swift
[29/57] Compiling SymbolKit Namespace.swift
[30/57] Compiling SymbolKit Relationship.swift
[31/57] Compiling SymbolKit RelationshipKind.swift
[32/57] Compiling SymbolKit SourceOrigin.swift
[33/57] Compiling SymbolKit GenericConstraints.swift
[34/57] Compiling SymbolKit Swift.swift
[35/57] Compiling SymbolKit Names.swift
[36/57] Compiling SymbolKit SPI.swift
[37/57] Compiling SymbolKit Snippet.swift
[38/57] Compiling SymbolKit Extension.swift
[39/57] Compiling SymbolKit SourceRange.swift
[40/57] Compiling SymbolKit Metadata.swift
[41/57] Compiling SymbolKit Module.swift
[42/57] Compiling SymbolKit OperatingSystem.swift
[43/57] Compiling SymbolKit Platform.swift
[44/57] Compiling SymbolKit Symbol.swift
[45/57] Compiling SymbolKit SymbolKind.swift
[46/57] Compiling SymbolKit SymbolGraph.swift
[47/57] Compiling SymbolKit GraphCollector.swift
[48/57] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[49/57] Compiling SymbolKit UnifiedSymbol.swift
[50/57] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[51/57] Compiling SymbolKit UnifiedSymbolGraph.swift
[52/57] Compiling Snippets SnippetParser.swift
[53/57] Compiling Snippets Snippet.swift
[54/57] Emitting module Snippets
[55/61] Compiling snippet_extract URL+Status.swift
[56/61] Compiling snippet_extract SymbolGraph+Snippet.swift
[57/61] Emitting module snippet_extract
[58/61] Compiling snippet_extract SnippetBuildCommand.swift
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract-tool
[60/61] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (4.08s)
Building for debugging...
[0/1] Write swift-version--7754E27361AE5C74.txt
[2/25] Compiling YouTubeKit ITag.swift
[3/25] Compiling YouTubeKit Livestream.swift
[4/27] Compiling YouTubeKit Method.swift
/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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
97 | }
98 |
[5/27] Compiling YouTubeKit Stream.swift
/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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
97 | }
98 |
[6/27] Compiling YouTubeKit Cipher.swift
[7/27] Compiling YouTubeKit Errors.swift
[8/27] Compiling YouTubeKit AsyncCompatibility.swift
[9/27] Compiling YouTubeKit URLSessionDelegates.swift
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Extraction.swift:321:25: warning: code after 'continue' will never be executed
319 | continue // Skip the rest of the code as we are removing this stream
320 |
321 | let signature = try cipher.value.getSignature(cipheredSignature: cipheredSignature)
| `- warning: code after 'continue' will never be executed
322 |
323 | os_log("finished descrambling signature for itag=%{public}i", log: log, type: .debug, stream.itag)
[10/27] Compiling YouTubeKit WebSocket.swift
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Extraction.swift:321:25: warning: code after 'continue' will never be executed
319 | continue // Skip the rest of the code as we are removing this stream
320 |
321 | let signature = try cipher.value.getSignature(cipheredSignature: cipheredSignature)
| `- warning: code after 'continue' will never be executed
322 |
323 | os_log("finished descrambling signature for itag=%{public}i", log: log, type: .debug, stream.itag)
[11/27] Compiling YouTubeKit Extraction.swift
/Users/admin/builder/spi-builder-workspace/Sources/YouTubeKit/Extraction.swift:321:25: warning: code after 'continue' will never be executed
319 | continue // Skip the rest of the code as we are removing this stream
320 |
321 | let signature = try cipher.value.getSignature(cipheredSignature: cipheredSignature)
| `- warning: code after 'continue' will never be executed
322 |
323 | os_log("finished descrambling signature for itag=%{public}i", log: log, type: .debug, stream.itag)
[12/27] Compiling YouTubeKit StreamQuery.swift
[13/27] Compiling YouTubeKit YouTubeMetadata.swift
[14/27] Compiling YouTubeKit Parser.swift
[15/27] Compiling YouTubeKit RemoteStream.swift
[16/27] Emitting module YouTubeKit
[17/27] Compiling YouTubeKit Concurrency.swift
[18/27] Compiling YouTubeKit Foundation.swift
[19/27] Compiling YouTubeKit Lazy.swift
[20/27] Compiling YouTubeKit Logging.swift
[21/27] Compiling YouTubeKit RegularExpression.swift
[22/27] Compiling YouTubeKit Retry.swift
[23/27] Compiling YouTubeKit InnerTube.swift
[24/27] Compiling YouTubeKit Codecs.swift
[25/27] Compiling YouTubeKit FileExtension.swift
[26/27] Compiling YouTubeKit RemoteYouTubeClient.swift
[27/27] Compiling YouTubeKit YouTube.swift
Build of target: 'YouTubeKit' complete! (1.44s)
360
3 /Users/admin/builder/spi-builder-workspace/.docs/alexeichhorn/youtubekit/0.2.4
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/alexeichhorn/youtubekit/0.2.4
File count: 360
Doc size: 3.0MB
Preparing doc bundle ...
Uploading prod-alexeichhorn-youtubekit-0.2.4-d5118e84.zip to s3://spi-docs-inbox/prod-alexeichhorn-youtubekit-0.2.4-d5118e84.zip
Copying... [10%]
Copying... [20%]
Copying... [30%]
Copying... [40%]
Copying... [50%]
Copying... [60%]
Copying... [70%]
Copying... [80%]
Copying... [90%]
Copying... [100%]
Done.