The Swift Package Index logo.Swift Package Index

Build Information

Successful build of AVPlayerWrapper, reference master (e8f530), with Swift 6.4 for macOS (SPM) on 26 Sep 2026 17:53:27 UTC.

Swift 6 data race errors: 0

Build Command

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

Build Log

========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/moslienko/AVPlayerWrapper.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/moslienko/AVPlayerWrapper
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
HEAD is now at e8f5302 Merge pull request #3 from moslienko/develop
Cloned https://github.com/moslienko/AVPlayerWrapper.git
Revision (git rev-parse @):
e8f53021bc0de2a9bc56c4bb26ae9957186c7f9c
SUCCESS checkout https://github.com/moslienko/AVPlayerWrapper.git at master
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.4
Building package at path:  $PWD
https://github.com/moslienko/AVPlayerWrapper.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64
Building for debugging...
[Pre-planning 1 / 96]
[Planning deferred tasks]
[25 / 42]
[26 / 43] AppViewUtilits
[36 / 136]
[40 / 136]
[48 / 136]
[50 / 136]
[51 / 136]
[56 / 136]
[59 / 136]
[63 / 136]
[69 / 136]
[73 / 136]
[75 / 136]
[76 / 136]
[87 / 136]
[93 / 136]
[94 / 136]
[98 / 136]
[103 / 136]
[104 / 136]
[108 / 136]
[119 / 136] AppViewUtilits
[120 / 136] AppViewUtilits
[126 / 137]
[128 / 150]
[130 / 150] AVPlayerWrapper
[131 / 150] AVPlayerWrapper
[142 / 150] AVPlayerWrapper-product
[145 / 150]
[145 / 150] AVPlayerWrapper
[145 / 150] AppViewUtilits
[149 / 150] AVPlayerWrapper
Build complete! (11.60 sec)
Fetching https://github.com/moslienko/AppViewUtilits.git
[1/877] Fetching appviewutilits
Fetched https://github.com/moslienko/AppViewUtilits.git (1.99s)
Computing version for https://github.com/moslienko/AppViewUtilits.git
Computed https://github.com/moslienko/AppViewUtilits.git at 1.3.1 (4.76s)
Creating working copy for https://github.com/moslienko/AppViewUtilits.git
Working copy of https://github.com/moslienko/AppViewUtilits.git resolved at 1.3.1
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Extensions/Extension+Bundle.swift:15:5: warning: 'public' modifier is redundant for instance method declared in a public extension
13 |     /// - Parameter fileName: The name of the resource file.
14 |     /// - Returns: An optional `URL` pointing to the resource file.
15 |     public func createFileUrl(forResource fileName: String) -> URL? {
   |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
16 |         let components = fileName.split(separator: ".", maxSplits: 1).map(String.init)
17 |         guard components.count == 2 else {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:74:5: warning: 'public' modifier is redundant for instance method declared in a public extension
 72 |     /// Sets up the auto stop playing with the specified type.
 73 |     /// - Parameter type: The type of auto-stop to be set.
 74 |     public func setupAutoStop(with type: AVPlayerAutoStopType) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
 75 |         self.autoStopType = type
 76 |         switch type {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:87:5: warning: 'public' modifier is redundant for instance method declared in a public extension
 85 |
 86 |     /// Try starts the auto-stop player timer, if needed.
 87 |     public func startTimer() {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
 88 |         switch self.autoStopType {
 89 |         case .disable:
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:105:5: warning: 'public' modifier is redundant for instance method declared in a public extension
103 |
104 |     /// Pause the auto-stop player timer.
105 |     public func pauseTimer() {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
106 |         autoStopTimer?.invalidate()
107 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:110:5: warning: 'public' modifier is redundant for instance method declared in a public extension
108 |
109 |     /// Cancel the auto-stop player timer.
110 |     public func cancelTimer() {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
111 |         autoStopTimer?.invalidate()
112 |         autoStopTimer = nil
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:107:38: warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
104 |                 self.stop(isNeedCancelAutoStop: true)
105 |             },
106 |             didUpdateAutoStopTime: { remainingTime in
    |                                    |- note: 'self' implicitly strongly captured here
    |                                    `- note: add 'self' as a capture list item to silence
107 |                 onMainThread { [weak self] in
    |                                      |- warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
    |                                      `- note: explicitly assign the capture list item to silence
108 |                     guard let self = self else {
109 |                         return
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:116:38: warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
113 |                 }
114 |             },
115 |             didUpdateAutoStopType: { type in
    |                                    |- note: 'self' implicitly strongly captured here
    |                                    `- note: add 'self' as a capture list item to silence
116 |                 onMainThread { [weak self] in
    |                                      |- warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
    |                                      `- note: explicitly assign the capture list item to silence
117 |                     guard let self = self else {
118 |                         return
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:257:5: warning: 'public' modifier is redundant for instance method declared in a public extension
255 |     /// Plays the track at the specified index in the playlist.
256 |     /// - Parameter index: The index of the track to be played.
257 |     public func playTrack(at index: Int) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
258 |         guard index < playlist.count else {
259 |             return
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:272:5: warning: 'public' modifier is redundant for instance method declared in a public extension
270 |
271 |     /// Plays the next track in the playlist.
272 |     public func playNextTrack() {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
273 |         if isCanPlayedNextAudio() {
274 |             playTrack(at: currentTrackIndex + 1)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:281:5: warning: 'public' modifier is redundant for instance method declared in a public extension
279 |
280 |     /// Plays the previous track in the playlist.
281 |     public func playPreviousTrack() {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
282 |         if isCanPlayedPrevAudio() {
283 |             playTrack(at: currentTrackIndex - 1)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:288:5: warning: 'public' modifier is redundant for instance method declared in a public extension
286 |
287 |     /// Starts playback of the current track.
288 |     public func play() {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
289 |         if options.isDisplayNowPlaying, let nowPlayingService = self.nowPlayingService {
290 |             nowPlayingService.setupNowPlaying {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:308:5: warning: 'public' modifier is redundant for instance method declared in a public extension
306 |
307 |     /// Pauses playback of the current track.
308 |     public func pause() {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
309 |         player?.pause()
310 |         autoStopService.pauseTimer()
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:318:5: warning: 'public' modifier is redundant for instance method declared in a public extension
316 |
317 |     /// Stops playback of the current track.
318 |     public func stop(isNeedCancelAutoStop: Bool = true) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
319 |         player?.pause()
320 |         player?.seek(to: .zero)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:353:5: warning: 'public' modifier is redundant for instance method declared in a public extension
351 |     /// Seeks to the specified time in the current track.
352 |     /// - Parameter time: The time to seek to.
353 |     public func seek(to time: CMTime) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
354 |         player?.seek(to: time)
355 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:359:5: warning: 'public' modifier is redundant for instance method declared in a public extension
357 |     /// Sets the playback rate of the player.
358 |     /// - Parameter rate: The new playback rate.
359 |     public func setPlaybackRate(to rate: Float) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
360 |         guard let player = player else { return }
361 |         player.rate = max(0.5, min(rate, 2.0))
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:366:5: warning: 'public' modifier is redundant for instance method declared in a public extension
364 |     /// Sets up the auto-stop feature with the specified type.
365 |     /// - Parameter type: The type of auto-stop to be set.
366 |     public func setupAutoStop(with type: AVPlayerAutoStopType) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
367 |         autoStopService.setupAutoStop(with: type)
368 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:372:5: warning: 'public' modifier is redundant for instance method declared in a public extension
370 |     /// Seeks forward by the specified number of seconds in the current track.
371 |     /// - Parameter seconds: The number of seconds to seek forward.
372 |     public func seekForward(by seconds: TimeInterval) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
373 |         guard let player = player,
374 |               let currentTime = player.currentItem?.currentTime() else {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:385:5: warning: 'public' modifier is redundant for instance method declared in a public extension
383 |     /// Seeks backward by the specified number of seconds in the current track.
384 |     /// - Parameter seconds: The number of seconds to seek backward.
385 |     public func seekBackward(by seconds: TimeInterval) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
386 |         guard let player = player,
387 |               let currentTime = player.currentItem?.currentTime() else {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:408:5: warning: 'public' modifier is redundant for instance method declared in a public extension
406 |     ///   - didHandleError: An optional callback to be invoked when an error is handled.
407 |     ///   - didFailedSetAudioSession: An optional callback to be invoked when setting the audio session fails.
408 |     public func setPlaylist(
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
409 |         _ files: [AVPlayerWrapperMediaFile],
410 |         didStartPlaying: Callback? = nil,
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:440:5: warning: 'public' modifier is redundant for instance method declared in a public extension
438 |     /// Indicates whether the previous audio track can be played.
439 |     /// - Returns: A Boolean value indicating whether the previous audio track can be played.
440 |     public func isCanPlayedPrevAudio() -> Bool {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
441 |         return currentTrackIndex > 0
442 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:446:5: warning: 'public' modifier is redundant for instance method declared in a public extension
444 |     /// Indicates whether the next audio track can be played.
445 |     /// - Returns: A Boolean value indicating whether the next audio track can be played.
446 |     public func isCanPlayedNextAudio() -> Bool {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
447 |         return currentTrackIndex + 1 < playlist.count
448 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:452:5: warning: 'public' modifier is redundant for instance method declared in a public extension
450 |     /// Gets the current auto-stop type.
451 |     /// - Returns: The current auto-stop type.
452 |     public func getAutoStopType() -> AVPlayerAutoStopType {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
453 |         return autoStopService.autoStopType
454 |     }
[#ImplicitStrongCapture]: <https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture>
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Extensions/Extension+Bundle.swift:15:5: warning: 'public' modifier is redundant for instance method declared in a public extension
13 |     /// - Parameter fileName: The name of the resource file.
14 |     /// - Returns: An optional `URL` pointing to the resource file.
15 |     public func createFileUrl(forResource fileName: String) -> URL? {
   |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
16 |         let components = fileName.split(separator: ".", maxSplits: 1).map(String.init)
17 |         guard components.count == 2 else {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:74:5: warning: 'public' modifier is redundant for instance method declared in a public extension
 72 |     /// Sets up the auto stop playing with the specified type.
 73 |     /// - Parameter type: The type of auto-stop to be set.
 74 |     public func setupAutoStop(with type: AVPlayerAutoStopType) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
 75 |         self.autoStopType = type
 76 |         switch type {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:87:5: warning: 'public' modifier is redundant for instance method declared in a public extension
 85 |
 86 |     /// Try starts the auto-stop player timer, if needed.
 87 |     public func startTimer() {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
 88 |         switch self.autoStopType {
 89 |         case .disable:
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:105:5: warning: 'public' modifier is redundant for instance method declared in a public extension
103 |
104 |     /// Pause the auto-stop player timer.
105 |     public func pauseTimer() {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
106 |         autoStopTimer?.invalidate()
107 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerAutoStopService.swift:110:5: warning: 'public' modifier is redundant for instance method declared in a public extension
108 |
109 |     /// Cancel the auto-stop player timer.
110 |     public func cancelTimer() {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
111 |         autoStopTimer?.invalidate()
112 |         autoStopTimer = nil
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:107:38: warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
104 |                 self.stop(isNeedCancelAutoStop: true)
105 |             },
106 |             didUpdateAutoStopTime: { remainingTime in
    |                                    |- note: 'self' implicitly strongly captured here
    |                                    `- note: add 'self' as a capture list item to silence
107 |                 onMainThread { [weak self] in
    |                                      |- warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
    |                                      `- note: explicitly assign the capture list item to silence
108 |                     guard let self = self else {
109 |                         return
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:116:38: warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
113 |                 }
114 |             },
115 |             didUpdateAutoStopType: { type in
    |                                    |- note: 'self' implicitly strongly captured here
    |                                    `- note: add 'self' as a capture list item to silence
116 |                 onMainThread { [weak self] in
    |                                      |- warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
    |                                      `- note: explicitly assign the capture list item to silence
117 |                     guard let self = self else {
118 |                         return
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:257:5: warning: 'public' modifier is redundant for instance method declared in a public extension
255 |     /// Plays the track at the specified index in the playlist.
256 |     /// - Parameter index: The index of the track to be played.
257 |     public func playTrack(at index: Int) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
258 |         guard index < playlist.count else {
259 |             return
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:272:5: warning: 'public' modifier is redundant for instance method declared in a public extension
270 |
271 |     /// Plays the next track in the playlist.
272 |     public func playNextTrack() {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
273 |         if isCanPlayedNextAudio() {
274 |             playTrack(at: currentTrackIndex + 1)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:281:5: warning: 'public' modifier is redundant for instance method declared in a public extension
279 |
280 |     /// Plays the previous track in the playlist.
281 |     public func playPreviousTrack() {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
282 |         if isCanPlayedPrevAudio() {
283 |             playTrack(at: currentTrackIndex - 1)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:288:5: warning: 'public' modifier is redundant for instance method declared in a public extension
286 |
287 |     /// Starts playback of the current track.
288 |     public func play() {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
289 |         if options.isDisplayNowPlaying, let nowPlayingService = self.nowPlayingService {
290 |             nowPlayingService.setupNowPlaying {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:308:5: warning: 'public' modifier is redundant for instance method declared in a public extension
306 |
307 |     /// Pauses playback of the current track.
308 |     public func pause() {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
309 |         player?.pause()
310 |         autoStopService.pauseTimer()
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:318:5: warning: 'public' modifier is redundant for instance method declared in a public extension
316 |
317 |     /// Stops playback of the current track.
318 |     public func stop(isNeedCancelAutoStop: Bool = true) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
319 |         player?.pause()
320 |         player?.seek(to: .zero)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:353:5: warning: 'public' modifier is redundant for instance method declared in a public extension
351 |     /// Seeks to the specified time in the current track.
352 |     /// - Parameter time: The time to seek to.
353 |     public func seek(to time: CMTime) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
354 |         player?.seek(to: time)
355 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:359:5: warning: 'public' modifier is redundant for instance method declared in a public extension
357 |     /// Sets the playback rate of the player.
358 |     /// - Parameter rate: The new playback rate.
359 |     public func setPlaybackRate(to rate: Float) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
360 |         guard let player = player else { return }
361 |         player.rate = max(0.5, min(rate, 2.0))
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:366:5: warning: 'public' modifier is redundant for instance method declared in a public extension
364 |     /// Sets up the auto-stop feature with the specified type.
365 |     /// - Parameter type: The type of auto-stop to be set.
366 |     public func setupAutoStop(with type: AVPlayerAutoStopType) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
367 |         autoStopService.setupAutoStop(with: type)
368 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:372:5: warning: 'public' modifier is redundant for instance method declared in a public extension
370 |     /// Seeks forward by the specified number of seconds in the current track.
371 |     /// - Parameter seconds: The number of seconds to seek forward.
372 |     public func seekForward(by seconds: TimeInterval) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
373 |         guard let player = player,
374 |               let currentTime = player.currentItem?.currentTime() else {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:385:5: warning: 'public' modifier is redundant for instance method declared in a public extension
383 |     /// Seeks backward by the specified number of seconds in the current track.
384 |     /// - Parameter seconds: The number of seconds to seek backward.
385 |     public func seekBackward(by seconds: TimeInterval) {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
386 |         guard let player = player,
387 |               let currentTime = player.currentItem?.currentTime() else {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:408:5: warning: 'public' modifier is redundant for instance method declared in a public extension
406 |     ///   - didHandleError: An optional callback to be invoked when an error is handled.
407 |     ///   - didFailedSetAudioSession: An optional callback to be invoked when setting the audio session fails.
408 |     public func setPlaylist(
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
409 |         _ files: [AVPlayerWrapperMediaFile],
410 |         didStartPlaying: Callback? = nil,
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:440:5: warning: 'public' modifier is redundant for instance method declared in a public extension
438 |     /// Indicates whether the previous audio track can be played.
439 |     /// - Returns: A Boolean value indicating whether the previous audio track can be played.
440 |     public func isCanPlayedPrevAudio() -> Bool {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
441 |         return currentTrackIndex > 0
442 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:446:5: warning: 'public' modifier is redundant for instance method declared in a public extension
444 |     /// Indicates whether the next audio track can be played.
445 |     /// - Returns: A Boolean value indicating whether the next audio track can be played.
446 |     public func isCanPlayedNextAudio() -> Bool {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
447 |         return currentTrackIndex + 1 < playlist.count
448 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:452:5: warning: 'public' modifier is redundant for instance method declared in a public extension
450 |     /// Gets the current auto-stop type.
451 |     /// - Returns: The current auto-stop type.
452 |     public func getAutoStopType() -> AVPlayerAutoStopType {
    |     `- warning: 'public' modifier is redundant for instance method declared in a public extension
453 |         return autoStopService.autoStopType
454 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:473:34: warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
470 |         setupAVAudioSession()
471 |
472 |         self.getCurrentDuration { duration in
    |                                 |- note: 'self' implicitly strongly captured here
    |                                 `- note: add 'self' as a capture list item to silence
473 |             onMainThread { [weak self] in
    |                                  |- warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
    |                                  `- note: explicitly assign the capture list item to silence
474 |                 let timeModel = AVAssetTime(currentTime: CMTime(), duration: duration ?? CMTime())
475 |                 self?.didUpdateTime?(timeModel)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:478:177: warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
470 |         setupAVAudioSession()
471 |
472 |         self.getCurrentDuration { duration in
    |                                 |- note: 'self' implicitly strongly captured here
    |                                 `- note: add 'self' as a capture list item to silence
473 |             onMainThread { [weak self] in
474 |                 let timeModel = AVAssetTime(currentTime: CMTime(), duration: duration ?? CMTime())
    :
476 |                 self?.delegate?.didUpdateTime(time: timeModel)
477 |             }
478 |             self.timeObserverToken = self.player?.addPeriodicTimeObserver(forInterval: CMTime(seconds: 1, preferredTimescale: CMTimeScale(NSEC_PER_SEC)), queue: .main) { [weak self] time in
    |                                                                                                                                                                                 |- warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
    |                                                                                                                                                                                 `- note: explicitly assign the capture list item to silence
479 |                 guard let self = self,
480 |                       let currentItem = self.playerItem else {
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:480:27: warning: immutable value 'currentItem' was never used; consider replacing with '_' or removing it [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
478 |             self.timeObserverToken = self.player?.addPeriodicTimeObserver(forInterval: CMTime(seconds: 1, preferredTimescale: CMTimeScale(NSEC_PER_SEC)), queue: .main) { [weak self] time in
479 |                 guard let self = self,
480 |                       let currentItem = self.playerItem else {
    |                           `- warning: immutable value 'currentItem' was never used; consider replacing with '_' or removing it [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
481 |                     return
482 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:499:34: warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
495 |         // Add notification observers
496 |         NotificationCenter.default.addObserver(self, selector: #selector(self.playerDidFinishPlaying), name: .AVPlayerItemDidPlayToEndTime, object: self.playerItem)
497 |         NotificationCenter.default.addObserver(forName: .AVPlayerItemFailedToPlayToEndTime, object: self.playerItem, queue: .main) { notification in
    |                                                                                                                                    |- note: 'self' implicitly strongly captured here
    |                                                                                                                                    `- note: add 'self' as a capture list item to silence
498 |             let error = notification.userInfo?[AVPlayerItemFailedToPlayToEndTimeErrorKey] as? Error
499 |             onMainThread { [weak self] in
    |                                  |- warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
    |                                  `- note: explicitly assign the capture list item to silence
500 |                 self?.didHandleError?(error)
501 |                 self?.delegate?.didHandleError(error: error)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:510:39: warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
507 |             \.status,
508 |              options: [.old, .new, .initial],
509 |              changeHandler: { item, change in
    |                             |- note: 'self' implicitly strongly captured here
    |                             `- note: add 'self' as a capture list item to silence
510 |                  onMainThread { [weak self] in
    |                                       |- warning: 'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
    |                                       `- note: explicitly assign the capture list item to silence
511 |                      self?.didUpdateStatus?(item.status)
512 |                      self?.delegate?.didUpdateStatus(status: item.status)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:538:19: warning: immutable value 'playerItem' was never used; consider replacing with '_' or removing it [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
536 |     /// - Parameter callback: A closure to be executed with the current duration as `CMTime?`.
537 |     func getCurrentDuration(callback: ((_: CMTime?) -> Void)?) {
538 |         guard let playerItem = self.playerItem,
    |                   `- warning: immutable value 'playerItem' was never used; consider replacing with '_' or removing it [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
539 |               let player = self.player else {
540 |             callback?(nil)
/Users/admin/builder/spi-builder-workspace/Sources/AVPlayerWrapper/Service/AVPlayerWrapper.swift:636:24: warning: 'let' pattern has no effect; sub-pattern didn't bind any variables
634 |
635 |         func continuePlayingPlaylist() {
636 |             guard case let AVPlayerAutoStopType.afterTrackEnd = autoStopService.autoStopType else {
    |                        `- warning: 'let' pattern has no effect; sub-pattern didn't bind any variables
637 |                 playNextTrack()
638 |                 return
[#ImplicitStrongCapture]: <https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture>
[#NoUsage]: <https://docs.swift.org/compiler/documentation/diagnostics/no-usage>
Build complete.
{
  "dependencies" : [
    {
      "identity" : "appviewutilits",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.3.1",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/moslienko/AppViewUtilits.git"
    }
  ],
  "manifest_display_name" : "AVPlayerWrapper",
  "name" : "AVPlayerWrapper",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "12.0"
    },
    {
      "name" : "macos",
      "version" : "10.13"
    }
  ],
  "products" : [
    {
      "name" : "AVPlayerWrapper",
      "targets" : [
        "AVPlayerWrapper"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "AVPlayerWrapperTests",
      "module_type" : "SwiftTarget",
      "name" : "AVPlayerWrapperTests",
      "path" : "Tests/AVPlayerWrapperTests",
      "sources" : [
        "AVPlayerWrapperTests.swift"
      ],
      "target_dependencies" : [
        "AVPlayerWrapper"
      ],
      "type" : "test"
    },
    {
      "c99name" : "AVPlayerWrapper",
      "module_type" : "SwiftTarget",
      "name" : "AVPlayerWrapper",
      "path" : "Sources/AVPlayerWrapper",
      "product_dependencies" : [
        "AppViewUtilits"
      ],
      "product_memberships" : [
        "AVPlayerWrapper"
      ],
      "sources" : [
        "Data/AVAssetTime.swift",
        "Data/AVPlayerAfterAutoStopAction.swift",
        "Data/AVPlayerAutoStopType.swift",
        "Data/AVPlayerLoopType.swift",
        "Data/AVPlayerWrapperMediaFile.swift",
        "Data/Options/AVPlayerOptions.swift",
        "Data/Options/AVSession.swift",
        "Extensions/Extension+Bundle.swift",
        "Service/AVPlayerAutoStopService.swift",
        "Service/AVPlayerWrapper.swift",
        "Service/NowPlayingService.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Done.