Skip to content

Commit 8d6a692

Browse files
committed
refactor: use swift-concurrency-extras
1 parent ed638d5 commit 8d6a692

File tree

17 files changed

+67
-150
lines changed

17 files changed

+67
-150
lines changed

Package.swift

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,23 @@ let package = Package(
2828
.package(url: "https://github.com/kishikawakatsumi/KeychainAccess", from: "4.2.2"),
2929
.package(url: "https://github.com/pointfreeco/swift-snapshot-testing", from: "1.8.1"),
3030
.package(url: "https://github.com/pointfreeco/xctest-dynamic-overlay", from: "1.0.0"),
31+
.package(url: "https://github.com/pointfreeco/swift-concurrency-extras", from: "1.0.0"),
3132
],
3233
targets: [
3334
.target(name: "_Helpers"),
3435
.target(name: "Functions", dependencies: ["_Helpers"]),
35-
.testTarget(name: "FunctionsTests", dependencies: ["Functions"]),
36+
.testTarget(
37+
name: "FunctionsTests",
38+
dependencies: [
39+
"Functions",
40+
.product(name: "ConcurrencyExtras", package: "swift-concurrency-extras"),
41+
]
42+
),
3643
.target(
3744
name: "GoTrue",
3845
dependencies: [
3946
"_Helpers",
47+
.product(name: "ConcurrencyExtras", package: "swift-concurrency-extras"),
4048
.product(name: "KeychainAccess", package: "KeychainAccess"),
4149
]
4250
),
@@ -49,7 +57,13 @@ let package = Package(
4957
],
5058
resources: [.process("Resources")]
5159
),
52-
.target(name: "PostgREST", dependencies: ["_Helpers"]),
60+
.target(
61+
name: "PostgREST",
62+
dependencies: [
63+
.product(name: "ConcurrencyExtras", package: "swift-concurrency-extras"),
64+
"_Helpers",
65+
]
66+
),
5367
.testTarget(
5468
name: "PostgRESTTests",
5569
dependencies: [
@@ -60,13 +74,20 @@ let package = Package(
6074
exclude: ["__Snapshots__"]
6175
),
6276
.testTarget(name: "PostgRESTIntegrationTests", dependencies: ["PostgREST"]),
63-
.target(name: "Realtime", dependencies: ["_Helpers"]),
77+
.target(
78+
name: "Realtime",
79+
dependencies: [
80+
.product(name: "ConcurrencyExtras", package: "swift-concurrency-extras"),
81+
"_Helpers",
82+
]
83+
),
6484
.testTarget(name: "RealtimeTests", dependencies: ["Realtime"]),
6585
.target(name: "Storage", dependencies: ["_Helpers"]),
6686
.testTarget(name: "StorageTests", dependencies: ["Storage"]),
6787
.target(
6888
name: "Supabase",
6989
dependencies: [
90+
.product(name: "ConcurrencyExtras", package: "swift-concurrency-extras"),
7091
"GoTrue",
7192
"Storage",
7293
"Realtime",

Sources/GoTrue/Internal/Dependencies.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import ConcurrencyExtras
12
import Foundation
2-
@_spi(Internal) import _Helpers
33

44
struct Dependencies: Sendable {
55
static let current = LockIsolated(Dependencies?.none)

Sources/GoTrue/Internal/EventEmitter.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import ConcurrencyExtras
12
import Foundation
2-
@_spi(Internal) import _Helpers
33

44
struct EventEmitter: Sendable {
55
var attachListener: @Sendable () -> (

Sources/PostgREST/PostgrestBuilder.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import ConcurrencyExtras
12
import Foundation
23
@_spi(Internal) import _Helpers
34

@@ -18,7 +19,7 @@ public class PostgrestBuilder: @unchecked Sendable {
1819
var fetchOptions: FetchOptions
1920
}
2021

21-
let mutableState: ActorIsolated<MutableState>
22+
let mutableState: LockIsolated<MutableState>
2223

2324
init(
2425
configuration: PostgrestClient.Configuration,
@@ -27,7 +28,7 @@ public class PostgrestBuilder: @unchecked Sendable {
2728
self.configuration = configuration
2829
http = HTTPClient(fetchHandler: configuration.fetch)
2930

30-
mutableState = ActorIsolated(
31+
mutableState = LockIsolated(
3132
MutableState(
3233
request: request,
3334
fetchOptions: FetchOptions()

Sources/Realtime/RealtimeChannel.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import Foundation
2222
import Swift
2323
@_spi(Internal) import _Helpers
24+
import ConcurrencyExtras
2425

2526
/// Container class of bindings to the channel
2627
struct Binding {
@@ -439,7 +440,7 @@ public class RealtimeChannel {
439440
}
440441
}
441442

442-
self.bindings.withValue {
443+
self.bindings.withValue { [newPostgresBindings] in
443444
$0["postgres_changes"] = newPostgresBindings
444445
}
445446
callback?(.subscribed, nil)

Sources/Realtime/RealtimeClient.swift

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import Foundation
2222
@_spi(Internal) import _Helpers
23+
import ConcurrencyExtras
2324

2425
public enum SocketError: Error {
2526
case abnormalClosureError
@@ -396,7 +397,7 @@ public class RealtimeClient: PhoenixTransportDelegate {
396397
var delegated = Delegated<URLResponse?, Void>()
397398
delegated.manuallyDelegate(with: callback)
398399

399-
return stateChangeCallbacks.open.withValue {
400+
return stateChangeCallbacks.open.withValue { [delegated] in
400401
self.append(callback: delegated, to: &$0)
401402
}
402403
}
@@ -439,7 +440,7 @@ public class RealtimeClient: PhoenixTransportDelegate {
439440
var delegated = Delegated<URLResponse?, Void>()
440441
delegated.delegate(to: owner, with: callback)
441442

442-
return stateChangeCallbacks.open.withValue {
443+
return stateChangeCallbacks.open.withValue { [delegated] in
443444
self.append(callback: delegated, to: &$0)
444445
}
445446
}
@@ -474,7 +475,7 @@ public class RealtimeClient: PhoenixTransportDelegate {
474475
var delegated = Delegated<(Int, String?), Void>()
475476
delegated.manuallyDelegate(with: callback)
476477

477-
return stateChangeCallbacks.close.withValue {
478+
return stateChangeCallbacks.close.withValue { [delegated] in
478479
self.append(callback: delegated, to: &$0)
479480
}
480481
}
@@ -517,7 +518,7 @@ public class RealtimeClient: PhoenixTransportDelegate {
517518
var delegated = Delegated<(Int, String?), Void>()
518519
delegated.delegate(to: owner, with: callback)
519520

520-
return stateChangeCallbacks.close.withValue {
521+
return stateChangeCallbacks.close.withValue { [delegated] in
521522
self.append(callback: delegated, to: &$0)
522523
}
523524
}
@@ -537,7 +538,7 @@ public class RealtimeClient: PhoenixTransportDelegate {
537538
var delegated = Delegated<(Error, URLResponse?), Void>()
538539
delegated.manuallyDelegate(with: callback)
539540

540-
return stateChangeCallbacks.error.withValue {
541+
return stateChangeCallbacks.error.withValue { [delegated] in
541542
self.append(callback: delegated, to: &$0)
542543
}
543544
}
@@ -561,7 +562,7 @@ public class RealtimeClient: PhoenixTransportDelegate {
561562
var delegated = Delegated<(Error, URLResponse?), Void>()
562563
delegated.delegate(to: owner, with: callback)
563564

564-
return stateChangeCallbacks.error.withValue {
565+
return stateChangeCallbacks.error.withValue { [delegated] in
565566
self.append(callback: delegated, to: &$0)
566567
}
567568
}
@@ -582,7 +583,7 @@ public class RealtimeClient: PhoenixTransportDelegate {
582583
var delegated = Delegated<Message, Void>()
583584
delegated.manuallyDelegate(with: callback)
584585

585-
return stateChangeCallbacks.message.withValue {
586+
return stateChangeCallbacks.message.withValue { [delegated] in
586587
append(callback: delegated, to: &$0)
587588
}
588589
}
@@ -606,7 +607,7 @@ public class RealtimeClient: PhoenixTransportDelegate {
606607
var delegated = Delegated<Message, Void>()
607608
delegated.delegate(to: owner, with: callback)
608609

609-
return stateChangeCallbacks.message.withValue {
610+
return stateChangeCallbacks.message.withValue { [delegated] in
610611
self.append(callback: delegated, to: &$0)
611612
}
612613
}

Sources/Supabase/SupabaseClient.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import ConcurrencyExtras
12
import Foundation
23
@_spi(Internal) import _Helpers
34
@_exported import Functions

Sources/_Helpers/ActorIsolated.swift

Lines changed: 0 additions & 28 deletions
This file was deleted.

Sources/_Helpers/AsyncStream.swift

Lines changed: 0 additions & 21 deletions
This file was deleted.

Sources/_Helpers/LockIsolated.swift

Lines changed: 0 additions & 57 deletions
This file was deleted.

Sources/_Helpers/Task.swift

Lines changed: 0 additions & 17 deletions
This file was deleted.

Tests/FunctionsTests/FunctionsClientTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import XCTest
2-
2+
import ConcurrencyExtras
33
@_spi(Internal) import _Helpers
44
@testable import Functions
55

@@ -14,7 +14,7 @@ final class FunctionsClientTests: XCTestCase {
1414
let _request = ActorIsolated(URLRequest?.none)
1515

1616
let sut = FunctionsClient(url: self.url, headers: ["apikey": apiKey]) { request in
17-
_request.setValue(request)
17+
await _request.setValue(request)
1818
return (
1919
Data(), HTTPURLResponse(url: url, statusCode: 200, httpVersion: nil, headerFields: nil)!
2020
)
@@ -27,7 +27,7 @@ final class FunctionsClientTests: XCTestCase {
2727
options: .init(headers: ["X-Custom-Key": "value"], body: body)
2828
)
2929

30-
let request = _request.value
30+
let request = await _request.value
3131

3232
XCTAssertEqual(request?.url, url)
3333
XCTAssertEqual(request?.httpMethod, "POST")

Tests/GoTrueTests/GoTrueClientTests.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import XCTest
99
@_spi(Internal) import _Helpers
10+
import ConcurrencyExtras
1011

1112
@testable import GoTrue
1213

@@ -28,7 +29,7 @@ final class GoTrueClientTests: XCTestCase {
2829

2930
let streamTask = Task {
3031
for await (event, _) in authStateStream {
31-
events.withValue {
32+
await events.withValue {
3233
$0.append(event)
3334
}
3435

@@ -38,7 +39,8 @@ final class GoTrueClientTests: XCTestCase {
3839

3940
await fulfillment(of: [expectation])
4041

41-
XCTAssertEqual(events.value, [.initialSession])
42+
let events = await events.value
43+
XCTAssertEqual(events, [.initialSession])
4244

4345
streamTask.cancel()
4446
}

Tests/GoTrueTests/Mocks/Mocks.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ func withDependencies(
7272
let current = Dependencies.current.value ?? .mock
7373
var copy = current
7474
mutation(&copy)
75-
Dependencies.current.withValue { $0 = copy }
75+
let copied = copy
76+
Dependencies.current.withValue { $0 = copied }
7677
defer { Dependencies.current.setValue(current) }
7778
try await operation()
7879
}

0 commit comments

Comments
 (0)