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.