- Support for passing Headers specified in
ClientOptions
toSupabase.Realtime
Client. - Update dependency:
[email protected]
- Re: 105 Add admin calls for MFA. Big thanks to @michaelschattgen.
- Update dependency:
[email protected]
- Updates Dependency:
[email protected]
- Updates Dependency:
[email protected]
- Re:#167 Adds support for
specifying
GetHeaders
on theRealtimeClient
which are included on the initial request to the server to establish websocket connection.
- Updates Dependency:
- Supports passing Headers specified in
ClientOptions
to child apis. - Drop support for
netstandard2.0
-Supabase
now targetsnetstandard2.1
. - Update dependency:
[email protected]
- Re: 103 Add support for MFA signup and login flows. Huge thanks to @michaelschattgen for this implementation!
- Re: #102 Add ExchangeCodeForSession to StatelessClient. Thanks @alexbakker!
- Major: Change to targeting framework to
netstandard2.1
- Re: #99 Use a CSPRNG to generate the code verifier. Thanks @alexbakker!
- Re: #101 Ban user functionality. Thanks @celestebyte!
- Update dependency:
[email protected]
- Update dependency:
[email protected]
- Re: #98 Introduces
VerifyTokenHash
to support the PKCE flow for email signup. Thanks @alexbakker!
- Re: #98 Introduces
- Update dependency:
[email protected]
- Allow for scoped
SignOut
. Thanks @AndrewKahr! - Various minor SSO fixes. Thanks @Rycko1!
- Implement
SignInWithSSO
. Huge thank you to @Rycko1!
- Allow for scoped
- Update dependency
[email protected]
- Re: #97 Fix set null value on string property. Thanks @alustrement-bob!
- Update dependency:
[email protected]
- Add missing properties (
ProviderRefreshToken
andProviderToken
) toSession
object to reflect current state ofauth-js
- Add missing properties (
- Update dependency:
[email protected]
- Re: #47 Return a Task from
Track
andUntrack
methods
- Re: #47 Return a Task from
- Update dependency:
[email protected]
- Re: #96 Set
ConfigureAwait(false)
the response to prevent deadlocking applications. Thanks @pur3extreme!
- Re: #96 Set
- Update dependency:
[email protected]
- Re: #96 Set
ConfigureAwait(false)
the response to prevent deadlocking applications. Thanks @pur3extreme!
- Re: #96 Set
- Update dependency:
[email protected]
- Re: #15 and #16 Fix CreateSignedUrl with TransformOptions. Thanks @alustrement-bob!
- Update dependency:
[email protected]
- Re: #92 Changes
IPostgrestTable<>
contract to return the interface rather than a concrete type.
- Re: #92 Changes
- Assembly Name has been changed to
Supabase.dll
- Update dependency:
[email protected]
- [MAJOR] Moves namespaces from
Postgrest
toSupabase.Postgrest
- Re: #135 Update nuget package
name
postgrest-csharp
toSupabase.Postgrest
- [MAJOR] Moves namespaces from
- Update dependency:
[email protected]
- Re: #135 Update nuget package name
gotrue-csharp
toSupabase.Gotrue
- Re: #89, Only add
access_token
to request body when it is explicitly declared. - [MINOR] Re: #89 Update signature
for
SignInWithIdToken
which adds an optionalaccessToken
parameter, update doc comments, and callDestroySession
in method - Re: #88, Add
IsAnonymous
property toUser
- Re: #90 Implement
LinkIdentity
andUnlinkIdentity
- Re: #135 Update nuget package name
- Update dependency:
[email protected]
- Merges #45 - Updating
the
[email protected]
- Re: #135 Update nuget package
name
realtime-csharp
toSupabase.Realtime
- Merges #45 - Updating
the
- Update dependency:
[email protected]
- Re: #135 Update nuget package
name
storage-csharp
toSupabase.Storage
- Re: #135 Update nuget package
name
- Update dependency:
[email protected]
- Re: #135 Update nuget package
name
functions-csharp
toSupabase.Functions
- Re: #135 Update nuget package
name
- Update dependency:
[email protected]
- Re: #135 Update nuget package
name
supabase-core
toSupabase.Core
- Re: #135 Update nuget package
name
- Adds comments to the remaining undocumented code.
- Update dependency:
[email protected]
- #88 Implement
signInAnonymously
from the JS client - Include additional 3rd party providers in constants.
- #88 Implement
- Update dependency:
[email protected]
- Re: #147 - Supports
Rpc
specifying a generic type for its return.
- Re: #147 - Supports
- Update dependency:
[email protected]
- Re: #78, Generalize query filtering creation
in
Table
so that it matches new generic signatures. - Move from
QueryFilter
parameters to a more genericIPosgrestQueryFilter
to support constructing new QueryFilters from a LINQ expression.- Note: Lists of
QueryFilter
s will now need to be defined as:new List<IPostgrestQueryFilter> { new QueryFilter(), ... }
- Note: Lists of
- Adjust serialization of timestamps within a
QueryFilter
to supportDateTime
andDateTimeOffset
using the ISO-8601 (https://stackoverflow.com/a/115002)
- Re: #78, Generalize query filtering creation
in
- Update dependency:
[email protected]
- Re: #5 Add support for specifying Http Timeout
on a function call by adding
HttpTimeout
toInvokeFunctionOptions
- Re: #5 Add support for specifying Http Timeout
on a function call by adding
- Update Dependency:
[email protected]
- #83 Replaces JWTDecoder package with System.IdentityModel.Tokens.Jwt. Thanks @FantasyTeddy!
- Update Dependency:
[email protected]
- Re: #85 Fixes problem when using multiple .Order() methods by merging #86. Thanks @hunsra!
- Re: #81
- [Minor] Removes
IgnoreOnInsert
andIgnoreOnUpdate
fromReferenceAttribute
as changing these properties tofalse
does not currently provide the expected functionality. - Fixes
Insert
andUpdate
not working on models that haveReference
specified on a property with a non-null value.
- [Minor] Removes
- Update Dependency:
[email protected]
- Update Dependency:
[email protected]
- Re: #78 Updates signatures for
Not
andFilter
to include generic types for a better development experience. - Updates internal generic type names to be more descriptive.
- Add support for LINQ predicates on
Table<TModel>.Not()
signatures
- Re: #78 Updates signatures for
- Update Dependency:
[email protected]
- Re: #76 Removes the
incorrect
ToUniversalTime
conversion in the LINQWhere
parser.
- Re: #76 Removes the
incorrect
- Update Dependency:
[email protected]
- Update Dependency:
[email protected]
- Re: supabase-csharp#115 Additional support for a model referencing another model with multiple foreign keys.
- Re: supabase-csharp#115 Adds support for multiple references attached to the same model (foreign keys) on a single C# Model.
- Update Dependency:
[email protected]
- Re: #78 - Implements PKCE flow support
for
ResetPasswordForEmail
.
- Re: #78 - Implements PKCE flow support
for
- Re: #107 - removes Realtime socket being disconnected on a User sign-out - only the subscriptions should be removed.
- Update dependency:
[email protected]
- Implements a
TableWithCache
forGet
requests that can pull reactive Models from cache before making a remote request. - Re: supabase-csharp#85 Includes sourcelink support.
- Re: #75 Fix issue with marshalling of stored procedure arguments. Big thank you to @corrideat!
- Implements a
- Update dependency:
[email protected]
- Fixes #11 - Which implements
missing
SupabaseStorageException
on failure status codes forUpload
,Download
,Move
,CreateSignedUrl
andCreateSignedUrls
.
- Fixes #11 - Which implements
missing
- Update dependency:
[email protected]
- #74 - Fixes bug where token refresh interval was not honored by client. Thanks @slater1!
- Minor Breaking changes: #72 - Fixes
Calling
SetAuth
does not actually set Authorization Headers for subsequent requests by implementingSetSession
- Removes
RefreshToken(string refreshToken)
andSetAuth(string accessToken
in favor ofSetSession(string accessToken, string refreshToken)
- Makes
RefreshAccessToken
requireaccessToken
andrefreshToken
as parameters - overrides the authorization headers to use the supplied token - Migrates project internal times to use
DateTime.UtcNow
overDateTime.Now
.
- Removes
- Update dependency:
[email protected]
- Fixes #29 Where the Realtime client could
disconnect from channels after a few hours and fail to reconnect by removing the case where the
IsSubscribe
flag is flipped when encountering a channel error.
- Fixes #29 Where the Realtime client could
disconnect from channels after a few hours and fail to reconnect by removing the case where the
- Update dependency:
[email protected]
- Re: supabase-community/supabase-csharp#81:
Clarifies
ReferenceAttribute
by changingshouldFilterTopLevel
touseInnerJoin
and adds an additional constructor forReferenceAttribute
with a shortcut for specifying theJoinType
- Re: supabase-community/supabase-csharp#81:
Clarifies
- Update dependency:
[email protected]
- #68 Changes Network Status to use the interface instead of client
- Update dependency:
[email protected]
- #70 Minor Unity related fixes
- Update dependency:
[email protected]
- Update dependency:
[email protected]
Thanks @wiverson for the work in this release!
- Update dependencies:
[email protected]
,[email protected]
,[email protected]
,[email protected]
,[email protected]
,[email protected]
- Namespaces assembly names to make them unique among other dependencies, i.e:
Core.dll
becomesSupabase.Core.dll
which will hopefully prevent future collisions.
- Namespaces assembly names to make them unique among other dependencies, i.e:
- Update dependency: [email protected]
- General codebase and QOL improvements. Exceptions are generally thrown through
PostgrestException
now instead ofException
. AFailureHint.Reason
is provided with failures if possible to parse. AddDebugListener
is now available on the client to help with debugging- Merges #65 Cleanup + Add better exception handling
- Merges #66 Local test Fixes
- Fixes #67 Postgrest Reference attribute is producing StackOverflow for circular references
- General codebase and QOL improvements. Exceptions are generally thrown through
- Update dependency: [email protected]
- #58 - Add support for the
reauthentication
endpoint which allows for secure password changes.
- #58 - Add support for the
- Update dependency: [email protected]
- Updates publishing action for future packages, includes README and icon.
- Merges #28 and #30
- The realtime client now takes a "fail-fast" approach. On establishing an initial connection, client will throw
a
RealtimeException
inConnectAsync()
if the socket server is unreachable. After an initial connection has been established, the client will continue attempting reconnections indefinitely until disconnected. - [Major, New] C#
EventHandlers
have been changed todelegates
. This should allow for cleaner event data access over the previous subclassedEventArgs
setup. Events are scoped accordingly. For example, theRealtimeSocket
error handlers will receive events regarding socket connectivity; whereas theRealtimeChannel
error handlers will receive events according toChannel
joining/leaving/etc. This is implemented with the following methods prefixed by ( Add/Remove/Clear):RealtimeBroadcast.AddBroadcastEventHandler
RealtimePresence.AddPresenceEventHandler
RealtimeSocket.AddStateChangedHandler
RealtimeSocket.AddMessageReceivedHandler
RealtimeSocket.AddHeartbeatHandler
RealtimeSocket.AddErrorHandler
RealtimeClient.AddDebugHandler
RealtimeClient.AddStateChangedHandler
RealtimeChannel.AddPostgresChangeHandler
RealtimeChannel.AddMessageReceivedHandler
RealtimeChannel.AddErrorHandler
Push.AddMessageReceivedHandler
- [Major, new]
ClientOptions.Logger
has been removed in favor ofClient.AddDebugHandler()
which allows for implementing custom logging solutions if desired.- A simple logger can be set up with the following:
client.AddDebugHandler((sender, message, exception) => Debug.WriteLine(message));
- [Major]
Connect()
has been markedObsolete
in favor ofConnectAsync()
- Custom reconnection logic has been removed in favor of using the built-in logic from
[email protected]
. - Exceptions that are handled within this library have been marked as
RealtimeException
s. - The local, docker-composed test suite has been brought back (as opposed to remotely testing on live supabase servers) to test against.
- Comments have been added throughout the entire codebase and an
XML
file is now generated on build.
- Changes options to require
Supabase.SupabaseOptions.SessionPersistor
from usingISupabaseSessionHandler
toIGotrueSessionPersistance<Session>
(these are now synchronous operations). - Update dependency: [email protected]
- #60 - Add interfaces, bug fixes, additional error reason detection. Thanks @wiverson!
- #57 Refactor exceptions, code cleanup, and move to
delegate auth state changes
- Huge thank you to @wiverson for his help on this refactor and release!
- Changes
- Exceptions have been simplified to a single
GotrueException
. AReason
field has been added toGotrueException
to clarify what happened. This should also be easier to manage as the Gotrue server API & messages evolve. - The session delegates for
Save
/Load
/Destroy
have been simplified to no longer requireasync
. - Console logging in a few places (most notable the background refresh thread) has been removed
in favor of a notification method. See
Client.AddDebugListener()
and the test cases for examples. This will allow you to implement your own logging strategy (write to temp file, console, user visible err console, etc). - The client now more reliably emits AuthState changes.
- There is now a single source of truth for headers in the stateful Client - the
Options
headers.
- Exceptions have been simplified to a single
- New feature:
- Added a
Settings
request to the stateless API only - you can now query the server instance to determine if it's got the settings you need. This might allow for things like a visual component in a tool to verify the GoTrue settings are working correctly, or tests that run differently depending on the server configuration.
- Added a
- Implementation notes:
- Test cases have been added to help ensure reliability of auth state change notifications and persistence.
- Persistence is now managed via the same notifications as auth state change
- Update dependency: [email protected]
- Implements
SignInWithIdToken
for Apple/Google signing from LW7. A HUGE thank you to @wiverson!
- Implements
- Update dependency: [email protected]
- Re: #27
PostgresChangesOptions
was not settinglistenType
in constructor. Thanks @Kuffs2205
- Re: #27
- Update dependency: [email protected]
- Re: #7 Implements a
DownloadPublicFile
method.
- Re: #7 Implements a
-
Update dependency: [email protected]
- [Minor] Implements PKCE auth flow. SignIn using a provider now returns an instance of
ProviderAuthState
rather than astring
.
- [Minor] Implements PKCE auth flow. SignIn using a provider now returns an instance of
-
Update dependency: [email protected]
- Implements storage features from LW7:
- feat: custom file size limit and mime types at bucket level supabase/storage-js#151 file size and mime type limits per bucket
- feat: quality option, image transformation supabase/storage-js#145 quality option for image transformations
- feat: format option for webp support supabase/storage-js#142 format option for image transformation
- Implements storage features from LW7:
- Update dependency: [email protected]
- Supports adding
SignInOptions
(i.e.RedirectTo
) onOAuth Provider
SignIn requests.
- Supports adding
- Update dependency: [email protected]
- Re: #26 - Fixes Connect() not returning callback result when the socket isn't null. Thanks @BlueWaterCrystal!
- Update dependency: [email protected]
- Merge #5 Added search string as an optional search parameter. Thanks @ElectroKnight22!
- Update dependency: [email protected]
- Re: #25 - Support Channel being resubscribed
after having been unsubscribed, fixes rejoin timer being erroneously called on channel
Unsubscribe
. Thanks @Kuffs2205!
- Re: #25 - Support Channel being resubscribed
after having been unsubscribed, fixes rejoin timer being erroneously called on channel
- Update dependency: [email protected]
- Re: #4 Implementation for
ClientOptions
which supports specifying Upload, Download, and Request timeouts.
- Re: #4 Implementation for
- Update dependency: [email protected]
- Re: #24 - Fixes join failing until reconnect happened + adds access token push on channel join. Big thank you to @Honeyhead for the help debugging and identifying!
- Update dependency: [email protected]
- Provides fix for supabase-community/supabase-csharp#54 - Dynamic headers were always being overwritten by initialized token headers, so the storage client would not receive user's access token as expected.
- Provides fix for upload progress not reporting in supabase-community/storage-csharp#3
- Update dependency: [email protected]
- Fixes #44 - refresh timer should automatically
reattempt (interval of 5s) for HTTP exceptions - gracefully exits on invalid refresh and triggers
an
AuthState.Changed
event
- Fixes #44 - refresh timer should automatically
reattempt (interval of 5s) for HTTP exceptions - gracefully exits on invalid refresh and triggers
an
- Update dependency: [email protected]
UploadOrUpdate
now appropriately throws request exceptions
- Update dependency: [email protected]
- Update dependency: [email protected]
- Re: #21 Provide API for
presence
,broadcast
andpostgres_changes
- [Major, New]
Channel.PostgresChanges
event will receive the wildcard*
changes event, notChannel.OnMessage
. - [Major]
Channel.OnInsert
,Channel.OnUpdate
, andChannel.OnDelete
now conform to the server's payload ofResponse.Payload.**Data**
- [Major]
Channel.OnInsert
,Channel.OnUpdate
, andChannel.OnDelete
now returnPostgresChangesEventArgs
- [Minor] Rename
Channel
toRealtimeChannel
- Supports better handling of disconnects in
RealtimeSocket
and adds aClient.OnReconnect
event. - [Minor] Moves
ChannelOptions
toChannel.ChannelOptions
- [Minor] Moves
ChannelStateChangedEventArgs
toChannel.ChannelStateChangedEventArgs
- [Minor] Moves
Push
toChannel.Push
- [Minor] Moves
Channel.ChannelState
toConstants.ChannelState
- [Minor] Moves
SocketResponse
,SocketRequest
,SocketResponsePayload
,SocketResponseEventArgs
, andSocketStateChangedEventArgs
toSocket
namespace. - [New] Adds
RealtimeBroadcast
- [New] Adds
RealtimePresence
- [Improvement] Better handling of disconnection/reconnection
- [Major, New]
- Re: #21 Provide API for
- Update dependency: [email protected]
- Another fix for #61 which futher typechecks nullable values.
- Update dependency: [email protected]
- Makes
Session.CreatedAt
a publicly settable property, which should fix incorrect dates on retrievedSession
s.
- Makes
- Update dependency: [email protected]
- Fix #61 which did not correctly parse
Linq
Where
when encountering a nullable type. - Add missing support for transforming for
== null
and!= null
- Fix #61 which did not correctly parse
Linq
- Update dependency: [email protected]
- Fix issue from #48 where boolean model properties would not be evaluated in predicate expressions
- Update dependency: [email protected]
- [Minor] Breaking API Change:
PrimaryKey
attribute defaults toshouldInsert: false
as most uses will have the Database generate the primary key. - Merged #60 which Added linq support
for
Select
,Where
,OnConflict
,Columns
,Order
,Update
,Set
, andDelete
- [Minor] Breaking API Change:
- Update dependency: [email protected]
GetHeaders
is now passed toModeledResponse
andBaseModel
so that the defaultUpdate
andDelete
methods use the latest credentialsGetHeaders
is used inRpc
calls (re: #39)
- [Hotfix]
GetHeaders
was not passing properly toSupabaseTable
andGotrue.Api
[BREAKING CHANGES]
Client
is no longer a singleton, singleton interactions (if desired) are left to the developer to implement.Client
supports injection of dependent clients after initialization via property:Auth
Functions
Realtime
Postgrest
Storage
SupabaseModel
contains no logic but remains for backwards compatibility. (MarkedObsolete
)ClientOptions.ShouldInitializeRealtime
was removed (no longer auto initialized)ClientOptions
now references anISupabaseSessionHandler
which specifies expected functionality for session persistence on Gotrue (replacesClientOptions.SessionPersistor
,ClientOptions.SessionRetriever
, andClientOptions.SessionDestroyer
).supabase-csharp
and all child libraries now have supportnullity
Other Changes:
- Update dependency: [email protected]
- Update dependency: [email protected]
- Update dependency: [email protected]
- Update dependency: [email protected]
- Update dependency: [email protected]
- Update dependency: [email protected]
Big thank you to @veleek for his insight into these changes.
- Update dependency: [email protected]
- Update dependency: [email protected]
- Merged #47 which added cancellation token
support to
Table<T>
methods. Thanks @devpikachu!
- Merged #47 which added cancellation token
support to
- Update dependency: [email protected]
- Update dependency: [email protected]
- Update dependency: [email protected]
- Update dependency: [email protected]
- Update dependency: [email protected]
- API Change [Breaking/Minor] Library no longer uses
WebClient
and instead leveragesHttpClient
. Progress events onUpload
andDownload
are now handled withEventHandler<float>
instead ofWebClient
EventHandlers.
- API Change [Breaking/Minor] Library no longer uses
- Update dependency: [email protected]
- Update dependency: [email protected]
- Update dependency: [email protected]
- Update dependency: [email protected]
- Update dependency: [email protected]
- Add support for [email protected], giving access to invoking Supabase's edge functions.
- Update dependency: [email protected]
- Update dependency: [email protected]
- Update dependency: [email protected]
- Update dependency: [email protected]
- Update dependency: [email protected]
- Update dependency: [email protected]
- Exchange existing websocket client: WebSocketSharp for Marfusios/websocket-client which adds support for Blazor WASM apps. Ref: #14
- Update dependency: [email protected]
- #23 Added
redirect_url
option for MagicLink sign in (Thanks @MisterJimson) - #21 Added SignOut method to Stateless Client ( Thanks @fplaras)
- #23 Added
- Update dependency: [email protected]
- Add support for
NullValueHandling
to be specified on aColumn
Attribute and for it to be honored on Inserts and Updates. Defaults to:NullValueHandling.Include
.- Implements #38
- Add support for
- Update dependency: [email protected]
- Implement Upstream Realtime RLS Error Broadcast Handler
- Implements #12
SocketResponse
now exposes a method:OldModel
, that hydrates theOldRecord
property into a model.
- Implement Upstream Realtime RLS Error Broadcast Handler
- Update dependency: [email protected]
SignUp
will return aSession
with a populatedUser
object on an unconfirmed signup.- Fixes #19
- Developers who were using a
null
check onSession.User
will need to adjust accordingly.
- Update dependency: [email protected]
- Update dependency: [email protected] (changes CreateUser parameters to conform to
AdminUserAttributes
) - Update dependency: [email protected]
- See #13
- Update dependency: [email protected] (adds metadata support for user signup, see #14)
- Separate Storage client from Supabase repo and into
storage-csharp
,supabase-csharp
now references new repo.
- Update gotrue-csharp to 2.2.4
- Adds support for
ListUsers
(paginate, sort, filter),GetUserById
,CreateUser
, andUpdateById
- Adds support for
- Update gotrue-csharp to 2.2.3
- Adds support for sending password resets to users.