Build Information
Successful build of TUSKit, reference 3.7.1 (167938), with Swift 6.1 for macOS (SPM) on 27 Feb 2026 23:48:20 UTC.
Swift 6 data race errors: 1
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.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 InferSendableFromCapturesBuild Log
========================================
RunAll
========================================
Builder version: 4.68.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/tus/TUSKit.git
Reference: 3.7.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/tus/TUSKit
* tag 3.7.1 -> FETCH_HEAD
HEAD is now at 1679382 Merge pull request #224 from tus/2026-01-21-b2cg
Cloned https://github.com/tus/TUSKit.git
Revision (git rev-parse @):
167938293923b5c31ba1255da5aada8e67533984
SUCCESS checkout https://github.com/tus/TUSKit.git at 3.7.1
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/tus/TUSKit.git
https://github.com/tus/TUSKit.git
{
"dependencies" : [
],
"manifest_display_name" : "TUSKit",
"name" : "TUSKit",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "10.0"
},
{
"name" : "macos",
"version" : "11.0"
},
{
"name" : "watchos",
"version" : "8.0"
}
],
"products" : [
{
"name" : "TUSKit",
"targets" : [
"TUSKit"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "TUSKitTests",
"module_type" : "SwiftTarget",
"name" : "TUSKitTests",
"path" : "Tests/TUSKitTests",
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/TUSKitTests/Resources/memeCat.jpg",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"DataTests.swift",
"FilesTests.swift",
"Fixtures.swift",
"Mocks.swift",
"SchedulerTests.swift",
"Support/NetworkSupport.swift",
"Support/Support.swift",
"TUSAPITests.swift",
"TUSClient/TUSClientInternalTests.swift",
"TUSClient/TUSClientTests.swift",
"TUSClient/TUSClient_CacheTests.swift",
"TUSClient/TUSClient_ContextTests.swift",
"TUSClient/TUSClient_CustomHeadersTests.swift",
"TUSClient/TUSClient_DelegateTests.swift",
"TUSClient/TUSClient_HeaderGenerationTests.swift",
"TUSClient/TUSClient_IdsTests.swift",
"TUSClient/TUSClient_RetryTests.swift",
"TUSClient/TUSClient_UploadingTests.swift"
],
"target_dependencies" : [
"TUSKit"
],
"type" : "test"
},
{
"c99name" : "TUSKit",
"module_type" : "SwiftTarget",
"name" : "TUSKit",
"path" : "Sources/TUSKit",
"product_memberships" : [
"TUSKit"
],
"sources" : [
"Extensions/Collection+chunk.swift",
"Extensions/Data+chunk.swift",
"Extensions/String+base64.swift",
"Files.swift",
"Network.swift",
"Scheduler.swift",
"TUSAPI.swift",
"TUSClient.swift",
"TUSClientError.swift",
"TUSProtocolExtension.swift",
"Tasks/CreationTask.swift",
"Tasks/IdentifiableTask.swift",
"Tasks/StatusTask.swift",
"Tasks/UploadDataTask.swift",
"TusServerInfo.swift",
"UploadInfo.swift",
"UploadMetada.swift"
],
"type" : "library"
}
],
"tools_version" : "5.5.1"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.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
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-2F0A5646E1D333AE.txt
[3/19] Compiling TUSKit UploadInfo.swift
[4/19] Compiling TUSKit CreationTask.swift
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:42:16: warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
10 | /// `CreationTask` Prepares the server for a file upload.
11 | /// The server will return a path to upload to.
12 | final class CreationTask: IdentifiableTask {
| `- note: class 'CreationTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
40 | func run(completed: @escaping TaskCompletion) {
41 | queue.async {
42 | if self.didCancel { return }
| `- warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
43 |
44 | self.headerGenerator.resolveHeaders(for: self.metaData) { [weak self] customHeaders in
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:74:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
72 | task.progressDelegate = progressDelegate
73 | if self.didCancel {
74 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
75 | } else {
76 | completed(.success([task]))
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:74:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
72 | task.progressDelegate = progressDelegate
73 | if self.didCancel {
74 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, 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'
75 | } else {
76 | completed(.success([task]))
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:48:24: warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
10 | /// `CreationTask` Prepares the server for a file upload.
11 | /// The server will return a path to upload to.
12 | final class CreationTask: IdentifiableTask {
| `- note: class 'CreationTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
46 |
47 | self.queue.async {
48 | if self.didCancel { return }
| `- warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
49 |
50 | self.sessionTask = self.api.create(metaData: self.metaData, customHeaders: customHeaders) { [weak self] result in
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:74:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
72 | task.progressDelegate = progressDelegate
73 | if self.didCancel {
74 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
75 | } else {
76 | completed(.success([task]))
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:74:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
72 | task.progressDelegate = progressDelegate
73 | if self.didCancel {
74 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, 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'
75 | } else {
76 | completed(.success([task]))
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:55:44: warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
10 | /// `CreationTask` Prepares the server for a file upload.
11 | /// The server will return a path to upload to.
12 | final class CreationTask: IdentifiableTask {
| `- note: class 'CreationTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
53 | // File is created remotely. Now start first datatask.
54 | self.queue.async {
55 | let metaData = self.metaData
| `- warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
56 | let files = self.files
57 | let chunkSize = self.chunkSize
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:74:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
72 | task.progressDelegate = progressDelegate
73 | if self.didCancel {
74 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
75 | } else {
76 | completed(.success([task]))
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:92:13: warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
10 | /// `CreationTask` Prepares the server for a file upload.
11 | /// The server will return a path to upload to.
12 | final class CreationTask: IdentifiableTask {
| `- note: class 'CreationTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
90 | func cancel() {
91 | queue.async {
92 | self.didCancel = true
| `- warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
93 | self.sessionTask?.cancel()
94 | }
[5/19] Compiling TUSKit IdentifiableTask.swift
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:42:16: warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
10 | /// `CreationTask` Prepares the server for a file upload.
11 | /// The server will return a path to upload to.
12 | final class CreationTask: IdentifiableTask {
| `- note: class 'CreationTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
40 | func run(completed: @escaping TaskCompletion) {
41 | queue.async {
42 | if self.didCancel { return }
| `- warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
43 |
44 | self.headerGenerator.resolveHeaders(for: self.metaData) { [weak self] customHeaders in
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:74:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
72 | task.progressDelegate = progressDelegate
73 | if self.didCancel {
74 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
75 | } else {
76 | completed(.success([task]))
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:74:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
72 | task.progressDelegate = progressDelegate
73 | if self.didCancel {
74 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, 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'
75 | } else {
76 | completed(.success([task]))
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:48:24: warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
10 | /// `CreationTask` Prepares the server for a file upload.
11 | /// The server will return a path to upload to.
12 | final class CreationTask: IdentifiableTask {
| `- note: class 'CreationTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
46 |
47 | self.queue.async {
48 | if self.didCancel { return }
| `- warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
49 |
50 | self.sessionTask = self.api.create(metaData: self.metaData, customHeaders: customHeaders) { [weak self] result in
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:74:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
72 | task.progressDelegate = progressDelegate
73 | if self.didCancel {
74 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
75 | } else {
76 | completed(.success([task]))
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:74:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
72 | task.progressDelegate = progressDelegate
73 | if self.didCancel {
74 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, 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'
75 | } else {
76 | completed(.success([task]))
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:55:44: warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
10 | /// `CreationTask` Prepares the server for a file upload.
11 | /// The server will return a path to upload to.
12 | final class CreationTask: IdentifiableTask {
| `- note: class 'CreationTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
53 | // File is created remotely. Now start first datatask.
54 | self.queue.async {
55 | let metaData = self.metaData
| `- warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
56 | let files = self.files
57 | let chunkSize = self.chunkSize
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:74:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
72 | task.progressDelegate = progressDelegate
73 | if self.didCancel {
74 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
75 | } else {
76 | completed(.success([task]))
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/CreationTask.swift:92:13: warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
10 | /// `CreationTask` Prepares the server for a file upload.
11 | /// The server will return a path to upload to.
12 | final class CreationTask: IdentifiableTask {
| `- note: class 'CreationTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
90 | func cancel() {
91 | queue.async {
92 | self.didCancel = true
| `- warning: capture of 'self' with non-sendable type 'CreationTask' in a '@Sendable' closure
93 | self.sessionTask?.cancel()
94 | }
[6/20] Compiling TUSKit TusServerInfo.swift
[7/20] Compiling TUSKit StatusTask.swift
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:43:16: warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
9 |
10 | /// A `StatusTask` fetches the status of an upload. It fetches the offset from we can continue uploading, and then makes a possible uploadtask.
11 | final class StatusTask: IdentifiableTask {
| `- note: class 'StatusTask' does not conform to the 'Sendable' protocol
12 |
13 | // MARK: - IdentifiableTask
:
41 | // Improvement: On failure, try uploading from the start. Create creationtask.
42 | queue.async {
43 | if self.didCancel { return }
| `- warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
44 |
45 | self.headerGenerator.resolveHeaders(for: self.metaData) { [weak self] customHeaders in
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:79:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
77 |
78 | if offset == metaData.size {
79 | completed(.success([]))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
80 | } else {
81 | // If the task has been canceled
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:79:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
77 |
78 | if offset == metaData.size {
79 | completed(.success([]))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, 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'
80 | } else {
81 | // If the task has been canceled
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:49:24: warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
9 |
10 | /// A `StatusTask` fetches the status of an upload. It fetches the offset from we can continue uploading, and then makes a possible uploadtask.
11 | final class StatusTask: IdentifiableTask {
| `- note: class 'StatusTask' does not conform to the 'Sendable' protocol
12 |
13 | // MARK: - IdentifiableTask
:
47 |
48 | self.queue.async {
49 | if self.didCancel { return }
| `- warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
50 |
51 | self.sessionTask = self.api.status(remoteDestination: self.remoteDestination, headers: customHeaders) { [weak self] result in
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:79:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
77 |
78 | if offset == metaData.size {
79 | completed(.success([]))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
80 | } else {
81 | // If the task has been canceled
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:79:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
77 |
78 | if offset == metaData.size {
79 | completed(.success([]))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, 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'
80 | } else {
81 | // If the task has been canceled
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:56:44: warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
9 |
10 | /// A `StatusTask` fetches the status of an upload. It fetches the offset from we can continue uploading, and then makes a possible uploadtask.
11 | final class StatusTask: IdentifiableTask {
| `- note: class 'StatusTask' does not conform to the 'Sendable' protocol
12 |
13 | // MARK: - IdentifiableTask
:
54 | self.queue.async {
55 | // Getting rid of self. in this closure
56 | let metaData = self.metaData
| `- warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
57 | let files = self.files
58 | let chunkSize = self.chunkSize
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:79:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
77 |
78 | if offset == metaData.size {
79 | completed(.success([]))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
80 | } else {
81 | // If the task has been canceled
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:112:13: warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
9 |
10 | /// A `StatusTask` fetches the status of an upload. It fetches the offset from we can continue uploading, and then makes a possible uploadtask.
11 | final class StatusTask: IdentifiableTask {
| `- note: class 'StatusTask' does not conform to the 'Sendable' protocol
12 |
13 | // MARK: - IdentifiableTask
:
110 | func cancel() {
111 | queue.async {
112 | self.didCancel = true
| `- warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
113 | self.sessionTask?.cancel()
114 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:69:20: warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
67 | queue.async {
68 | // This check is right before the task is created. In case another thread calls cancel during this loop. Optimization: Add synchronization point (e.g. serial queue or actor).
69 | guard !self.isCanceled else {
| `- warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
70 | completed(.failure(TUSClientError.taskCancelled))
71 | return
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:70:17: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
68 | // This check is right before the task is created. In case another thread calls cancel during this loop. Optimization: Add synchronization point (e.g. serial queue or actor).
69 | guard !self.isCanceled else {
70 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
71 | return
72 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:101:25: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
99 | self.queue.async {
100 | if self.isCanceled {
101 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, 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'
102 | return
103 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:100:24: warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
98 |
99 | self.queue.async {
100 | if self.isCanceled {
| `- warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
101 | completed(.failure(TUSClientError.taskCancelled))
102 | return
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:101:25: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
99 | self.queue.async {
100 | if self.isCanceled {
101 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
102 | return
103 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:114:75: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
112 | self.queue.async {
113 | self.observation?.invalidate()
114 | self.taskCompleted(result: result, completed: completed)
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, 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'
115 | }
116 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:113:29: warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
111 |
112 | self.queue.async {
113 | self.observation?.invalidate()
| `- warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
114 | self.taskCompleted(result: result, completed: completed)
115 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:114:75: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
112 | self.queue.async {
113 | self.observation?.invalidate()
114 | self.taskCompleted(result: result, completed: completed)
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
115 | }
116 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:180:30: warning: capture of 'self' with non-sendable type 'UploadDataTask?' in a '@Sendable' closure
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
178 |
179 | observation = task.progress.observe(\.fractionCompleted) { [weak self] progress, _ in
180 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'UploadDataTask?' in a '@Sendable' closure
181 | self.queue.async {
182 | guard progress.fractionCompleted <= 1 else { return }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:185:17: warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
183 | let bytes = progress.fractionCompleted * Double(targetRange.count)
184 | let totalUploaded = uploaded + Int(bytes)
185 | self.progressDelegate?.progressUpdatedFor(metaData: self.metaData, totalUploadedBytes: totalUploaded)
| `- warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
186 | }
187 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:234:13: warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
232 | func cancel() {
233 | queue.async {
234 | self.isCanceled = true
| `- warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
235 | self.observation?.invalidate()
236 | self.sessionTask?.cancel()
[8/20] Compiling TUSKit UploadDataTask.swift
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:43:16: warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
9 |
10 | /// A `StatusTask` fetches the status of an upload. It fetches the offset from we can continue uploading, and then makes a possible uploadtask.
11 | final class StatusTask: IdentifiableTask {
| `- note: class 'StatusTask' does not conform to the 'Sendable' protocol
12 |
13 | // MARK: - IdentifiableTask
:
41 | // Improvement: On failure, try uploading from the start. Create creationtask.
42 | queue.async {
43 | if self.didCancel { return }
| `- warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
44 |
45 | self.headerGenerator.resolveHeaders(for: self.metaData) { [weak self] customHeaders in
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:79:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
77 |
78 | if offset == metaData.size {
79 | completed(.success([]))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
80 | } else {
81 | // If the task has been canceled
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:79:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
77 |
78 | if offset == metaData.size {
79 | completed(.success([]))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, 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'
80 | } else {
81 | // If the task has been canceled
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:49:24: warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
9 |
10 | /// A `StatusTask` fetches the status of an upload. It fetches the offset from we can continue uploading, and then makes a possible uploadtask.
11 | final class StatusTask: IdentifiableTask {
| `- note: class 'StatusTask' does not conform to the 'Sendable' protocol
12 |
13 | // MARK: - IdentifiableTask
:
47 |
48 | self.queue.async {
49 | if self.didCancel { return }
| `- warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
50 |
51 | self.sessionTask = self.api.status(remoteDestination: self.remoteDestination, headers: customHeaders) { [weak self] result in
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:79:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
77 |
78 | if offset == metaData.size {
79 | completed(.success([]))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
80 | } else {
81 | // If the task has been canceled
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:79:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
77 |
78 | if offset == metaData.size {
79 | completed(.success([]))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, 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'
80 | } else {
81 | // If the task has been canceled
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:56:44: warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
9 |
10 | /// A `StatusTask` fetches the status of an upload. It fetches the offset from we can continue uploading, and then makes a possible uploadtask.
11 | final class StatusTask: IdentifiableTask {
| `- note: class 'StatusTask' does not conform to the 'Sendable' protocol
12 |
13 | // MARK: - IdentifiableTask
:
54 | self.queue.async {
55 | // Getting rid of self. in this closure
56 | let metaData = self.metaData
| `- warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
57 | let files = self.files
58 | let chunkSize = self.chunkSize
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:79:37: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
77 |
78 | if offset == metaData.size {
79 | completed(.success([]))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
80 | } else {
81 | // If the task has been canceled
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/StatusTask.swift:112:13: warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
9 |
10 | /// A `StatusTask` fetches the status of an upload. It fetches the offset from we can continue uploading, and then makes a possible uploadtask.
11 | final class StatusTask: IdentifiableTask {
| `- note: class 'StatusTask' does not conform to the 'Sendable' protocol
12 |
13 | // MARK: - IdentifiableTask
:
110 | func cancel() {
111 | queue.async {
112 | self.didCancel = true
| `- warning: capture of 'self' with non-sendable type 'StatusTask' in a '@Sendable' closure
113 | self.sessionTask?.cancel()
114 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:69:20: warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
67 | queue.async {
68 | // This check is right before the task is created. In case another thread calls cancel during this loop. Optimization: Add synchronization point (e.g. serial queue or actor).
69 | guard !self.isCanceled else {
| `- warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
70 | completed(.failure(TUSClientError.taskCancelled))
71 | return
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:70:17: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
68 | // This check is right before the task is created. In case another thread calls cancel during this loop. Optimization: Add synchronization point (e.g. serial queue or actor).
69 | guard !self.isCanceled else {
70 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
71 | return
72 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:101:25: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
99 | self.queue.async {
100 | if self.isCanceled {
101 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, 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'
102 | return
103 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:100:24: warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
98 |
99 | self.queue.async {
100 | if self.isCanceled {
| `- warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
101 | completed(.failure(TUSClientError.taskCancelled))
102 | return
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:101:25: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
99 | self.queue.async {
100 | if self.isCanceled {
101 | completed(.failure(TUSClientError.taskCancelled))
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
102 | return
103 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:114:75: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
112 | self.queue.async {
113 | self.observation?.invalidate()
114 | self.taskCompleted(result: result, completed: completed)
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, 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'
115 | }
116 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:113:29: warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
111 |
112 | self.queue.async {
113 | self.observation?.invalidate()
| `- warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
114 | self.taskCompleted(result: result, completed: completed)
115 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:114:75: warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
112 | self.queue.async {
113 | self.observation?.invalidate()
114 | self.taskCompleted(result: result, completed: completed)
| |- warning: capture of 'completed' with non-sendable type 'TaskCompletion' (aka '(Result<Array<any ScheduledTask>, any Error>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
115 | }
116 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:180:30: warning: capture of 'self' with non-sendable type 'UploadDataTask?' in a '@Sendable' closure
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
178 |
179 | observation = task.progress.observe(\.fractionCompleted) { [weak self] progress, _ in
180 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'UploadDataTask?' in a '@Sendable' closure
181 | self.queue.async {
182 | guard progress.fractionCompleted <= 1 else { return }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:185:17: warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
183 | let bytes = progress.fractionCompleted * Double(targetRange.count)
184 | let totalUploaded = uploaded + Int(bytes)
185 | self.progressDelegate?.progressUpdatedFor(metaData: self.metaData, totalUploadedBytes: totalUploaded)
| `- warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
186 | }
187 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:234:13: warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
:
232 | func cancel() {
233 | queue.async {
234 | self.isCanceled = true
| `- warning: capture of 'self' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
235 | self.observation?.invalidate()
236 | self.sessionTask?.cancel()
[9/20] Compiling TUSKit TUSClientError.swift
[10/20] Compiling TUSKit TUSProtocolExtension.swift
[11/20] Compiling TUSKit Network.swift
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Network.swift:18:59: warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
16 |
17 | func dataTask(request: URLRequest, completion: @escaping (Result<(Data?, HTTPURLResponse), Error>) -> Void) -> URLSessionDataTask {
18 | return dataTask(with: request, completionHandler: makeCompletion(completion: completion))
| `- warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
19 | }
20 |
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Network.swift:22:73: warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
20 |
21 | func uploadTask(request: URLRequest, data: Data, completion: @escaping (Result<(Data?, HTTPURLResponse), Error>) -> Void) -> URLSessionUploadTask {
22 | return uploadTask(with: request, from: data, completionHandler: makeCompletion(completion: completion))
| `- warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
23 | }
24 |
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Network.swift:26:77: warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
24 |
25 | func uploadTask(with request: URLRequest, fromFile file: URL, completion: @escaping (Result<(Data?, HTTPURLResponse), Error>) -> Void) -> URLSessionUploadTask {
26 | return uploadTask(with: request, fromFile: file, completionHandler: makeCompletion(completion: completion))
| `- warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
27 | }
28 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:48:20: warning: capture of 'tasks' with non-sendable type '[any ScheduledTask]' in a '@Sendable' closure
19 | /// Once a Task is finished. It can spawn new tasks that need to be run.
20 | /// E.g. If a task is to upload a file, then it can spawn into tasks to cut up the file first. Which can then cut up into a task to upload, which can then add a task to delete the files.
21 | protocol ScheduledTask: AnyObject {
| `- note: protocol 'ScheduledTask' does not conform to the 'Sendable' protocol
22 | func run(completed: @escaping TaskCompletion)
23 | func cancel()
:
46 | func addTasks(tasks: [ScheduledTask]) {
47 | queue.async {
48 | guard !tasks.isEmpty else { return }
| `- warning: capture of 'tasks' with non-sendable type '[any ScheduledTask]' in a '@Sendable' closure
49 | self.pendingTasks.append(contentsOf: tasks)
50 | self.checkProcessNextTask()
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:49:13: warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
47 | queue.async {
48 | guard !tasks.isEmpty else { return }
49 | self.pendingTasks.append(contentsOf: tasks)
| `- warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
50 | self.checkProcessNextTask()
51 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:56:13: warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
54 | func addTask(task: ScheduledTask) {
55 | queue.async {
56 | self.pendingTasks.append(task)
| `- warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
57 | self.checkProcessNextTask()
58 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:56:38: warning: capture of 'task' with non-sendable type 'any ScheduledTask' in a '@Sendable' closure
19 | /// Once a Task is finished. It can spawn new tasks that need to be run.
20 | /// E.g. If a task is to upload a file, then it can spawn into tasks to cut up the file first. Which can then cut up into a task to upload, which can then add a task to delete the files.
21 | protocol ScheduledTask: AnyObject {
| `- note: protocol 'ScheduledTask' does not conform to the 'Sendable' protocol
22 | func run(completed: @escaping TaskCompletion)
23 | func cancel()
:
54 | func addTask(task: ScheduledTask) {
55 | queue.async {
56 | self.pendingTasks.append(task)
| `- warning: capture of 'task' with non-sendable type 'any ScheduledTask' in a '@Sendable' closure
57 | self.checkProcessNextTask()
58 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:63:13: warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
61 | func cancelAll() {
62 | queue.async {
63 | self.pendingTasks = []
| `- warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
64 | self.runningTasks.forEach { $0.cancel() }
65 | self.runningTasks = []
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:71:13: warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
69 | func cancelTask(by id: UUID) {
70 | queue.async {
71 | self.pendingTasks.removeAll { task in
| `- warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
72 | guard let idTask = task as? IdentifiableTask, idTask.id == id else {
73 | return false
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:90:13: warning: capture of 'tasksToCancel' with non-sendable type '[any ScheduledTask]' in a '@Sendable' closure
19 | /// Once a Task is finished. It can spawn new tasks that need to be run.
20 | /// E.g. If a task is to upload a file, then it can spawn into tasks to cut up the file first. Which can then cut up into a task to upload, which can then add a task to delete the files.
21 | protocol ScheduledTask: AnyObject {
| `- note: protocol 'ScheduledTask' does not conform to the 'Sendable' protocol
22 | func run(completed: @escaping TaskCompletion)
23 | func cancel()
:
88 | func cancelTasks(_ tasksToCancel: [ScheduledTask]) {
89 | queue.async {
90 | tasksToCancel.forEach { taskToCancel in
| `- warning: capture of 'tasksToCancel' with non-sendable type '[any ScheduledTask]' in a '@Sendable' closure
91 | if let pendingTaskIndex = self.pendingTasks.firstIndex(where: { pendingTask in
92 | pendingTask === taskToCancel
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:91:43: warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
89 | queue.async {
90 | tasksToCancel.forEach { taskToCancel in
91 | if let pendingTaskIndex = self.pendingTasks.firstIndex(where: { pendingTask in
| `- warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
92 | pendingTask === taskToCancel
93 | }) {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:91:43: warning: capture of 'self' with non-sendable type 'Scheduler' in an isolated closure; this is an error in the Swift 6 language mode
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
89 | queue.async {
90 | tasksToCancel.forEach { taskToCancel in
91 | if let pendingTaskIndex = self.pendingTasks.firstIndex(where: { pendingTask in
| `- warning: capture of 'self' with non-sendable type 'Scheduler' in an isolated closure; this is an error in the Swift 6 language mode
92 | pendingTask === taskToCancel
93 | }) {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:112:30: warning: capture of 'self' with non-sendable type 'Scheduler?' in a '@Sendable' closure
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
110 | private func checkProcessNextTask() {
111 | queue.async { [weak self] in
112 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'Scheduler?' in a '@Sendable' closure
113 | guard !self.pendingTasks.isEmpty else { return }
114 |
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:127:36: warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
125 | // // Make sure tasks are updated atomically
126 | self.queue.async {
127 | if let index = self.runningTasks.firstIndex(where: { $0 === task }) {
| `- warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
128 | self.runningTasks.remove(at: index)
129 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:127:81: warning: capture of 'task' with non-sendable type 'any ScheduledTask' in a '@Sendable' closure
19 | /// Once a Task is finished. It can spawn new tasks that need to be run.
20 | /// E.g. If a task is to upload a file, then it can spawn into tasks to cut up the file first. Which can then cut up into a task to upload, which can then add a task to delete the files.
21 | protocol ScheduledTask: AnyObject {
| `- note: protocol 'ScheduledTask' does not conform to the 'Sendable' protocol
22 | func run(completed: @escaping TaskCompletion)
23 | func cancel()
:
125 | // // Make sure tasks are updated atomically
126 | self.queue.async {
127 | if let index = self.runningTasks.firstIndex(where: { $0 === task }) {
| `- warning: capture of 'task' with non-sendable type 'any ScheduledTask' in a '@Sendable' closure
128 | self.runningTasks.remove(at: index)
129 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:133:28: warning: capture of 'result' with non-sendable type 'Result<[any ScheduledTask], any Error>' in a '@Sendable' closure
19 | /// Once a Task is finished. It can spawn new tasks that need to be run.
20 | /// E.g. If a task is to upload a file, then it can spawn into tasks to cut up the file first. Which can then cut up into a task to upload, which can then add a task to delete the files.
21 | protocol ScheduledTask: AnyObject {
| `- note: protocol 'ScheduledTask' does not conform to the 'Sendable' protocol
22 | func run(completed: @escaping TaskCompletion)
23 | func cancel()
:
131 | }
132 |
133 | switch result {
| `- warning: capture of 'result' with non-sendable type 'Result<[any ScheduledTask], any Error>' in a '@Sendable' closure
134 | case .success(let newTasks):
135 | if !newTasks.isEmpty {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:127:81: warning: capture of 'task' with non-sendable type 'any ScheduledTask' in an isolated closure; this is an error in the Swift 6 language mode
19 | /// Once a Task is finished. It can spawn new tasks that need to be run.
20 | /// E.g. If a task is to upload a file, then it can spawn into tasks to cut up the file first. Which can then cut up into a task to upload, which can then add a task to delete the files.
21 | protocol ScheduledTask: AnyObject {
| `- note: protocol 'ScheduledTask' does not conform to the 'Sendable' protocol
22 | func run(completed: @escaping TaskCompletion)
23 | func cancel()
:
125 | // // Make sure tasks are updated atomically
126 | self.queue.async {
127 | if let index = self.runningTasks.firstIndex(where: { $0 === task }) {
| `- warning: capture of 'task' with non-sendable type 'any ScheduledTask' in an isolated closure; this is an error in the Swift 6 language mode
128 | self.runningTasks.remove(at: index)
129 | } else {
[12/20] Compiling TUSKit Scheduler.swift
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Network.swift:18:59: warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
16 |
17 | func dataTask(request: URLRequest, completion: @escaping (Result<(Data?, HTTPURLResponse), Error>) -> Void) -> URLSessionDataTask {
18 | return dataTask(with: request, completionHandler: makeCompletion(completion: completion))
| `- warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
19 | }
20 |
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Network.swift:22:73: warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
20 |
21 | func uploadTask(request: URLRequest, data: Data, completion: @escaping (Result<(Data?, HTTPURLResponse), Error>) -> Void) -> URLSessionUploadTask {
22 | return uploadTask(with: request, from: data, completionHandler: makeCompletion(completion: completion))
| `- warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
23 | }
24 |
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Network.swift:26:77: warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
24 |
25 | func uploadTask(with request: URLRequest, fromFile file: URL, completion: @escaping (Result<(Data?, HTTPURLResponse), Error>) -> Void) -> URLSessionUploadTask {
26 | return uploadTask(with: request, fromFile: file, completionHandler: makeCompletion(completion: completion))
| `- warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
27 | }
28 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:48:20: warning: capture of 'tasks' with non-sendable type '[any ScheduledTask]' in a '@Sendable' closure
19 | /// Once a Task is finished. It can spawn new tasks that need to be run.
20 | /// E.g. If a task is to upload a file, then it can spawn into tasks to cut up the file first. Which can then cut up into a task to upload, which can then add a task to delete the files.
21 | protocol ScheduledTask: AnyObject {
| `- note: protocol 'ScheduledTask' does not conform to the 'Sendable' protocol
22 | func run(completed: @escaping TaskCompletion)
23 | func cancel()
:
46 | func addTasks(tasks: [ScheduledTask]) {
47 | queue.async {
48 | guard !tasks.isEmpty else { return }
| `- warning: capture of 'tasks' with non-sendable type '[any ScheduledTask]' in a '@Sendable' closure
49 | self.pendingTasks.append(contentsOf: tasks)
50 | self.checkProcessNextTask()
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:49:13: warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
47 | queue.async {
48 | guard !tasks.isEmpty else { return }
49 | self.pendingTasks.append(contentsOf: tasks)
| `- warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
50 | self.checkProcessNextTask()
51 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:56:13: warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
54 | func addTask(task: ScheduledTask) {
55 | queue.async {
56 | self.pendingTasks.append(task)
| `- warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
57 | self.checkProcessNextTask()
58 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:56:38: warning: capture of 'task' with non-sendable type 'any ScheduledTask' in a '@Sendable' closure
19 | /// Once a Task is finished. It can spawn new tasks that need to be run.
20 | /// E.g. If a task is to upload a file, then it can spawn into tasks to cut up the file first. Which can then cut up into a task to upload, which can then add a task to delete the files.
21 | protocol ScheduledTask: AnyObject {
| `- note: protocol 'ScheduledTask' does not conform to the 'Sendable' protocol
22 | func run(completed: @escaping TaskCompletion)
23 | func cancel()
:
54 | func addTask(task: ScheduledTask) {
55 | queue.async {
56 | self.pendingTasks.append(task)
| `- warning: capture of 'task' with non-sendable type 'any ScheduledTask' in a '@Sendable' closure
57 | self.checkProcessNextTask()
58 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:63:13: warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
61 | func cancelAll() {
62 | queue.async {
63 | self.pendingTasks = []
| `- warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
64 | self.runningTasks.forEach { $0.cancel() }
65 | self.runningTasks = []
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:71:13: warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
69 | func cancelTask(by id: UUID) {
70 | queue.async {
71 | self.pendingTasks.removeAll { task in
| `- warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
72 | guard let idTask = task as? IdentifiableTask, idTask.id == id else {
73 | return false
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:90:13: warning: capture of 'tasksToCancel' with non-sendable type '[any ScheduledTask]' in a '@Sendable' closure
19 | /// Once a Task is finished. It can spawn new tasks that need to be run.
20 | /// E.g. If a task is to upload a file, then it can spawn into tasks to cut up the file first. Which can then cut up into a task to upload, which can then add a task to delete the files.
21 | protocol ScheduledTask: AnyObject {
| `- note: protocol 'ScheduledTask' does not conform to the 'Sendable' protocol
22 | func run(completed: @escaping TaskCompletion)
23 | func cancel()
:
88 | func cancelTasks(_ tasksToCancel: [ScheduledTask]) {
89 | queue.async {
90 | tasksToCancel.forEach { taskToCancel in
| `- warning: capture of 'tasksToCancel' with non-sendable type '[any ScheduledTask]' in a '@Sendable' closure
91 | if let pendingTaskIndex = self.pendingTasks.firstIndex(where: { pendingTask in
92 | pendingTask === taskToCancel
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:91:43: warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
89 | queue.async {
90 | tasksToCancel.forEach { taskToCancel in
91 | if let pendingTaskIndex = self.pendingTasks.firstIndex(where: { pendingTask in
| `- warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
92 | pendingTask === taskToCancel
93 | }) {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:91:43: warning: capture of 'self' with non-sendable type 'Scheduler' in an isolated closure; this is an error in the Swift 6 language mode
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
89 | queue.async {
90 | tasksToCancel.forEach { taskToCancel in
91 | if let pendingTaskIndex = self.pendingTasks.firstIndex(where: { pendingTask in
| `- warning: capture of 'self' with non-sendable type 'Scheduler' in an isolated closure; this is an error in the Swift 6 language mode
92 | pendingTask === taskToCancel
93 | }) {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:112:30: warning: capture of 'self' with non-sendable type 'Scheduler?' in a '@Sendable' closure
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
110 | private func checkProcessNextTask() {
111 | queue.async { [weak self] in
112 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'Scheduler?' in a '@Sendable' closure
113 | guard !self.pendingTasks.isEmpty else { return }
114 |
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:127:36: warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
27 | /// It keeps track of related tasks, adds limiter capabilities (e.g. only process x amount of tasks) and concurrency.
28 | /// Keeps track of related tasks and their errors.
29 | final class Scheduler {
| `- note: class 'Scheduler' does not conform to the 'Sendable' protocol
30 |
31 | private var pendingTasks = [ScheduledTask]()
:
125 | // // Make sure tasks are updated atomically
126 | self.queue.async {
127 | if let index = self.runningTasks.firstIndex(where: { $0 === task }) {
| `- warning: capture of 'self' with non-sendable type 'Scheduler' in a '@Sendable' closure
128 | self.runningTasks.remove(at: index)
129 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:127:81: warning: capture of 'task' with non-sendable type 'any ScheduledTask' in a '@Sendable' closure
19 | /// Once a Task is finished. It can spawn new tasks that need to be run.
20 | /// E.g. If a task is to upload a file, then it can spawn into tasks to cut up the file first. Which can then cut up into a task to upload, which can then add a task to delete the files.
21 | protocol ScheduledTask: AnyObject {
| `- note: protocol 'ScheduledTask' does not conform to the 'Sendable' protocol
22 | func run(completed: @escaping TaskCompletion)
23 | func cancel()
:
125 | // // Make sure tasks are updated atomically
126 | self.queue.async {
127 | if let index = self.runningTasks.firstIndex(where: { $0 === task }) {
| `- warning: capture of 'task' with non-sendable type 'any ScheduledTask' in a '@Sendable' closure
128 | self.runningTasks.remove(at: index)
129 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:133:28: warning: capture of 'result' with non-sendable type 'Result<[any ScheduledTask], any Error>' in a '@Sendable' closure
19 | /// Once a Task is finished. It can spawn new tasks that need to be run.
20 | /// E.g. If a task is to upload a file, then it can spawn into tasks to cut up the file first. Which can then cut up into a task to upload, which can then add a task to delete the files.
21 | protocol ScheduledTask: AnyObject {
| `- note: protocol 'ScheduledTask' does not conform to the 'Sendable' protocol
22 | func run(completed: @escaping TaskCompletion)
23 | func cancel()
:
131 | }
132 |
133 | switch result {
| `- warning: capture of 'result' with non-sendable type 'Result<[any ScheduledTask], any Error>' in a '@Sendable' closure
134 | case .success(let newTasks):
135 | if !newTasks.isEmpty {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Scheduler.swift:127:81: warning: capture of 'task' with non-sendable type 'any ScheduledTask' in an isolated closure; this is an error in the Swift 6 language mode
19 | /// Once a Task is finished. It can spawn new tasks that need to be run.
20 | /// E.g. If a task is to upload a file, then it can spawn into tasks to cut up the file first. Which can then cut up into a task to upload, which can then add a task to delete the files.
21 | protocol ScheduledTask: AnyObject {
| `- note: protocol 'ScheduledTask' does not conform to the 'Sendable' protocol
22 | func run(completed: @escaping TaskCompletion)
23 | func cancel()
:
125 | // // Make sure tasks are updated atomically
126 | self.queue.async {
127 | if let index = self.runningTasks.firstIndex(where: { $0 === task }) {
| `- warning: capture of 'task' with non-sendable type 'any ScheduledTask' in an isolated closure; this is an error in the Swift 6 language mode
128 | self.runningTasks.remove(at: index)
129 | } else {
[13/20] Compiling TUSKit TUSAPI.swift
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:447:18: warning: stored property 'api' of 'Sendable'-conforming class 'SessionDataDelegate' is mutable; this is an error in the Swift 6 language mode
445 | private extension TUSAPI {
446 | final class SessionDataDelegate: NSObject, URLSessionDataDelegate {
447 | weak var api: TUSAPI?
| `- warning: stored property 'api' of 'Sendable'-conforming class 'SessionDataDelegate' is mutable; this is an error in the Swift 6 language mode
448 |
449 | func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:344:26: warning: immutable value 'data' was never used; consider replacing with '_' or removing it
342 | self.callbacks[metaData.id.uuidString] = { result in
343 | processResult(completion: completion) {
344 | let (data, response) = try result.get()
| `- warning: immutable value 'data' was never used; consider replacing with '_' or removing it
345 | guard let offsetStr = response.allHeaderFields[caseInsensitive: "upload-offset"] as? String,
346 | let offset = Int(offsetStr) else {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:361:26: warning: immutable value 'data' was never used; consider replacing with '_' or removing it
359 | self.callbacks[metadata.id.uuidString] = { result in
360 | processResult(completion: completion) {
361 | let (data, response) = try result.get()
| `- warning: immutable value 'data' was never used; consider replacing with '_' or removing it
362 | guard let offsetStr = response.allHeaderFields[caseInsensitive: "upload-offset"] as? String,
363 | let offset = Int(offsetStr) else {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:379:48: warning: capture of 'metadata' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
377 | session.getAllTasks(completionHandler: { tasks in
378 | let hasTask = tasks.contains(where: { task in
379 | return task.taskDescription == metadata.id.uuidString
| `- warning: capture of 'metadata' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
380 | })
381 |
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:13:13: note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:382:13: warning: capture of 'completion' with non-sendable type '(Bool) -> Void' in a '@Sendable' closure
380 | })
381 |
382 | completion(hasTask)
| |- warning: capture of 'completion' with non-sendable type '(Bool) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
383 | })
384 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:379:48: warning: capture of 'metadata' with non-sendable type 'UploadMetadata' in an isolated closure; this is an error in the Swift 6 language mode
377 | session.getAllTasks(completionHandler: { tasks in
378 | let hasTask = tasks.contains(where: { task in
379 | return task.taskDescription == metadata.id.uuidString
| `- warning: capture of 'metadata' with non-sendable type 'UploadMetadata' in an isolated closure; this is an error in the Swift 6 language mode
380 | })
381 |
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:13:13: note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:539:17: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
537 | let tusError = TUSClientError.couldnotRemoveFinishedUploads(underlyingError: error)
538 | reportingQueue.async {
539 | self.delegate?.fileError(id: nil, error: tusError , client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
540 | }
541 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:563:29: warning: result of 'try?' is unused
561 | task.taskCompleted(result: result, completed: { [weak self] result in
562 | if case .failure = result {
563 | try? self?.retry(id: metadata.id)
| `- warning: result of 'try?' is unused
564 | }
565 | })
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:658:17: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
656 | let tusError = TUSClientError.couldNotLoadData(underlyingError: error)
657 | reportingQueue.async {
658 | self.delegate?.fileError(id: nil, error: tusError, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
659 | }
660 | return []
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:712:17: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
710 | let tusError = TUSClientError.couldNotDeleteFile(underlyingError: error)
711 | reportingQueue.async {
712 | self.delegate?.fileError(id: uploadTask.metaData.id, error: tusError, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
713 | }
714 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:712:46: warning: capture of 'uploadTask' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
710 | let tusError = TUSClientError.couldNotDeleteFile(underlyingError: error)
711 | reportingQueue.async {
712 | self.delegate?.fileError(id: uploadTask.metaData.id, error: tusError, client: self)
| `- warning: capture of 'uploadTask' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
713 | }
714 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:12:13: note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:726:13: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
724 | headerGenerator.clearHeaders(for: uploadTask.metaData.id)
725 | reportingQueue.async {
726 | self.delegate?.didFinishUpload(id: uploadTask.metaData.id, url: url, context: uploadTask.metaData.context, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
727 | }
728 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:726:48: warning: capture of 'uploadTask' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
724 | headerGenerator.clearHeaders(for: uploadTask.metaData.id)
725 | reportingQueue.async {
726 | self.delegate?.didFinishUpload(id: uploadTask.metaData.id, url: url, context: uploadTask.metaData.context, client: self)
| `- warning: capture of 'uploadTask' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
727 | }
728 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:12:13: note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:736:17: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
734 | if isUploadRangeEmpty && task.metaData.errorCount == 0 {
735 | reportingQueue.async {
736 | self.delegate?.didStartUpload(id: task.metaData.id, context: task.metaData.context, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
737 | }
738 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:736:51: warning: capture of 'task' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
734 | if isUploadRangeEmpty && task.metaData.errorCount == 0 {
735 | reportingQueue.async {
736 | self.delegate?.didStartUpload(id: task.metaData.id, context: task.metaData.context, client: self)
| `- warning: capture of 'task' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
737 | }
738 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:12:13: note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:795:17: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
793 | let tusError = TUSClientError.couldNotStoreFileMetadata(underlyingError: error)
794 | reportingQueue.async {
795 | self.delegate?.fileError(id: metaData.id, error: tusError, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
796 | }
797 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:795:46: warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
793 | let tusError = TUSClientError.couldNotStoreFileMetadata(underlyingError: error)
794 | reportingQueue.async {
795 | self.delegate?.fileError(id: metaData.id, error: tusError, client: self)
| `- warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
796 | }
797 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:13:13: note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:808:17: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
806 | headerGenerator.clearHeaders(for: metaData.id)
807 | reportingQueue.async {
808 | self.delegate?.uploadFailed(id: metaData.id, error: error, context: metaData.context, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
809 | }
810 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:808:49: warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
806 | headerGenerator.clearHeaders(for: metaData.id)
807 | reportingQueue.async {
808 | self.delegate?.uploadFailed(id: metaData.id, error: error, context: metaData.context, client: self)
| `- warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
809 | }
810 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:13:13: note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:850:13: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
848 | func progressUpdatedFor(metaData: UploadMetadata, totalUploadedBytes: Int) {
849 | reportingQueue.async {
850 | self.delegate?.progressFor(id: metaData.id, context: metaData.context, bytesUploaded: totalUploadedBytes, totalBytes: metaData.size, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
851 | }
852 |
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:850:44: warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
848 | func progressUpdatedFor(metaData: UploadMetadata, totalUploadedBytes: Int) {
849 | reportingQueue.async {
850 | self.delegate?.progressFor(id: metaData.id, context: metaData.context, bytesUploaded: totalUploadedBytes, totalBytes: metaData.size, client: self)
| `- warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
851 | }
852 |
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:13:13: note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:870:13: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
868 |
869 | reportingQueue.async {
870 | self.delegate?.totalProgress(bytesUploaded: totalBytesUploaded, totalBytes: totalSize, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
871 | }
872 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:870:57: warning: reference to captured var 'totalBytesUploaded' in concurrently-executing code
868 |
869 | reportingQueue.async {
870 | self.delegate?.totalProgress(bytesUploaded: totalBytesUploaded, totalBytes: totalSize, client: self)
| `- warning: reference to captured var 'totalBytesUploaded' in concurrently-executing code
871 | }
872 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:870:89: warning: reference to captured var 'totalSize' in concurrently-executing code
868 |
869 | reportingQueue.async {
870 | self.delegate?.totalProgress(bytesUploaded: totalBytesUploaded, totalBytes: totalSize, client: self)
| `- warning: reference to captured var 'totalSize' in concurrently-executing code
871 | }
872 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:910:13: warning: capture of 'self' with non-sendable type 'HeaderGenerator' in a '@Sendable' closure
873 | }
874 |
875 | final class HeaderGenerator {
| `- note: class 'HeaderGenerator' does not conform to the 'Sendable' protocol
876 | private let handler: HeaderGenerationHandler?
877 | private let queue = DispatchQueue(label: "com.tuskit.headergenerator")
:
908 | func clearHeaders(for id: UUID) {
909 | queue.async {
910 | self.latestHeaders.removeValue(forKey: id)
| `- warning: capture of 'self' with non-sendable type 'HeaderGenerator' in a '@Sendable' closure
911 | }
912 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:916:13: warning: capture of 'self' with non-sendable type 'HeaderGenerator' in a '@Sendable' closure
873 | }
874 |
875 | final class HeaderGenerator {
| `- note: class 'HeaderGenerator' does not conform to the 'Sendable' protocol
876 | private let handler: HeaderGenerationHandler?
877 | private let queue = DispatchQueue(label: "com.tuskit.headergenerator")
:
914 | func clearAll() {
915 | queue.async {
916 | self.latestHeaders.removeAll()
| `- warning: capture of 'self' with non-sendable type 'HeaderGenerator' in a '@Sendable' closure
917 | }
918 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:933:13: warning: capture of 'self' with non-sendable type 'HeaderGenerator' in a '@Sendable' closure
873 | }
874 |
875 | final class HeaderGenerator {
| `- note: class 'HeaderGenerator' does not conform to the 'Sendable' protocol
876 | private let handler: HeaderGenerationHandler?
877 | private let queue = DispatchQueue(label: "com.tuskit.headergenerator")
:
931 | metaData.updateAppliedCustomHeaders(headers)
932 | queue.async {
933 | self.latestHeaders[metaData.id] = headers
| `- warning: capture of 'self' with non-sendable type 'HeaderGenerator' in a '@Sendable' closure
934 | }
935 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:933:32: warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
931 | metaData.updateAppliedCustomHeaders(headers)
932 | queue.async {
933 | self.latestHeaders[metaData.id] = headers
| `- warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
934 | }
935 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:13:13: note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:500:17: warning: sending 'backgroundHandler' risks causing data races; this is an error in the Swift 6 language mode
498 | if let backgroundHandler {
499 | DispatchQueue.main.async {
500 | backgroundHandler()
| |- warning: sending 'backgroundHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'backgroundHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
501 | self.backgroundHandler = nil
502 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:501:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
499 | DispatchQueue.main.async {
500 | backgroundHandler()
501 | self.backgroundHandler = nil
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
502 | }
503 | }
[14/20] Compiling TUSKit TUSClient.swift
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:447:18: warning: stored property 'api' of 'Sendable'-conforming class 'SessionDataDelegate' is mutable; this is an error in the Swift 6 language mode
445 | private extension TUSAPI {
446 | final class SessionDataDelegate: NSObject, URLSessionDataDelegate {
447 | weak var api: TUSAPI?
| `- warning: stored property 'api' of 'Sendable'-conforming class 'SessionDataDelegate' is mutable; this is an error in the Swift 6 language mode
448 |
449 | func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:344:26: warning: immutable value 'data' was never used; consider replacing with '_' or removing it
342 | self.callbacks[metaData.id.uuidString] = { result in
343 | processResult(completion: completion) {
344 | let (data, response) = try result.get()
| `- warning: immutable value 'data' was never used; consider replacing with '_' or removing it
345 | guard let offsetStr = response.allHeaderFields[caseInsensitive: "upload-offset"] as? String,
346 | let offset = Int(offsetStr) else {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:361:26: warning: immutable value 'data' was never used; consider replacing with '_' or removing it
359 | self.callbacks[metadata.id.uuidString] = { result in
360 | processResult(completion: completion) {
361 | let (data, response) = try result.get()
| `- warning: immutable value 'data' was never used; consider replacing with '_' or removing it
362 | guard let offsetStr = response.allHeaderFields[caseInsensitive: "upload-offset"] as? String,
363 | let offset = Int(offsetStr) else {
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:379:48: warning: capture of 'metadata' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
377 | session.getAllTasks(completionHandler: { tasks in
378 | let hasTask = tasks.contains(where: { task in
379 | return task.taskDescription == metadata.id.uuidString
| `- warning: capture of 'metadata' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
380 | })
381 |
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:13:13: note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:382:13: warning: capture of 'completion' with non-sendable type '(Bool) -> Void' in a '@Sendable' closure
380 | })
381 |
382 | completion(hasTask)
| |- warning: capture of 'completion' with non-sendable type '(Bool) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
383 | })
384 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:379:48: warning: capture of 'metadata' with non-sendable type 'UploadMetadata' in an isolated closure; this is an error in the Swift 6 language mode
377 | session.getAllTasks(completionHandler: { tasks in
378 | let hasTask = tasks.contains(where: { task in
379 | return task.taskDescription == metadata.id.uuidString
| `- warning: capture of 'metadata' with non-sendable type 'UploadMetadata' in an isolated closure; this is an error in the Swift 6 language mode
380 | })
381 |
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:13:13: note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:539:17: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
537 | let tusError = TUSClientError.couldnotRemoveFinishedUploads(underlyingError: error)
538 | reportingQueue.async {
539 | self.delegate?.fileError(id: nil, error: tusError , client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
540 | }
541 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:563:29: warning: result of 'try?' is unused
561 | task.taskCompleted(result: result, completed: { [weak self] result in
562 | if case .failure = result {
563 | try? self?.retry(id: metadata.id)
| `- warning: result of 'try?' is unused
564 | }
565 | })
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:658:17: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
656 | let tusError = TUSClientError.couldNotLoadData(underlyingError: error)
657 | reportingQueue.async {
658 | self.delegate?.fileError(id: nil, error: tusError, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
659 | }
660 | return []
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:712:17: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
710 | let tusError = TUSClientError.couldNotDeleteFile(underlyingError: error)
711 | reportingQueue.async {
712 | self.delegate?.fileError(id: uploadTask.metaData.id, error: tusError, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
713 | }
714 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:712:46: warning: capture of 'uploadTask' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
710 | let tusError = TUSClientError.couldNotDeleteFile(underlyingError: error)
711 | reportingQueue.async {
712 | self.delegate?.fileError(id: uploadTask.metaData.id, error: tusError, client: self)
| `- warning: capture of 'uploadTask' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
713 | }
714 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:12:13: note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:726:13: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
724 | headerGenerator.clearHeaders(for: uploadTask.metaData.id)
725 | reportingQueue.async {
726 | self.delegate?.didFinishUpload(id: uploadTask.metaData.id, url: url, context: uploadTask.metaData.context, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
727 | }
728 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:726:48: warning: capture of 'uploadTask' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
724 | headerGenerator.clearHeaders(for: uploadTask.metaData.id)
725 | reportingQueue.async {
726 | self.delegate?.didFinishUpload(id: uploadTask.metaData.id, url: url, context: uploadTask.metaData.context, client: self)
| `- warning: capture of 'uploadTask' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
727 | }
728 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:12:13: note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:736:17: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
734 | if isUploadRangeEmpty && task.metaData.errorCount == 0 {
735 | reportingQueue.async {
736 | self.delegate?.didStartUpload(id: task.metaData.id, context: task.metaData.context, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
737 | }
738 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:736:51: warning: capture of 'task' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
734 | if isUploadRangeEmpty && task.metaData.errorCount == 0 {
735 | reportingQueue.async {
736 | self.delegate?.didStartUpload(id: task.metaData.id, context: task.metaData.context, client: self)
| `- warning: capture of 'task' with non-sendable type 'UploadDataTask' in a '@Sendable' closure
737 | }
738 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/Tasks/UploadDataTask.swift:12:13: note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
10 | /// The upload task will upload to data a destination.
11 | /// Will spawn more UploadDataTasks if an upload isn't complete.
12 | final class UploadDataTask: NSObject, IdentifiableTask {
| `- note: class 'UploadDataTask' does not conform to the 'Sendable' protocol
13 |
14 | // MARK: - IdentifiableTask
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:795:17: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
793 | let tusError = TUSClientError.couldNotStoreFileMetadata(underlyingError: error)
794 | reportingQueue.async {
795 | self.delegate?.fileError(id: metaData.id, error: tusError, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
796 | }
797 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:795:46: warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
793 | let tusError = TUSClientError.couldNotStoreFileMetadata(underlyingError: error)
794 | reportingQueue.async {
795 | self.delegate?.fileError(id: metaData.id, error: tusError, client: self)
| `- warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
796 | }
797 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:13:13: note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:808:17: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
806 | headerGenerator.clearHeaders(for: metaData.id)
807 | reportingQueue.async {
808 | self.delegate?.uploadFailed(id: metaData.id, error: error, context: metaData.context, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
809 | }
810 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:808:49: warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
806 | headerGenerator.clearHeaders(for: metaData.id)
807 | reportingQueue.async {
808 | self.delegate?.uploadFailed(id: metaData.id, error: error, context: metaData.context, client: self)
| `- warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
809 | }
810 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:13:13: note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:850:13: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
848 | func progressUpdatedFor(metaData: UploadMetadata, totalUploadedBytes: Int) {
849 | reportingQueue.async {
850 | self.delegate?.progressFor(id: metaData.id, context: metaData.context, bytesUploaded: totalUploadedBytes, totalBytes: metaData.size, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
851 | }
852 |
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:850:44: warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
848 | func progressUpdatedFor(metaData: UploadMetadata, totalUploadedBytes: Int) {
849 | reportingQueue.async {
850 | self.delegate?.progressFor(id: metaData.id, context: metaData.context, bytesUploaded: totalUploadedBytes, totalBytes: metaData.size, client: self)
| `- warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
851 | }
852 |
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:13:13: note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:870:13: warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
66 | public typealias HeaderGenerationHandler = (_ requestID: UUID, _ headers: [String: String], _ completion: @escaping ([String: String]) -> Void) -> Void
67 |
68 | public final class TUSClient {
| `- note: class 'TUSClient' does not conform to the 'Sendable' protocol
69 |
70 | // MARK: - Public Properties
:
868 |
869 | reportingQueue.async {
870 | self.delegate?.totalProgress(bytesUploaded: totalBytesUploaded, totalBytes: totalSize, client: self)
| `- warning: capture of 'self' with non-sendable type 'TUSClient' in a '@Sendable' closure
871 | }
872 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:870:57: warning: reference to captured var 'totalBytesUploaded' in concurrently-executing code
868 |
869 | reportingQueue.async {
870 | self.delegate?.totalProgress(bytesUploaded: totalBytesUploaded, totalBytes: totalSize, client: self)
| `- warning: reference to captured var 'totalBytesUploaded' in concurrently-executing code
871 | }
872 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:870:89: warning: reference to captured var 'totalSize' in concurrently-executing code
868 |
869 | reportingQueue.async {
870 | self.delegate?.totalProgress(bytesUploaded: totalBytesUploaded, totalBytes: totalSize, client: self)
| `- warning: reference to captured var 'totalSize' in concurrently-executing code
871 | }
872 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:910:13: warning: capture of 'self' with non-sendable type 'HeaderGenerator' in a '@Sendable' closure
873 | }
874 |
875 | final class HeaderGenerator {
| `- note: class 'HeaderGenerator' does not conform to the 'Sendable' protocol
876 | private let handler: HeaderGenerationHandler?
877 | private let queue = DispatchQueue(label: "com.tuskit.headergenerator")
:
908 | func clearHeaders(for id: UUID) {
909 | queue.async {
910 | self.latestHeaders.removeValue(forKey: id)
| `- warning: capture of 'self' with non-sendable type 'HeaderGenerator' in a '@Sendable' closure
911 | }
912 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:916:13: warning: capture of 'self' with non-sendable type 'HeaderGenerator' in a '@Sendable' closure
873 | }
874 |
875 | final class HeaderGenerator {
| `- note: class 'HeaderGenerator' does not conform to the 'Sendable' protocol
876 | private let handler: HeaderGenerationHandler?
877 | private let queue = DispatchQueue(label: "com.tuskit.headergenerator")
:
914 | func clearAll() {
915 | queue.async {
916 | self.latestHeaders.removeAll()
| `- warning: capture of 'self' with non-sendable type 'HeaderGenerator' in a '@Sendable' closure
917 | }
918 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:933:13: warning: capture of 'self' with non-sendable type 'HeaderGenerator' in a '@Sendable' closure
873 | }
874 |
875 | final class HeaderGenerator {
| `- note: class 'HeaderGenerator' does not conform to the 'Sendable' protocol
876 | private let handler: HeaderGenerationHandler?
877 | private let queue = DispatchQueue(label: "com.tuskit.headergenerator")
:
931 | metaData.updateAppliedCustomHeaders(headers)
932 | queue.async {
933 | self.latestHeaders[metaData.id] = headers
| `- warning: capture of 'self' with non-sendable type 'HeaderGenerator' in a '@Sendable' closure
934 | }
935 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSClient.swift:933:32: warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
931 | metaData.updateAppliedCustomHeaders(headers)
932 | queue.async {
933 | self.latestHeaders[metaData.id] = headers
| `- warning: capture of 'metaData' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
934 | }
935 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:13:13: note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:500:17: warning: sending 'backgroundHandler' risks causing data races; this is an error in the Swift 6 language mode
498 | if let backgroundHandler {
499 | DispatchQueue.main.async {
500 | backgroundHandler()
| |- warning: sending 'backgroundHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'backgroundHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
501 | self.backgroundHandler = nil
502 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:501:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
499 | DispatchQueue.main.async {
500 | backgroundHandler()
501 | self.backgroundHandler = nil
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
502 | }
503 | }
[15/20] Emitting module TUSKit
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/TUSAPI.swift:447:18: warning: stored property 'api' of 'Sendable'-conforming class 'SessionDataDelegate' is mutable; this is an error in the Swift 6 language mode
445 | private extension TUSAPI {
446 | final class SessionDataDelegate: NSObject, URLSessionDataDelegate {
447 | weak var api: TUSAPI?
| `- warning: stored property 'api' of 'Sendable'-conforming class 'SessionDataDelegate' is mutable; this is an error in the Swift 6 language mode
448 |
449 | func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
[16/20] Compiling TUSKit Collection+chunk.swift
[17/20] Compiling TUSKit Data+chunk.swift
[18/20] Compiling TUSKit String+base64.swift
[19/20] Compiling TUSKit Files.swift
[20/20] Compiling TUSKit UploadMetada.swift
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:48:17: warning: capture of 'self' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
:
46 | } set {
47 | queue.async {
48 | self._filePath = newValue
| `- warning: capture of 'self' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
49 | }
50 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:61:17: warning: capture of 'self' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
:
59 | } set {
60 | queue.async {
61 | self._remoteDestination = newValue
| `- warning: capture of 'self' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
62 | }
63 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:75:17: warning: capture of 'self' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
:
73 | } set {
74 | queue.async {
75 | self._uploadedRange = newValue
| `- warning: capture of 'self' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
76 | }
77 | }
/Users/admin/builder/spi-builder-workspace/Sources/TUSKit/UploadMetada.swift:162:13: warning: capture of 'self' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
11 | /// E.g. For background uploading or when an app is killed, we can use this data to continue where we left off.
12 | /// The reason this is a class is to preserve reference semantics while the data is being updated.
13 | final class UploadMetadata: Codable {
| `- note: class 'UploadMetadata' does not conform to the 'Sendable' protocol
14 |
15 | let queue = DispatchQueue(label: "com.tuskit.uploadmetadata")
:
160 | func updateAppliedCustomHeaders(_ headers: [String: String]?) {
161 | queue.async {
162 | self._appliedCustomHeaders = headers
| `- warning: capture of 'self' with non-sendable type 'UploadMetadata' in a '@Sendable' closure
163 | }
164 | }
Build complete! (5.60s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "TUSKit",
"name" : "TUSKit",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "10.0"
},
{
"name" : "macos",
"version" : "11.0"
},
{
"name" : "watchos",
"version" : "8.0"
}
],
"products" : [
{
"name" : "TUSKit",
"targets" : [
"TUSKit"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "TUSKitTests",
"module_type" : "SwiftTarget",
"name" : "TUSKitTests",
"path" : "Tests/TUSKitTests",
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/TUSKitTests/Resources/memeCat.jpg",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"DataTests.swift",
"FilesTests.swift",
"Fixtures.swift",
"Mocks.swift",
"SchedulerTests.swift",
"Support/NetworkSupport.swift",
"Support/Support.swift",
"TUSAPITests.swift",
"TUSClient/TUSClientInternalTests.swift",
"TUSClient/TUSClientTests.swift",
"TUSClient/TUSClient_CacheTests.swift",
"TUSClient/TUSClient_ContextTests.swift",
"TUSClient/TUSClient_CustomHeadersTests.swift",
"TUSClient/TUSClient_DelegateTests.swift",
"TUSClient/TUSClient_HeaderGenerationTests.swift",
"TUSClient/TUSClient_IdsTests.swift",
"TUSClient/TUSClient_RetryTests.swift",
"TUSClient/TUSClient_UploadingTests.swift"
],
"target_dependencies" : [
"TUSKit"
],
"type" : "test"
},
{
"c99name" : "TUSKit",
"module_type" : "SwiftTarget",
"name" : "TUSKit",
"path" : "Sources/TUSKit",
"product_memberships" : [
"TUSKit"
],
"sources" : [
"Extensions/Collection+chunk.swift",
"Extensions/Data+chunk.swift",
"Extensions/String+base64.swift",
"Files.swift",
"Network.swift",
"Scheduler.swift",
"TUSAPI.swift",
"TUSClient.swift",
"TUSClientError.swift",
"TUSProtocolExtension.swift",
"Tasks/CreationTask.swift",
"Tasks/IdentifiableTask.swift",
"Tasks/StatusTask.swift",
"Tasks/UploadDataTask.swift",
"TusServerInfo.swift",
"UploadInfo.swift",
"UploadMetada.swift"
],
"type" : "library"
}
],
"tools_version" : "5.5.1"
}
Done.