Skip to content

Commit 546d9b3

Browse files
authored
Merge pull request #15 from MFB-Technologies-Inc/feature/upcoming-features
Feature/upcoming features
2 parents 16abd6d + d33158d commit 546d9b3

29 files changed

+131
-109
lines changed

[email protected]

+24-13
Original file line numberDiff line numberDiff line change
@@ -25,41 +25,52 @@ extension Product {
2525

2626
extension Target {
2727
static let targets: [Target] = [
28-
.target(name: "NetworkService"),
28+
.target(
29+
name: "NetworkService",
30+
swiftSettings: .swiftSix
31+
),
2932
.testTarget(
3033
name: "NetworkServiceTests",
3134
dependencies: [
3235
"NetworkService",
3336
.product(name: "OHHTTPStubs", package: "OHHTTPStubs"),
3437
.product(name: "OHHTTPStubsSwift", package: "OHHTTPStubs"),
35-
]
38+
],
39+
swiftSettings: .swiftSix
3640
),
3741
.target(
3842
name: "NetworkServiceTestHelper",
3943
dependencies: [
4044
"NetworkService",
4145
.product(name: "CombineSchedulers", package: "combine-schedulers"),
42-
]
46+
],
47+
swiftSettings: .swiftSix
4348
),
4449
.testTarget(
4550
name: "NetworkServiceTestHelperTests",
4651
dependencies: [
4752
"NetworkServiceTestHelper",
4853
.product(name: "CombineSchedulers", package: "combine-schedulers"),
49-
]
54+
],
55+
swiftSettings: .swiftSix
5056
),
5157
]
5258
}
5359

