Skip to content

Commit b1863a9

Browse files
authored
Update sub-libraries to use dependency-free branches (#117)
* Update libs * Remove Get import * Update storage * Update GoTrue to dependency-free branch
1 parent 7088b85 commit b1863a9

File tree

10 files changed

+76
-144
lines changed

10 files changed

+76
-144
lines changed

Examples/Examples/AddTodoListView.swift

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,14 @@ struct AddTodoListView: View {
3636

3737
struct AddTodoListView_Previews: PreviewProvider {
3838
static var previews: some View {
39-
AddTodoListView(request: .constant(.init(
40-
description: "",
41-
isComplete: false,
42-
ownerID: UUID()
43-
))) { _ in
39+
AddTodoListView(
40+
request: .constant(
41+
.init(
42+
description: "",
43+
isComplete: false,
44+
ownerID: UUID()
45+
))
46+
) { _ in
4447
}
4548
}
4649
}

Examples/Examples/AuthView.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ struct AuthView: View {
5757

5858
Section {
5959
Button(
60-
mode == .signIn ? "Don't have an account? Sign up." :
61-
"Already have an account? Sign in."
60+
mode == .signIn ? "Don't have an account? Sign up." : "Already have an account? Sign in."
6261
) {
6362
withAnimation {
6463
mode = mode == .signIn ? .signUp : .signIn

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ build-example:
1313
-destination platform="$(PLATFORM_IOS)" || exit 1;
1414

1515
format:
16-
@swiftformat .
16+
@swift format -i -r .

Package.resolved

Lines changed: 8 additions & 35 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ var package = Package(
1717
.library(
1818
name: "Supabase",
1919
targets: ["Supabase"]
20-
),
20+
)
2121
],
2222
dependencies: [],
2323
targets: [
@@ -48,11 +48,23 @@ if ProcessInfo.processInfo.environment["USE_LOCAL_PACKAGES"] != nil {
4848
} else {
4949
package.dependencies.append(
5050
contentsOf: [
51-
.package(url: "https://github.com/supabase-community/gotrue-swift", from: "1.0.0"),
52-
.package(url: "https://github.com/supabase-community/storage-swift.git", from: "0.1.1"),
51+
.package(
52+
url: "https://github.com/supabase-community/gotrue-swift",
53+
branch: "dependency-free"
54+
),
55+
.package(
56+
url: "https://github.com/supabase-community/storage-swift.git",
57+
branch: "dependency-free"
58+
),
5359
.package(url: "https://github.com/supabase-community/realtime-swift.git", from: "0.0.2"),
54-
.package(url: "https://github.com/supabase-community/postgrest-swift", from: "1.0.0"),
55-
.package(url: "https://github.com/supabase-community/functions-swift", from: "1.0.0"),
60+
.package(
61+
url: "https://github.com/supabase-community/postgrest-swift",
62+
branch: "dependency-free"
63+
),
64+
.package(
65+
url: "https://github.com/supabase-community/functions-swift",
66+
branch: "dependency-free"
67+
),
5668
]
5769
)
5870
}

Sources/Supabase/Deprecations.swift

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

Sources/Supabase/SupabaseClient.swift

Lines changed: 30 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import Foundation
22
@_exported import Functions
3-
import Get
43
@_exported import GoTrue
54
@_exported import PostgREST
65
@_exported import Realtime
76
@_exported import SupabaseStorage
87

98
/// Supabase Client.
109
public class SupabaseClient {
10+
let options: SupabaseClientOptions
1111
let supabaseURL: URL
1212
let supabaseKey: String
1313
let storageURL: URL
@@ -16,28 +16,36 @@ public class SupabaseClient {
1616
let authURL: URL
1717
let functionsURL: URL
1818

19-
let schema: String
20-
2119
/// Supabase Auth allows you to create and manage user sessions for access to data that is secured
2220
/// by access policies.
23-
public let auth: GoTrueClient
21+
public var auth: GoTrueClient {
22+
GoTrueClient(
23+
url: authURL,
24+
headers: defaultHeaders,
25+
localStorage: options.auth.storage,
26+
fetch: fetch
27+
)
28+
}
2429

2530
/// Supabase Storage allows you to manage user-generated content, such as photos or videos.
2631
public var storage: SupabaseStorageClient {
2732
SupabaseStorageClient(
2833
url: storageURL.absoluteString,
2934
headers: defaultHeaders,
30-
http: self
35+
session: StorageHTTPSession(
36+
fetch: fetch,
37+
upload: upload
38+
)
3139
)
3240
}
3341

3442
/// Database client for Supabase.
3543
public var database: PostgrestClient {
3644
PostgrestClient(
3745
url: databaseURL,
46+
schema: options.db.schema,
3847
headers: defaultHeaders,
39-
schema: schema,
40-
apiClientDelegate: self
48+
fetch: fetch
4149
)
4250
}
4351

@@ -54,11 +62,14 @@ public class SupabaseClient {
5462
FunctionsClient(
5563
url: functionsURL,
5664
headers: defaultHeaders,
57-
apiClientDelegate: self
65+
fetch: fetch
5866
)
5967
}
6068

6169
private(set) var defaultHeaders: [String: String]
70+
private var session: URLSession {
71+
options.global.session
72+
}
6273

6374
/// Create a new client.
6475
public init(
@@ -73,63 +84,33 @@ public class SupabaseClient {
7384
databaseURL = supabaseURL.appendingPathComponent("/rest/v1")
7485
realtimeURL = supabaseURL.appendingPathComponent("/realtime/v1")
7586
functionsURL = supabaseURL.appendingPathComponent("/functions/v1")
76-
77-
schema = options.db.schema
78-
httpClient = options.global.httpClient
87+
self.options = options
7988

8089
defaultHeaders = [
8190
"X-Client-Info": "supabase-swift/\(version)",
8291
"Authorization": "Bearer \(supabaseKey)",
8392
"apikey": supabaseKey,
8493
].merging(options.global.headers) { _, new in new }
85-
86-
auth = GoTrueClient(
87-
url: authURL,
88-
headers: defaultHeaders,
89-
localStorage: options.auth.storage
90-
)
9194
}
9295

93-
public struct HTTPClient {
94-
let storage: StorageHTTPClient
95-
96-
public init(
97-
storage: StorageHTTPClient? = nil
98-
) {
99-
self.storage = storage ?? DefaultStorageHTTPClient()
100-
}
96+
@Sendable
97+
private func fetch(_ request: URLRequest) async throws -> (Data, URLResponse) {
98+
try await session.data(for: adapt(request: request))
10199
}
102100

103-
private let httpClient: HTTPClient
104-
}
105-
106-
extension SupabaseClient: APIClientDelegate {
107-
public func client(_: APIClient, willSendRequest request: inout URLRequest) async throws {
108-
request = await adapt(request: request)
101+
@Sendable
102+
private func upload(
103+
_ request: URLRequest,
104+
from data: Data
105+
) async throws -> (Data, URLResponse) {
106+
try await session.upload(for: adapt(request: request), from: data)
109107
}
110-
}
111108

112-
extension SupabaseClient {
113-
func adapt(request: URLRequest) async -> URLRequest {
109+
private func adapt(request: URLRequest) async -> URLRequest {
114110
var request = request
115111
if let accessToken = try? await auth.session.accessToken {
116112
request.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")
117113
}
118114
return request
119115
}
120116
}
121-
122-
extension SupabaseClient: StorageHTTPClient {
123-
public func fetch(_ request: URLRequest) async throws -> (Data, HTTPURLResponse) {
124-
let request = await adapt(request: request)
125-
return try await httpClient.storage.fetch(request)
126-
}
127-
128-
public func upload(
129-
_ request: URLRequest,
130-
from data: Data
131-
) async throws -> (Data, HTTPURLResponse) {
132-
let request = await adapt(request: request)
133-
return try await httpClient.storage.upload(request, from: data)
134-
}
135-
}

Sources/Supabase/Types.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ public struct SupabaseClientOptions {
2727

2828
public struct GlobalOptions {
2929
public let headers: [String: String]
30-
public let httpClient: SupabaseClient.HTTPClient
30+
public let session: URLSession
3131

32-
public init(headers: [String: String] = [:], httpClient: SupabaseClient.HTTPClient = .init()) {
32+
public init(headers: [String: String] = [:], session: URLSession = .shared) {
3333
self.headers = headers
34-
self.httpClient = httpClient
34+
self.session = session
3535
}
3636
}
3737

Tests/SupabaseTests/SupabaseClientTests.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import GoTrue
2-
@testable import Supabase
32
import XCTest
43

4+
@testable import Supabase
5+
56
final class GoTrueLocalStorageMock: GoTrueLocalStorage {
67
func store(key _: String, value _: Data) throws {}
78

supabase-swift.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 6 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)