Skip to content

feat(functions): functions v3#923

Merged
grdsdev merged 27 commits intov3from
feat/http-client-helper
Apr 28, 2026
Merged

feat(functions): functions v3#923
grdsdev merged 27 commits intov3from
feat/http-client-helper

Conversation

@grdsdev
Copy link
Copy Markdown
Contributor

@grdsdev grdsdev commented Mar 13, 2026

What kind of change does this PR introduce?

Rewrite of FunctionsClient on top of a new shared _HTTPClient helper, with a new builder-pattern invocation API and various cleanups.

Changes

New _HTTPClient (Sources/Helpers/_HTTPClient.swift)

Package-internal HTTP client intended for use across modules:

  • fetch<T: Decodable> — perform a request and decode the JSON response
  • fetchData — perform a request and return raw Data
  • fetchStream — stream response bytes via AsyncThrowingStream<UInt8, Error> using URLSession.bytes (Darwin only — #if canImport(Darwin))
  • TokenProvider closure injected into every request as an Authorization: Bearer header
  • RequestBody enum: .encodable, .json, .data
  • HTTPClientError with .responseError(HTTPURLResponse, data:) and .decodingError(HTTPURLResponse, detail:) cases
  • #if canImport(FoundationNetworking) import for Linux builds; fetchStream excluded on Linux since URLSession.bytes is unavailable there

FunctionsClient rewrite

  • Migrated to _HTTPClient, removing the old URLSessionDataDelegate-based streaming implementation
  • Converted to actor for safe concurrent access without manual locking
  • New builder-pattern invoke API — options are configured via a closure instead of passing a FunctionInvokeOptions value directly:
// Raw data + response
let (data, response) = try await functions.invoke("my-fn") {
  $0.body = try! JSONEncoder().encode(payload)
  $0.headers["Content-Type"] = "application/json"
}

// Decoded response
let (value, response) = try await functions.invokeDecodable("my-fn", as: MyType.self) {
  $0.body = try! JSONEncoder().encode(payload)
  $0.headers["Content-Type"] = "application/json"
}

// Streaming (Darwin only)
let (stream, response) = try await functions.invokeStream("my-fn")
  • FunctionRegion is now a RawRepresentable struct with ExpressibleByStringLiteral, replacing the enum — custom region strings are now supported
  • FunctionInvokeOptions.region is FunctionRegion? (was String?); String? overloads removed
  • decoder is a public stored property (non-optional, defaults to JSONDecoder()), used as fallback in invokeDecodable
  • HTTPClientErrorFunctionsError conversion: non-2xx responses are caught and re-thrown as FunctionsError.httpError(code:data:)
  • Relay error header fix: was checking x-relay, now correctly checks x-relay-error
  • SupabaseClient propagates the global URLSession and a TokenProvider into FunctionsClient
  • DocC documentation added to all public API surfaces

Tests

  • Added comprehensive FunctionsTests.swift using the Replay library with recorded HAR fixtures (invoke_default, invoke_get_method, invoke_put_method)
  • Added a local echo edge function under Tests/FunctionsTests/supabase/ for integration testing
  • Updated FunctionsClientTests.swift and SupabaseClientTests.swift for the new actor-isolated API
  • Removed RequestTests.swift (coverage now handled by inline snapshot tests)

Example app

Updated FunctionsExamplesView.swift to use invokeDecodable with the new closure-based API.

@grdsdev grdsdev force-pushed the feat/http-client-helper branch from 75ff0dd to 12450c4 Compare April 1, 2026 13:01
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 1, 2026

⚠️ Potential Breaking API Changes Detected

This PR appears to contain breaking API changes. Please review the changes below:

API Check Output
** Checking required environment variables...
** Fetching baseline: https://github.com/supabase/supabase-swift.git#v3...
From https://github.com/supabase/supabase-swift
 * branch            v3         -> FETCH_HEAD
** Checking for API changes since https://github.com/supabase/supabase-swift.git#v3 (aef63d63c3a72f6cd9e009b2d68719deaad9c1ab)...
Fetching https://github.com/WeTransfer/Mocker
Fetching https://github.com/pointfreeco/swift-clocks
[1/1889] Fetching mocker
[20/3206] Fetching mocker, swift-clocks
Fetched https://github.com/pointfreeco/swift-clocks from cache (0.67s)
Fetched https://github.com/WeTransfer/Mocker from cache (0.67s)
Fetching https://github.com/apple/swift-argument-parser.git
Fetching https://github.com/pointfreeco/swift-custom-dump
[1/5464] Fetching swift-custom-dump
[5465/22928] Fetching swift-custom-dump, swift-argument-parser
Fetched https://github.com/apple/swift-argument-parser.git from cache (1.06s)
Fetched https://github.com/pointfreeco/swift-custom-dump from cache (1.06s)
Fetching https://github.com/apple/swift-http-types
Fetching https://github.com/swiftlang/swift-syntax
[1/1043] Fetching swift-http-types
[1044/76082] Fetching swift-http-types, swift-syntax
Fetched https://github.com/swiftlang/swift-syntax from cache (5.18s)
Fetched https://github.com/apple/swift-http-types from cache (5.18s)
Fetching https://github.com/apple/swift-asn1.git
Fetching https://github.com/pointfreeco/swift-concurrency-extras
[1/1803] Fetching swift-asn1
[164/2759] Fetching swift-asn1, swift-concurrency-extras
Fetched https://github.com/pointfreeco/swift-concurrency-extras from cache (0.65s)
Fetched https://github.com/apple/swift-asn1.git from cache (0.65s)
Fetching https://github.com/mattt/Replay.git
Fetching https://github.com/apple/swift-crypto.git
[1/681] Fetching replay
[682/18128] Fetching replay, swift-crypto
Fetched https://github.com/apple/swift-crypto.git from cache (2.08s)
Fetched https://github.com/mattt/Replay.git from cache (2.08s)
Fetching https://github.com/pointfreeco/xctest-dynamic-overlay
Fetching https://github.com/pointfreeco/swift-snapshot-testing
[1/5723] Fetching xctest-dynamic-overlay
[5724/21792] Fetching xctest-dynamic-overlay, swift-snapshot-testing
Fetched https://github.com/pointfreeco/xctest-dynamic-overlay from cache (1.01s)
[161/16069] Fetching swift-snapshot-testing
Fetched https://github.com/pointfreeco/swift-snapshot-testing from cache (2.21s)
Computing version for https://github.com/mattt/Replay.git
Computed https://github.com/mattt/Replay.git at 0.4.0 (12.52s)
Fetching https://github.com/swift-server/async-http-client.git
[1/15745] Fetching async-http-client
Fetched https://github.com/swift-server/async-http-client.git from cache (1.23s)
Computing version for https://github.com/WeTransfer/Mocker
Computed https://github.com/WeTransfer/Mocker at 3.0.2 (6.65s)
Computing version for https://github.com/pointfreeco/xctest-dynamic-overlay
Computed https://github.com/pointfreeco/xctest-dynamic-overlay at 1.9.0 (0.45s)
Computing version for https://github.com/pointfreeco/swift-snapshot-testing
Computed https://github.com/pointfreeco/swift-snapshot-testing at 1.18.9 (0.46s)
Computing version for https://github.com/pointfreeco/swift-custom-dump
Computed https://github.com/pointfreeco/swift-custom-dump at 1.5.0 (0.38s)
Computing version for https://github.com/pointfreeco/swift-concurrency-extras
Computed https://github.com/pointfreeco/swift-concurrency-extras at 1.3.2 (0.55s)
Computing version for https://github.com/pointfreeco/swift-clocks
Computed https://github.com/pointfreeco/swift-clocks at 1.0.6 (0.39s)
Computing version for https://github.com/apple/swift-http-types.git
Computed https://github.com/apple/swift-http-types.git at 1.3.1 (0.59s)
Computing version for https://github.com/apple/swift-crypto.git
Computed https://github.com/apple/swift-crypto.git at 4.2.0 (1.67s)
Computing version for https://github.com/apple/swift-argument-parser.git
Computed https://github.com/apple/swift-argument-parser.git at 1.7.0 (0.51s)
Computing version for https://github.com/swiftlang/swift-syntax
Computed https://github.com/swiftlang/swift-syntax at 600.0.1 (0.72s)
Computing version for https://github.com/apple/swift-asn1.git
Computed https://github.com/apple/swift-asn1.git at 1.3.1 (0.69s)
Computing version for https://github.com/swift-server/async-http-client.git
Computed https://github.com/swift-server/async-http-client.git at 1.33.1 (0.49s)
Fetching https://github.com/apple/swift-algorithms.git
Fetching https://github.com/apple/swift-distributed-tracing.git
[1/6058] Fetching swift-algorithms
[62/11827] Fetching swift-algorithms, swift-distributed-tracing
Fetched https://github.com/apple/swift-algorithms.git from cache (0.75s)
Fetching https://github.com/apple/swift-atomics.git
Fetched https://github.com/apple/swift-distributed-tracing.git from cache (0.87s)
Fetching https://github.com/apple/swift-log.git
[1/1820] Fetching swift-atomics
Fetched https://github.com/apple/swift-atomics.git from cache (0.74s)
Fetching https://github.com/apple/swift-nio-transport-services.git
[1/6671] Fetching swift-log
Fetched https://github.com/apple/swift-log.git from cache (0.88s)
Fetching https://github.com/apple/swift-nio-extras.git
[1/2847] Fetching swift-nio-transport-services
Fetched https://github.com/apple/swift-nio-transport-services.git from cache (0.58s)
Fetching https://github.com/apple/swift-nio-http2.git
[1/6519] Fetching swift-nio-extras
Fetched https://github.com/apple/swift-nio-extras.git from cache (0.78s)
Fetching https://github.com/apple/swift-nio-ssl.git
[1/12108] Fetching swift-nio-http2
[12109/27548] Fetching swift-nio-http2, swift-nio-ssl
Fetched https://github.com/apple/swift-nio-http2.git from cache (1.30s)
[1544/15440] Fetching swift-nio-ssl
Fetching https://github.com/apple/swift-nio.git
[15441/98651] Fetching swift-nio-ssl, swift-nio
Fetched https://github.com/apple/swift-nio-ssl.git from cache (2.27s)
[15811/83211] Fetching swift-nio
Fetched https://github.com/apple/swift-nio.git from cache (5.37s)
Computing version for https://github.com/apple/swift-distributed-tracing.git
Computed https://github.com/apple/swift-distributed-tracing.git at 1.4.1 (9.51s)
Fetching https://github.com/apple/swift-service-context.git
[1/1276] Fetching swift-service-context
Fetched https://github.com/apple/swift-service-context.git from cache (0.55s)
Computing version for https://github.com/apple/swift-algorithms.git
Computed https://github.com/apple/swift-algorithms.git at 1.2.1 (1.25s)
Fetching https://github.com/apple/swift-numerics.git
[1/6416] Fetching swift-numerics
Fetched https://github.com/apple/swift-numerics.git from cache (0.69s)
Computing version for https://github.com/apple/swift-service-context.git
Computed https://github.com/apple/swift-service-context.git at 1.3.0 (1.23s)
Computing version for https://github.com/apple/swift-atomics.git
Computed https://github.com/apple/swift-atomics.git at 1.3.0 (0.48s)
Computing version for https://github.com/apple/swift-numerics.git
Computed https://github.com/apple/swift-numerics.git at 1.1.1 (0.39s)
Computing version for https://github.com/apple/swift-nio-transport-services.git
Computed https://github.com/apple/swift-nio-transport-services.git at 1.28.0 (0.41s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.12.0 (0.42s)
Computing version for https://github.com/apple/swift-nio-http2.git
Computed https://github.com/apple/swift-nio-http2.git at 1.43.0 (0.38s)
Computing version for https://github.com/apple/swift-nio-ssl.git
Computed https://github.com/apple/swift-nio-ssl.git at 2.37.0 (0.37s)
Computing version for https://github.com/apple/swift-nio-extras.git
Computed https://github.com/apple/swift-nio-extras.git at 1.34.0 (0.47s)
Fetching https://github.com/swift-server/swift-service-lifecycle.git
Fetching https://github.com/apple/swift-async-algorithms.git
[1/2745] Fetching swift-service-lifecycle
[2746/8984] Fetching swift-service-lifecycle, swift-async-algorithms
Fetched https://github.com/swift-server/swift-service-lifecycle.git from cache (1.07s)
Fetched https://github.com/apple/swift-async-algorithms.git from cache (1.07s)
Fetching https://github.com/apple/swift-http-structured-headers.git
Fetching https://github.com/apple/swift-certificates.git
[1/1242] Fetching swift-http-structured-headers
[1243/8490] Fetching swift-http-structured-headers, swift-certificates
Fetched https://github.com/apple/swift-http-structured-headers.git from cache (0.71s)
Fetched https://github.com/apple/swift-certificates.git from cache (0.71s)
Computing version for https://github.com/swift-server/swift-service-lifecycle.git
Computed https://github.com/swift-server/swift-service-lifecycle.git at 2.11.0 (2.22s)
Computing version for https://github.com/apple/swift-async-algorithms.git
Computed https://github.com/apple/swift-async-algorithms.git at 1.1.3 (0.48s)
Fetching https://github.com/apple/swift-collections.git
[1/23800] Fetching swift-collections
Fetched https://github.com/apple/swift-collections.git from cache (1.29s)
Computing version for https://github.com/apple/swift-nio.git
Computed https://github.com/apple/swift-nio.git at 2.99.0 (2.02s)
Fetching https://github.com/apple/swift-system.git
[1/5601] Fetching swift-system
Fetched https://github.com/apple/swift-system.git from cache (0.67s)
Computing version for https://github.com/apple/swift-certificates.git
Computed https://github.com/apple/swift-certificates.git at 1.19.0 (1.34s)
Computing version for https://github.com/apple/swift-http-structured-headers.git
Computed https://github.com/apple/swift-http-structured-headers.git at 1.7.0 (0.50s)
Computing version for https://github.com/apple/swift-system.git
Computed https://github.com/apple/swift-system.git at 1.6.4 (0.45s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.4.1 (0.48s)
Creating working copy for https://github.com/apple/swift-crypto.git
Working copy of https://github.com/apple/swift-crypto.git resolved at 4.2.0
Creating working copy for https://github.com/apple/swift-nio.git
Working copy of https://github.com/apple/swift-nio.git resolved at 2.99.0
Creating working copy for https://github.com/apple/swift-nio-transport-services.git
Working copy of https://github.com/apple/swift-nio-transport-services.git resolved at 1.28.0
Creating working copy for https://github.com/apple/swift-service-context.git
Working copy of https://github.com/apple/swift-service-context.git resolved at 1.3.0
Creating working copy for https://github.com/apple/swift-http-structured-headers.git
Working copy of https://github.com/apple/swift-http-structured-headers.git resolved at 1.7.0
Creating working copy for https://github.com/apple/swift-async-algorithms.git
Working copy of https://github.com/apple/swift-async-algorithms.git resolved at 1.1.3
Creating working copy for https://github.com/apple/swift-algorithms.git
Working copy of https://github.com/apple/swift-algorithms.git resolved at 1.2.1
Creating working copy for https://github.com/apple/swift-asn1.git
Working copy of https://github.com/apple/swift-asn1.git resolved at 1.3.1
Creating working copy for https://github.com/apple/swift-http-types
Working copy of https://github.com/apple/swift-http-types resolved at 1.3.1
Creating working copy for https://github.com/apple/swift-system.git
Working copy of https://github.com/apple/swift-system.git resolved at 1.6.4
Creating working copy for https://github.com/pointfreeco/swift-concurrency-extras
Working copy of https://github.com/pointfreeco/swift-concurrency-extras resolved at 1.3.2
Creating working copy for https://github.com/WeTransfer/Mocker
Working copy of https://github.com/WeTransfer/Mocker resolved at 3.0.2
Creating working copy for https://github.com/apple/swift-collections.git
Working copy of https://github.com/apple/swift-collections.git resolved at 1.4.1
Creating working copy for https://github.com/apple/swift-distributed-tracing.git
Working copy of https://github.com/apple/swift-distributed-tracing.git resolved at 1.4.1
Creating working copy for https://github.com/pointfreeco/swift-clocks
Working copy of https://github.com/pointfreeco/swift-clocks resolved at 1.0.6
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.12.0
Creating working copy for https://github.com/apple/swift-argument-parser.git
Working copy of https://github.com/apple/swift-argument-parser.git resolved at 1.7.0
Creating working copy for https://github.com/swift-server/async-http-client.git
Working copy of https://github.com/swift-server/async-http-client.git resolved at 1.33.1
Creating working copy for https://github.com/pointfreeco/swift-custom-dump
Working copy of https://github.com/pointfreeco/swift-custom-dump resolved at 1.5.0
Creating working copy for https://github.com/swift-server/swift-service-lifecycle.git
Working copy of https://github.com/swift-server/swift-service-lifecycle.git resolved at 2.11.0
Creating working copy for https://github.com/swiftlang/swift-syntax
Working copy of https://github.com/swiftlang/swift-syntax resolved at 600.0.1
Creating working copy for https://github.com/mattt/Replay.git
Working copy of https://github.com/mattt/Replay.git resolved at 0.4.0
Creating working copy for https://github.com/apple/swift-numerics.git
Working copy of https://github.com/apple/swift-numerics.git resolved at 1.1.1
Creating working copy for https://github.com/pointfreeco/swift-snapshot-testing
Working copy of https://github.com/pointfreeco/swift-snapshot-testing resolved at 1.18.9
Creating working copy for https://github.com/pointfreeco/xctest-dynamic-overlay
Working copy of https://github.com/pointfreeco/xctest-dynamic-overlay resolved at 1.9.0
Creating working copy for https://github.com/apple/swift-nio-http2.git
Working copy of https://github.com/apple/swift-nio-http2.git resolved at 1.43.0
Creating working copy for https://github.com/apple/swift-nio-ssl.git
Working copy of https://github.com/apple/swift-nio-ssl.git resolved at 2.37.0
Creating working copy for https://github.com/apple/swift-certificates.git
Working copy of https://github.com/apple/swift-certificates.git resolved at 1.19.0
Creating working copy for https://github.com/apple/swift-atomics.git
Working copy of https://github.com/apple/swift-atomics.git resolved at 1.3.0
Creating working copy for https://github.com/apple/swift-nio-extras.git
Working copy of https://github.com/apple/swift-nio-extras.git resolved at 1.34.0
[1/1] Compiling plugin ReplayPlugin
[2/2] Compiling plugin GenerateManual
[3/3] Compiling plugin GenerateDoccReference
Building for debugging...
[3/35] Copying PrivacyInfo.xcprivacy
[3/35] Write sources
[33/35] Compiling _SwiftSyntaxCShims dummy.c
[34/35] Write swift-version--79AA4F9932D1E87A.txt
[36/41] Emitting module SwiftSyntax509
[37/41] Compiling SwiftSyntax509 Empty.swift
[38/41] Emitting module SwiftSyntax600
[39/41] Compiling SwiftSyntax600 Empty.swift
[40/41] Emitting module SwiftSyntax510
[41/41] Compiling SwiftSyntax510 Empty.swift
[42/72] Emitting module IssueReportingPackageSupport
[43/72] Compiling IssueReportingPackageSupport _Test.swift
[44/121] Emitting module SwiftSyntax
[45/144] Compiling SwiftSyntax AbsoluteSyntaxInfo.swift
[46/144] Compiling SwiftSyntax Assert.swift
[47/146] Compiling Mocker OnRequestHandler.swift
[48/146] Compiling Mocker XCTest+Mocker.swift
[49/146] Compiling SwiftSyntax AbsolutePosition.swift
[50/146] Compiling SwiftSyntax AbsoluteRawSyntax.swift
[51/146] Emitting module Mocker
[52/161] Emitting module SnapshotTesting
[53/172] Emitting module IssueReporting
[54/179] Compiling IssueReporting UncheckedSendable.swift
[55/179] Compiling IssueReporting Warn.swift
[56/179] Compiling IssueReporting XCTest.swift
[57/179] Compiling IssueReporting IsTesting.swift
[58/179] Compiling IssueReporting IssueReporter.swift
[59/179] Compiling IssueReporting BreakpointReporter.swift
[60/179] Compiling IssueReporting DefaultReporter.swift
[61/179] Compiling IssueReporting ErrorReporting.swift
[62/179] Compiling IssueReporting AppHostWarning.swift
[63/179] Compiling IssueReporting Deprecations.swift
[64/179] Compiling IssueReporting FailureObserver.swift
[65/179] Compiling IssueReporting LockIsolated.swift
[66/179] Compiling IssueReporting Rethrows.swift
[67/179] Compiling IssueReporting SwiftTesting.swift
[70/179] Compiling IssueReporting FatalErrorReporter.swift
[71/179] Compiling IssueReporting IssueSeverity.swift
[72/179] Compiling IssueReporting ReportIssue.swift
[73/179] Compiling IssueReporting TestContext.swift
[74/179] Compiling IssueReporting Unimplemented.swift
[75/179] Compiling IssueReporting WithExpectedIssue.swift
[76/179] Compiling IssueReporting WithIssueContext.swift
[77/179] Compiling SwiftSyntax SyntaxArena.swift
[78/179] Compiling SwiftSyntax SyntaxArenaAllocatedBuffer.swift
[86/186] Emitting module HTTPTypes
[87/188] Compiling HTTPTypes HTTPField.swift
[88/188] Compiling HTTPTypes HTTPFieldName.swift
[89/188] Compiling HTTPTypes HTTPFields.swift
[90/188] Compiling HTTPTypes HTTPParsedFields.swift
[91/188] Compiling HTTPTypes HTTPRequest.swift
[92/188] Compiling HTTPTypes HTTPResponse.swift
[93/188] Compiling HTTPTypes ISOLatin1String.swift
[94/188] Compiling HTTPTypes NIOLock.swift
[107/191] Compiling SnapshotTesting NSView.swift
[108/191] Compiling SnapshotTesting NSViewController.swift
[109/191] Compiling SnapshotTesting SceneKit.swift
[110/191] Compiling SnapshotTesting SpriteKit.swift
[111/191] Compiling SnapshotTesting String.swift
[112/191] Compiling SnapshotTesting SwiftUIView.swift
[113/191] Compiling SnapshotTesting UIBezierPath.swift
[114/191] Compiling SnapshotTesting UIImage.swift
[115/191] Compiling SnapshotTesting UIView.swift
[116/191] Compiling SnapshotTesting UIViewController.swift
[117/191] Compiling SnapshotTesting URLRequest.swift
[118/240] Emitting module XCTestDynamicOverlay
[119/240] Compiling XCTestDynamicOverlay Exports.swift
[120/240] Compiling XCTestDynamicOverlay Deprecations.swift
[121/249] Emitting module ConcurrencyExtras
[122/252] Compiling ConcurrencyExtras Locking.swift
[123/252] Compiling ConcurrencyExtras UncheckedBox.swift
[124/252] Compiling ConcurrencyExtras LockIsolated.swift
[125/252] Compiling ConcurrencyExtras MainSerialExecutor.swift
[126/252] Compiling ConcurrencyExtras ActorIsolated.swift
[127/252] Compiling ConcurrencyExtras AnyHashableSendable.swift
[128/252] Compiling ConcurrencyExtras AsyncStream.swift
[129/252] Compiling ConcurrencyExtras AsyncThrowingStream.swift
[130/252] Compiling ConcurrencyExtras Result.swift
[131/252] Compiling ConcurrencyExtras Task.swift
[132/252] Compiling ConcurrencyExtras UncheckedSendable.swift
[133/273] Emitting module Crypto
[134/296] Compiling Crypto Insecure_HashFunctions.swift
[135/296] Compiling Crypto MLKEM_boring.swift
[136/296] Compiling Crypto MLKEM_wrapper.swift
[137/296] Compiling Crypto XWing_boring.swift
[138/296] Compiling Crypto KEM-Errors.swift
[139/296] Compiling Crypto KEM.swift
[140/296] Compiling Crypto MLKEM.swift
[141/296] Compiling Crypto XWing.swift
[142/296] Compiling Crypto ECDH_boring.swift
[143/296] Compiling Crypto DH.swift
[144/296] Compiling Crypto ECDH.swift
[145/296] Compiling Crypto ANSIx963.swift
[146/296] Compiling Crypto HKDF.swift
[147/296] Compiling Crypto AESWrap.swift
[148/296] Compiling Crypto AESWrap_boring.swift
[149/296] Compiling Crypto Ed25519_boring.swift
[150/296] Compiling Crypto NISTCurvesKeys_boring.swift
[151/296] Compiling Crypto X25519Keys_boring.swift
[152/296] Compiling Crypto Curve25519.swift
[153/296] Compiling Crypto Ed25519Keys.swift
[154/296] Compiling Crypto NISTCurvesKeys.swift
[155/296] Compiling Crypto X25519Keys.swift
[156/296] Compiling Crypto SymmetricKeys.swift
[157/319] Compiling CustomDump SwiftUI.swift
[158/319] Compiling CustomDump UIKit.swift
[159/319] Compiling CustomDump UniformTypeIdentifiers.swift
[160/319] Compiling CustomDump UserNotifications.swift
[161/319] Compiling CustomDump UserNotificationsUI.swift
[162/319] Compiling CustomDump CustomDumpReflectable.swift
[163/319] Compiling CustomDump CustomDumpRepresentable.swift
[164/319] Compiling CustomDump CustomDumpStringConvertible.swift
[165/319] Compiling CustomDump Diff.swift
[166/319] Compiling CustomDump Dump.swift
[167/319] Compiling CustomDump CoreImage.swift
[168/319] Compiling CustomDump CoreLocation.swift
[169/319] Compiling CustomDump CoreMotion.swift
[170/319] Compiling CustomDump Foundation.swift
[171/319] Compiling CustomDump GameKit.swift
[172/319] Compiling CustomDump KeyPath.swift
[173/319] Compiling CustomDump Photos.swift
[174/319] Compiling CustomDump Speech.swift
[175/319] Compiling CustomDump StoreKit.swift
[176/319] Compiling CustomDump Swift.swift
[177/319] Compiling Crypto HPKE-Context.swift
[178/319] Compiling Crypto HPKE-KeySchedule.swift
[179/319] Compiling Crypto HPKE-Modes.swift
[180/319] Compiling Crypto Insecure.swift
[181/319] Compiling Crypto AES-GCM.swift
[182/319] Compiling Crypto AES-GCM_boring.swift
[183/319] Compiling Crypto ChaChaPoly_boring.swift
[184/319] Compiling Crypto ChaChaPoly.swift
[185/319] Compiling Crypto Cipher.swift
[186/319] Compiling Crypto Nonces.swift
[187/319] Compiling Crypto ASN1.swift
[188/319] Compiling Crypto ASN1Any.swift
[189/319] Compiling Crypto ASN1BitString.swift
[190/319] Compiling Crypto ASN1Boolean.swift
[191/319] Compiling Crypto ASN1Identifier.swift
[192/319] Compiling Crypto ASN1Integer.swift
[193/319] Compiling Crypto ASN1Null.swift
[194/319] Compiling Crypto ASN1OctetString.swift
[195/319] Compiling Crypto ASN1Strings.swift
[196/319] Compiling Crypto ArraySliceBigint.swift
[197/319] Compiling Crypto GeneralizedTime.swift
[198/319] Compiling Crypto ObjectIdentifier.swift
[199/319] Compiling Crypto ECDSASignature.swift
[200/319] Compiling Crypto PEMDocument.swift
[201/319] Compiling Crypto PKCS8PrivateKey.swift
[202/319] Compiling Crypto SEC1PrivateKey.swift
[203/319] Compiling Crypto SubjectPublicKeyInfo.swift
[204/319] Compiling Crypto CryptoError_boring.swift
[205/319] Compiling Crypto HMAC.swift
[206/319] Compiling Crypto MACFunctions.swift
[207/319] Compiling Crypto MessageAuthenticationCode.swift
[208/319] Compiling Crypto AES.swift
[209/319] Compiling Crypto ECDSASignature_boring.swift
[210/319] Compiling Crypto ECDSA_boring.swift
[211/319] Compiling Crypto EdDSA_boring.swift
[212/319] Compiling Crypto MLDSA_boring.swift
[213/319] Compiling Crypto MLDSA_wrapper.swift
[214/319] Compiling Crypto ECDSA.swift
[215/319] Compiling Crypto Ed25519.swift
[216/319] Compiling Crypto MLDSA.swift
[217/319] Compiling Crypto Signature.swift
[218/319] Compiling Crypto CryptoKitErrors_boring.swift
[219/319] Compiling Crypto Optional+withUnsafeBytes_boring.swift
[220/319] Compiling Crypto RNG_boring.swift
[221/319] Compiling Crypto SafeCompare_boring.swift
[222/319] Compiling Crypto Zeroization_boring.swift
[223/319] Compiling Crypto PrettyBytes.swift
[224/319] Compiling Crypto SafeCompare.swift
[225/319] Compiling Crypto SecureBytes.swift
[226/319] Compiling Crypto Zeroization.swift
[227/319] Compiling Crypto resource_bundle_accessor.swift
[228/326] Compiling Clocks _AsyncTimerSequence.swift
[229/326] Compiling Clocks SwiftUI.swift
[230/326] Compiling Clocks TestClock.swift
[231/326] Compiling Clocks AnyClock.swift
[232/326] Compiling Clocks ImmediateClock.swift
[233/326] Compiling Clocks Lock.swift
[276/326] Emitting module CustomDump
[280/336] Emitting module Clocks
[284/338] Compiling Clocks Timer.swift
[285/338] Compiling Clocks UnimplementedClock.swift
[286/356] Compiling CustomDump ExpectDifference.swift
[287/356] Compiling CustomDump ExpectNoDifference.swift
[288/356] Compiling CustomDump AnyType.swift
[289/356] Compiling CustomDump CollectionDifference.swift
[290/356] Compiling CustomDump Identifiable.swift
[291/356] Compiling CustomDump Mirror.swift
[292/356] Compiling CustomDump String.swift
[293/356] Compiling CustomDump Unordered.swift
[294/356] Compiling CustomDump XCTAssertDifference.swift
[295/356] Compiling CustomDump XCTAssertNoDifference.swift
[296/356] Compiling Helpers HTTPFields.swift
[297/356] Compiling Helpers HTTPRequest.swift
[298/356] Compiling Helpers HTTPResponse.swift
[299/356] Compiling Helpers LoggerInterceptor.swift
[300/356] Compiling Helpers RetryRequestInterceptor.swift
[301/356] Compiling Helpers JWT.swift
[302/356] Compiling Helpers OSLogSupabaseLogger.swift
[303/356] Compiling Helpers SupabaseLogger.swift
[304/356] Compiling Helpers AnyJSON+Codable.swift
[305/356] Compiling Helpers AnyJSON.swift
[306/356] Compiling Helpers AsyncValueSubject.swift
[307/356] Compiling Helpers Base64URL.swift
[308/356] Compiling Helpers Codable.swift
[309/356] Compiling Helpers DateFormatter.swift
[310/356] Compiling Helpers EventEmitter.swift
[311/356] Compiling Helpers FoundationExtensions.swift
[312/356] Compiling Helpers HTTPClient.swift
[316/358] Emitting module SnapshotTestingCustomDump
[317/358] Compiling SnapshotTestingCustomDump CustomDump.swift
[318/358] Emitting module Helpers
[336/366] Compiling Helpers HTTPError.swift
[337/366] Compiling Helpers PostgrestError.swift
[338/366] Compiling Helpers Task+withTimeout.swift
[339/366] Compiling Helpers TaskLocalHelpers.swift
[340/366] Compiling Helpers URLSession+AsyncAwait.swift
[341/366] Compiling Helpers Version.swift
[342/366] Compiling Helpers _Clock.swift
[343/366] Compiling Helpers _HTTPClient.swift
[344/392] Emitting module Realtime
[345/399] Compiling Realtime PostgresAction.swift
[346/399] Compiling Realtime PostgresActionData.swift
[347/399] Compiling Realtime PresenceAction.swift
[348/399] Compiling Realtime PushV2.swift
[349/403] Emitting module Storage
[350/403] Compiling Realtime CallbackManager.swift
[351/403] Compiling Realtime ChannelEvent.swift
[352/403] Compiling Realtime ChannelStateManager.swift
[353/403] Compiling Realtime ConnectionManager.swift
[354/403] Compiling Realtime Exports.swift
[355/403] Compiling Storage StorageHTTPClient.swift
[358/403] Compiling Storage SupabaseStorage.swift
[360/403] Compiling Storage TransformOptions.swift
[362/403] Compiling Storage Types.swift
[372/403] Compiling Realtime RealtimeJoinConfig.swift
[373/403] Compiling Realtime RealtimeLifecycleManager.swift
[374/410] Compiling Realtime RealtimeMessageV2.swift
[375/410] Compiling Realtime RealtimePostgresFilter.swift
[376/410] Compiling Realtime RealtimePostgresFilterValue.swift
[377/410] Compiling Realtime RealtimeSerializer.swift
[378/410] Compiling Realtime Types.swift
[379/410] Compiling Realtime URLSessionWebSocket.swift
[380/410] Compiling Realtime WebSocket.swift
[381/413] Emitting module PostgREST
[382/416] Compiling Functions FunctionsClient.swift
[383/416] Compiling Functions Exports.swift
[384/416] Emitting module Functions
[385/417] Compiling PostgREST Defaults.swift
[386/417] Compiling PostgREST Exports.swift
[387/417] Compiling PostgREST PostgrestBuilder.swift
[388/417] Compiling PostgREST PostgrestClient.swift
[389/417] Compiling PostgREST PostgrestFilterBuilder.swift
[390/417] Compiling PostgREST PostgrestFilterValue.swift
[391/417] Compiling Functions Types.swift
[392/417] Compiling PostgREST PostgrestQueryBuilder.swift
[393/417] Compiling PostgREST PostgrestTransformBuilder.swift
[394/417] Compiling PostgREST Types.swift
[395/436] Emitting module Auth
[396/445] Compiling Auth APIClient.swift
[397/445] Compiling Auth CodeVerifierStorage.swift
[398/445] Compiling Auth Constants.swift
[399/445] Compiling Auth Dependencies.swift
[400/445] Compiling Auth EventEmitter.swift
[401/445] Compiling Auth FixedWidthInteger+Random.swift
[402/445] Compiling Auth Helpers.swift
[403/445] Compiling Auth JWK+RSA.swift
[404/445] Compiling Auth JWTAlgorithm.swift
[405/445] Compiling Auth AuthAdmin.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:378:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 376 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 377 |         body: configuration.encoder.encode(
 378 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 379 |             email: email,
 380 |             password: password,

/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:405:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 403 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 404 |         body: configuration.encoder.encode(
 405 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 406 |             password: password,
 407 |             phone: phone,
[406/445] Compiling Auth AuthAdminOAuth.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:378:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 376 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 377 |         body: configuration.encoder.encode(
 378 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 379 |             email: email,
 380 |             password: password,

/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:405:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 403 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 404 |         body: configuration.encoder.encode(
 405 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 406 |             password: password,
 407 |             phone: phone,
[407/445] Compiling Auth AuthClient.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:378:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 376 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 377 |         body: configuration.encoder.encode(
 378 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 379 |             email: email,
 380 |             password: password,

/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:405:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 403 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 404 |         body: configuration.encoder.encode(
 405 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 406 |             password: password,
 407 |             phone: phone,
[408/445] Compiling Auth AuthClientConfiguration.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:378:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 376 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 377 |         body: configuration.encoder.encode(
 378 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 379 |             email: email,
 380 |             password: password,

/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:405:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 403 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 404 |         body: configuration.encoder.encode(
 405 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 406 |             password: password,
 407 |             phone: phone,
[409/445] Compiling Auth AuthError.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:378:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 376 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 377 |         body: configuration.encoder.encode(
 378 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 379 |             email: email,
 380 |             password: password,

/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:405:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 403 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 404 |         body: configuration.encoder.encode(
 405 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 406 |             password: password,
 407 |             phone: phone,
[410/445] Compiling Auth AuthMFA.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:378:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 376 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 377 |         body: configuration.encoder.encode(
 378 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 379 |             email: email,
 380 |             password: password,

/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:405:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 403 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 404 |         body: configuration.encoder.encode(
 405 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 406 |             password: password,
 407 |             phone: phone,
[411/445] Compiling Auth AuthStateChangeListener.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:378:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 376 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 377 |         body: configuration.encoder.encode(
 378 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 379 |             email: email,
 380 |             password: password,

/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:405:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 403 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 404 |         body: configuration.encoder.encode(
 405 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 406 |             password: password,
 407 |             phone: phone,
[412/445] Compiling Auth Defaults.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:378:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 376 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 377 |         body: configuration.encoder.encode(
 378 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 379 |             email: email,
 380 |             password: password,

/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:405:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 403 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 404 |         body: configuration.encoder.encode(
 405 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 406 |             password: password,
 407 |             phone: phone,
[413/445] Compiling Auth Exports.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:378:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 376 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 377 |         body: configuration.encoder.encode(
 378 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 379 |             email: email,
 380 |             password: password,

/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/AuthClient.swift:405:11: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 403 |         query: [URLQueryItem(name: "grant_type", value: "password")],
 404 |         body: configuration.encoder.encode(
 405 |           UserCredentials(
     |           `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 406 |             password: password,
 407 |             phone: phone,
[414/445] Compiling Auth Keychain.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/Internal/SessionManager.swift:88:17: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 86 |               ],
 87 |               body: configuration.encoder.encode(
 88 |                 UserCredentials(refreshToken: refreshToken)
    |                 `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 89 |               )
 90 |             )
[415/445] Compiling Auth PKCE.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/Internal/SessionManager.swift:88:17: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 86 |               ],
 87 |               body: configuration.encoder.encode(
 88 |                 UserCredentials(refreshToken: refreshToken)
    |                 `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 89 |               )
 90 |             )
[416/445] Compiling Auth SessionManager.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/Internal/SessionManager.swift:88:17: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 86 |               ],
 87 |               body: configuration.encoder.encode(
 88 |                 UserCredentials(refreshToken: refreshToken)
    |                 `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 89 |               )
 90 |             )
[417/445] Compiling Auth SessionStorage.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/Internal/SessionManager.swift:88:17: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 86 |               ],
 87 |               body: configuration.encoder.encode(
 88 |                 UserCredentials(refreshToken: refreshToken)
    |                 `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 89 |               )
 90 |             )
[418/445] Compiling Auth URLOpener.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/Internal/SessionManager.swift:88:17: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 86 |               ],
 87 |               body: configuration.encoder.encode(
 88 |                 UserCredentials(refreshToken: refreshToken)
    |                 `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 89 |               )
 90 |             )
[419/445] Compiling Auth AuthLocalStorage.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/Internal/SessionManager.swift:88:17: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 86 |               ],
 87 |               body: configuration.encoder.encode(
 88 |                 UserCredentials(refreshToken: refreshToken)
    |                 `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 89 |               )
 90 |             )
[420/445] Compiling Auth KeychainLocalStorage.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/Internal/SessionManager.swift:88:17: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 86 |               ],
 87 |               body: configuration.encoder.encode(
 88 |                 UserCredentials(refreshToken: refreshToken)
    |                 `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 89 |               )
 90 |             )
[421/445] Compiling Auth WinCredLocalStorage.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/Internal/SessionManager.swift:88:17: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 86 |               ],
 87 |               body: configuration.encoder.encode(
 88 |                 UserCredentials(refreshToken: refreshToken)
    |                 `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 89 |               )
 90 |             )
[422/445] Compiling Auth Types.swift
/Users/runner/work/supabase-swift/supabase-swift/Sources/Auth/Internal/SessionManager.swift:88:17: warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 86 |               ],
 87 |               body: configuration.encoder.encode(
 88 |                 UserCredentials(refreshToken: refreshToken)
    |                 `- warning: 'UserCredentials' is deprecated: Access to UserCredentials will be removed on the next major release.
 89 |               )
 90 |             )
[423/449] Compiling Supabase Constants.swift
[424/449] Compiling Supabase Exports.swift
[425/449] Emitting module Supabase
[426/449] Compiling Supabase SupabaseClient.swift
[427/450] Compiling Supabase Types.swift
[451/494] Compiling SwiftParser CharacterInfo.swift
[452/494] Compiling SwiftParser CollectionNodes+Parsable.swift
[453/495] Compiling SwiftBasicFormat Trivia+FormatExtensions.swift
[454/495] Compiling SwiftParser Attributes.swift
[455/495] Compiling SwiftParser Availability.swift
[458/495] Emitting module SwiftDiagnostics
[459/495] Compiling SwiftParser Declarations.swift
[460/495] Compiling SwiftParser Directives.swift
[461/495] Compiling SwiftParser ExpressionInterpretedAsVersionTuple.swift
[464/498] Emitting module SwiftBasicFormat
[465/498] Compiling SwiftDiagnostics GroupedDiagnostics.swift
[466/498] Compiling SwiftDiagnostics Message.swift
[467/498] Compiling SwiftDiagnostics Note.swift
[468/498] Emitting module SwiftParser
[469/513] Compiling SwiftParser UnicodeScalarExtensions.swift
[470/513] Compiling SwiftParser Lookahead.swift
[471/513] Compiling SwiftParser LoopProgressCondition.swift
[472/513] Compiling SwiftParser Modifiers.swift
[473/513] Compiling SwiftParser Names.swift
[474/513] Compiling SwiftParser Nominals.swift
[475/513] Compiling SwiftParser Parameters.swift
[476/513] Compiling SwiftParser ParseSourceFile.swift
[477/513] Compiling SwiftParser Parser.swift
[478/513] Compiling SwiftParser Patterns.swift
[479/513] Compiling SwiftParser Recovery.swift
[480/513] Compiling SwiftParser Specifiers.swift
[481/513] Compiling SwiftParser Statements.swift
[482/513] Compiling SwiftParser StringLiteralRepresentedLiteralValue.swift
[483/513] Compiling SwiftParser StringLiterals.swift
[494/513] Compiling SwiftParser Cursor.swift
[495/513] Compiling SwiftParser Lexeme.swift
[496/513] Compiling SwiftParser LexemeSequence.swift
[497/513] Compiling SwiftParser Lexer.swift
[498/513] Compiling SwiftParser RegexLiteralLexer.swift
[499/513] Compiling SwiftParser SwiftParserCompatibility.swift
[500/513] Compiling SwiftParser SwiftVersion.swift
[501/513] Compiling SwiftParser SyntaxUtils.swift
[502/513] Compiling SwiftParser TokenConsumer.swift
[503/513] Compiling SwiftParser TokenPrecedence.swift
[504/513] Compiling SwiftParser TokenSpec.swift
[505/513] Compiling SwiftParser TokenSpecSet.swift
[506/513] Compiling SwiftParser TopLevel.swift
[507/513] Compiling SwiftParser TriviaParser.swift
[508/513] Compiling SwiftParser Types.swift
[509/513] Compiling SwiftParser ExperimentalFeatures.swift
[510/513] Compiling SwiftParser IsLexerClassified.swift
[511/513] Compiling SwiftParser LayoutNodes+Parsable.swift
[512/513] Compiling SwiftParser Parser+TokenSpecSet.swift
[513/513] Compiling SwiftParser TokenSpecStaticMembers.swift
[514/523] Emitting module SwiftParserDiagnostics
[515/523] Compiling SwiftParserDiagnostics DiagnosticExtensions.swift
[516/523] Compiling SwiftParserDiagnostics LexerDiagnosticMessages.swift
[517/523] Compiling SwiftParserDiagnostics MissingNodesError.swift
[518/523] Compiling SwiftParserDiagnostics MissingTokenError.swift
[519/523] Compiling SwiftParserDiagnostics MultiLineStringLiteralDiagnosticsGenerator.swift
[520/523] Compiling SwiftParserDiagnostics ParseDiagnosticsGenerator.swift
[521/523] Compiling SwiftParserDiagnostics ParserDiagnosticMessages.swift
[522/523] Compiling SwiftParserDiagnostics PresenceUtils.swift
[523/523] Compiling SwiftParserDiagnostics SyntaxExtensions.swift
[524/527] Compiling SwiftParserDiagnostics Utils.swift
[525/527] Compiling SwiftParserDiagnostics ChildNameForDiagnostics.swift
[526/527] Compiling SwiftParserDiagnostics SyntaxKindNameForDiagnostics.swift
[527/527] Compiling SwiftParserDiagnostics TokenNameForDiagnostics.swift
[528/538] Compiling SwiftSyntaxBuilder ConvenienceInitializers.swift
[529/538] Compiling SwiftSyntaxBuilder DeclSyntaxParseable.swift
[530/538] Compiling SwiftSyntaxBuilder Indenter.swift
[531/538] Compiling SwiftSyntaxBuilder ListBuilder.swift
[532/538] Compiling SwiftSyntaxBuilder ResultBuilderExtensions.swift
[533/538] Emitting module SwiftSyntaxBuilder
[534/543] Compiling SwiftSyntaxBuilder SwiftSyntaxBuilderCompatibility.swift
[535/543] Compiling SwiftSyntaxBuilder Syntax+StringInterpolation.swift
[536/543] Compiling SwiftSyntaxBuilder SyntaxNodeWithBody.swift
[537/543] Compiling SwiftSyntaxBuilder SyntaxParsable+ExpressibleByStringInterpolation.swift
[538/543] Compiling SwiftSyntaxBuilder ValidatingSyntaxNodes.swift
[539/543] Compiling SwiftSyntaxBuilder WithTrailingCommaSyntax+EnsuringTrailingComma.swift
[540/543] Compiling SwiftSyntaxBuilder BuildableNodes.swift
[541/543] Compiling SwiftSyntaxBuilder RenamedChildrenBuilderCompatibility.swift
[542/543] Compiling SwiftSyntaxBuilder ResultBuilders.swift
[543/543] Compiling SwiftSyntaxBuilder SyntaxExpressibleByStringInterpolationConformances.swift
[544/546] Emitting module InlineSnapshotTesting
[545/546] Compiling InlineSnapshotTesting AssertInlineSnapshot.swift
[546/546] Compiling InlineSnapshotTesting Exports.swift
[547/552] Emitting module TestHelpers
[548/554] Compiling TestHelpers AsyncSequence.swift
[549/554] Compiling TestHelpers Exports.swift
[550/554] Compiling TestHelpers HTTPClientMock.swift
[551/554] Compiling TestHelpers InMemoryLocalStorage.swift
[552/554] Compiling TestHelpers MockExtensions.swift
[553/554] Compiling TestHelpers URLRequestSnapshot.swift
[554/554] Compiling TestHelpers WithMainSerialExecutor+Windows.swift
Build complete! (99.85s)
warning: 'swift-snapshot-testing': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/runner/work/supabase-swift/supabase-swift/.build/arm64-apple-macosx/apidiff/aef63d63c3a72f6cd9e009b2d68719deaad9c1ab-checkout/.build/checkouts/swift-snapshot-testing/Sources/InlineSnapshotTesting/Documentation.docc
warning: 'swift-syntax': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/runner/work/supabase-swift/supabase-swift/.build/arm64-apple-macosx/apidiff/aef63d63c3a72f6cd9e009b2d68719deaad9c1ab-checkout/.build/checkouts/swift-syntax/Sources/SwiftSyntaxBuilder/Documentation.docc
warning: 'swift-syntax': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/runner/work/supabase-swift/supabase-swift/.build/arm64-apple-macosx/apidiff/aef63d63c3a72f6cd9e009b2d68719deaad9c1ab-checkout/.build/checkouts/swift-syntax/Sources/SwiftBasicFormat/SwiftBasicFormat.docc
warning: 'swift-syntax': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/runner/work/supabase-swift/supabase-swift/.build/arm64-apple-macosx/apidiff/aef63d63c3a72f6cd9e009b2d68719deaad9c1ab-checkout/.build/checkouts/swift-syntax/Sources/SwiftParser/SwiftParser.docc
warning: 'swift-syntax': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/runner/work/supabase-swift/supabase-swift/.build/arm64-apple-macosx/apidiff/aef63d63c3a72f6cd9e009b2d68719deaad9c1ab-checkout/.build/checkouts/swift-syntax/Sources/SwiftSyntax/Documentation.docc
warning: 'swift-snapshot-testing': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/runner/work/supabase-swift/supabase-swift/.build/arm64-apple-macosx/apidiff/aef63d63c3a72f6cd9e009b2d68719deaad9c1ab-checkout/.build/checkouts/swift-snapshot-testing/Sources/SnapshotTesting/Documentation.docc
warning: 'swift-custom-dump': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/runner/work/supabase-swift/supabase-swift/.build/arm64-apple-macosx/apidiff/aef63d63c3a72f6cd9e009b2d68719deaad9c1ab-checkout/.build/checkouts/swift-custom-dump/Sources/CustomDump/Documentation.docc
warning: 'swift-crypto': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/runner/work/supabase-swift/supabase-swift/.build/arm64-apple-macosx/apidiff/aef63d63c3a72f6cd9e009b2d68719deaad9c1ab-checkout/.build/checkouts/swift-crypto/Sources/Crypto/Docs.docc
warning: 'xctest-dynamic-overlay': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/runner/work/supabase-swift/supabase-swift/.build/arm64-apple-macosx/apidiff/aef63d63c3a72f6cd9e009b2d68719deaad9c1ab-checkout/.build/checkouts/xctest-dynamic-overlay/Sources/XCTestDynamicOverlay/Documentation.docc
warning: 'swift-clocks': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/runner/work/supabase-swift/supabase-swift/.build/arm64-apple-macosx/apidiff/aef63d63c3a72f6cd9e009b2d68719deaad9c1ab-checkout/.build/checkouts/swift-clocks/Sources/Clocks/Documentation.docc
warning: 'xctest-dynamic-overlay': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/runner/work/supabase-swift/supabase-swift/.build/arm64-apple-macosx/apidiff/aef63d63c3a72f6cd9e009b2d68719deaad9c1ab-checkout/.build/checkouts/xctest-dynamic-overlay/Sources/IssueReporting/Documentation.docc
warning: 'swift-http-types': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/runner/work/supabase-swift/supabase-swift/.build/arm64-apple-macosx/apidiff/aef63d63c3a72f6cd9e009b2d68719deaad9c1ab-checkout/.build/checkouts/swift-http-types/Sources/HTTPTypes/Docs.docc
warning: 'swift-concurrency-extras': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/runner/work/supabase-swift/supabase-swift/.build/arm64-apple-macosx/apidiff/aef63d63c3a72f6cd9e009b2d68719deaad9c1ab-checkout/.build/checkouts/swift-concurrency-extras/Sources/ConcurrencyExtras/Documentation.docc
Building for debugging...
[0/32] Copying PrivacyInfo.xcprivacy
[1/32] Write sources
[30/32] Compiling _SwiftSyntaxCShims dummy.c
[31/32] Write swift-version--79AA4F9932D1E87A.txt
[33/38] Emitting module SwiftSyntax509
[34/38] Compiling SwiftSyntax509 Empty.swift
[35/38] Emitting module SwiftSyntax600
[36/38] Compiling SwiftSyntax600 Empty.swift
[37/38] Emitting module SwiftSyntax510
[38/38] Compiling SwiftSyntax510 Empty.swift
[39/69] Emitting module IssueReportingPackageSupport
[40/69] Compiling IssueReportingPackageSupport _Test.swift
[41/118] Compiling SwiftSyntax AbsolutePosition.swift
[42/118] Compiling SwiftSyntax AbsoluteRawSyntax.swift
[43/118] Compiling SwiftSyntax AbsoluteSyntaxInfo.swift
[44/118] Compiling SwiftSyntax Assert.swift
[45/118] Compiling SwiftSyntax BumpPtrAllocator.swift
[46/118] Compiling SwiftSyntax CommonAncestor.swift
[47/118] Compiling SwiftSyntax Convenience.swift
[48/118] Compiling SwiftSyntax CustomTraits.swift
[49/118] Compiling SwiftSyntax Identifier.swift
[50/118] Compiling SwiftSyntax MemoryLayout.swift
[51/118] Compiling SwiftSyntax MissingNodeInitializers.swift
[52/118] Compiling SwiftSyntax RawSyntax.swift
[53/118] Compiling SwiftSyntax RawSyntaxLayoutView.swift
[54/118] Compiling SwiftSyntax RawSyntaxNodeProtocol.swift
[55/118] Compiling SwiftSyntax RawSyntaxTokenView.swift
[56/118] Compiling SwiftSyntax SourceEdit.swift
[57/118] Compiling SwiftSyntax SourceLength.swift
[58/118] Compiling SwiftSyntax SourceLocation.swift
[59/118] Compiling SwiftSyntax SourcePresence.swift
[60/118] Compiling SwiftSyntax SwiftSyntaxCompatibility.swift
[61/118] Compiling SwiftSyntax Syntax.swift
[62/118] Compiling SwiftSyntax SyntaxArena.swift
[63/118] Compiling SwiftSyntax SyntaxArenaAllocatedBuffer.swift
[64/118] Compiling SwiftSyntax SyntaxChildren.swift
[65/141] Emitting module SwiftSyntax
[68/143] Compiling Mocker OnRequestHandler.swift
[69/143] Compiling Mocker XCTest+Mocker.swift
[70/143] Emitting module Mocker
[73/158] Emitting module IssueReporting
[74/165] Compiling IssueReporting UncheckedSendable.swift
[75/165] Compiling IssueReporting Warn.swift
[76/165] Compiling IssueReporting XCTest.swift
[77/165] Compiling IssueReporting IsTesting.swift
[78/165] Compiling IssueReporting IssueReporter.swift
[79/165] Compiling IssueReporting BreakpointReporter.swift
[80/165] Compiling IssueReporting DefaultReporter.swift
[81/165] Compiling IssueReporting ErrorReporting.swift
[82/165] Compiling IssueReporting AppHostWarning.swift
[83/165] Compiling IssueReporting Deprecations.swift
[84/165] Compiling IssueReporting FailureObserver.swift
[85/165] Compiling IssueReporting LockIsolated.swift
[86/165] Compiling IssueReporting Rethrows.swift
[87/165] Compiling IssueReporting SwiftTesting.swift
[90/165] Compiling IssueReporting FatalErrorReporter.swift
[91/165] Compiling IssueReporting IssueSeverity.swift
[92/165] Compiling IssueReporting ReportIssue.swift
[93/165] Compiling IssueReporting TestContext.swift
[94/165] Compiling IssueReporting Unimplemented.swift
[95/165] Compiling IssueReporting WithExpectedIssue.swift
[96/165] Compiling IssueReporting WithIssueContext.swift
[106/183] Emitting module HTTPTypes
[107/185] Compiling HTTPTypes ISOLatin1String.swift
[108/185] Compiling HTTPTypes NIOLock.swift
[109/185] Emitting module SnapshotTesting
[110/185] Compiling HTTPTypes HTTPField.swift
[111/185] Compiling HTTPTypes HTTPFieldName.swift
[112/185] Compiling HTTPTypes HTTPFields.swift
[113/185] Compiling HTTPTypes HTTPParsedFields.swift
[114/185] Compiling HTTPTypes HTTPRequest.swift
[115/185] Compiling HTTPTypes HTTPResponse.swift
[128/188] Compiling XCTestDynamicOverlay Exports.swift
[129/188] Emitting module XCTestDynamicOverlay
[130/188] Compiling XCTestDynamicOverlay Deprecations.swift
[131/237] Compiling Crypto CryptoError_boring.swift
[132/237] Compiling Crypto CryptoKitErrors.swift
[133/237] Compiling Crypto Digest_boring.swift
[134/237] Compiling Crypto Digest.swift
[135/237] Compiling Crypto Digests.swift
[136/237] Compiling Crypto HashFunctions.swift
[137/237] Compiling Crypto HashFunctions_SHA2.swift
[138/237] Compiling Crypto HashFunctions_SHA3.swift
[139/237] Compiling Crypto Digest_xkcp.swift
[140/237] Compiling Crypto HPKE-AEAD.swift
[141/237] Compiling Crypto HPKE-Ciphersuite.swift
[142/258] Emitting module Crypto
[143/258] Compiling CustomDump SwiftUI.swift
[144/258] Compiling CustomDump UIKit.swift
[145/258] Compiling CustomDump UniformTypeIdentifiers.swift
[146/258] Compiling CustomDump UserNotifications.swift
[147/258] Compiling CustomDump UserNotificationsUI.swift
[148/258] Compiling CustomDump CustomDumpReflectable.swift
[149/258] Compiling CustomDump CustomDumpRepresentable.swift
[150/258] Compiling CustomDump CustomDumpStringConvertible.swift
[151/258] Compiling CustomDump Diff.swift
[152/258] Compiling CustomDump Dump.swift
[153/258] Compiling CustomDump CoreImage.swift
[154/258] Compiling CustomDump CoreLocation.swift
[155/258] Compiling CustomDump CoreMotion.swift
[156/258] Compiling CustomDump Foundation.swift
[157/258] Compiling CustomDump GameKit.swift
[158/258] Compiling CustomDump KeyPath.swift
[159/258] Compiling CustomDump Photos.swift
[160/258] Compiling CustomDump Speech.swift
[161/258] Compiling CustomDump StoreKit.swift
[162/258] Compiling CustomDump Swift.swift
[163/258] Compiling Crypto PKCS8PrivateKey.swift
[164/258] Compiling Crypto SEC1PrivateKey.swift
[165/258] Compiling Crypto SubjectPublicKeyInfo.swift
[177/258] Compiling Crypto HPKE-KDF.swift
[178/258] Compiling Crypto HPKE-KexKeyDerivation.swift
[179/258] Compiling Crypto HPKE-LabeledExtract.swift
[180/258] Compiling Crypto HPKE-Utils.swift
[181/258] Compiling Crypto DHKEM.swift
[182/258] Compiling Crypto HPKE-KEM-Curve25519.swift
[183/258] Compiling Crypto HPKE-NIST-EC-KEMs.swift
[184/258] Compiling Crypto HPKE-KEM.swift
[185/258] Compiling Crypto HPKE-Errors.swift
[186/258] Compiling Crypto HPKE.swift
[187/258] Compiling Crypto HPKE-Context.swift
[188/258] Compiling Crypto HPKE-KeySchedule.swift
[189/258] Compiling Crypto HPKE-Modes.swift
[190/258] Compiling Crypto Insecure.swift
[191/304] Compiling Crypto Insecure_HashFunctions.swift
[192/304] Compiling Crypto MLKEM_boring.swift
[193/304] Compiling Crypto MLKEM_wrapper.swift
[194/304] Compiling Crypto XWing_boring.swift
[195/304] Compiling Crypto KEM-Errors.swift
[196/304] Compiling Crypto KEM.swift
[197/304] Compiling Crypto MLKEM.swift
[198/304] Compiling Crypto XWing.swift
[199/304] Compiling Crypto ECDH_boring.swift
[200/304] Compiling Crypto DH.swift
[201/304] Compiling Crypto ECDH.swift
[202/304] Compiling Crypto ANSIx963.swift
[203/304] Compiling Crypto HKDF.swift
[204/304] Compiling Crypto AESWrap.swift
[205/304] Compiling Crypto AESWrap_boring.swift
[206/304] Compiling Crypto Ed25519_boring.swift
[207/304] Compiling Crypto NISTCurvesKeys_boring.swift
[208/304] Compiling Crypto X25519Keys_boring.swift
[209/304] Compiling Crypto Curve25519.swift
[210/304] Compiling Crypto Ed25519Keys.swift
[211/304] Compiling Crypto NISTCurvesKeys.swift
[212/304] Compiling Crypto X25519Keys.swift
[213/304] Compiling Crypto SymmetricKeys.swift
[214/304] Compiling Crypto HMAC.swift
[215/304] Compiling Crypto MACFunctions.swift
[216/304] Compiling Crypto MessageAuthenticationCode.swift
[217/304] Compiling Crypto AES.swift
[218/304] Compiling Crypto ECDSASignature_boring.swift
[219/304] Compiling Crypto ECDSA_boring.swift
[220/304] Compiling Crypto EdDSA_boring.swift
[221/304] Compiling Crypto MLDSA_boring.swift
[222/304] Compiling Crypto MLDSA_wrapper.swift
[223/304] Compiling Crypto ECDSA.swift
[224/304] Compiling Crypto Ed25519.swift
[225/304] Compiling Crypto MLDSA.swift
[226/304] Compiling Crypto Signature.swift
[227/304] Compiling Crypto CryptoKitErrors_boring.swift
[228/304] Compiling Crypto Optional+withUnsafeBytes_boring.swift
[229/304] Compiling Crypto RNG_boring.swift
[230/304] Compiling Crypto SafeCompare_boring.swift
[231/304] Compiling Crypto Zeroization_boring.swift
[232/304] Compiling Crypto PrettyBytes.swift
[233/304] Compiling Crypto SafeCompare.swift
[234/304] Compiling Crypto SecureBytes.swift
[235/304] Compiling Crypto Zeroization.swift
[236/304] Compiling Crypto resource_bundle_accessor.swift
[237/313] Emitting module ConcurrencyExtras
[238/316] Compiling ConcurrencyExtras Locking.swift
[239/316] Compiling ConcurrencyExtras UncheckedBox.swift
[240/316] Compiling ConcurrencyExtras LockIsolated.swift
[241/316] Compiling ConcurrencyExtras MainSerialExecutor.swift
[266/316] Compiling ConcurrencyExtras ActorIsolated.swift
[267/316] Compiling ConcurrencyExtras AnyHashableSendable.swift
[268/316] Compiling ConcurrencyExtras AsyncStream.swift
[269/316] Compiling ConcurrencyExtras AsyncThrowingStream.swift
[270/316] Compiling ConcurrencyExtras Result.swift
[271/316] Compiling ConcurrencyExtras Task.swift
[272/316] Compiling ConcurrencyExtras UncheckedSendable.swift
[273/323] Emitting module Clocks
[274/325] Compiling Clocks AnyClock.swift
[275/325] Compiling Clocks ImmediateClock.swift
[276/325] Compiling Clocks Lock.swift
[277/325] Compiling Clocks _AsyncTimerSequence.swift
[278/325] Compiling Clocks SwiftUI.swift
[279/325] Compiling Clocks TestClock.swift
[280/325] Compiling Clocks Timer.swift
[281/325] Compiling Clocks UnimplementedClock.swift
[282/343] Compiling Helpers AnyJSON+Codable.swift
[283/343] Compiling Helpers AnyJSON.swift
[284/343] Compiling Helpers AsyncValueSubject.swift
[285/343] Compiling Helpers Base64URL.swift
[286/343] Compiling Helpers Codable.swift
[287/343] Compiling Helpers DateFormatter.swift
[288/343] Compiling Helpers EventEmitter.swift
[289/343] Compiling Helpers FoundationExtensions.swift
[290/343] Compiling Helpers HTTPClient.swift
[291/343] Compiling Helpers HTTPFields.swift
[292/343] Emitting module CustomDump
[293/343] Compiling Helpers HTTPRequest.swift
[294/343] Compiling Helpers HTTPResponse.swift
[295/343] Compiling Helpers LoggerInterceptor.swift
[296/343] Compiling Helpers RetryRequestInterceptor.swift
[297/343] Compiling Helpers JWT.swift
[298/343] Compiling Helpers OSLogSupabaseLogger.swift
[299/343] Compiling Helpers SupabaseLogger.swift
[303/353] Compiling CustomDump ExpectDifference.swift
[304/353] Compiling CustomDump ExpectNoDifference.swift
[305/353] Compiling CustomDump AnyType.swift
[306/353] Compiling CustomDump CollectionDifference.swift
[307/353] Compiling CustomDump Identifiable.swift
[308/353] Compiling CustomDump Mirror.swift
[309/353] Compiling CustomDump String.swift
[310/353] Compiling CustomDump Unordered.swift
[311/353] Compiling CustomDump XCTAssertDifference.swift
[312/353] Compiling CustomDump XCTAssertNoDifference.swift
[313/355] Emitting module SnapshotTestingCustomDump
[314/355] Compiling SnapshotTestingCustomDump CustomDump.swift
[315/355] Emitting module Helpers
[333/363] Compiling Helpers HTTPError.swift
[334/363] Compiling Helpers PostgrestError.swift
[335/363] Compiling Helpers Task+withTimeout.swift
[336/363] Compiling Helpers TaskLocalHelpers.swift
[337/363] Compiling Helpers URLSession+AsyncAwait.swift
[338/363] Compiling Helpers Version.swift
[339/363] Compiling Helpers _Clock.swift
[340/363] Compiling Helpers _HTTPClient.swift
[341/389] Compiling Realtime PostgresAction.swift
[342/389] Compiling Realtime PostgresActionData.swift
[343/389] Compiling Realtime PresenceAction.swift
[344/389] Compiling Realtime PushV2.swift
[345/393] Emitting module Realtime
[346/400] Compiling Realtime CallbackManager.swift
[347/400] Compiling Realtime ChannelEvent.swift
[348/400] Compiling Realtime ChannelStateManager.swift
[349/400] Compiling Realtime ConnectionManager.swift
[350/400] Compiling Realtime Exports.swift
[351/400] Emitting module Storage
[353/400] Compiling Storage StorageHTTPClient.swift
[354/400] Compiling Storage SupabaseStorag...*[Comment body truncated]*

@grdsdev grdsdev force-pushed the feat/http-client-helper branch from 12450c4 to 40b2460 Compare April 1, 2026 13:12
@grdsdev grdsdev force-pushed the feat/http-client-helper branch 2 times, most recently from f4571e7 to 743bc8e Compare April 20, 2026 19:20
@grdsdev grdsdev requested a review from a team as a code owner April 27, 2026 19:26
grdsdev and others added 12 commits April 28, 2026 05:14
…dy params

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…unctions

- Replace HTTPClientType/HTTPClient/FetchHandler with _HTTPClient
- FunctionInvokeOptions.headers and query now use [String: String]
- _invokeWithStreamedResponse is now async throws
- SupabaseClient passes session + tokenProvider to FunctionsClient
- Remove RequestTests.swift (covered by inline snapshots in FunctionsClientTests)
- Add package access modifiers to _HTTPClient types

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ming API

- Convert FunctionsClient from Sendable class with LockIsolated to actor
- Replace _invokeWithStreamedResponse (URLSessionDataDelegate-based) with
  invokeStream returning AsyncThrowingStream<UInt8, any Error> via _HTTPClient
- fetchStream now async throws and returns (stream, HTTPURLResponse) tuple,
  allowing pre-stream validation (errors thrown before stream is returned)
- Remove StreamResponseDelegate class
- Set session timeout via configuration instead of per-request
- Fix relay error header name typo (x-relay -> x-relay-error)
- Update FunctionsClientTests and SupabaseClient for actor isolation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…n rawInvoke

_HTTPClient.fetchData now throws HTTPClientError.responseError on non-2xx
responses. FunctionsClient.rawInvoke catches it and converts to the
public FunctionsError.httpError type.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace options-struct overloads with a single configure-closure
pattern. `invoke`, `invokeDecodable`, and `invokeStream` now accept
`(inout FunctionInvokeOptions) -> Void` instead of
`FunctionInvokeOptions`. `invokeDecodable` returns `(T, HTTPURLResponse)`
and `invokeStream` returns `(AsyncThrowingStream<UInt8, Error>, HTTPURLResponse)`.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…gion overloads

- FunctionsClient package init takes FunctionRegion? instead of String?
- Remove public convenience init (replaced by public designated init)
- FunctionsOptions.region is now FunctionRegion? (was String?)
- Remove @_disfavoredOverload String? init from FunctionsOptions
- Update tests to use FunctionRegion enum values and actor-safe access patterns

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ove String? overloads

- FunctionInvokeOptions.region is now FunctionRegion? (was String?)
- Remove duplicate extension inits that delegated with region?.rawValue
- Remove @_disfavoredOverload attributes (no longer needed)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add 19 comprehensive tests for FunctionsClient using Replay library:
- Basic invocation tests (default, JSON body, arrays, text, binary)
- HTTP method tests (GET, PUT, PATCH, DELETE)
- Custom headers and content-type overrides
- Complex scenarios with nested JSON
- Decode tests with custom decoders
- Authentication token tests
- Response metadata validation

Created echo edge function at supabase/functions/echo/ that:
- Accepts any HTTP method and echoes back request details
- Sorts query parameters alphabetically for deterministic testing
- Handles JSON, plain text, and binary data

Test suite uses .serialized and .playbackIsolated for deterministic
replay testing with 19 HAR files stored in Tests/FunctionsTests/Replays/

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Replace invoke(options: FunctionInvokeOptions) with builder closure style
- Replace invoke<T: Decodable> with invokeDecodable returning (T, HTTPURLResponse)
- Update invokeStream callers to unpack (stream, response) tuple
- FunctionsTests.swift: migrate all invoke/coercion calls to invokeDecodable

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add public init() to FunctionInvokeOptions (memberwise init is internal)
- Update FunctionInvokeOptionsTests to test var properties directly
- Convert remaining FunctionInvokeOptions(body:) calls to manual Data encoding
- Set Content-Type explicitly when encoding body in test closures

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
grdsdev and others added 6 commits April 28, 2026 06:08
…th nil tokenProvider

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…oder on client

- Convert FunctionRegion from enum to RawRepresentable struct with ExpressibleByStringLiteral so callers can pass custom region strings
- Add optional decoder property to FunctionsClient, used as fallback in invokeDecodable
- Update tests to use Bundle.module for replay URLs and await actor-isolated decoder property

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… closure

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ionsClient

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…in init parameters

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…les to public API

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
grdsdev and others added 9 commits April 28, 2026 07:09
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… new Functions API

Add missing `#if canImport(FoundationNetworking)` guard to `_HTTPClient.swift` so
the Linux build finds `HTTPURLResponse`, `URLSession`, and `URLRequest`. Update
`FunctionsExamplesView.swift` to use the new `invokeDecodable` closure-based API
introduced by the functions v3 rewrite.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
URLSession.bytes(for:) is not available on Linux. Wrap fetchStream in
_HTTPClient and invokeStream in FunctionsClient with #if canImport(Darwin)
so the Linux build compiles cleanly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Tests calling invokeStream failed to compile on Linux because the method is
Darwin-only. Wrap the three streaming test functions in #if canImport(Darwin).
Also re-run swift-format on _HTTPClient.swift and FunctionsClient.swift to
fix the indentation of the #if blocks inside the actor/class body.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… T.Type parameter

Update DocC symbol links to reflect the as: parameter label and add
`as _: T.Type = T.self` to invokeDecodable for more ergonomic call sites.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bundle.module.resourceURL?.appendingPathComponent("Replays") uses direct
path concatenation, bypassing bundle.url(forResource:withExtension:subdirectory:)
which is broken on Linux swift-corelibs-foundation for subdirectory lookups.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
TestScoping for suite-level traits does not reliably propagate ReplayTestDefaults
to individual tests on Linux, causing all tests to resolve the wrong archive via
the broken Bundle.url(forResource:subdirectory:) fallback.

Fix: provide an explicit rootURL to each ReplayTrait so getArchiveURL uses the
direct URL path (step 1) on both platforms, bypassing TestScoping and bundle
resource lookup entirely.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
FunctionsClient is an actor; passing (inout FunctionInvokeOptions) -> Void
from @mainactor callers crosses an isolation boundary. Swift 6 strict
concurrency requires the closure to be @sendable.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…eters

Use the `sending` ownership modifier instead of `@Sendable` for the
`options` closure parameters in invoke, invokeDecodable, and invokeStream,
aligning with Swift 6 concurrency conventions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@grdsdev grdsdev merged commit a18bbb8 into v3 Apr 28, 2026
17 checks passed
@grdsdev grdsdev deleted the feat/http-client-helper branch April 28, 2026 12:51
grdsdev added a commit that referenced this pull request Apr 28, 2026
* feat(helpers): add _HTTPClient with RequestBody and separate query/body params

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(helpers): add TokenProvider support to _HTTPClient

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor(helpers): stream UInt8 bytes instead of single-byte Data chunks

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(functions): migrate to _HTTPClient, remove old HTTP layer from Functions

- Replace HTTPClientType/HTTPClient/FetchHandler with _HTTPClient
- FunctionInvokeOptions.headers and query now use [String: String]
- _invokeWithStreamedResponse is now async throws
- SupabaseClient passes session + tokenProvider to FunctionsClient
- Remove RequestTests.swift (covered by inline snapshots in FunctionsClientTests)
- Add package access modifiers to _HTTPClient types

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor(functions): convert FunctionsClient to actor, simplify streaming API

- Convert FunctionsClient from Sendable class with LockIsolated to actor
- Replace _invokeWithStreamedResponse (URLSessionDataDelegate-based) with
  invokeStream returning AsyncThrowingStream<UInt8, any Error> via _HTTPClient
- fetchStream now async throws and returns (stream, HTTPURLResponse) tuple,
  allowing pre-stream validation (errors thrown before stream is returned)
- Remove StreamResponseDelegate class
- Set session timeout via configuration instead of per-request
- Fix relay error header name typo (x-relay -> x-relay-error)
- Update FunctionsClientTests and SupabaseClient for actor isolation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(functions): catch HTTPClientError and convert to FunctionsError in rawInvoke

_HTTPClient.fetchData now throws HTTPClientError.responseError on non-2xx
responses. FunctionsClient.rawInvoke catches it and converts to the
public FunctionsError.httpError type.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(functions): add builder-pattern invoke API

Replace options-struct overloads with a single configure-closure
pattern. `invoke`, `invokeDecodable`, and `invokeStream` now accept
`(inout FunctionInvokeOptions) -> Void` instead of
`FunctionInvokeOptions`. `invokeDecodable` returns `(T, HTTPURLResponse)`
and `invokeStream` returns `(AsyncThrowingStream<UInt8, Error>, HTTPURLResponse)`.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor(functions): use FunctionRegion everywhere, remove String? region overloads

- FunctionsClient package init takes FunctionRegion? instead of String?
- Remove public convenience init (replaced by public designated init)
- FunctionsOptions.region is now FunctionRegion? (was String?)
- Remove @_disfavoredOverload String? init from FunctionsOptions
- Update tests to use FunctionRegion enum values and actor-safe access patterns

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor(functions): use FunctionRegion in FunctionInvokeOptions, remove String? overloads

- FunctionInvokeOptions.region is now FunctionRegion? (was String?)
- Remove duplicate extension inits that delegated with region?.rawValue
- Remove @_disfavoredOverload attributes (no longer needed)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test(functions): add comprehensive tests with echo edge function

Add 19 comprehensive tests for FunctionsClient using Replay library:
- Basic invocation tests (default, JSON body, arrays, text, binary)
- HTTP method tests (GET, PUT, PATCH, DELETE)
- Custom headers and content-type overrides
- Complex scenarios with nested JSON
- Decode tests with custom decoders
- Authentication token tests
- Response metadata validation

Created echo edge function at supabase/functions/echo/ that:
- Accepts any HTTP method and echoes back request details
- Sorts query parameters alphabetically for deterministic testing
- Handles JSON, plain text, and binary data

Test suite uses .serialized and .playbackIsolated for deterministic
replay testing with 19 HAR files stored in Tests/FunctionsTests/Replays/

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* test(functions): update tests for v3 builder-pattern invoke API

- Replace invoke(options: FunctionInvokeOptions) with builder closure style
- Replace invoke<T: Decodable> with invokeDecodable returning (T, HTTPURLResponse)
- Update invokeStream callers to unpack (stream, response) tuple
- FunctionsTests.swift: migrate all invoke/coercion calls to invokeDecodable

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test(functions): fix tests for builder-pattern API and public init

- Add public init() to FunctionInvokeOptions (memberwise init is internal)
- Update FunctionInvokeOptionsTests to test var properties directly
- Convert remaining FunctionInvokeOptions(body:) calls to manual Data encoding
- Set Content-Type explicitly when encoding body in test closures

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor(functions): unify public init to delegate to package init with nil tokenProvider

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor(functions): make FunctionRegion an open struct and store decoder on client

- Convert FunctionRegion from enum to RawRepresentable struct with ExpressibleByStringLiteral so callers can pass custom region strings
- Add optional decoder property to FunctionsClient, used as fallback in invokeDecodable
- Update tests to use Bundle.module for replay URLs and await actor-isolated decoder property

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(supabase): propagate global URLSession to RealtimeClient as fetch closure

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(functions): make decoder a public non-optional property on FunctionsClient

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor(functions): use non-optional JSONDecoder with default value in init parameters

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(functions): add comprehensive DocC documentation and usage examples to public API

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(functions): trim verbose doc comments per linter suggestions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(helpers): add FoundationNetworking import and update examples for new Functions API

Add missing `#if canImport(FoundationNetworking)` guard to `_HTTPClient.swift` so
the Linux build finds `HTTPURLResponse`, `URLSession`, and `URLRequest`. Update
`FunctionsExamplesView.swift` to use the new `invokeDecodable` closure-based API
introduced by the functions v3 rewrite.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: gate stream methods behind #if canImport(Darwin)

URLSession.bytes(for:) is not available on Linux. Wrap fetchStream in
_HTTPClient and invokeStream in FunctionsClient with #if canImport(Darwin)
so the Linux build compiles cleanly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: gate invokeStream tests behind canImport(Darwin) and fix formatting

Tests calling invokeStream failed to compile on Linux because the method is
Darwin-only. Wrap the three streaming test functions in #if canImport(Darwin).
Also re-run swift-format on _HTTPClient.swift and FunctionsClient.swift to
fix the indentation of the #if blocks inside the actor/class body.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(functions): update invokeDecodable doc comments and add explicit T.Type parameter

Update DocC symbol links to reflect the as: parameter label and add
`as _: T.Type = T.self` to invokeDecodable for more ergonomic call sites.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(functions): use replaysRootURL for cross-platform HAR archive lookup

Bundle.module.resourceURL?.appendingPathComponent("Replays") uses direct
path concatenation, bypassing bundle.url(forResource:withExtension:subdirectory:)
which is broken on Linux swift-corelibs-foundation for subdirectory lookups.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(functions): pass rootURL per-test to fix HAR resolution on Linux

TestScoping for suite-level traits does not reliably propagate ReplayTestDefaults
to individual tests on Linux, causing all tests to resolve the wrong archive via
the broken Bundle.url(forResource:subdirectory:) fallback.

Fix: provide an explicit rootURL to each ReplayTrait so getArchiveURL uses the
direct URL path (step 1) on both platforms, bypassing TestScoping and bundle
resource lookup entirely.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(functions): mark invoke options closure as @sendable

FunctionsClient is an actor; passing (inout FunctionInvokeOptions) -> Void
from @mainactor callers crosses an isolation boundary. Swift 6 strict
concurrency requires the closure to be @sendable.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor(functions): replace @sendable with sending for closure parameters

Use the `sending` ownership modifier instead of `@Sendable` for the
`options` closure parameters in invoke, invokeDecodable, and invokeStream,
aligning with Swift 6 concurrency conventions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant