The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of Media, reference 3.0.0 (84acbe), with Swift 6.0 for macOS (SPM) on 26 Feb 2025 12:24:16 UTC.

Swift 6 data race errors: 35

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

    |                                                                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
253 |                     RunLoop.main.add(timer, forMode: .common)
254 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:256:32: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
254 |
255 |                     exportSession.exportAsynchronously {
256 |                         switch exportSession.status {
    |                                `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
257 |                         case .completed:
258 |                             timer.invalidate()
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:258:29: warning: capture of 'timer' with non-sendable type 'Timer' in a `@Sendable` closure
256 |                         switch exportSession.status {
257 |                         case .completed:
258 |                             timer.invalidate()
    |                             `- warning: capture of 'timer' with non-sendable type 'Timer' in a `@Sendable` closure
259 |                             completion(.success(()))
260 |                         case .failed:
Foundation.Timer:1:12: note: class 'Timer' does not conform to the 'Sendable' protocol
 1 | open class Timer : NSObject {
   |            `- note: class 'Timer' does not conform to the 'Sendable' protocol
 2 |     public /*not inherited*/ init(timeInterval ti: TimeInterval, invocation: NSInvocation, repeats yesOrNo: Bool)
 3 |     @available(*, unavailable, renamed: "init(timeInterval:invocation:repeats:)", message: "Not available in Swift")
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:259:29: warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
257 |                         case .completed:
258 |                             timer.invalidate()
259 |                             completion(.success(()))
    |                             |- warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
260 |                         case .failed:
261 |                             timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:355:17: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
353 |         if #available(iOS 10, macOS 10.13, tvOS 10, *) {
354 |             timer = Timer(timeInterval: 1, repeats: true) { timer in
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
    |                 `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
356 |                                               timer: timer,
357 |                                               progress: progress)
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:355:62: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
353 |         if #available(iOS 10, macOS 10.13, tvOS 10, *) {
354 |             timer = Timer(timeInterval: 1, repeats: true) { timer in
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
    |                                                              `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
356 |                                               timer: timer,
357 |                                               progress: progress)
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:357:57: warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
356 |                                               timer: timer,
357 |                                               progress: progress)
    |                                                         |- warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
    |                                                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
358 |             }
359 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:18:23: warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
16 |     ///
17 |     @FetchAssets(sort: [Media.Sort(key: .creationDate, ascending: false)])
18 |     public static var all: [Video]
   |                       |- warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'all' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'all' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
19 |
20 |     /// All streams in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:25:23: warning: static property 'streams' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
23 |     @FetchAssets(filter: [.mediaSubtypes([.streamed])],
24 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
25 |     public static var streams: [Video]
   |                       |- warning: static property 'streams' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'streams' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'streams' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
26 |
27 |     /// All high frame rate videos in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:32:23: warning: static property 'highFrameRates' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
30 |     @FetchAssets(filter: [.mediaSubtypes([.highFrameRate])],
31 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
32 |     public static var highFrameRates: [Video]
   |                       |- warning: static property 'highFrameRates' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'highFrameRates' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'highFrameRates' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
33 |
34 |     /// All timelapse videos in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:39:23: warning: static property 'timelapses' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
37 |     @FetchAssets(filter: [.mediaSubtypes([.timelapse])],
38 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
39 |     public static var timelapses: [Video]
   |                       |- warning: static property 'timelapses' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'timelapses' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'timelapses' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
40 | }
41 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:15:14: warning: associated value 'cannotAddInput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureDeviceInput'; this is an error in the Swift 6 language mode
13 |     enum Error: Swift.Error {
14 |         /// Thrown if the given input could not be added
15 |         case cannotAddInput(_ input: AVCaptureDeviceInput)
   |              `- warning: associated value 'cannotAddInput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureDeviceInput'; this is an error in the Swift 6 language mode
16 |         /// Thrown if the given output could not be added
17 |         case cannotAddOutput(_ output: AVCaptureOutput)
AVFoundation.AVCaptureDeviceInput:2:12: note: class 'AVCaptureDeviceInput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVCaptureDeviceInput : AVCaptureInput {
   |            `- note: class 'AVCaptureDeviceInput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable, message: "superseded by import of -[AVCaptureDeviceInput initWithDevice:error:]")
 4 |     public convenience init(device: AVCaptureDevice) throws
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:8:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
 6 | //
 7 |
 8 | import AVFoundation
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
 9 |
10 | @available(iOS 10, *)
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:17:14: warning: associated value 'cannotAddOutput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureOutput'; this is an error in the Swift 6 language mode
15 |         case cannotAddInput(_ input: AVCaptureDeviceInput)
16 |         /// Thrown if the given output could not be added
17 |         case cannotAddOutput(_ output: AVCaptureOutput)
   |              `- warning: associated value 'cannotAddOutput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureOutput'; this is an error in the Swift 6 language mode
18 |         /// Thrown if there is no default audio device
19 |         case noDefaultAudioDevice
AVFoundation.AVCaptureOutput:2:12: note: class 'AVCaptureOutput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVCaptureOutput : NSObject {
   |            `- note: class 'AVCaptureOutput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:36: warning: sending 'copyCGImageResult' risks causing data races; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                                    |- warning: sending 'copyCGImageResult' risks causing data races; this is an error in the Swift 6 language mode
    |                                    `- note: task-isolated 'copyCGImageResult' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:168:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
166 |                 case let .failure(error):
167 |                     DispatchQueue.main.async {
168 |                         completion(.failure(error))
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
169 |                     }
170 |                 }
[116/121] Compiling MediaCore Video+Subtype.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:17:16: warning: static property 'videoManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
 17 |     static var videoManager: VideoManager = PHImageManager.default()
    |                |- warning: static property 'videoManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: convert 'videoManager' to a 'let' constant to make 'Sendable' shared state immutable
    |                |- note: annotate 'videoManager' with '@MainActor' if property should only be accessed from the main actor
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 18 |
 19 |     private var phAsset: PHAsset? { phAssetWrapper.value }
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:148:13: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
146 |     func previewImage(at requestedTime: CMTime = .init(seconds: 1, preferredTimescale: 60), _ completion: @escaping (Result<UniversalImage, Swift.Error>) -> Void) {
147 |         DispatchQueue.global(qos: .userInitiated).async {
148 |             avAsset { avAssetResult in
    |             `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
149 |                 switch avAssetResult {
150 |                 case let .success(asset):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in a `@Sendable` closure
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in a `@Sendable` closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:244:56: warning: capture of 'exportOptions' with non-sendable type 'Video.ExportOptions' in a `@Sendable` closure
242 |             } else if let exportSession = exportSession {
243 |                 exportSession.determineCompatibleFileTypes { compatibleFileTypes in
244 |                     guard compatibleFileTypes.contains(exportOptions.outputURL.fileType.avFileType) else {
    |                                                        `- warning: capture of 'exportOptions' with non-sendable type 'Video.ExportOptions' in a `@Sendable` closure
245 |                         completion(.failure(Error.unsupportedFileType))
246 |                         return
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video+ExportOptions.swift:19:19: note: consider making struct 'ExportOptions' conform to the 'Sendable' protocol
17 |     /// Represents the options for a `Video` export
18 |     ///
19 |     public struct ExportOptions {
   |                   `- note: consider making struct 'ExportOptions' conform to the 'Sendable' protocol
20 |         let outputURL: Media.URL<Video>
21 |         let quality: VideoExportQualityType
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:245:25: warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
243 |                 exportSession.determineCompatibleFileTypes { compatibleFileTypes in
244 |                     guard compatibleFileTypes.contains(exportOptions.outputURL.fileType.avFileType) else {
245 |                         completion(.failure(Error.unsupportedFileType))
    |                         |- warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
246 |                         return
247 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:249:21: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
247 |                     }
248 |
249 |                     exportSession.outputURL = exportOptions.outputURL.value
    |                     `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:252:33: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
252 |                     let timer = self.createTimer(for: exportSession, progress: progress)
    |                                 `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
253 |                     RunLoop.main.add(timer, forMode: .common)
254 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:252:80: warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
252 |                     let timer = self.createTimer(for: exportSession, progress: progress)
    |                                                                                |- warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
    |                                                                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
253 |                     RunLoop.main.add(timer, forMode: .common)
254 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:256:32: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
254 |
255 |                     exportSession.exportAsynchronously {
256 |                         switch exportSession.status {
    |                                `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
257 |                         case .completed:
258 |                             timer.invalidate()
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:258:29: warning: capture of 'timer' with non-sendable type 'Timer' in a `@Sendable` closure
256 |                         switch exportSession.status {
257 |                         case .completed:
258 |                             timer.invalidate()
    |                             `- warning: capture of 'timer' with non-sendable type 'Timer' in a `@Sendable` closure
259 |                             completion(.success(()))
260 |                         case .failed:
Foundation.Timer:1:12: note: class 'Timer' does not conform to the 'Sendable' protocol
 1 | open class Timer : NSObject {
   |            `- note: class 'Timer' does not conform to the 'Sendable' protocol
 2 |     public /*not inherited*/ init(timeInterval ti: TimeInterval, invocation: NSInvocation, repeats yesOrNo: Bool)
 3 |     @available(*, unavailable, renamed: "init(timeInterval:invocation:repeats:)", message: "Not available in Swift")
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:259:29: warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
257 |                         case .completed:
258 |                             timer.invalidate()
259 |                             completion(.success(()))
    |                             |- warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
260 |                         case .failed:
261 |                             timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:355:17: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
353 |         if #available(iOS 10, macOS 10.13, tvOS 10, *) {
354 |             timer = Timer(timeInterval: 1, repeats: true) { timer in
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
    |                 `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
356 |                                               timer: timer,
357 |                                               progress: progress)
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:355:62: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
353 |         if #available(iOS 10, macOS 10.13, tvOS 10, *) {
354 |             timer = Timer(timeInterval: 1, repeats: true) { timer in
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
    |                                                              `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
356 |                                               timer: timer,
357 |                                               progress: progress)
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:357:57: warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
356 |                                               timer: timer,
357 |                                               progress: progress)
    |                                                         |- warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
    |                                                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
358 |             }
359 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:18:23: warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
16 |     ///
17 |     @FetchAssets(sort: [Media.Sort(key: .creationDate, ascending: false)])
18 |     public static var all: [Video]
   |                       |- warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'all' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'all' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
19 |
20 |     /// All streams in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:25:23: warning: static property 'streams' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
23 |     @FetchAssets(filter: [.mediaSubtypes([.streamed])],
24 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
25 |     public static var streams: [Video]
   |                       |- warning: static property 'streams' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'streams' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'streams' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
26 |
27 |     /// All high frame rate videos in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:32:23: warning: static property 'highFrameRates' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
30 |     @FetchAssets(filter: [.mediaSubtypes([.highFrameRate])],
31 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
32 |     public static var highFrameRates: [Video]
   |                       |- warning: static property 'highFrameRates' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'highFrameRates' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'highFrameRates' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
33 |
34 |     /// All timelapse videos in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:39:23: warning: static property 'timelapses' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
37 |     @FetchAssets(filter: [.mediaSubtypes([.timelapse])],
38 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
39 |     public static var timelapses: [Video]
   |                       |- warning: static property 'timelapses' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'timelapses' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'timelapses' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
40 | }
41 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:15:14: warning: associated value 'cannotAddInput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureDeviceInput'; this is an error in the Swift 6 language mode
13 |     enum Error: Swift.Error {
14 |         /// Thrown if the given input could not be added
15 |         case cannotAddInput(_ input: AVCaptureDeviceInput)
   |              `- warning: associated value 'cannotAddInput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureDeviceInput'; this is an error in the Swift 6 language mode
16 |         /// Thrown if the given output could not be added
17 |         case cannotAddOutput(_ output: AVCaptureOutput)
AVFoundation.AVCaptureDeviceInput:2:12: note: class 'AVCaptureDeviceInput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVCaptureDeviceInput : AVCaptureInput {
   |            `- note: class 'AVCaptureDeviceInput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable, message: "superseded by import of -[AVCaptureDeviceInput initWithDevice:error:]")
 4 |     public convenience init(device: AVCaptureDevice) throws
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:8:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
 6 | //
 7 |
 8 | import AVFoundation
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
 9 |
10 | @available(iOS 10, *)
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:17:14: warning: associated value 'cannotAddOutput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureOutput'; this is an error in the Swift 6 language mode
15 |         case cannotAddInput(_ input: AVCaptureDeviceInput)
16 |         /// Thrown if the given output could not be added
17 |         case cannotAddOutput(_ output: AVCaptureOutput)
   |              `- warning: associated value 'cannotAddOutput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureOutput'; this is an error in the Swift 6 language mode
18 |         /// Thrown if there is no default audio device
19 |         case noDefaultAudioDevice
AVFoundation.AVCaptureOutput:2:12: note: class 'AVCaptureOutput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVCaptureOutput : NSObject {
   |            `- note: class 'AVCaptureOutput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:36: warning: sending 'copyCGImageResult' risks causing data races; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                                    |- warning: sending 'copyCGImageResult' risks causing data races; this is an error in the Swift 6 language mode
    |                                    `- note: task-isolated 'copyCGImageResult' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:168:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
166 |                 case let .failure(error):
167 |                     DispatchQueue.main.async {
168 |                         completion(.failure(error))
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
169 |                     }
170 |                 }
[117/121] Compiling MediaCore Video.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:17:16: warning: static property 'videoManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
 17 |     static var videoManager: VideoManager = PHImageManager.default()
    |                |- warning: static property 'videoManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: convert 'videoManager' to a 'let' constant to make 'Sendable' shared state immutable
    |                |- note: annotate 'videoManager' with '@MainActor' if property should only be accessed from the main actor
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 18 |
 19 |     private var phAsset: PHAsset? { phAssetWrapper.value }
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:148:13: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
146 |     func previewImage(at requestedTime: CMTime = .init(seconds: 1, preferredTimescale: 60), _ completion: @escaping (Result<UniversalImage, Swift.Error>) -> Void) {
147 |         DispatchQueue.global(qos: .userInitiated).async {
148 |             avAsset { avAssetResult in
    |             `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
149 |                 switch avAssetResult {
150 |                 case let .success(asset):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in a `@Sendable` closure
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in a `@Sendable` closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:244:56: warning: capture of 'exportOptions' with non-sendable type 'Video.ExportOptions' in a `@Sendable` closure
242 |             } else if let exportSession = exportSession {
243 |                 exportSession.determineCompatibleFileTypes { compatibleFileTypes in
244 |                     guard compatibleFileTypes.contains(exportOptions.outputURL.fileType.avFileType) else {
    |                                                        `- warning: capture of 'exportOptions' with non-sendable type 'Video.ExportOptions' in a `@Sendable` closure
245 |                         completion(.failure(Error.unsupportedFileType))
246 |                         return
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video+ExportOptions.swift:19:19: note: consider making struct 'ExportOptions' conform to the 'Sendable' protocol
17 |     /// Represents the options for a `Video` export
18 |     ///
19 |     public struct ExportOptions {
   |                   `- note: consider making struct 'ExportOptions' conform to the 'Sendable' protocol
20 |         let outputURL: Media.URL<Video>
21 |         let quality: VideoExportQualityType
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:245:25: warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
243 |                 exportSession.determineCompatibleFileTypes { compatibleFileTypes in
244 |                     guard compatibleFileTypes.contains(exportOptions.outputURL.fileType.avFileType) else {
245 |                         completion(.failure(Error.unsupportedFileType))
    |                         |- warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
246 |                         return
247 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:249:21: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
247 |                     }
248 |
249 |                     exportSession.outputURL = exportOptions.outputURL.value
    |                     `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:252:33: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
252 |                     let timer = self.createTimer(for: exportSession, progress: progress)
    |                                 `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
253 |                     RunLoop.main.add(timer, forMode: .common)
254 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:252:80: warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
252 |                     let timer = self.createTimer(for: exportSession, progress: progress)
    |                                                                                |- warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
    |                                                                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
253 |                     RunLoop.main.add(timer, forMode: .common)
254 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:256:32: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
254 |
255 |                     exportSession.exportAsynchronously {
256 |                         switch exportSession.status {
    |                                `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
257 |                         case .completed:
258 |                             timer.invalidate()
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:258:29: warning: capture of 'timer' with non-sendable type 'Timer' in a `@Sendable` closure
256 |                         switch exportSession.status {
257 |                         case .completed:
258 |                             timer.invalidate()
    |                             `- warning: capture of 'timer' with non-sendable type 'Timer' in a `@Sendable` closure
259 |                             completion(.success(()))
260 |                         case .failed:
Foundation.Timer:1:12: note: class 'Timer' does not conform to the 'Sendable' protocol
 1 | open class Timer : NSObject {
   |            `- note: class 'Timer' does not conform to the 'Sendable' protocol
 2 |     public /*not inherited*/ init(timeInterval ti: TimeInterval, invocation: NSInvocation, repeats yesOrNo: Bool)
 3 |     @available(*, unavailable, renamed: "init(timeInterval:invocation:repeats:)", message: "Not available in Swift")
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:259:29: warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
257 |                         case .completed:
258 |                             timer.invalidate()
259 |                             completion(.success(()))
    |                             |- warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
260 |                         case .failed:
261 |                             timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:355:17: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
353 |         if #available(iOS 10, macOS 10.13, tvOS 10, *) {
354 |             timer = Timer(timeInterval: 1, repeats: true) { timer in
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
    |                 `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
356 |                                               timer: timer,
357 |                                               progress: progress)
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:355:62: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
353 |         if #available(iOS 10, macOS 10.13, tvOS 10, *) {
354 |             timer = Timer(timeInterval: 1, repeats: true) { timer in
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
    |                                                              `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
356 |                                               timer: timer,
357 |                                               progress: progress)
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:357:57: warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
356 |                                               timer: timer,
357 |                                               progress: progress)
    |                                                         |- warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
    |                                                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
358 |             }
359 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:18:23: warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
16 |     ///
17 |     @FetchAssets(sort: [Media.Sort(key: .creationDate, ascending: false)])
18 |     public static var all: [Video]
   |                       |- warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'all' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'all' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
19 |
20 |     /// All streams in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:25:23: warning: static property 'streams' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
23 |     @FetchAssets(filter: [.mediaSubtypes([.streamed])],
24 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
25 |     public static var streams: [Video]
   |                       |- warning: static property 'streams' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'streams' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'streams' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
26 |
27 |     /// All high frame rate videos in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:32:23: warning: static property 'highFrameRates' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
30 |     @FetchAssets(filter: [.mediaSubtypes([.highFrameRate])],
31 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
32 |     public static var highFrameRates: [Video]
   |                       |- warning: static property 'highFrameRates' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'highFrameRates' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'highFrameRates' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
33 |
34 |     /// All timelapse videos in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:39:23: warning: static property 'timelapses' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
37 |     @FetchAssets(filter: [.mediaSubtypes([.timelapse])],
38 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
39 |     public static var timelapses: [Video]
   |                       |- warning: static property 'timelapses' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'timelapses' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'timelapses' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
40 | }
41 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:15:14: warning: associated value 'cannotAddInput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureDeviceInput'; this is an error in the Swift 6 language mode
13 |     enum Error: Swift.Error {
14 |         /// Thrown if the given input could not be added
15 |         case cannotAddInput(_ input: AVCaptureDeviceInput)
   |              `- warning: associated value 'cannotAddInput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureDeviceInput'; this is an error in the Swift 6 language mode
16 |         /// Thrown if the given output could not be added
17 |         case cannotAddOutput(_ output: AVCaptureOutput)
AVFoundation.AVCaptureDeviceInput:2:12: note: class 'AVCaptureDeviceInput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVCaptureDeviceInput : AVCaptureInput {
   |            `- note: class 'AVCaptureDeviceInput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable, message: "superseded by import of -[AVCaptureDeviceInput initWithDevice:error:]")
 4 |     public convenience init(device: AVCaptureDevice) throws
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:8:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
 6 | //
 7 |
 8 | import AVFoundation
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
 9 |
10 | @available(iOS 10, *)
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:17:14: warning: associated value 'cannotAddOutput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureOutput'; this is an error in the Swift 6 language mode
15 |         case cannotAddInput(_ input: AVCaptureDeviceInput)
16 |         /// Thrown if the given output could not be added
17 |         case cannotAddOutput(_ output: AVCaptureOutput)
   |              `- warning: associated value 'cannotAddOutput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureOutput'; this is an error in the Swift 6 language mode
18 |         /// Thrown if there is no default audio device
19 |         case noDefaultAudioDevice
AVFoundation.AVCaptureOutput:2:12: note: class 'AVCaptureOutput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVCaptureOutput : NSObject {
   |            `- note: class 'AVCaptureOutput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:36: warning: sending 'copyCGImageResult' risks causing data races; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                                    |- warning: sending 'copyCGImageResult' risks causing data races; this is an error in the Swift 6 language mode
    |                                    `- note: task-isolated 'copyCGImageResult' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:168:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
166 |                 case let .failure(error):
167 |                     DispatchQueue.main.async {
168 |                         completion(.failure(error))
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
169 |                     }
170 |                 }
[118/121] Compiling MediaCore Videos.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:17:16: warning: static property 'videoManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
 17 |     static var videoManager: VideoManager = PHImageManager.default()
    |                |- warning: static property 'videoManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: convert 'videoManager' to a 'let' constant to make 'Sendable' shared state immutable
    |                |- note: annotate 'videoManager' with '@MainActor' if property should only be accessed from the main actor
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 18 |
 19 |     private var phAsset: PHAsset? { phAssetWrapper.value }
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:148:13: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
146 |     func previewImage(at requestedTime: CMTime = .init(seconds: 1, preferredTimescale: 60), _ completion: @escaping (Result<UniversalImage, Swift.Error>) -> Void) {
147 |         DispatchQueue.global(qos: .userInitiated).async {
148 |             avAsset { avAssetResult in
    |             `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
149 |                 switch avAssetResult {
150 |                 case let .success(asset):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in a `@Sendable` closure
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in a `@Sendable` closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:244:56: warning: capture of 'exportOptions' with non-sendable type 'Video.ExportOptions' in a `@Sendable` closure
242 |             } else if let exportSession = exportSession {
243 |                 exportSession.determineCompatibleFileTypes { compatibleFileTypes in
244 |                     guard compatibleFileTypes.contains(exportOptions.outputURL.fileType.avFileType) else {
    |                                                        `- warning: capture of 'exportOptions' with non-sendable type 'Video.ExportOptions' in a `@Sendable` closure
245 |                         completion(.failure(Error.unsupportedFileType))
246 |                         return
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video+ExportOptions.swift:19:19: note: consider making struct 'ExportOptions' conform to the 'Sendable' protocol
17 |     /// Represents the options for a `Video` export
18 |     ///
19 |     public struct ExportOptions {
   |                   `- note: consider making struct 'ExportOptions' conform to the 'Sendable' protocol
20 |         let outputURL: Media.URL<Video>
21 |         let quality: VideoExportQualityType
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:245:25: warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
243 |                 exportSession.determineCompatibleFileTypes { compatibleFileTypes in
244 |                     guard compatibleFileTypes.contains(exportOptions.outputURL.fileType.avFileType) else {
245 |                         completion(.failure(Error.unsupportedFileType))
    |                         |- warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
246 |                         return
247 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:249:21: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
247 |                     }
248 |
249 |                     exportSession.outputURL = exportOptions.outputURL.value
    |                     `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:252:33: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
252 |                     let timer = self.createTimer(for: exportSession, progress: progress)
    |                                 `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
253 |                     RunLoop.main.add(timer, forMode: .common)
254 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:252:80: warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
252 |                     let timer = self.createTimer(for: exportSession, progress: progress)
    |                                                                                |- warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
    |                                                                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
253 |                     RunLoop.main.add(timer, forMode: .common)
254 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:256:32: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
254 |
255 |                     exportSession.exportAsynchronously {
256 |                         switch exportSession.status {
    |                                `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
257 |                         case .completed:
258 |                             timer.invalidate()
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:258:29: warning: capture of 'timer' with non-sendable type 'Timer' in a `@Sendable` closure
256 |                         switch exportSession.status {
257 |                         case .completed:
258 |                             timer.invalidate()
    |                             `- warning: capture of 'timer' with non-sendable type 'Timer' in a `@Sendable` closure
259 |                             completion(.success(()))
260 |                         case .failed:
Foundation.Timer:1:12: note: class 'Timer' does not conform to the 'Sendable' protocol
 1 | open class Timer : NSObject {
   |            `- note: class 'Timer' does not conform to the 'Sendable' protocol
 2 |     public /*not inherited*/ init(timeInterval ti: TimeInterval, invocation: NSInvocation, repeats yesOrNo: Bool)
 3 |     @available(*, unavailable, renamed: "init(timeInterval:invocation:repeats:)", message: "Not available in Swift")
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:259:29: warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
257 |                         case .completed:
258 |                             timer.invalidate()
259 |                             completion(.success(()))
    |                             |- warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
260 |                         case .failed:
261 |                             timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:355:17: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
353 |         if #available(iOS 10, macOS 10.13, tvOS 10, *) {
354 |             timer = Timer(timeInterval: 1, repeats: true) { timer in
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
    |                 `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
356 |                                               timer: timer,
357 |                                               progress: progress)
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:355:62: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
353 |         if #available(iOS 10, macOS 10.13, tvOS 10, *) {
354 |             timer = Timer(timeInterval: 1, repeats: true) { timer in
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
    |                                                              `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
356 |                                               timer: timer,
357 |                                               progress: progress)
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:357:57: warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
356 |                                               timer: timer,
357 |                                               progress: progress)
    |                                                         |- warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
    |                                                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
358 |             }
359 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:18:23: warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
16 |     ///
17 |     @FetchAssets(sort: [Media.Sort(key: .creationDate, ascending: false)])
18 |     public static var all: [Video]
   |                       |- warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'all' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'all' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
19 |
20 |     /// All streams in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:25:23: warning: static property 'streams' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
23 |     @FetchAssets(filter: [.mediaSubtypes([.streamed])],
24 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
25 |     public static var streams: [Video]
   |                       |- warning: static property 'streams' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'streams' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'streams' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
26 |
27 |     /// All high frame rate videos in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:32:23: warning: static property 'highFrameRates' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
30 |     @FetchAssets(filter: [.mediaSubtypes([.highFrameRate])],
31 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
32 |     public static var highFrameRates: [Video]
   |                       |- warning: static property 'highFrameRates' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'highFrameRates' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'highFrameRates' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
33 |
34 |     /// All timelapse videos in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:39:23: warning: static property 'timelapses' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
37 |     @FetchAssets(filter: [.mediaSubtypes([.timelapse])],
38 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
39 |     public static var timelapses: [Video]
   |                       |- warning: static property 'timelapses' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'timelapses' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'timelapses' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
40 | }
41 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:15:14: warning: associated value 'cannotAddInput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureDeviceInput'; this is an error in the Swift 6 language mode
13 |     enum Error: Swift.Error {
14 |         /// Thrown if the given input could not be added
15 |         case cannotAddInput(_ input: AVCaptureDeviceInput)
   |              `- warning: associated value 'cannotAddInput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureDeviceInput'; this is an error in the Swift 6 language mode
16 |         /// Thrown if the given output could not be added
17 |         case cannotAddOutput(_ output: AVCaptureOutput)
AVFoundation.AVCaptureDeviceInput:2:12: note: class 'AVCaptureDeviceInput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVCaptureDeviceInput : AVCaptureInput {
   |            `- note: class 'AVCaptureDeviceInput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable, message: "superseded by import of -[AVCaptureDeviceInput initWithDevice:error:]")
 4 |     public convenience init(device: AVCaptureDevice) throws
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:8:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
 6 | //
 7 |
 8 | import AVFoundation
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
 9 |
10 | @available(iOS 10, *)
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:17:14: warning: associated value 'cannotAddOutput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureOutput'; this is an error in the Swift 6 language mode
15 |         case cannotAddInput(_ input: AVCaptureDeviceInput)
16 |         /// Thrown if the given output could not be added
17 |         case cannotAddOutput(_ output: AVCaptureOutput)
   |              `- warning: associated value 'cannotAddOutput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureOutput'; this is an error in the Swift 6 language mode
18 |         /// Thrown if there is no default audio device
19 |         case noDefaultAudioDevice
AVFoundation.AVCaptureOutput:2:12: note: class 'AVCaptureOutput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVCaptureOutput : NSObject {
   |            `- note: class 'AVCaptureOutput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:36: warning: sending 'copyCGImageResult' risks causing data races; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                                    |- warning: sending 'copyCGImageResult' risks causing data races; this is an error in the Swift 6 language mode
    |                                    `- note: task-isolated 'copyCGImageResult' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:168:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
166 |                 case let .failure(error):
167 |                     DispatchQueue.main.async {
168 |                         completion(.failure(error))
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
169 |                     }
170 |                 }
[119/121] Compiling MediaCore AVCaptureDevice+Error.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:17:16: warning: static property 'videoManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
 17 |     static var videoManager: VideoManager = PHImageManager.default()
    |                |- warning: static property 'videoManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: convert 'videoManager' to a 'let' constant to make 'Sendable' shared state immutable
    |                |- note: annotate 'videoManager' with '@MainActor' if property should only be accessed from the main actor
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 18 |
 19 |     private var phAsset: PHAsset? { phAssetWrapper.value }
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:148:13: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
146 |     func previewImage(at requestedTime: CMTime = .init(seconds: 1, preferredTimescale: 60), _ completion: @escaping (Result<UniversalImage, Swift.Error>) -> Void) {
147 |         DispatchQueue.global(qos: .userInitiated).async {
148 |             avAsset { avAssetResult in
    |             `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
149 |                 switch avAssetResult {
150 |                 case let .success(asset):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in a `@Sendable` closure
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in a `@Sendable` closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:244:56: warning: capture of 'exportOptions' with non-sendable type 'Video.ExportOptions' in a `@Sendable` closure
242 |             } else if let exportSession = exportSession {
243 |                 exportSession.determineCompatibleFileTypes { compatibleFileTypes in
244 |                     guard compatibleFileTypes.contains(exportOptions.outputURL.fileType.avFileType) else {
    |                                                        `- warning: capture of 'exportOptions' with non-sendable type 'Video.ExportOptions' in a `@Sendable` closure
245 |                         completion(.failure(Error.unsupportedFileType))
246 |                         return
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video+ExportOptions.swift:19:19: note: consider making struct 'ExportOptions' conform to the 'Sendable' protocol
17 |     /// Represents the options for a `Video` export
18 |     ///
19 |     public struct ExportOptions {
   |                   `- note: consider making struct 'ExportOptions' conform to the 'Sendable' protocol
20 |         let outputURL: Media.URL<Video>
21 |         let quality: VideoExportQualityType
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:245:25: warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
243 |                 exportSession.determineCompatibleFileTypes { compatibleFileTypes in
244 |                     guard compatibleFileTypes.contains(exportOptions.outputURL.fileType.avFileType) else {
245 |                         completion(.failure(Error.unsupportedFileType))
    |                         |- warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
246 |                         return
247 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:249:21: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
247 |                     }
248 |
249 |                     exportSession.outputURL = exportOptions.outputURL.value
    |                     `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:252:33: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
252 |                     let timer = self.createTimer(for: exportSession, progress: progress)
    |                                 `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
253 |                     RunLoop.main.add(timer, forMode: .common)
254 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:252:80: warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
252 |                     let timer = self.createTimer(for: exportSession, progress: progress)
    |                                                                                |- warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
    |                                                                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
253 |                     RunLoop.main.add(timer, forMode: .common)
254 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:256:32: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
254 |
255 |                     exportSession.exportAsynchronously {
256 |                         switch exportSession.status {
    |                                `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
257 |                         case .completed:
258 |                             timer.invalidate()
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:258:29: warning: capture of 'timer' with non-sendable type 'Timer' in a `@Sendable` closure
256 |                         switch exportSession.status {
257 |                         case .completed:
258 |                             timer.invalidate()
    |                             `- warning: capture of 'timer' with non-sendable type 'Timer' in a `@Sendable` closure
259 |                             completion(.success(()))
260 |                         case .failed:
Foundation.Timer:1:12: note: class 'Timer' does not conform to the 'Sendable' protocol
 1 | open class Timer : NSObject {
   |            `- note: class 'Timer' does not conform to the 'Sendable' protocol
 2 |     public /*not inherited*/ init(timeInterval ti: TimeInterval, invocation: NSInvocation, repeats yesOrNo: Bool)
 3 |     @available(*, unavailable, renamed: "init(timeInterval:invocation:repeats:)", message: "Not available in Swift")
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:259:29: warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
257 |                         case .completed:
258 |                             timer.invalidate()
259 |                             completion(.success(()))
    |                             |- warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
260 |                         case .failed:
261 |                             timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:355:17: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
353 |         if #available(iOS 10, macOS 10.13, tvOS 10, *) {
354 |             timer = Timer(timeInterval: 1, repeats: true) { timer in
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
    |                 `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
356 |                                               timer: timer,
357 |                                               progress: progress)
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:355:62: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
353 |         if #available(iOS 10, macOS 10.13, tvOS 10, *) {
354 |             timer = Timer(timeInterval: 1, repeats: true) { timer in
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
    |                                                              `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
356 |                                               timer: timer,
357 |                                               progress: progress)
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:357:57: warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
356 |                                               timer: timer,
357 |                                               progress: progress)
    |                                                         |- warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
    |                                                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
358 |             }
359 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:18:23: warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
16 |     ///
17 |     @FetchAssets(sort: [Media.Sort(key: .creationDate, ascending: false)])
18 |     public static var all: [Video]
   |                       |- warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'all' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'all' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
19 |
20 |     /// All streams in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:25:23: warning: static property 'streams' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
23 |     @FetchAssets(filter: [.mediaSubtypes([.streamed])],
24 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
25 |     public static var streams: [Video]
   |                       |- warning: static property 'streams' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'streams' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'streams' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
26 |
27 |     /// All high frame rate videos in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:32:23: warning: static property 'highFrameRates' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
30 |     @FetchAssets(filter: [.mediaSubtypes([.highFrameRate])],
31 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
32 |     public static var highFrameRates: [Video]
   |                       |- warning: static property 'highFrameRates' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'highFrameRates' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'highFrameRates' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
33 |
34 |     /// All timelapse videos in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:39:23: warning: static property 'timelapses' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
37 |     @FetchAssets(filter: [.mediaSubtypes([.timelapse])],
38 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
39 |     public static var timelapses: [Video]
   |                       |- warning: static property 'timelapses' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'timelapses' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'timelapses' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
40 | }
41 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:15:14: warning: associated value 'cannotAddInput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureDeviceInput'; this is an error in the Swift 6 language mode
13 |     enum Error: Swift.Error {
14 |         /// Thrown if the given input could not be added
15 |         case cannotAddInput(_ input: AVCaptureDeviceInput)
   |              `- warning: associated value 'cannotAddInput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureDeviceInput'; this is an error in the Swift 6 language mode
16 |         /// Thrown if the given output could not be added
17 |         case cannotAddOutput(_ output: AVCaptureOutput)
AVFoundation.AVCaptureDeviceInput:2:12: note: class 'AVCaptureDeviceInput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVCaptureDeviceInput : AVCaptureInput {
   |            `- note: class 'AVCaptureDeviceInput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable, message: "superseded by import of -[AVCaptureDeviceInput initWithDevice:error:]")
 4 |     public convenience init(device: AVCaptureDevice) throws
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:8:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
 6 | //
 7 |
 8 | import AVFoundation
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
 9 |
10 | @available(iOS 10, *)
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:17:14: warning: associated value 'cannotAddOutput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureOutput'; this is an error in the Swift 6 language mode
15 |         case cannotAddInput(_ input: AVCaptureDeviceInput)
16 |         /// Thrown if the given output could not be added
17 |         case cannotAddOutput(_ output: AVCaptureOutput)
   |              `- warning: associated value 'cannotAddOutput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureOutput'; this is an error in the Swift 6 language mode
18 |         /// Thrown if there is no default audio device
19 |         case noDefaultAudioDevice
AVFoundation.AVCaptureOutput:2:12: note: class 'AVCaptureOutput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVCaptureOutput : NSObject {
   |            `- note: class 'AVCaptureOutput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:36: warning: sending 'copyCGImageResult' risks causing data races; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                                    |- warning: sending 'copyCGImageResult' risks causing data races; this is an error in the Swift 6 language mode
    |                                    `- note: task-isolated 'copyCGImageResult' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:168:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
166 |                 case let .failure(error):
167 |                     DispatchQueue.main.async {
168 |                         completion(.failure(error))
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
169 |                     }
170 |                 }
[120/121] Compiling MediaCore AVCaptureSession+Error.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:17:16: warning: static property 'videoManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
 17 |     static var videoManager: VideoManager = PHImageManager.default()
    |                |- warning: static property 'videoManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: convert 'videoManager' to a 'let' constant to make 'Sendable' shared state immutable
    |                |- note: annotate 'videoManager' with '@MainActor' if property should only be accessed from the main actor
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 18 |
 19 |     private var phAsset: PHAsset? { phAssetWrapper.value }
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:148:13: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
146 |     func previewImage(at requestedTime: CMTime = .init(seconds: 1, preferredTimescale: 60), _ completion: @escaping (Result<UniversalImage, Swift.Error>) -> Void) {
147 |         DispatchQueue.global(qos: .userInitiated).async {
148 |             avAsset { avAssetResult in
    |             `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
149 |                 switch avAssetResult {
150 |                 case let .success(asset):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in a `@Sendable` closure
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in a `@Sendable` closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:244:56: warning: capture of 'exportOptions' with non-sendable type 'Video.ExportOptions' in a `@Sendable` closure
242 |             } else if let exportSession = exportSession {
243 |                 exportSession.determineCompatibleFileTypes { compatibleFileTypes in
244 |                     guard compatibleFileTypes.contains(exportOptions.outputURL.fileType.avFileType) else {
    |                                                        `- warning: capture of 'exportOptions' with non-sendable type 'Video.ExportOptions' in a `@Sendable` closure
245 |                         completion(.failure(Error.unsupportedFileType))
246 |                         return
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video+ExportOptions.swift:19:19: note: consider making struct 'ExportOptions' conform to the 'Sendable' protocol
17 |     /// Represents the options for a `Video` export
18 |     ///
19 |     public struct ExportOptions {
   |                   `- note: consider making struct 'ExportOptions' conform to the 'Sendable' protocol
20 |         let outputURL: Media.URL<Video>
21 |         let quality: VideoExportQualityType
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:245:25: warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
243 |                 exportSession.determineCompatibleFileTypes { compatibleFileTypes in
244 |                     guard compatibleFileTypes.contains(exportOptions.outputURL.fileType.avFileType) else {
245 |                         completion(.failure(Error.unsupportedFileType))
    |                         |- warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
246 |                         return
247 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:249:21: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
247 |                     }
248 |
249 |                     exportSession.outputURL = exportOptions.outputURL.value
    |                     `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:252:33: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
252 |                     let timer = self.createTimer(for: exportSession, progress: progress)
    |                                 `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
253 |                     RunLoop.main.add(timer, forMode: .common)
254 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:252:80: warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
252 |                     let timer = self.createTimer(for: exportSession, progress: progress)
    |                                                                                |- warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
    |                                                                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
253 |                     RunLoop.main.add(timer, forMode: .common)
254 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:256:32: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
254 |
255 |                     exportSession.exportAsynchronously {
256 |                         switch exportSession.status {
    |                                `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
257 |                         case .completed:
258 |                             timer.invalidate()
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:258:29: warning: capture of 'timer' with non-sendable type 'Timer' in a `@Sendable` closure
256 |                         switch exportSession.status {
257 |                         case .completed:
258 |                             timer.invalidate()
    |                             `- warning: capture of 'timer' with non-sendable type 'Timer' in a `@Sendable` closure
259 |                             completion(.success(()))
260 |                         case .failed:
Foundation.Timer:1:12: note: class 'Timer' does not conform to the 'Sendable' protocol
 1 | open class Timer : NSObject {
   |            `- note: class 'Timer' does not conform to the 'Sendable' protocol
 2 |     public /*not inherited*/ init(timeInterval ti: TimeInterval, invocation: NSInvocation, repeats yesOrNo: Bool)
 3 |     @available(*, unavailable, renamed: "init(timeInterval:invocation:repeats:)", message: "Not available in Swift")
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:259:29: warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
257 |                         case .completed:
258 |                             timer.invalidate()
259 |                             completion(.success(()))
    |                             |- warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
260 |                         case .failed:
261 |                             timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:355:17: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
353 |         if #available(iOS 10, macOS 10.13, tvOS 10, *) {
354 |             timer = Timer(timeInterval: 1, repeats: true) { timer in
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
    |                 `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
356 |                                               timer: timer,
357 |                                               progress: progress)
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:355:62: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
353 |         if #available(iOS 10, macOS 10.13, tvOS 10, *) {
354 |             timer = Timer(timeInterval: 1, repeats: true) { timer in
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
    |                                                              `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
356 |                                               timer: timer,
357 |                                               progress: progress)
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:357:57: warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
356 |                                               timer: timer,
357 |                                               progress: progress)
    |                                                         |- warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
    |                                                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
358 |             }
359 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:18:23: warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
16 |     ///
17 |     @FetchAssets(sort: [Media.Sort(key: .creationDate, ascending: false)])
18 |     public static var all: [Video]
   |                       |- warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'all' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'all' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
19 |
20 |     /// All streams in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:25:23: warning: static property 'streams' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
23 |     @FetchAssets(filter: [.mediaSubtypes([.streamed])],
24 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
25 |     public static var streams: [Video]
   |                       |- warning: static property 'streams' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'streams' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'streams' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
26 |
27 |     /// All high frame rate videos in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:32:23: warning: static property 'highFrameRates' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
30 |     @FetchAssets(filter: [.mediaSubtypes([.highFrameRate])],
31 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
32 |     public static var highFrameRates: [Video]
   |                       |- warning: static property 'highFrameRates' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'highFrameRates' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'highFrameRates' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
33 |
34 |     /// All timelapse videos in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:39:23: warning: static property 'timelapses' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
37 |     @FetchAssets(filter: [.mediaSubtypes([.timelapse])],
38 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
39 |     public static var timelapses: [Video]
   |                       |- warning: static property 'timelapses' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'timelapses' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'timelapses' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
40 | }
41 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:15:14: warning: associated value 'cannotAddInput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureDeviceInput'; this is an error in the Swift 6 language mode
13 |     enum Error: Swift.Error {
14 |         /// Thrown if the given input could not be added
15 |         case cannotAddInput(_ input: AVCaptureDeviceInput)
   |              `- warning: associated value 'cannotAddInput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureDeviceInput'; this is an error in the Swift 6 language mode
16 |         /// Thrown if the given output could not be added
17 |         case cannotAddOutput(_ output: AVCaptureOutput)
AVFoundation.AVCaptureDeviceInput:2:12: note: class 'AVCaptureDeviceInput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVCaptureDeviceInput : AVCaptureInput {
   |            `- note: class 'AVCaptureDeviceInput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable, message: "superseded by import of -[AVCaptureDeviceInput initWithDevice:error:]")
 4 |     public convenience init(device: AVCaptureDevice) throws
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:8:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
 6 | //
 7 |
 8 | import AVFoundation
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
 9 |
10 | @available(iOS 10, *)
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:17:14: warning: associated value 'cannotAddOutput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureOutput'; this is an error in the Swift 6 language mode
15 |         case cannotAddInput(_ input: AVCaptureDeviceInput)
16 |         /// Thrown if the given output could not be added
17 |         case cannotAddOutput(_ output: AVCaptureOutput)
   |              `- warning: associated value 'cannotAddOutput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureOutput'; this is an error in the Swift 6 language mode
18 |         /// Thrown if there is no default audio device
19 |         case noDefaultAudioDevice
AVFoundation.AVCaptureOutput:2:12: note: class 'AVCaptureOutput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVCaptureOutput : NSObject {
   |            `- note: class 'AVCaptureOutput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:36: warning: sending 'copyCGImageResult' risks causing data races; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                                    |- warning: sending 'copyCGImageResult' risks causing data races; this is an error in the Swift 6 language mode
    |                                    `- note: task-isolated 'copyCGImageResult' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:168:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
166 |                 case let .failure(error):
167 |                     DispatchQueue.main.async {
168 |                         completion(.failure(error))
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
169 |                     }
170 |                 }
[121/121] Compiling MediaCore PhotoCaptureProcessor.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:17:16: warning: static property 'videoManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
 17 |     static var videoManager: VideoManager = PHImageManager.default()
    |                |- warning: static property 'videoManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: convert 'videoManager' to a 'let' constant to make 'Sendable' shared state immutable
    |                |- note: annotate 'videoManager' with '@MainActor' if property should only be accessed from the main actor
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 18 |
 19 |     private var phAsset: PHAsset? { phAssetWrapper.value }
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:148:13: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
146 |     func previewImage(at requestedTime: CMTime = .init(seconds: 1, preferredTimescale: 60), _ completion: @escaping (Result<UniversalImage, Swift.Error>) -> Void) {
147 |         DispatchQueue.global(qos: .userInitiated).async {
148 |             avAsset { avAssetResult in
    |             `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
149 |                 switch avAssetResult {
150 |                 case let .success(asset):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in a `@Sendable` closure
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in a `@Sendable` closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: capture of 'completion' with non-sendable type '(Result<UniversalImage, any Error>) -> Void' (aka '(Result<NSImage, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:244:56: warning: capture of 'exportOptions' with non-sendable type 'Video.ExportOptions' in a `@Sendable` closure
242 |             } else if let exportSession = exportSession {
243 |                 exportSession.determineCompatibleFileTypes { compatibleFileTypes in
244 |                     guard compatibleFileTypes.contains(exportOptions.outputURL.fileType.avFileType) else {
    |                                                        `- warning: capture of 'exportOptions' with non-sendable type 'Video.ExportOptions' in a `@Sendable` closure
245 |                         completion(.failure(Error.unsupportedFileType))
246 |                         return
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video+ExportOptions.swift:19:19: note: consider making struct 'ExportOptions' conform to the 'Sendable' protocol
17 |     /// Represents the options for a `Video` export
18 |     ///
19 |     public struct ExportOptions {
   |                   `- note: consider making struct 'ExportOptions' conform to the 'Sendable' protocol
20 |         let outputURL: Media.URL<Video>
21 |         let quality: VideoExportQualityType
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:245:25: warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
243 |                 exportSession.determineCompatibleFileTypes { compatibleFileTypes in
244 |                     guard compatibleFileTypes.contains(exportOptions.outputURL.fileType.avFileType) else {
245 |                         completion(.failure(Error.unsupportedFileType))
    |                         |- warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
246 |                         return
247 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:249:21: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
247 |                     }
248 |
249 |                     exportSession.outputURL = exportOptions.outputURL.value
    |                     `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:252:33: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
252 |                     let timer = self.createTimer(for: exportSession, progress: progress)
    |                                 `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
253 |                     RunLoop.main.add(timer, forMode: .common)
254 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:252:80: warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
250 |                     exportSession.outputFileType = exportOptions.outputURL.fileType.avFileType
251 |
252 |                     let timer = self.createTimer(for: exportSession, progress: progress)
    |                                                                                |- warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
    |                                                                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
253 |                     RunLoop.main.add(timer, forMode: .common)
254 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:256:32: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
254 |
255 |                     exportSession.exportAsynchronously {
256 |                         switch exportSession.status {
    |                                `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
257 |                         case .completed:
258 |                             timer.invalidate()
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:258:29: warning: capture of 'timer' with non-sendable type 'Timer' in a `@Sendable` closure
256 |                         switch exportSession.status {
257 |                         case .completed:
258 |                             timer.invalidate()
    |                             `- warning: capture of 'timer' with non-sendable type 'Timer' in a `@Sendable` closure
259 |                             completion(.success(()))
260 |                         case .failed:
Foundation.Timer:1:12: note: class 'Timer' does not conform to the 'Sendable' protocol
 1 | open class Timer : NSObject {
   |            `- note: class 'Timer' does not conform to the 'Sendable' protocol
 2 |     public /*not inherited*/ init(timeInterval ti: TimeInterval, invocation: NSInvocation, repeats yesOrNo: Bool)
 3 |     @available(*, unavailable, renamed: "init(timeInterval:invocation:repeats:)", message: "Not available in Swift")
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:259:29: warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
257 |                         case .completed:
258 |                             timer.invalidate()
259 |                             completion(.success(()))
    |                             |- warning: capture of 'completion' with non-sendable type 'ResultVoidCompletion' (aka '(Result<(), any Error>) -> ()') in a `@Sendable` closure
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
260 |                         case .failed:
261 |                             timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:355:17: warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
 12 | /// `video`
 13 | ///
 14 | public struct Video: MediaProtocol {
    |               `- note: consider making struct 'Video' conform to the 'Sendable' protocol
 15 |     public typealias ProgressHandler = (Video.ExportProgress) -> Void
 16 |
    :
353 |         if #available(iOS 10, macOS 10.13, tvOS 10, *) {
354 |             timer = Timer(timeInterval: 1, repeats: true) { timer in
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
    |                 `- warning: capture of 'self' with non-sendable type 'Video' in a `@Sendable` closure
356 |                                               timer: timer,
357 |                                               progress: progress)
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:355:62: warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
353 |         if #available(iOS 10, macOS 10.13, tvOS 10, *) {
354 |             timer = Timer(timeInterval: 1, repeats: true) { timer in
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
    |                                                              `- warning: capture of 'exportSession' with non-sendable type 'AVAssetExportSession' in a `@Sendable` closure
356 |                                               timer: timer,
357 |                                               progress: progress)
AVFoundation.AVAssetExportSession:2:12: note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetExportSession : NSObject {
   |            `- note: class 'AVAssetExportSession' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:357:57: warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
355 |                 self.handleProgressTimerFired(exportSession: exportSession,
356 |                                               timer: timer,
357 |                                               progress: progress)
    |                                                         |- warning: capture of 'progress' with non-sendable type 'Video.ProgressHandler' (aka '(Video.ExportProgress) -> ()') in a `@Sendable` closure
    |                                                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
358 |             }
359 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:18:23: warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
16 |     ///
17 |     @FetchAssets(sort: [Media.Sort(key: .creationDate, ascending: false)])
18 |     public static var all: [Video]
   |                       |- warning: static property 'all' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'all' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'all' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
19 |
20 |     /// All streams in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:25:23: warning: static property 'streams' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
23 |     @FetchAssets(filter: [.mediaSubtypes([.streamed])],
24 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
25 |     public static var streams: [Video]
   |                       |- warning: static property 'streams' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'streams' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'streams' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
26 |
27 |     /// All high frame rate videos in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:32:23: warning: static property 'highFrameRates' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
30 |     @FetchAssets(filter: [.mediaSubtypes([.highFrameRate])],
31 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
32 |     public static var highFrameRates: [Video]
   |                       |- warning: static property 'highFrameRates' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'highFrameRates' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'highFrameRates' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
33 |
34 |     /// All timelapse videos in the library
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Videos.swift:39:23: warning: static property 'timelapses' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
37 |     @FetchAssets(filter: [.mediaSubtypes([.timelapse])],
38 |                  sort: [Media.Sort(key: .creationDate, ascending: false)])
39 |     public static var timelapses: [Video]
   |                       |- warning: static property 'timelapses' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'timelapses' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'timelapses' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
40 | }
41 |
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:15:14: warning: associated value 'cannotAddInput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureDeviceInput'; this is an error in the Swift 6 language mode
13 |     enum Error: Swift.Error {
14 |         /// Thrown if the given input could not be added
15 |         case cannotAddInput(_ input: AVCaptureDeviceInput)
   |              `- warning: associated value 'cannotAddInput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureDeviceInput'; this is an error in the Swift 6 language mode
16 |         /// Thrown if the given output could not be added
17 |         case cannotAddOutput(_ output: AVCaptureOutput)
AVFoundation.AVCaptureDeviceInput:2:12: note: class 'AVCaptureDeviceInput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVCaptureDeviceInput : AVCaptureInput {
   |            `- note: class 'AVCaptureDeviceInput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable, message: "superseded by import of -[AVCaptureDeviceInput initWithDevice:error:]")
 4 |     public convenience init(device: AVCaptureDevice) throws
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:8:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
 6 | //
 7 |
 8 | import AVFoundation
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
 9 |
10 | @available(iOS 10, *)
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/internal/Capture/Extensions/AVCaptureSession+Error.swift:17:14: warning: associated value 'cannotAddOutput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureOutput'; this is an error in the Swift 6 language mode
15 |         case cannotAddInput(_ input: AVCaptureDeviceInput)
16 |         /// Thrown if the given output could not be added
17 |         case cannotAddOutput(_ output: AVCaptureOutput)
   |              `- warning: associated value 'cannotAddOutput' of 'Sendable'-conforming enum 'Error' has non-sendable type 'AVCaptureOutput'; this is an error in the Swift 6 language mode
18 |         /// Thrown if there is no default audio device
19 |         case noDefaultAudioDevice
AVFoundation.AVCaptureOutput:2:12: note: class 'AVCaptureOutput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVCaptureOutput : NSObject {
   |            `- note: class 'AVCaptureOutput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public init()
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:164:36: warning: sending 'copyCGImageResult' risks causing data races; this is an error in the Swift 6 language mode
162 |
163 |                     DispatchQueue.main.async {
164 |                         completion(copyCGImageResult)
    |                                    |- warning: sending 'copyCGImageResult' risks causing data races; this is an error in the Swift 6 language mode
    |                                    `- note: task-isolated 'copyCGImageResult' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
165 |                     }
166 |                 case let .failure(error):
/Users/admin/builder/spi-builder-workspace/Sources/MediaCore/API/Video/Video.swift:168:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
166 |                 case let .failure(error):
167 |                     DispatchQueue.main.async {
168 |                         completion(.failure(error))
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
169 |                     }
170 |                 }
[122/155] Compiling MediaSwiftUI PhotosUILivePhotoView.swift
[123/155] Compiling MediaSwiftUI Media+SwiftUI.swift
[124/155] Compiling MediaSwiftUI MediaSwiftUIAliases.swift
[125/155] Compiling MediaSwiftUI BrowserResult.swift
[126/158] Emitting module MediaSwiftUI
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift:16:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 14 |
 15 | #if !os(tvOS)
 16 | @available (iOS 13, macOS 10.15, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 17 | public extension Photo {
 18 |     typealias ResultPhotoCameraResultCompletion = (Result<Camera.Result, Swift.Error>) -> Void
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift:151:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
149 | #endif
150 |
151 | @available (iOS 13, macOS 10.15, tvOS 13, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
152 | public extension Photo {
153 |     /// Creates a ready-to-use `SwiftUI` view representation of the receiver
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift:14:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 12 | import SwiftUI
 13 |
 14 | @available (iOS 13, macOS 10.15, tvOS 13, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 15 | public extension Video {
 16 |     /// Creates a ready-to-use `SwiftUI` view representation of the receiver
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift:24:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 22 |
 23 | #if !os(tvOS)
 24 | @available (iOS 13, macOS 10.15, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 25 | public extension Video {
 26 |     /// Alias for a completion block getting a `Result` containing a `<Media.URL<Video>`
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/internal/Models/Garbage.swift:11:16: warning: static property 'cancellables' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 9 |
10 | struct Garbage {
11 |     static var cancellables: [AnyCancellable] = []
   |                |- warning: static property 'cancellables' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'cancellables' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'cancellables' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
12 | }
13 |
[127/158] Compiling MediaSwiftUI MediaPicker.swift
[128/158] Compiling MediaSwiftUI MediaPickerValue.swift
[129/158] Compiling MediaSwiftUI PhotoView.swift
[130/158] Compiling MediaSwiftUI MediaPicker+Error.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadLivePhoto.swift:18:47: warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
16 |     public func loadLivePhoto() -> AnyPublisher<PHLivePhoto, Swift.Error> {
17 |         Future { promise in
18 |             guard self.canLoadObject(ofClass: PHLivePhoto.self) else {
   |                                               `- warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
19 |                 promise(.failure(Error.couldNotLoadObject(underlying: Error.unknown)))
20 |                 return
Photos.PHLivePhoto:2:11: note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
1 | @available(macOS, unavailable)
2 | extension PHLivePhoto : NSItemProviderReading {
  |           `- note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
3 |     @available(macOS 10.13, *)
4 |     open class var readableTypeIdentifiersForItemProvider: [String] { get }
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadLivePhoto.swift:23:38: warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
21 |             }
22 |
23 |             self.loadObject(ofClass: PHLivePhoto.self) { livePhoto, error in
   |                                      `- warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
24 |                 if let error = error {
25 |                     promise(.failure(Error.couldNotLoadObject(underlying: error)))
Photos.PHLivePhoto:2:11: note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
1 | @available(macOS, unavailable)
2 | extension PHLivePhoto : NSItemProviderReading {
  |           `- note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
3 |     @available(macOS 10.13, *)
4 |     open class var readableTypeIdentifiersForItemProvider: [String] { get }
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadLivePhoto.swift:25:21: warning: capture of 'promise' with non-sendable type '(Result<PHLivePhoto, any Error>) -> Void' in a `@Sendable` closure
23 |             self.loadObject(ofClass: PHLivePhoto.self) { livePhoto, error in
24 |                 if let error = error {
25 |                     promise(.failure(Error.couldNotLoadObject(underlying: error)))
   |                     |- warning: capture of 'promise' with non-sendable type '(Result<PHLivePhoto, any Error>) -> Void' in a `@Sendable` closure
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
26 |                 } else if let livePhoto = livePhoto {
27 |                     promise(.success(livePhoto as! PHLivePhoto))
[131/158] Compiling MediaSwiftUI NSItemProvider+Error.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadLivePhoto.swift:18:47: warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
16 |     public func loadLivePhoto() -> AnyPublisher<PHLivePhoto, Swift.Error> {
17 |         Future { promise in
18 |             guard self.canLoadObject(ofClass: PHLivePhoto.self) else {
   |                                               `- warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
19 |                 promise(.failure(Error.couldNotLoadObject(underlying: Error.unknown)))
20 |                 return
Photos.PHLivePhoto:2:11: note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
1 | @available(macOS, unavailable)
2 | extension PHLivePhoto : NSItemProviderReading {
  |           `- note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
3 |     @available(macOS 10.13, *)
4 |     open class var readableTypeIdentifiersForItemProvider: [String] { get }
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadLivePhoto.swift:23:38: warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
21 |             }
22 |
23 |             self.loadObject(ofClass: PHLivePhoto.self) { livePhoto, error in
   |                                      `- warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
24 |                 if let error = error {
25 |                     promise(.failure(Error.couldNotLoadObject(underlying: error)))
Photos.PHLivePhoto:2:11: note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
1 | @available(macOS, unavailable)
2 | extension PHLivePhoto : NSItemProviderReading {
  |           `- note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
3 |     @available(macOS 10.13, *)
4 |     open class var readableTypeIdentifiersForItemProvider: [String] { get }
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadLivePhoto.swift:25:21: warning: capture of 'promise' with non-sendable type '(Result<PHLivePhoto, any Error>) -> Void' in a `@Sendable` closure
23 |             self.loadObject(ofClass: PHLivePhoto.self) { livePhoto, error in
24 |                 if let error = error {
25 |                     promise(.failure(Error.couldNotLoadObject(underlying: error)))
   |                     |- warning: capture of 'promise' with non-sendable type '(Result<PHLivePhoto, any Error>) -> Void' in a `@Sendable` closure
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
26 |                 } else if let livePhoto = livePhoto {
27 |                     promise(.success(livePhoto as! PHLivePhoto))
[132/158] Compiling MediaSwiftUI NSItemProvider+loadImage.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadLivePhoto.swift:18:47: warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
16 |     public func loadLivePhoto() -> AnyPublisher<PHLivePhoto, Swift.Error> {
17 |         Future { promise in
18 |             guard self.canLoadObject(ofClass: PHLivePhoto.self) else {
   |                                               `- warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
19 |                 promise(.failure(Error.couldNotLoadObject(underlying: Error.unknown)))
20 |                 return
Photos.PHLivePhoto:2:11: note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
1 | @available(macOS, unavailable)
2 | extension PHLivePhoto : NSItemProviderReading {
  |           `- note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
3 |     @available(macOS 10.13, *)
4 |     open class var readableTypeIdentifiersForItemProvider: [String] { get }
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadLivePhoto.swift:23:38: warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
21 |             }
22 |
23 |             self.loadObject(ofClass: PHLivePhoto.self) { livePhoto, error in
   |                                      `- warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
24 |                 if let error = error {
25 |                     promise(.failure(Error.couldNotLoadObject(underlying: error)))
Photos.PHLivePhoto:2:11: note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
1 | @available(macOS, unavailable)
2 | extension PHLivePhoto : NSItemProviderReading {
  |           `- note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
3 |     @available(macOS 10.13, *)
4 |     open class var readableTypeIdentifiersForItemProvider: [String] { get }
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadLivePhoto.swift:25:21: warning: capture of 'promise' with non-sendable type '(Result<PHLivePhoto, any Error>) -> Void' in a `@Sendable` closure
23 |             self.loadObject(ofClass: PHLivePhoto.self) { livePhoto, error in
24 |                 if let error = error {
25 |                     promise(.failure(Error.couldNotLoadObject(underlying: error)))
   |                     |- warning: capture of 'promise' with non-sendable type '(Result<PHLivePhoto, any Error>) -> Void' in a `@Sendable` closure
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
26 |                 } else if let livePhoto = livePhoto {
27 |                     promise(.success(livePhoto as! PHLivePhoto))
[133/158] Compiling MediaSwiftUI NSItemProvider+loadLivePhoto.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadLivePhoto.swift:18:47: warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
16 |     public func loadLivePhoto() -> AnyPublisher<PHLivePhoto, Swift.Error> {
17 |         Future { promise in
18 |             guard self.canLoadObject(ofClass: PHLivePhoto.self) else {
   |                                               `- warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
19 |                 promise(.failure(Error.couldNotLoadObject(underlying: Error.unknown)))
20 |                 return
Photos.PHLivePhoto:2:11: note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
1 | @available(macOS, unavailable)
2 | extension PHLivePhoto : NSItemProviderReading {
  |           `- note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
3 |     @available(macOS 10.13, *)
4 |     open class var readableTypeIdentifiersForItemProvider: [String] { get }
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadLivePhoto.swift:23:38: warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
21 |             }
22 |
23 |             self.loadObject(ofClass: PHLivePhoto.self) { livePhoto, error in
   |                                      `- warning: conformance of 'PHLivePhoto' to 'NSItemProviderReading' is unavailable in macOS; this is an error in the Swift 6 language mode
24 |                 if let error = error {
25 |                     promise(.failure(Error.couldNotLoadObject(underlying: error)))
Photos.PHLivePhoto:2:11: note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
1 | @available(macOS, unavailable)
2 | extension PHLivePhoto : NSItemProviderReading {
  |           `- note: conformance of 'PHLivePhoto' to 'NSItemProviderReading' has been explicitly marked unavailable here
3 |     @available(macOS 10.13, *)
4 |     open class var readableTypeIdentifiersForItemProvider: [String] { get }
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadLivePhoto.swift:25:21: warning: capture of 'promise' with non-sendable type '(Result<PHLivePhoto, any Error>) -> Void' in a `@Sendable` closure
23 |             self.loadObject(ofClass: PHLivePhoto.self) { livePhoto, error in
24 |                 if let error = error {
25 |                     promise(.failure(Error.couldNotLoadObject(underlying: error)))
   |                     |- warning: capture of 'promise' with non-sendable type '(Result<PHLivePhoto, any Error>) -> Void' in a `@Sendable` closure
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
26 |                 } else if let livePhoto = livePhoto {
27 |                     promise(.success(livePhoto as! PHLivePhoto))
[134/158] Compiling MediaSwiftUI Video+SwiftUI.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift:14:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 12 | import SwiftUI
 13 |
 14 | @available (iOS 13, macOS 10.15, tvOS 13, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 15 | public extension Video {
 16 |     /// Creates a ready-to-use `SwiftUI` view representation of the receiver
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift:24:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 22 |
 23 | #if !os(tvOS)
 24 | @available (iOS 13, macOS 10.15, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 25 | public extension Video {
 26 |     /// Alias for a completion block getting a `Result` containing a `<Media.URL<Video>`
[135/158] Compiling MediaSwiftUI CameraViewCreator.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift:14:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 12 | import SwiftUI
 13 |
 14 | @available (iOS 13, macOS 10.15, tvOS 13, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 15 | public extension Video {
 16 |     /// Creates a ready-to-use `SwiftUI` view representation of the receiver
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift:24:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 22 |
 23 | #if !os(tvOS)
 24 | @available (iOS 13, macOS 10.15, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 25 | public extension Video {
 26 |     /// Alias for a completion block getting a `Result` containing a `<Media.URL<Video>`
[136/158] Compiling MediaSwiftUI AVCaptureVideoPreview.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift:14:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 12 | import SwiftUI
 13 |
 14 | @available (iOS 13, macOS 10.15, tvOS 13, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 15 | public extension Video {
 16 |     /// Creates a ready-to-use `SwiftUI` view representation of the receiver
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift:24:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 22 |
 23 | #if !os(tvOS)
 24 | @available (iOS 13, macOS 10.15, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 25 | public extension Video {
 26 |     /// Alias for a completion block getting a `Result` containing a `<Media.URL<Video>`
[137/158] Compiling MediaSwiftUI CameraView.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift:14:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 12 | import SwiftUI
 13 |
 14 | @available (iOS 13, macOS 10.15, tvOS 13, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 15 | public extension Video {
 16 |     /// Creates a ready-to-use `SwiftUI` view representation of the receiver
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift:24:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 22 |
 23 | #if !os(tvOS)
 24 | @available (iOS 13, macOS 10.15, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 25 | public extension Video {
 26 |     /// Alias for a completion block getting a `Result` containing a `<Media.URL<Video>`
[138/158] Compiling MediaSwiftUI NSItemProvider+loadVideo.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift:16:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 14 |
 15 | #if !os(tvOS)
 16 | @available (iOS 13, macOS 10.15, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 17 | public extension Photo {
 18 |     typealias ResultPhotoCameraResultCompletion = (Result<Camera.Result, Swift.Error>) -> Void
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift:151:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
149 | #endif
150 |
151 | @available (iOS 13, macOS 10.15, tvOS 13, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
152 | public extension Photo {
153 |     /// Creates a ready-to-use `SwiftUI` view representation of the receiver
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadVideo.swift:43:21: warning: capture of 'promise' with non-sendable type '(Result<URL, any Error>) -> Void' in a `@Sendable` closure
41 |                         return targetLocation
42 |                     }
43 |                     promise(result)
   |                     |- warning: capture of 'promise' with non-sendable type '(Result<URL, any Error>) -> Void' in a `@Sendable` closure
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
44 |                 } else {
45 |                     let error = error ?? Error.unknown
[139/158] Compiling MediaSwiftUI PHPicker.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift:16:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 14 |
 15 | #if !os(tvOS)
 16 | @available (iOS 13, macOS 10.15, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 17 | public extension Photo {
 18 |     typealias ResultPhotoCameraResultCompletion = (Result<Camera.Result, Swift.Error>) -> Void
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift:151:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
149 | #endif
150 |
151 | @available (iOS 13, macOS 10.15, tvOS 13, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
152 | public extension Photo {
153 |     /// Creates a ready-to-use `SwiftUI` view representation of the receiver
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadVideo.swift:43:21: warning: capture of 'promise' with non-sendable type '(Result<URL, any Error>) -> Void' in a `@Sendable` closure
41 |                         return targetLocation
42 |                     }
43 |                     promise(result)
   |                     |- warning: capture of 'promise' with non-sendable type '(Result<URL, any Error>) -> Void' in a `@Sendable` closure
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
44 |                 } else {
45 |                     let error = error ?? Error.unknown
[140/158] Compiling MediaSwiftUI Photo+Camera+Result.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift:16:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 14 |
 15 | #if !os(tvOS)
 16 | @available (iOS 13, macOS 10.15, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 17 | public extension Photo {
 18 |     typealias ResultPhotoCameraResultCompletion = (Result<Camera.Result, Swift.Error>) -> Void
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift:151:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
149 | #endif
150 |
151 | @available (iOS 13, macOS 10.15, tvOS 13, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
152 | public extension Photo {
153 |     /// Creates a ready-to-use `SwiftUI` view representation of the receiver
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadVideo.swift:43:21: warning: capture of 'promise' with non-sendable type '(Result<URL, any Error>) -> Void' in a `@Sendable` closure
41 |                         return targetLocation
42 |                     }
43 |                     promise(result)
   |                     |- warning: capture of 'promise' with non-sendable type '(Result<URL, any Error>) -> Void' in a `@Sendable` closure
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
44 |                 } else {
45 |                     let error = error ?? Error.unknown
[141/158] Compiling MediaSwiftUI Photo+SwiftUI.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift:16:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 14 |
 15 | #if !os(tvOS)
 16 | @available (iOS 13, macOS 10.15, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
 17 | public extension Photo {
 18 |     typealias ResultPhotoCameraResultCompletion = (Result<Camera.Result, Swift.Error>) -> Void
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift:151:2: warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
149 | #endif
150 |
151 | @available (iOS 13, macOS 10.15, tvOS 13, *)
    |  `- warning: extraneous whitespace between attribute name and '('; this is an error in the Swift 6 language mode
152 | public extension Photo {
153 |     /// Creates a ready-to-use `SwiftUI` view representation of the receiver
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/API/PHPicker/NSItemProvider+loadVideo.swift:43:21: warning: capture of 'promise' with non-sendable type '(Result<URL, any Error>) -> Void' in a `@Sendable` closure
41 |                         return targetLocation
42 |                     }
43 |                     promise(result)
   |                     |- warning: capture of 'promise' with non-sendable type '(Result<URL, any Error>) -> Void' in a `@Sendable` closure
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
44 |                 } else {
45 |                     let error = error ?? Error.unknown
[142/158] Compiling MediaSwiftUI ActivityIndicatorView.swift
[143/158] Compiling MediaSwiftUI LivePhotoView.swift
[144/158] Compiling MediaSwiftUI MediaPicker+Coordinator.swift
[145/158] Compiling MediaSwiftUI VideoPreview.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/internal/Models/Garbage.swift:11:16: warning: static property 'cancellables' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 9 |
10 | struct Garbage {
11 |     static var cancellables: [AnyCancellable] = []
   |                |- warning: static property 'cancellables' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'cancellables' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'cancellables' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
12 | }
13 |
[146/158] Compiling MediaSwiftUI Garbage.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/internal/Models/Garbage.swift:11:16: warning: static property 'cancellables' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 9 |
10 | struct Garbage {
11 |     static var cancellables: [AnyCancellable] = []
   |                |- warning: static property 'cancellables' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'cancellables' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'cancellables' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
12 | }
13 |
[147/158] Compiling MediaSwiftUI ReferenceWrapper.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/internal/Models/Garbage.swift:11:16: warning: static property 'cancellables' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 9 |
10 | struct Garbage {
11 |     static var cancellables: [AnyCancellable] = []
   |                |- warning: static property 'cancellables' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'cancellables' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'cancellables' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
12 | }
13 |
[148/158] Compiling MediaSwiftUI ViewState.swift
/Users/admin/builder/spi-builder-workspace/Sources/MediaSwiftUI/internal/Models/Garbage.swift:11:16: warning: static property 'cancellables' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 9 |
10 | struct Garbage {
11 |     static var cancellables: [AnyCancellable] = []
   |                |- warning: static property 'cancellables' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'cancellables' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'cancellables' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
12 | }
13 |
[149/158] Compiling MediaSwiftUI ViewWrapper.swift
[150/158] Compiling MediaSwiftUI WeakObjectWrapper.swift
[151/158] Compiling MediaSwiftUI ViewCreator.swift
[152/158] Compiling MediaSwiftUI Camera+Error.swift
[153/158] Compiling MediaSwiftUI Camera+Result.swift
[154/158] Compiling MediaSwiftUI Camera.swift
[155/158] Compiling MediaSwiftUI LivePhoto+SwiftUI.swift
[156/158] Compiling MediaSwiftUI UniversalProgressView.swift
[157/158] Compiling MediaSwiftUI AVPlayerView.swift
[158/158] Compiling MediaSwiftUI VideoView.swift
Build complete! (22.37s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Media",
  "name" : "Media",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    }
  ],
  "products" : [
    {
      "name" : "MediaCore",
      "targets" : [
        "MediaCore"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MediaSwiftUI",
      "targets" : [
        "MediaCore",
        "MediaSwiftUI"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "MediaTests",
      "module_type" : "SwiftTarget",
      "name" : "MediaTests",
      "path" : "Tests/MediaTests",
      "sources" : [
        "Capture/AVCaptureDeviceTests.swift",
        "Capture/PhotoCaptureProcessorTests.swift",
        "Capture/PhotographTests.swift",
        "Capture/VideoRecorderTests.swift",
        "Errors/PermissionErrorTests.swift",
        "Extensions/CFString+MediaTypesTests.swift",
        "Extensions/FileManagerTests.swift",
        "Extensions/OptionalString+compareTests.swift",
        "Extensions/PHAsset+anyMediaTests.swift",
        "Extensions/PHAuthorizationStatus+PermissionErrorTests.swift",
        "Extensions/PHFetchOptions+ConvenienceTests.swift",
        "Extensions/PhotoKitDictionaryTests.swift",
        "Extensions/UIImagePickerController+MediaTypeTests.swift",
        "Extensions/UIImagePickerController+supportedMediaTypesTests.swift",
        "Mocks/MockAVAssetExportSession.swift",
        "Mocks/MockAVCaptureMovieFileOutput.swift",
        "Mocks/MockAVCapturePhoto.swift",
        "Mocks/MockAVCapturePhotoOutput.swift",
        "Mocks/MockAVCaptureResolvedPhotoSettings.swift",
        "Mocks/MockAVMetadataItem.swift",
        "Mocks/MockCaptureProcessor.swift",
        "Mocks/MockCaptureProcessorDelegate.swift",
        "Mocks/MockImage.swift",
        "Mocks/MockImageManager.swift",
        "Mocks/MockLivePhotoManager.swift",
        "Mocks/MockPHAsset.swift",
        "Mocks/MockPHAssetChangeRequest.swift",
        "Mocks/MockPHAssetCollection.swift",
        "Mocks/MockPHAssetCollectionFetchResult.swift",
        "Mocks/MockPHAssetsFetchResult.swift",
        "Mocks/MockPHChange.swift",
        "Mocks/MockPHContentEditingInput.swift",
        "Mocks/MockPHLivePhoto.swift",
        "Mocks/MockPHObjectChangeDetails.swift",
        "Mocks/MockPHObjectPlaceholder.swift",
        "Mocks/MockPhotoLibrary.swift",
        "Mocks/MockPhotoLibraryChangeObserver.swift",
        "Mocks/MockPropertyWrapperExample.swift",
        "Mocks/MockUIImagePickerController.swift",
        "Mocks/MockVideoManager.swift",
        "Models/Album/AlbumFilterTests.swift",
        "Models/Album/AlbumIdentifierTests.swift",
        "Models/Album/AlbumTests.swift",
        "Models/Album/AlbumTypeTests.swift",
        "Models/Album/AlbumsTests.swift",
        "Models/Album/LazyAlbumTests.swift",
        "Models/AnyMedia+EquatableTests.swift",
        "Models/AnyMediaIdentifierTests.swift",
        "Models/AnyMediaTests.swift",
        "Models/Audio/AudioFileTypeTests.swift",
        "Models/Audio/AudioSubtypeTests.swift",
        "Models/Audio/AudioTests.swift",
        "Models/Audio/AudiosTests.swift",
        "Models/Audio/LazyAudiosTests.swift",
        "Models/Camera/CameraTests.swift",
        "Models/Enums/PhotoSubtypeTests.swift",
        "Models/LivePhoto/LazyLivePhotosTests.swift",
        "Models/LivePhoto/LivePhotoFileTypeTests.swift",
        "Models/LivePhoto/LivePhotoSubtypeTests.swift",
        "Models/LivePhoto/LivePhotoTests.swift",
        "Models/Media/MediaFilterTests.swift",
        "Models/Media/MediaIdentifierTests.swift",
        "Models/Media/MediaSwiftUITests.swift",
        "Models/Media/MediaTests.swift",
        "Models/Media/MediaURLTests.swift",
        "Models/PatternTests.swift",
        "Models/Photo/LazyPhotosTests.swift",
        "Models/Photo/PhotoFileTypeTests.swift",
        "Models/Photo/PhotoTests.swift",
        "Models/Photo/PhotosTests.swift",
        "Models/Video/LazyVideosTests.swift",
        "Models/Video/Video+ExportOptionsTests.swift",
        "Models/Video/Video+PropertiesTests.swift",
        "Models/Video/VideoExportQualityTests.swift",
        "Models/Video/VideoFileTypeTests.swift",
        "Models/Video/VideoSubtypeTests.swift",
        "Models/Video/VideoTests.swift",
        "Models/Video/VideosTests.swift",
        "Property wrappers/FetchAlbumTests.swift",
        "Property wrappers/FetchAssetTests.swift",
        "Services/AlbumFetcherTests.swift",
        "Services/CustomPhotoLibraryChangeObserverTests.swift",
        "Services/PHAssetChangerTests.swift",
        "Services/PHAssetFetcherTests.swift",
        "Services/PHChangerTests.swift",
        "Services/ViewCreatorTests.swift",
        "TimerWrapperTests.swift",
        "Views/MediaPickerCoordinatorTests.swift",
        "Views/MediaPickerTests.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "MediaSwiftUI"
      ],
      "type" : "test"
    },
    {
      "c99name" : "MediaSwiftUI",
      "module_type" : "SwiftTarget",
      "name" : "MediaSwiftUI",
      "path" : "Sources/MediaSwiftUI",
      "product_memberships" : [
        "MediaSwiftUI"
      ],
      "sources" : [
        "API/Camera/Camera+Error.swift",
        "API/Camera/Camera+Result.swift",
        "API/Camera/Camera.swift",
        "API/LivePhoto/LivePhoto+SwiftUI.swift",
        "API/LivePhoto/PhotosUILivePhotoView.swift",
        "API/Media/Media+SwiftUI.swift",
        "API/MediaSwiftUIAliases.swift",
        "API/Models/BrowserResult.swift",
        "API/Models/Errors/MediaPicker+Error.swift",
        "API/PHPicker/NSItemProvider+Error.swift",
        "API/PHPicker/NSItemProvider+loadImage.swift",
        "API/PHPicker/NSItemProvider+loadLivePhoto.swift",
        "API/PHPicker/NSItemProvider+loadVideo.swift",
        "API/PHPicker/PHPicker.swift",
        "API/Photo/Photo+Camera+Result.swift",
        "API/Photo/Photo+SwiftUI.swift",
        "API/Video/Video+SwiftUI.swift",
        "internal/Capture/CameraViewCreator.swift",
        "internal/Capture/Views/AVCaptureVideoPreview.swift",
        "internal/Capture/Views/CameraView.swift",
        "internal/Capture/Views/VideoPreview.swift",
        "internal/Models/Garbage.swift",
        "internal/Models/ReferenceWrapper.swift",
        "internal/Models/ViewState.swift",
        "internal/Models/ViewWrapper.swift",
        "internal/Models/WeakObjectWrapper.swift",
        "internal/Services/ViewCreator.swift",
        "internal/Views/ActivityIndicatorView.swift",
        "internal/Views/LivePhoto/LivePhotoView.swift",
        "internal/Views/MediaPicker/MediaPicker+Coordinator.swift",
        "internal/Views/MediaPicker/MediaPicker.swift",
        "internal/Views/MediaPicker/MediaPickerValue.swift",
        "internal/Views/Photo/PhotoView.swift",
        "internal/Views/UniversalProgressView.swift",
        "internal/Views/Video/AVPlayerView.swift",
        "internal/Views/Video/VideoView.swift"
      ],
      "target_dependencies" : [
        "MediaCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MediaCore",
      "module_type" : "SwiftTarget",
      "name" : "MediaCore",
      "path" : "Sources/MediaCore",
      "product_memberships" : [
        "MediaCore",
        "MediaSwiftUI"
      ],
      "sources" : [
        "API/Album/Album+Error.swift",
        "API/Album/Album+Filter.swift",
        "API/Album/Album+Identifier.swift",
        "API/Album/Album+Metadata.swift",
        "API/Album/Album+SortKey.swift",
        "API/Album/Album.swift",
        "API/Album/AlbumType.swift",
        "API/Album/Albums.swift",
        "API/Album/LazyAlbum.swift",
        "API/Album/LazyAlbums.swift",
        "API/Audio/Audio+FileType.swift",
        "API/Audio/Audio+Metadata.swift",
        "API/Audio/Audio+Subtype.swift",
        "API/Audio/Audio.swift",
        "API/Audio/Audios.swift",
        "API/Audio/LazyAudios.swift",
        "API/Capture/Extensions/AVCaptureDevice+devices.swift",
        "API/Capture/Extensions/AVCaptureSession+add.swift",
        "API/Capture/Photograph.swift",
        "API/Extensions/AuthorizationStatus+PermissionError.swift",
        "API/Extensions/CoreServices/CFString+MediaTypes.swift",
        "API/Extensions/FileManager+directories.swift",
        "API/Extensions/PhotoKit/Dictionary+PhotoKit.swift",
        "API/Extensions/UIImagePickerController/UIImagePickerController+MediaType.swift",
        "API/Extensions/UIImagePickerController/UIImagePickerController+availableSourceType.swift",
        "API/Extensions/UIImagePickerController/UIImagePickerController+supportedMediaTypes.swift",
        "API/LivePhoto/LazyLivePhotos.swift",
        "API/LivePhoto/LivePhoto+FileType.swift",
        "API/LivePhoto/LivePhoto+Metadata.swift",
        "API/LivePhoto/LivePhoto+Subtype.swift",
        "API/LivePhoto/LivePhoto.swift",
        "API/LivePhoto/LivePhotos.swift",
        "API/LivePhoto/PHLivePhotoProtocol.swift",
        "API/Media/Media+DisplayRepresentation.swift",
        "API/Media/Media+Error.swift",
        "API/Media/Media+Identifier.swift",
        "API/Media/Media+URL+Error.swift",
        "API/Media/Media+URL.swift",
        "API/Media/Media.swift",
        "API/MediaCoreAliases.swift",
        "API/Models/AnyMedia/AnyMedia+Equatable.swift",
        "API/Models/AnyMedia/AnyMedia+Identifier+Equatable.swift",
        "API/Models/AnyMedia/AnyMedia+Identifier.swift",
        "API/Models/AnyMedia/AnyMedia.swift",
        "API/Models/Capture/LivePhotoData.swift",
        "API/Models/Errors/PermissionError.swift",
        "API/Models/Media+Filter.swift",
        "API/Models/Media+Quality.swift",
        "API/Models/Media+Sort.swift",
        "API/Models/Media+SortKey.swift",
        "API/Models/PHAssetWrapper.swift",
        "API/Models/UniversalImage.swift",
        "API/Photo/Media+LazyPhotos.swift",
        "API/Photo/Photo+Error.swift",
        "API/Photo/Photo+FileType.swift",
        "API/Photo/Photo+Metadata.swift",
        "API/Photo/Photo+Properties.swift",
        "API/Photo/Photo+Subtype.swift",
        "API/Photo/Photo.swift",
        "API/Photo/Photos.swift",
        "API/PropertyWrappers/FetchAlbum.swift",
        "API/PropertyWrappers/FetchAlbums.swift",
        "API/PropertyWrappers/FetchAllAssets.swift",
        "API/PropertyWrappers/FetchAsset.swift",
        "API/PropertyWrappers/FetchAssets.swift",
        "API/Protocols/AssetChangeRequest.swift",
        "API/Protocols/MediaProtocol.swift",
        "API/Protocols/MediaSubtypeProvider.swift",
        "API/Protocols/PathExtensionsProvider.swift",
        "API/Video/LazyVideos.swift",
        "API/Video/Video+Error.swift",
        "API/Video/Video+ExportOptions.swift",
        "API/Video/Video+ExportProgress.swift",
        "API/Video/Video+ExportQuality.swift",
        "API/Video/Video+ExportQualityMac.swift",
        "API/Video/Video+FileType.swift",
        "API/Video/Video+Metadata.swift",
        "API/Video/Video+Properties.swift",
        "API/Video/Video+Subtype.swift",
        "API/Video/Video.swift",
        "API/Video/Videos.swift",
        "internal/Capture/Extensions/AVCaptureDevice+Error.swift",
        "internal/Capture/Extensions/AVCaptureSession+Error.swift",
        "internal/Capture/PhotoCaptureProcessor.swift",
        "internal/Capture/Protocols/CaptureProcessor.swift",
        "internal/Capture/Protocols/CaptureProcessorDelegate.swift",
        "internal/Capture/VideoRecorder.swift",
        "internal/Extensions/OptionalString+compare.swift",
        "internal/Extensions/PatternMatching/CustomPatternMatching.swift",
        "internal/Extensions/PatternMatching/Pattern+mismatchs.swift",
        "internal/Extensions/PatternMatching/Pattern+unsupportedPathExtension.swift",
        "internal/Extensions/PhotoKit/PHAsset+anyMedia.swift",
        "internal/Extensions/PhotoKit/PHAssetChangeRequest+AssetChangeRequest.swift",
        "internal/Extensions/PhotoKit/PHFetchOptions.swift",
        "internal/Extensions/PhotoKit/PHImageManager+ImageManager.swift",
        "internal/Extensions/PhotoKit/PHImageManager+LivePhotoManager.swift",
        "internal/Extensions/PhotoKit/PHImageManager+VideoManager.swift",
        "internal/Extensions/PhotoKit/PHImageManager+handlePotentialDegradedResult.swift",
        "internal/Extensions/PhotoKit/PHImageManager+handleResult.swift",
        "internal/Extensions/PhotoKit/PHLivePhoto+PHLivePhotoProtocol.swift",
        "internal/Extensions/PhotoKit/PHPhotoLibrary+PhotoLibrary.swift",
        "internal/Extensions/UIImagePickerController/UIImagePickerController+MediaTypeError.swift",
        "internal/Models/PHAssetCollectionWrapper.swift",
        "internal/Models/Pattern.swift",
        "internal/Protocols/AVAssetExportPresetProvider.swift",
        "internal/Protocols/AnyMetadata.swift",
        "internal/Protocols/ImageManager.swift",
        "internal/Protocols/LivePhotoManager.swift",
        "internal/Protocols/PhotoLibrary.swift",
        "internal/Protocols/PhotoLibraryChangeObserver.swift",
        "internal/Protocols/VideoManager.swift",
        "internal/Services/AlbumFetcher.swift",
        "internal/Services/CustomPhotoLibraryChangeObserver.swift",
        "internal/Services/PHAssetChanger.swift",
        "internal/Services/PHAssetFetcher.swift",
        "internal/Services/PHChanger.swift",
        "internal/TimerWrapper.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.3"
}
Done.