54-
package.targets.strictConcurrency()
55-
56-
extension Array where Element == Target {
57-
func strictConcurrency() {
58-
forEach { target in
59-
target.swiftSettings = (target.swiftSettings ?? [])
60-
+ [.enableUpcomingFeature("StrictConcurrency")]
61-
}
62-
}
60+
extension [SwiftSetting] {
61+
static let swiftSix: [SwiftSetting] = [
62+
.enableUpcomingFeature("BareSlashRegexLiterals"),
63+
.enableUpcomingFeature("ConciseMagicFile"),
64+
.enableUpcomingFeature("DisableOutwardActorInference"),
65+
.enableUpcomingFeature("ExistentialAny"),
66+
.enableUpcomingFeature("ForwardTrailingClosures"),
67+
.enableUpcomingFeature("FullTypedThrows"),
68+
.enableUpcomingFeature("ImplicitOpenExistentials"),
69+
.enableUpcomingFeature("ImportObjcForwardDeclarations"),
70+
.enableUpcomingFeature("InternalImportsByDefault"),
71+
.enableUpcomingFeature("IsolatedDefaultValues"),
72+
.enableUpcomingFeature("StrictConcurrency"),
73+
]
6374
}
6475

6576
extension Package.Dependency {

Sources/NetworkService/HTTPURLResponse+StatusCode.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// HTTPURLResponse+StatusCode.swift
22
// NetworkService
33
//
4-
// Copyright © 2023 MFB Technologies, Inc. All rights reserved.
4+
// Copyright © 2024 MFB Technologies, Inc. All rights reserved.
55
//
66
// This source code is licensed under the MIT license found in the
77
// LICENSE file in the root directory of this source tree.

Sources/NetworkService/NetworkService.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// NetworkService.swift
22
// NetworkService
33
//
4-
// Copyright © 2023 MFB Technologies, Inc. All rights reserved.
4+
// Copyright © 2024 MFB Technologies, Inc. All rights reserved.
55
//
66
// This source code is licensed under the MIT license found in the
77
// LICENSE file in the root directory of this source tree.

Sources/NetworkService/NetworkServiceClient+Delete.swift

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// NetworkServiceClient+Delete.swift
22
// NetworkService
33
//
4-
// Copyright © 2023 MFB Technologies, Inc. All rights reserved.
4+
// Copyright © 2024 MFB Technologies, Inc. All rights reserved.
55
//
66
// This source code is licensed under the MIT license found in the
77
// LICENSE file in the root directory of this source tree.
@@ -17,7 +17,7 @@ extension NetworkServiceClient {
1717
/// - Returns: Type erased publisher with `Data` output and `NetworkService`'s error domain for failure
1818
public func delete(
1919
_ url: URL,
20-
headers: [HTTPHeader] = []
20+
headers: [any HTTPHeader] = []
2121
) async -> Result<Data, Failure> {
2222
let request = URLRequest.build(url: url, headers: headers, method: .DELETE)
2323
return await start(request)
@@ -36,7 +36,7 @@ extension NetworkServiceClient {
3636
/// - Returns: Type erased publisher with decoded output and `NetworkService`'s error domain for failure
3737
public func delete<ResponseBody, Decoder>(
3838
_ url: URL,
39-
headers: [HTTPHeader] = [],
39+
headers: [any HTTPHeader] = [],
4040
decoder: Decoder
4141
) async -> Result<ResponseBody, Failure>
4242
where ResponseBody: Decodable, Decoder: TopLevelDecoder, Decoder.Input == Data
@@ -52,7 +52,8 @@ extension NetworkServiceClient {
5252
/// - headers: HTTP headers for the request
5353
/// - Returns: Type erased publisher with `TopLevelDecodable` output and `NetworkService`'s error domain for
5454
/// failure
55-
public func delete<ResponseBody>(_ url: URL, headers: [HTTPHeader] = []) async -> Result<ResponseBody, Failure>
55+
public func delete<ResponseBody>(_ url: URL,
56+
headers: [any HTTPHeader] = []) async -> Result<ResponseBody, Failure>
5657
where ResponseBody: TopLevelDecodable
5758
{
5859
await delete(url, headers: headers, decoder: ResponseBody.decoder)

Sources/NetworkService/NetworkServiceClient+Get.swift

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// NetworkServiceClient+Get.swift
22
// NetworkService
33
//
4-
// Copyright © 2023 MFB Technologies, Inc. All rights reserved.
4+
// Copyright © 2024 MFB Technologies, Inc. All rights reserved.
55
//
66
// This source code is licensed under the MIT license found in the
77
// LICENSE file in the root directory of this source tree.
@@ -17,7 +17,7 @@ extension NetworkServiceClient {
1717
/// - Returns: Type erased publisher with `Data` output and `NetworkService`'s error domain for failure
1818
public func get(
1919
_ url: URL,
20-
headers: [HTTPHeader] = []
20+
headers: [any HTTPHeader] = []
2121
) async -> Result<Data, Failure> {
2222
let request = URLRequest.build(url: url, headers: headers, method: .GET)
2323
return await start(request)
@@ -26,6 +26,7 @@ extension NetworkServiceClient {
2626

2727
#if canImport(Combine)
2828
import Combine
29+
2930
extension NetworkServiceClient {
3031
/// Send a get request to a `URL`
3132
/// - Parameters:
@@ -35,7 +36,7 @@ extension NetworkServiceClient {
3536
/// - Returns: Type erased publisher with decoded output and `NetworkService`'s error domain for failure
3637
public func get<ResponseBody, Decoder>(
3738
_ url: URL,
38-
headers: [HTTPHeader] = [],
39+
headers: [any HTTPHeader] = [],
3940
decoder: Decoder
4041
) async -> Result<ResponseBody, Failure>
4142
where ResponseBody: Decodable, Decoder: TopLevelDecoder, Decoder.Input == Data
@@ -51,7 +52,7 @@ extension NetworkServiceClient {
5152
/// - headers: HTTP headers for the request
5253
/// - Returns: Type erased publisher with `TopLevelDecodable` output and `NetworkService`'s error domain for
5354
/// failure
54-
public func get<ResponseBody>(_ url: URL, headers: [HTTPHeader] = []) async -> Result<ResponseBody, Failure>
55+
public func get<ResponseBody>(_ url: URL, headers: [any HTTPHeader] = []) async -> Result<ResponseBody, Failure>
5556
where ResponseBody: TopLevelDecodable
5657
{
5758
await get(url, headers: headers, decoder: ResponseBody.decoder)

Sources/NetworkService/NetworkServiceClient+GetSession.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// NetworkServiceClient+GetSession.swift
22
// NetworkService
33
//
4-
// Copyright © 2023 MFB Technologies, Inc. All rights reserved.
4+
// Copyright © 2024 MFB Technologies, Inc. All rights reserved.
55
//
66
// This source code is licensed under the MIT license found in the
77
// LICENSE file in the root directory of this source tree.

Sources/NetworkService/NetworkServiceClient+Post.swift

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// NetworkServiceClient+Post.swift
22
// NetworkService
33
//
4-
// Copyright © 2023 MFB Technologies, Inc. All rights reserved.
4+
// Copyright © 2024 MFB Technologies, Inc. All rights reserved.
55
//
66
// This source code is licensed under the MIT license found in the
77
// LICENSE file in the root directory of this source tree.
@@ -19,7 +19,7 @@ extension NetworkServiceClient {
1919
public func post(
2020
_ body: Data,
2121
to url: URL,
22-
headers: [HTTPHeader] = []
22+
headers: [any HTTPHeader] = []
2323
) async -> Result<Data, Failure> {
2424
let request = URLRequest.build(url: url, body: body, headers: headers, method: .POST)
2525
return await start(request)
@@ -28,6 +28,7 @@ extension NetworkServiceClient {
2828

2929
#if canImport(Combine)
3030
import Combine
31+
3132
extension NetworkServiceClient {
3233
/// - Parameters:
3334
/// - body: The body of the request as `Encodable`
@@ -38,7 +39,7 @@ extension NetworkServiceClient {
3839
public func post<RequestBody, Encoder>(
3940
_ body: RequestBody,
4041
to url: URL,
41-
headers: [HTTPHeader],
42+
headers: [any HTTPHeader],
4243
encoder: Encoder
4344
) async -> Result<Data, Failure>
4445
where RequestBody: Encodable,
@@ -61,7 +62,7 @@ extension NetworkServiceClient {
6162
public func post<RequestBody>(
6263
_ body: RequestBody,
6364
to url: URL,
64-
headers: [HTTPHeader]
65+
headers: [any HTTPHeader]
6566
) async -> Result<Data, Failure>
6667
where RequestBody: TopLevelEncodable
6768
{
@@ -85,7 +86,7 @@ extension NetworkServiceClient {
8586
public func post<ResponseBody, Decoder>(
8687
_ body: Data,
8788
to url: URL,
88-
headers: [HTTPHeader] = [],
89+
headers: [any HTTPHeader] = [],
8990
decoder: Decoder
9091
) async -> Result<ResponseBody, Failure>
9192
where ResponseBody: Decodable, Decoder: TopLevelDecoder, Decoder.Input == Data
@@ -106,7 +107,7 @@ extension NetworkServiceClient {
106107
public func post<ResponseBody>(
107108
_ body: Data,
108109
to url: URL,
109-
headers: [HTTPHeader] = []
110+
headers: [any HTTPHeader] = []
110111
) async -> Result<ResponseBody, Failure>
111112
where ResponseBody: TopLevelDecodable
112113
{
@@ -124,7 +125,7 @@ extension NetworkServiceClient {
124125
public func post<RequestBody, ResponseBody, Encoder, Decoder>(
125126
_ body: RequestBody,
126127
to url: URL,
127-
headers: [HTTPHeader] = [],
128+
headers: [any HTTPHeader] = [],
128129
encoder: Encoder,
129130
decoder: Decoder
130131
) async -> Result<ResponseBody, Failure>
@@ -155,7 +156,7 @@ extension NetworkServiceClient {
155156
public func post<RequestBody, ResponseBody>(
156157
_ body: RequestBody,
157158
to url: URL,
158-
headers: [HTTPHeader] = []
159+
headers: [any HTTPHeader] = []
159160
) async -> Result<ResponseBody, Failure>
160161
where RequestBody: TopLevelEncodable,
161162
ResponseBody: TopLevelDecodable

Sources/NetworkService/NetworkServiceClient+Put.swift

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// NetworkServiceClient+Put.swift
22
// NetworkService
33
//
4-
// Copyright © 2023 MFB Technologies, Inc. All rights reserved.
4+
// Copyright © 2024 MFB Technologies, Inc. All rights reserved.
55
//
66
// This source code is licensed under the MIT license found in the
77
// LICENSE file in the root directory of this source tree.
@@ -19,7 +19,7 @@ extension NetworkServiceClient {
1919
public func put(
2020
_ body: Data,
2121
to url: URL,
22-
headers: [HTTPHeader] = []
22+
headers: [any HTTPHeader] = []
2323
) async -> Result<Data, Failure> {
2424
let request = URLRequest.build(url: url, body: body, headers: headers, method: .PUT)
2525
return await start(request)
@@ -28,6 +28,7 @@ extension NetworkServiceClient {
2828

2929
#if canImport(Combine)
3030
import Combine
31+
3132
extension NetworkServiceClient {
3233
/// - Parameters:
3334
/// - body: The body of the request as `Encodable`
@@ -38,7 +39,7 @@ extension NetworkServiceClient {
3839
public func put<RequestBody, Encoder>(
3940
_ body: RequestBody,
4041
to url: URL,
41-
headers: [HTTPHeader],
42+
headers: [any HTTPHeader],
4243
encoder: Encoder
4344
) async -> Result<Data, Failure>
4445
where RequestBody: Encodable,
@@ -63,7 +64,7 @@ extension NetworkServiceClient {
6364
public func put<RequestBody>(
6465
_ body: RequestBody,
6566
to url: URL,
66-
headers: [HTTPHeader]
67+
headers: [any HTTPHeader]
6768
) async -> Result<Data, Failure>
6869
where RequestBody: TopLevelEncodable
6970
{
@@ -87,7 +88,7 @@ extension NetworkServiceClient {
8788
public func put<ResponseBody, Decoder>(
8889
_ body: Data,
8990
to url: URL,
90-
headers: [HTTPHeader] = [],
91+
headers: [any HTTPHeader] = [],
9192
decoder: Decoder
9293
) async -> Result<ResponseBody, Failure>
9394
where ResponseBody: Decodable, Decoder: TopLevelDecoder, Decoder.Input == Data
@@ -106,7 +107,7 @@ extension NetworkServiceClient {
106107
public func put<ResponseBody>(
107108
_ body: Data,
108109
to url: URL,
109-
headers: [HTTPHeader] = []
110+
headers: [any HTTPHeader] = []
110111
) async -> Result<ResponseBody, Failure>
111112
where ResponseBody: TopLevelDecodable
112113
{
@@ -124,7 +125,7 @@ extension NetworkServiceClient {
124125
public func put<RequestBody, ResponseBody, Encoder, Decoder>(
125126
_ body: RequestBody,
126127
to url: URL,
127-
headers: [HTTPHeader] = [],
128+
headers: [any HTTPHeader] = [],
128129
encoder: Encoder,
129130
decoder: Decoder
130131
) async -> Result<ResponseBody, Failure>
@@ -154,7 +155,7 @@ extension NetworkServiceClient {
154155
public func put<RequestBody, ResponseBody>(
155156
_ body: RequestBody,
156157
to url: URL,
157-
headers: [HTTPHeader] = []
158+
headers: [any HTTPHeader] = []
158159
) async -> Result<ResponseBody, Failure>
159160
where RequestBody: TopLevelEncodable,
160161
ResponseBody: TopLevelDecodable

Sources/NetworkService/NetworkServiceClient+Start.swift

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// NetworkServiceClient+Start.swift
22
// NetworkService
33
//
4-
// Copyright © 2023 MFB Technologies, Inc. All rights reserved.
4+
// Copyright © 2024 MFB Technologies, Inc. All rights reserved.
55
//
66
// This source code is licensed under the MIT license found in the
77
// LICENSE file in the root directory of this source tree.
@@ -13,7 +13,7 @@ extension NetworkServiceClient {
1313
/// - Parameter request: The request as a `URLRequest`
1414
/// - Returns: Type erased publisher with output as `Data` and `NetworkService`'s error domain for failure
1515
public func start(_ request: URLRequest) async -> Result<Data, Failure> {
16-
let result: Result<(Data, URLResponse), Error>
16+
let result: Result<(Data, URLResponse), any Error>
1717
do {
1818
let response: (Data, URLResponse) = try await response(request)
1919
result = .success(response)
@@ -65,6 +65,7 @@ private final class TaskIdBox {
6565

6666
#if canImport(Combine)
6767
import Combine
68+
6869
extension NetworkServiceClient {
6970
/// Start a `URLRequest`
7071
/// - Parameter request: The request as a `URLRequest`

0 commit comments

Comments
 (0)