Skip to content

Commit d9c4dc4

Browse files
committed
More Sendable types
1 parent 801a125 commit d9c4dc4

11 files changed

+14
-54
lines changed

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ let package = Package(
4848
dependencies: [],
4949
path: "Source",
5050
swiftSettings: [
51-
.enableExperimentalFeature("StrictConcurrencyComplete")
51+
.enableExperimentalFeature("StrictConcurrency")
5252
]
5353
),
5454
.testTarget(

Source/HTTPMethod.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import Foundation
2929

3030
See [IETF document](https://tools.ietf.org/html/rfc7231#section-4.3)
3131
*/
32-
public enum HTTPMethod: String {
32+
public enum HTTPMethod: String, Sendable {
3333
case GET
3434
case POST
3535
case PUT

Source/NetworkError.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import Foundation
2525

2626
/// `NetworkError` provides a collection of error types which can occur during execution.
27-
public enum NetworkError: Error {
27+
public enum NetworkError: Error, Sendable {
2828
/// The error is unkonw
2929
case unknownError
3030
/// The request was cancelled before it finished

Source/NetworkServices/NetworkServiceMock.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ public final class NetworkServiceMock: NetworkService, @unchecked Sendable {
169169

170170
*/
171171
@MainActor
172-
public func requestResultWithResponse<Success>(for resource: Resource<Success, NetworkError>) async -> Result<(Success, HTTPURLResponse), NetworkError> {
172+
public func requestResultWithResponse<Success: Sendable>(for resource: Resource<Success, NetworkError>) async -> Result<(Success, HTTPURLResponse), NetworkError> {
173173
lastRequests.append(resource.request)
174174
if !responses.isEmpty {
175175
let index = responses.firstIndex(where: {

Source/Resource+Decodable.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ extension Resource where Model: Decodable {
3232
/// - request: The request to get the remote data payload
3333
/// - decoder: a decoder which can decode the payload into the model type
3434
/// - mapError: a closure which maps to Error
35-
public init(request: URLRequest, decoder: JSONDecoder, mapError: @escaping (_ networkError: NetworkError) -> E) {
35+
public init(request: URLRequest, decoder: JSONDecoder, mapError: @escaping @Sendable (_ networkError: NetworkError) -> E) {
3636
self.init(request: request, parse: { try decoder.decode(Model.self, from: $0) }, mapError: mapError)
3737
}
3838
}

Source/Resource+Inspect.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ extension Resource {
3636
- parameter inspector: closure which gets passed the data
3737
- returns: a new resource which gets instepcted before parsing
3838
*/
39-
public func inspectData(_ inspector: @escaping (Data) -> Void) -> Resource<Model, E> {
40-
let parse: (Data) throws -> Model = { data in
39+
public func inspectData(_ inspector: @escaping @Sendable (Data) -> Void) -> Resource<Model, E> {
40+
let parse: @Sendable (Data) throws -> Model = { data in
4141
inspector(data)
4242
return try self.parse(data)
4343
}

Source/Resource+Map.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ extension Resource {
2727
///
2828
/// - Parameter transform: transforms the original result of the resource
2929
/// - Returns: the transformed resource
30-
public func map<T>(transform: @escaping (Model) throws -> T) -> Resource<T, E> {
30+
public func map<T>(transform: @escaping @Sendable (Model) throws -> T) -> Resource<T, E> {
3131
return Resource<T, E>(
3232
request: request,
3333
parse: { return try transform(try self.parse($0)) },

Source/Resource+Void.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public extension Resource where Model == Void {
1414
/// - Parameters:
1515
/// - request: The request to get the remote data payload
1616
/// - mapError: a closure which maps to Error
17-
init(request: URLRequest, mapError: @escaping (_ networkError: NetworkError) -> E) {
17+
init(request: URLRequest, mapError: @escaping @Sendable (_ networkError: NetworkError) -> E) {
1818
self.init(request: request, parse: { _ in }, mapError: mapError)
1919
}
2020
}

Source/Resource.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,21 @@ import Foundation
3535
})
3636
```
3737
*/
38-
public struct Resource<Model, E: Error> {
38+
public struct Resource<Model, E: Error>: Sendable {
3939
/// The request to fetch the resource remote payload
4040
public let request: URLRequest
4141

4242
/// Parses data into given model.
43-
public let parse: (_ data: Data) throws -> Model
44-
public let mapError: (_ networkError: NetworkError) -> E
43+
public let parse: @Sendable (_ data: Data) throws -> Model
44+
public let mapError: @Sendable (_ networkError: NetworkError) -> E
4545

4646
/// Creates a type safe resource, which can be used to fetch it with NetworkService
4747
///
4848
/// - Parameters:
4949
/// - request: The request to get the remote data payload
5050
/// - parse: Parses data fetched with the request into given Model
5151

52-
public init(request: URLRequest, parse: @escaping (Data) throws -> Model, mapError: @escaping (_ networkError: NetworkError) -> E) {
52+
public init(request: URLRequest, parse: @escaping @Sendable (Data) throws -> Model, mapError: @escaping @Sendable (_ networkError: NetworkError) -> E) {
5353
self.request = request
5454
self.parse = parse
5555
self.mapError = mapError

Source/ResourceWithError+NetworkErrorConvertible.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import Foundation
99

1010
public extension Resource where E: NetworkErrorConvertible {
1111

12-
init(request: URLRequest, parse: @escaping (Data) throws -> Model) {
12+
init(request: URLRequest, parse: @escaping @Sendable (Data) throws -> Model) {
1313
self.request = request
1414
self.parse = parse
1515
self.mapError = { E(networkError: $0) }

0 commit comments

Comments
 (0)