From 2a3870059a993196f2d45dbfdbc22d39f11eafd4 Mon Sep 17 00:00:00 2001 From: Ranbir Singh Date: Sat, 27 Jun 2026 01:58:32 +0530 Subject: [PATCH] refactor: final naming consistency pass before 1.0 freeze A naming-only audit of every module's public API against the SDK's own conventions. Fixes the handful of genuine, contained inconsistencies; the debatable and parity-driven cases are recorded as deliberate decisions in API_DESIGN.md. Renames (the SDK's own convention was violated): - invokeSSE -> invokeSse (acronyms are word-cased everywhere else) - Paginator.endReached -> isEndReached (boolean reads as an assertion) - database selectWithCount -> selectWithCountTyped (joins the *Typed family) - realtime setPrivate -> configurePrivate (matches configure* builder group) - storage createUploadSignedUrl(WithPath) -> createSignedUploadUrl(WithPath) - storage VectorDistanceMetric.DOTPRODUCT -> DOT_PRODUCT (wire value kept) - auth-admin OIDC jwksUri -> jwksUrl (siblings are all *Url; wire value kept) Removed two exact duplicates: - core SupabaseResult.toResultFlow() (identical to asFlow()) - realtime RealtimeSubscription.statusFlow() (identical to the status property) apiDump regenerated; apiCheck + detekt + spotlessCheck + jvmTest all green; docs site builds clean. CHANGELOG + API_DESIGN.md updated. --- API_DESIGN.md | 52 ++++++++++++++++++- CHANGELOG.md | 28 ++++++++-- .../api/android/supabase-auth-admin.api | 8 +-- .../api/jvm/supabase-auth-admin.api | 8 +-- .../api/supabase-auth-admin.klib.api | 16 +++--- .../auth/admin/models/AuthAdminModels.kt | 12 ++--- .../supabase/client/SupabaseConfig.kt | 2 +- supabase-core/api/android/supabase-core.api | 3 +- supabase-core/api/jvm/supabase-core.api | 3 +- supabase-core/api/supabase-core.klib.api | 5 +- .../supabase/core/paging/Paginator.kt | 16 +++--- .../core/result/SupabaseResultFlow.kt | 9 +--- .../supabase/core/PaginatorTest.kt | 12 ++--- .../supabase/core/SupabaseResultParityTest.kt | 6 +-- .../api/supabase-database.klib.api | 2 +- .../supabase/database/DatabaseClient.kt | 4 +- .../supabase/database/DatabaseClientExt.kt | 2 +- .../api/android/supabase-functions.api | 8 +-- .../api/jvm/supabase-functions.api | 8 +-- .../api/supabase-functions.klib.api | 2 +- .../functions/FunctionServerSentEvent.kt | 2 +- .../supabase/functions/FunctionsClient.kt | 6 +-- .../supabase/functions/FunctionsClientImpl.kt | 2 +- .../api/android/supabase-realtime.api | 5 +- .../api/jvm/supabase-realtime.api | 5 +- .../api/supabase-realtime.klib.api | 3 +- .../realtime/RealtimeChannelBuilder.kt | 2 +- .../supabase/realtime/RealtimeExt.kt | 10 +--- .../RealtimeChannelBuilderConfigTest.kt | 2 +- .../realtime/RealtimeClientExtTest.kt | 2 +- .../api/android/supabase-storage.api | 14 ++--- supabase-storage/api/jvm/supabase-storage.api | 14 ++--- .../api/supabase-storage.klib.api | 6 +-- .../supabase/storage/StorageClient.kt | 10 ++-- .../supabase/storage/StorageClientImpl.kt | 6 +-- .../supabase/storage/models/StorageModels.kt | 2 +- .../supabase/storage/StorageClientExtTest.kt | 8 ++- .../supabase/storage/StorageClientImplTest.kt | 8 +-- website/pages/paging.mdx | 10 ++-- website/pages/reference/auth-admin.mdx | 8 +-- website/pages/reference/core.mdx | 10 ++-- website/pages/reference/database.mdx | 12 ++--- website/pages/reference/functions.mdx | 10 ++-- website/pages/reference/realtime.mdx | 13 +---- website/pages/reference/storage.mdx | 24 ++++----- website/pages/storage.mdx | 2 +- 46 files changed, 223 insertions(+), 179 deletions(-) diff --git a/API_DESIGN.md b/API_DESIGN.md index 7864ed61..f82b02c9 100644 --- a/API_DESIGN.md +++ b/API_DESIGN.md @@ -98,7 +98,7 @@ handled in source. - `ErrorResponse` (wire-only) → `internal`; deleted unused typed-id value classes (dead public API). - `SupabaseConfig` → plain `class` (function-typed fields; no meaningful `copy`/`equals`). - `MAX_PULL_PAGES` / `DEFAULT_PAGE_SIZE` no longer leak as public static fields. -- `asFlow()` relabeled hot (was mislabeled "Cold"); `streamLines` / `invokeSSE` defaults defer +- `asFlow()` relabeled hot (was mislabeled "Cold"); `streamLines` / `invokeSse` defaults defer their throw into the cold `flow { }` instead of throwing eagerly. - **Database query response shape unified into `ResponseFormat`** — `select` / `rpc` / `rpcGet` / `selectRange` took 4 mutually-exclusive `head`/`single`/`csv`/`geojson` booleans (illegal combos @@ -167,3 +167,53 @@ handled in source. upload/download isn't forced through an in-memory `ByteArray`. A bytes-returning functions response accessor (`invokeForBytes`) is the same shape of additive gap — both are purely new surface, safe to land post-1.0. + +## Final naming audit (last pass before the freeze) + +A second, naming-only sweep across **every** module's `.klib.api` (7 parallel auditors + +a cross-module acronym/factory-verb/enum-casing analysis), judged against the Kotlin/JetBrains +API guidelines. Verdict: the surface was already in good shape — all auditors reported "no +blockers." A handful of genuine, contained violations of the SDK's **own** conventions were +fixed; the rest are deliberate, recorded decisions. + +**Fixed (the SDK's own convention was violated, and the change was contained):** +- `invokeSSE`→`invokeSse` — acronyms are word-cased in every other identifier (`Url`, `Otp`, + `Jwt`, `Csv`, `GeoJson`); this was the single all-caps outlier in the whole SDK. +- `Paginator.endReached`→`isEndReached` — booleans read as assertions; its sibling is `isLoading`. +- `selectWithCount`→`selectWithCountTyped` — it decodes into `T`, so it joins the `*Typed` family. +- `RealtimeChannelBuilder.setPrivate`→`configurePrivate` — matches the builder's `configure*` group. +- storage `createUploadSignedUrl(WithPath)`→`createSignedUploadUrl(WithPath)` — `Signed`+direction + order, matching `createSignedUrl` / `getSignedDownloadUrl`. +- `VectorDistanceMetric.DOTPRODUCT`→`DOT_PRODUCT`; auth-admin OIDC `jwksUri`→`jwksUrl` + (both keep their wire value via `@SerialName`). +- Removed two exact duplicates: core `toResultFlow()` (≡ `asFlow()`) and realtime `statusFlow()` + (≡ the `status` property). + +**Deliberate — kept by design (recorded so they aren't "fixed" later):** +- **Enum-entry casing is intentionally mixed.** Wire-mapped / option / SQL-keyword enums use + `UPPER_SNAKE` (`Order.ASC`, `ResponseFormat.GEOJSON`, every `@SerialName`-backed enum); the two + pure-domain category sets — `SupabaseErrorCategory` and `TextSearchType` — use `PascalCase` + because they read as a closed set of named conditions at a `when`/`onFailureCategory` call site. + Both styles are sanctioned by the Kotlin style guide; the split is by role, not by accident. +- **Filter-operator vocabulary** (`eq`/`neq` abbreviated, `greater`/`greaterEq` spelled, range + ops `rangeGt`/`rangeGte`) is kept — the query DSL was reviewed and blessed in the main audit; + the equality/ordering shorthands match what query-DSL users reach for. Not reopened. +- **Factory verbs differ by what they return**, on purpose: `Supabase.create` (root builder), + `createXClient` (feature clients), `googleAuthProvider`/`appleAuthProvider` (return a provider + *descriptor* you hand to config, not a client), `openOfflineSyncStore` (opens a DB-backed + resource). +- **`rpcTyped`=single vs `selectTyped`=list** is intentional: an RPC returns one value by nature, + a `select` returns rows. `rpcListTyped` / `rpcSingleTyped` make the other cardinalities explicit. +- **Pseudo-namespaced auth methods** (`mfa*`/`oauth*`/`passkey*`) read noun-first by design — a + flattened stand-in for sub-clients; admin stays verb-first CRUD. `getUserById`/`updateUserById` + keep `ById` because the non-admin `getUser` already means "by access token." +- **`*OrThrow` / `*WithResult` / `*WithAck` suffixes** are the deliberate explicit-exception / + await-confirmation escape hatches on top of the Result-first defaults — kept, not collapsed. + +**Deferred (real but not worth pre-freeze churn; the sync surface isn't published in 1.0):** +- `sync-core` `Record`/`Cursor` → `SyncRecord`/`SyncCursor` (collide with `java.lang.Record`) — + ~285 references across the sync tree; the sync modules' publishing is deferred, so this can ride + the same train as their first publish. +- `RealtimeSubscription.channel: String` → `channelName` (a name-trap, but `.channel` is too + ambiguous to rename mechanically without risk) and storage `ObjectListV2Result`→`*Response` + (suffix polish, 69 references) — both additive-safe to revisit. diff --git a/CHANGELOG.md b/CHANGELOG.md index e27344cb..84541b46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -114,6 +114,23 @@ each call site. your own `SqlDriver` (or `openOfflineSyncStore`). The generated `…sync.store.db` package (including a `Cursor` that collided with the public `sync.Cursor`) is no longer part of the published API. +- **Final naming pass (cross-module consistency).** A last convention sweep before the + freeze, so one rule holds across every module: + - `FunctionsClient.invokeSSE` → **`invokeSse`** — acronyms are word-cased everywhere + else in the SDK (`Url`, `Otp`, `Jwt`, `Csv`, `GeoJson`); this was the lone exception. + - `Paginator.endReached` → **`isEndReached`** — a boolean reads as an assertion, matching + its sibling `isLoading`. + - Database `selectWithCount` → **`selectWithCountTyped`** — it decodes into your type, so + it joins the `*Typed` family (`selectTyped` / `selectSingleTyped` / …). + - Realtime `RealtimeChannelBuilder.setPrivate(…)` → **`configurePrivate(…)`** — matches + the builder's own `configureBroadcast` / `configurePresence` prefix. + - Storage `createUploadSignedUrl` / `…WithPath` → **`createSignedUploadUrl`** / `…WithPath` + — `Signed`+direction word order, matching `createSignedUrl` / `getSignedDownloadUrl`. + - Storage `VectorDistanceMetric.DOTPRODUCT` → **`DOT_PRODUCT`** — legible entry next to + `COSINE` / `EUCLIDEAN`; the `dotproduct` wire value is unchanged (via `@SerialName`). + - Auth-admin OIDC `jwksUri` → **`jwksUrl`** — its siblings are all `*Url` + (`authorizationUrl` / `tokenUrl` / `userinfoUrl`); the `jwks_uri` wire field is + unchanged (via `@SerialName`). ### Removed (breaking) @@ -127,6 +144,9 @@ each call site. fire-and-forget. - **Realtime `removeChannel(subscription)`** — the deprecated duplicate of `removeSubscription(subscription)`. +- **Duplicate `Flow` bridges** — core `SupabaseResult.toResultFlow()` (byte-for-byte the + same single-emit as `asFlow()`) and realtime `RealtimeSubscription.statusFlow()` + (identical to the `status` property) were removed; use `asFlow()` and `.status`. - **~46 wire-only request/response DTOs** in `supabase-auth` and `supabase-storage` are now `internal` (they were never meant to be constructed by callers). @@ -402,7 +422,7 @@ each call site. `order=` params — so `order("a"); order("b")` sorted by only one column. Successive `order` calls now accumulate into one parameter (per referenced table), matching PostgREST. - **Edge Function SSE streaming: the last-event-id now persists across events.** The - `invokeSSE` parser reset the id on every event, so a streamed event that omitted `id:` + `invokeSse` parser reset the id on every event, so a streamed event that omitted `id:` reported `null` instead of inheriting the most recent id (the browser `EventSource.lastEventId` behaviour). The id is now carried forward until the server sends a new one. As part of the same fix, a block carrying only a (now-persistent) id no longer @@ -536,7 +556,7 @@ each call site. ### Added - **Pagination** — a demand-driven `Paginator` in `supabase-core` (exposes - `items`/`isLoading`/`endReached`/`error` as `StateFlow`s, with `loadNext()` and + `items`/`isLoading`/`isEndReached`/`error` as `StateFlow`s, with `loadNext()` and `refresh()`), plus in-module factories: `DatabaseClient.paginator()`, `StorageClient.listPaginator()` and `AuthAdminClient.usersPaginator()`. No new dependencies; works on all targets. See the new **Pagination** docs page @@ -755,13 +775,13 @@ change is additive — no breaking changes. corrupting images/PDFs. Also: extension→MIME inference when `contentType` is left at the octet-stream default, and a `withCacheNonce` URL cache-buster. - **Postgrest count** — `selectCount` (HTTP `HEAD`), `selectRange`, and typed - `selectWithCount` parse the `Content-Range` header into a `PostgrestPage`/ + `selectWithCountTyped` parse the `Content-Range` header into a `PostgrestPage`/ `PostgrestRange` (handles `0-9/27`, `*/27`, `*/*`), so the requested count is finally surfaced. Added the geojson+`stripNulls` mutual-exclusion guard. - **Realtime** — HTTP `broadcast(...)` without a subscription (`/realtime/v1/api/broadcast`); presence `metas` are unwrapped to user state; `postgres_changes` route by the server-assigned binding `ids`; reconnect backoff gains optional jitter. -- **Edge Functions SSE** — `invokeSSE(...): Flow` with +- **Edge Functions SSE** — `invokeSse(...): Flow` with per-event `decodeAs()`, over a new `streamLines` transport primitive. - **Auth** — single-flight, TTL-cached JWKS (`resolveSigningKey`); `getClaims` validates `exp`/`nbf` (with clock-skew leeway) and, opt-in, `iss`/`aud`; diff --git a/supabase-auth-admin/api/android/supabase-auth-admin.api b/supabase-auth-admin/api/android/supabase-auth-admin.api index f3515852..ce574947 100644 --- a/supabase-auth-admin/api/android/supabase-auth-admin.api +++ b/supabase-auth-admin/api/android/supabase-auth-admin.api @@ -182,7 +182,7 @@ public final class io/github/androidpoet/supabase/auth/admin/models/CustomProvid public final fun getId ()Ljava/lang/String; public final fun getIdentifier ()Ljava/lang/String; public final fun getIssuer ()Ljava/lang/String; - public final fun getJwksUri ()Ljava/lang/String; + public final fun getJwksUrl ()Ljava/lang/String; public final fun getName ()Ljava/lang/String; public final fun getPkceEnabled ()Ljava/lang/Boolean; public final fun getProviderType ()Lio/github/androidpoet/supabase/auth/admin/models/CustomProviderType; @@ -247,7 +247,7 @@ public final class io/github/androidpoet/supabase/auth/admin/models/CustomProvid public final fun getEnabled ()Ljava/lang/Boolean; public final fun getIdentifier ()Ljava/lang/String; public final fun getIssuer ()Ljava/lang/String; - public final fun getJwksUri ()Ljava/lang/String; + public final fun getJwksUrl ()Ljava/lang/String; public final fun getName ()Ljava/lang/String; public final fun getPkceEnabled ()Ljava/lang/Boolean; public final fun getProviderType ()Lio/github/androidpoet/supabase/auth/admin/models/CustomProviderType; @@ -353,7 +353,7 @@ public final class io/github/androidpoet/supabase/auth/admin/models/CustomProvid public final fun getEmailOptional ()Ljava/lang/Boolean; public final fun getEnabled ()Ljava/lang/Boolean; public final fun getIssuer ()Ljava/lang/String; - public final fun getJwksUri ()Ljava/lang/String; + public final fun getJwksUrl ()Ljava/lang/String; public final fun getName ()Ljava/lang/String; public final fun getPkceEnabled ()Ljava/lang/Boolean; public final fun getScopes ()Ljava/util/List; @@ -816,7 +816,7 @@ public final class io/github/androidpoet/supabase/auth/admin/models/OidcDiscover public fun equals (Ljava/lang/Object;)Z public final fun getAuthorizationEndpoint ()Ljava/lang/String; public final fun getIssuer ()Ljava/lang/String; - public final fun getJwksUri ()Ljava/lang/String; + public final fun getJwksUrl ()Ljava/lang/String; public final fun getRevocationEndpoint ()Ljava/lang/String; public final fun getSupportedIdTokenSigningAlgs ()Ljava/util/List; public final fun getSupportedResponseTypes ()Ljava/util/List; diff --git a/supabase-auth-admin/api/jvm/supabase-auth-admin.api b/supabase-auth-admin/api/jvm/supabase-auth-admin.api index f3515852..ce574947 100644 --- a/supabase-auth-admin/api/jvm/supabase-auth-admin.api +++ b/supabase-auth-admin/api/jvm/supabase-auth-admin.api @@ -182,7 +182,7 @@ public final class io/github/androidpoet/supabase/auth/admin/models/CustomProvid public final fun getId ()Ljava/lang/String; public final fun getIdentifier ()Ljava/lang/String; public final fun getIssuer ()Ljava/lang/String; - public final fun getJwksUri ()Ljava/lang/String; + public final fun getJwksUrl ()Ljava/lang/String; public final fun getName ()Ljava/lang/String; public final fun getPkceEnabled ()Ljava/lang/Boolean; public final fun getProviderType ()Lio/github/androidpoet/supabase/auth/admin/models/CustomProviderType; @@ -247,7 +247,7 @@ public final class io/github/androidpoet/supabase/auth/admin/models/CustomProvid public final fun getEnabled ()Ljava/lang/Boolean; public final fun getIdentifier ()Ljava/lang/String; public final fun getIssuer ()Ljava/lang/String; - public final fun getJwksUri ()Ljava/lang/String; + public final fun getJwksUrl ()Ljava/lang/String; public final fun getName ()Ljava/lang/String; public final fun getPkceEnabled ()Ljava/lang/Boolean; public final fun getProviderType ()Lio/github/androidpoet/supabase/auth/admin/models/CustomProviderType; @@ -353,7 +353,7 @@ public final class io/github/androidpoet/supabase/auth/admin/models/CustomProvid public final fun getEmailOptional ()Ljava/lang/Boolean; public final fun getEnabled ()Ljava/lang/Boolean; public final fun getIssuer ()Ljava/lang/String; - public final fun getJwksUri ()Ljava/lang/String; + public final fun getJwksUrl ()Ljava/lang/String; public final fun getName ()Ljava/lang/String; public final fun getPkceEnabled ()Ljava/lang/Boolean; public final fun getScopes ()Ljava/util/List; @@ -816,7 +816,7 @@ public final class io/github/androidpoet/supabase/auth/admin/models/OidcDiscover public fun equals (Ljava/lang/Object;)Z public final fun getAuthorizationEndpoint ()Ljava/lang/String; public final fun getIssuer ()Ljava/lang/String; - public final fun getJwksUri ()Ljava/lang/String; + public final fun getJwksUrl ()Ljava/lang/String; public final fun getRevocationEndpoint ()Ljava/lang/String; public final fun getSupportedIdTokenSigningAlgs ()Ljava/util/List; public final fun getSupportedResponseTypes ()Ljava/util/List; diff --git a/supabase-auth-admin/api/supabase-auth-admin.klib.api b/supabase-auth-admin/api/supabase-auth-admin.klib.api index 4e8647b7..d1650b57 100644 --- a/supabase-auth-admin/api/supabase-auth-admin.klib.api +++ b/supabase-auth-admin/api/supabase-auth-admin.klib.api @@ -250,8 +250,8 @@ final class io.github.androidpoet.supabase.auth.admin.models/CustomProvider { // final fun (): kotlin/String // io.github.androidpoet.supabase.auth.admin.models/CustomProvider.identifier.|(){}[0] final val issuer // io.github.androidpoet.supabase.auth.admin.models/CustomProvider.issuer|{}issuer[0] final fun (): kotlin/String? // io.github.androidpoet.supabase.auth.admin.models/CustomProvider.issuer.|(){}[0] - final val jwksUri // io.github.androidpoet.supabase.auth.admin.models/CustomProvider.jwksUri|{}jwksUri[0] - final fun (): kotlin/String? // io.github.androidpoet.supabase.auth.admin.models/CustomProvider.jwksUri.|(){}[0] + final val jwksUrl // io.github.androidpoet.supabase.auth.admin.models/CustomProvider.jwksUrl|{}jwksUrl[0] + final fun (): kotlin/String? // io.github.androidpoet.supabase.auth.admin.models/CustomProvider.jwksUrl.|(){}[0] final val name // io.github.androidpoet.supabase.auth.admin.models/CustomProvider.name|{}name[0] final fun (): kotlin/String // io.github.androidpoet.supabase.auth.admin.models/CustomProvider.name.|(){}[0] final val pkceEnabled // io.github.androidpoet.supabase.auth.admin.models/CustomProvider.pkceEnabled|{}pkceEnabled[0] @@ -337,8 +337,8 @@ final class io.github.androidpoet.supabase.auth.admin.models/CustomProviderCreat final fun (): kotlin/String // io.github.androidpoet.supabase.auth.admin.models/CustomProviderCreateRequest.identifier.|(){}[0] final val issuer // io.github.androidpoet.supabase.auth.admin.models/CustomProviderCreateRequest.issuer|{}issuer[0] final fun (): kotlin/String? // io.github.androidpoet.supabase.auth.admin.models/CustomProviderCreateRequest.issuer.|(){}[0] - final val jwksUri // io.github.androidpoet.supabase.auth.admin.models/CustomProviderCreateRequest.jwksUri|{}jwksUri[0] - final fun (): kotlin/String? // io.github.androidpoet.supabase.auth.admin.models/CustomProviderCreateRequest.jwksUri.|(){}[0] + final val jwksUrl // io.github.androidpoet.supabase.auth.admin.models/CustomProviderCreateRequest.jwksUrl|{}jwksUrl[0] + final fun (): kotlin/String? // io.github.androidpoet.supabase.auth.admin.models/CustomProviderCreateRequest.jwksUrl.|(){}[0] final val name // io.github.androidpoet.supabase.auth.admin.models/CustomProviderCreateRequest.name|{}name[0] final fun (): kotlin/String // io.github.androidpoet.supabase.auth.admin.models/CustomProviderCreateRequest.name.|(){}[0] final val pkceEnabled // io.github.androidpoet.supabase.auth.admin.models/CustomProviderCreateRequest.pkceEnabled|{}pkceEnabled[0] @@ -445,8 +445,8 @@ final class io.github.androidpoet.supabase.auth.admin.models/CustomProviderUpdat final fun (): kotlin/Boolean? // io.github.androidpoet.supabase.auth.admin.models/CustomProviderUpdateRequest.enabled.|(){}[0] final val issuer // io.github.androidpoet.supabase.auth.admin.models/CustomProviderUpdateRequest.issuer|{}issuer[0] final fun (): kotlin/String? // io.github.androidpoet.supabase.auth.admin.models/CustomProviderUpdateRequest.issuer.|(){}[0] - final val jwksUri // io.github.androidpoet.supabase.auth.admin.models/CustomProviderUpdateRequest.jwksUri|{}jwksUri[0] - final fun (): kotlin/String? // io.github.androidpoet.supabase.auth.admin.models/CustomProviderUpdateRequest.jwksUri.|(){}[0] + final val jwksUrl // io.github.androidpoet.supabase.auth.admin.models/CustomProviderUpdateRequest.jwksUrl|{}jwksUrl[0] + final fun (): kotlin/String? // io.github.androidpoet.supabase.auth.admin.models/CustomProviderUpdateRequest.jwksUrl.|(){}[0] final val name // io.github.androidpoet.supabase.auth.admin.models/CustomProviderUpdateRequest.name|{}name[0] final fun (): kotlin/String? // io.github.androidpoet.supabase.auth.admin.models/CustomProviderUpdateRequest.name.|(){}[0] final val pkceEnabled // io.github.androidpoet.supabase.auth.admin.models/CustomProviderUpdateRequest.pkceEnabled|{}pkceEnabled[0] @@ -887,8 +887,8 @@ final class io.github.androidpoet.supabase.auth.admin.models/OidcDiscoveryDocume final fun (): kotlin/String // io.github.androidpoet.supabase.auth.admin.models/OidcDiscoveryDocument.authorizationEndpoint.|(){}[0] final val issuer // io.github.androidpoet.supabase.auth.admin.models/OidcDiscoveryDocument.issuer|{}issuer[0] final fun (): kotlin/String // io.github.androidpoet.supabase.auth.admin.models/OidcDiscoveryDocument.issuer.|(){}[0] - final val jwksUri // io.github.androidpoet.supabase.auth.admin.models/OidcDiscoveryDocument.jwksUri|{}jwksUri[0] - final fun (): kotlin/String // io.github.androidpoet.supabase.auth.admin.models/OidcDiscoveryDocument.jwksUri.|(){}[0] + final val jwksUrl // io.github.androidpoet.supabase.auth.admin.models/OidcDiscoveryDocument.jwksUrl|{}jwksUrl[0] + final fun (): kotlin/String // io.github.androidpoet.supabase.auth.admin.models/OidcDiscoveryDocument.jwksUrl.|(){}[0] final val revocationEndpoint // io.github.androidpoet.supabase.auth.admin.models/OidcDiscoveryDocument.revocationEndpoint|{}revocationEndpoint[0] final fun (): kotlin/String? // io.github.androidpoet.supabase.auth.admin.models/OidcDiscoveryDocument.revocationEndpoint.|(){}[0] final val supportedIdTokenSigningAlgs // io.github.androidpoet.supabase.auth.admin.models/OidcDiscoveryDocument.supportedIdTokenSigningAlgs|{}supportedIdTokenSigningAlgs[0] diff --git a/supabase-auth-admin/src/commonMain/kotlin/io/github/androidpoet/supabase/auth/admin/models/AuthAdminModels.kt b/supabase-auth-admin/src/commonMain/kotlin/io/github/androidpoet/supabase/auth/admin/models/AuthAdminModels.kt index 5a51b0fc..6ff808e5 100644 --- a/supabase-auth-admin/src/commonMain/kotlin/io/github/androidpoet/supabase/auth/admin/models/AuthAdminModels.kt +++ b/supabase-auth-admin/src/commonMain/kotlin/io/github/androidpoet/supabase/auth/admin/models/AuthAdminModels.kt @@ -219,7 +219,7 @@ public data class OidcDiscoveryDocument( public val issuer: String, @SerialName("authorization_endpoint") public val authorizationEndpoint: String, @SerialName("token_endpoint") public val tokenEndpoint: String, - @SerialName("jwks_uri") public val jwksUri: String, + @SerialName("jwks_uri") public val jwksUrl: String, @SerialName("userinfo_endpoint") public val userinfoEndpoint: String? = null, @SerialName("revocation_endpoint") public val revocationEndpoint: String? = null, @SerialName("supported_scopes") public val supportedScopes: List? = null, @@ -248,7 +248,7 @@ public data class CustomProvider( @SerialName("authorization_url") public val authorizationUrl: String? = null, @SerialName("token_url") public val tokenUrl: String? = null, @SerialName("userinfo_url") public val userinfoUrl: String? = null, - @SerialName("jwks_uri") public val jwksUri: String? = null, + @SerialName("jwks_uri") public val jwksUrl: String? = null, @SerialName("discovery_document") public val discoveryDocument: OidcDiscoveryDocument? = null, @SerialName("created_at") public val createdAt: String? = null, @SerialName("updated_at") public val updatedAt: String? = null, @@ -274,7 +274,7 @@ public data class CustomProviderCreateRequest( @SerialName("authorization_url") public val authorizationUrl: String? = null, @SerialName("token_url") public val tokenUrl: String? = null, @SerialName("userinfo_url") public val userinfoUrl: String? = null, - @SerialName("jwks_uri") public val jwksUri: String? = null, + @SerialName("jwks_uri") public val jwksUrl: String? = null, ) { // Mask the client secret so it never leaks into logs or crash reports. override fun toString(): String = @@ -284,7 +284,7 @@ public data class CustomProviderCreateRequest( "authorizationParams=$authorizationParams, enabled=$enabled, emailOptional=$emailOptional, " + "issuer=$issuer, discoveryUrl=$discoveryUrl, skipNonceCheck=$skipNonceCheck, " + "authorizationUrl=$authorizationUrl, tokenUrl=$tokenUrl, userinfoUrl=$userinfoUrl, " + - "jwksUri=$jwksUri)" + "jwksUrl=$jwksUrl)" } @Serializable @@ -305,7 +305,7 @@ public data class CustomProviderUpdateRequest( @SerialName("authorization_url") public val authorizationUrl: String? = null, @SerialName("token_url") public val tokenUrl: String? = null, @SerialName("userinfo_url") public val userinfoUrl: String? = null, - @SerialName("jwks_uri") public val jwksUri: String? = null, + @SerialName("jwks_uri") public val jwksUrl: String? = null, ) { // Mask the client secret so it never leaks into logs or crash reports. override fun toString(): String = @@ -316,7 +316,7 @@ public data class CustomProviderUpdateRequest( "enabled=$enabled, emailOptional=$emailOptional, issuer=$issuer, " + "discoveryUrl=$discoveryUrl, skipNonceCheck=$skipNonceCheck, " + "authorizationUrl=$authorizationUrl, tokenUrl=$tokenUrl, userinfoUrl=$userinfoUrl, " + - "jwksUri=$jwksUri)" + "jwksUrl=$jwksUrl)" } @Serializable diff --git a/supabase-client/src/commonMain/kotlin/io/github/androidpoet/supabase/client/SupabaseConfig.kt b/supabase-client/src/commonMain/kotlin/io/github/androidpoet/supabase/client/SupabaseConfig.kt index 70e68489..83635057 100644 --- a/supabase-client/src/commonMain/kotlin/io/github/androidpoet/supabase/client/SupabaseConfig.kt +++ b/supabase-client/src/commonMain/kotlin/io/github/androidpoet/supabase/client/SupabaseConfig.kt @@ -63,7 +63,7 @@ public class SupabaseConfigBuilder { /** * Maximum total time for a whole request including the response body, in * milliseconds. `null` (default) leaves it unbounded. Do NOT set this when - * streaming (`streamLines`/`invokeSSE`) or transferring large + * streaming (`streamLines`/`invokeSse`) or transferring large * uploads/downloads — it caps the entire transfer, not just connection setup. */ public var requestTimeoutMillis: Long? = null diff --git a/supabase-core/api/android/supabase-core.api b/supabase-core/api/android/supabase-core.api index 865ab2fd..a470f8f3 100644 --- a/supabase-core/api/android/supabase-core.api +++ b/supabase-core/api/android/supabase-core.api @@ -136,9 +136,9 @@ public final class io/github/androidpoet/supabase/core/models/WhereBuilder { public final class io/github/androidpoet/supabase/core/paging/Paginator { public fun (ILkotlin/jvm/functions/Function3;)V public synthetic fun (ILkotlin/jvm/functions/Function3;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun getEndReached ()Lkotlinx/coroutines/flow/StateFlow; public final fun getError ()Lkotlinx/coroutines/flow/StateFlow; public final fun getItems ()Lkotlinx/coroutines/flow/StateFlow; + public final fun isEndReached ()Lkotlinx/coroutines/flow/StateFlow; public final fun isLoading ()Lkotlinx/coroutines/flow/StateFlow; public final fun loadNext (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun refresh (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -441,7 +441,6 @@ public final class io/github/androidpoet/supabase/core/result/SupabaseResultAsyn public final class io/github/androidpoet/supabase/core/result/SupabaseResultFlowKt { public static final fun toFlow (Lio/github/androidpoet/supabase/core/result/SupabaseResult;)Lkotlinx/coroutines/flow/Flow; public static final fun toFlow (Lio/github/androidpoet/supabase/core/result/SupabaseResult;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow; - public static final fun toResultFlow (Lio/github/androidpoet/supabase/core/result/SupabaseResult;)Lkotlinx/coroutines/flow/Flow; public static final fun toSuspendFlow (Lio/github/androidpoet/supabase/core/result/SupabaseResult;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; } diff --git a/supabase-core/api/jvm/supabase-core.api b/supabase-core/api/jvm/supabase-core.api index 865ab2fd..a470f8f3 100644 --- a/supabase-core/api/jvm/supabase-core.api +++ b/supabase-core/api/jvm/supabase-core.api @@ -136,9 +136,9 @@ public final class io/github/androidpoet/supabase/core/models/WhereBuilder { public final class io/github/androidpoet/supabase/core/paging/Paginator { public fun (ILkotlin/jvm/functions/Function3;)V public synthetic fun (ILkotlin/jvm/functions/Function3;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun getEndReached ()Lkotlinx/coroutines/flow/StateFlow; public final fun getError ()Lkotlinx/coroutines/flow/StateFlow; public final fun getItems ()Lkotlinx/coroutines/flow/StateFlow; + public final fun isEndReached ()Lkotlinx/coroutines/flow/StateFlow; public final fun isLoading ()Lkotlinx/coroutines/flow/StateFlow; public final fun loadNext (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun refresh (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -441,7 +441,6 @@ public final class io/github/androidpoet/supabase/core/result/SupabaseResultAsyn public final class io/github/androidpoet/supabase/core/result/SupabaseResultFlowKt { public static final fun toFlow (Lio/github/androidpoet/supabase/core/result/SupabaseResult;)Lkotlinx/coroutines/flow/Flow; public static final fun toFlow (Lio/github/androidpoet/supabase/core/result/SupabaseResult;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow; - public static final fun toResultFlow (Lio/github/androidpoet/supabase/core/result/SupabaseResult;)Lkotlinx/coroutines/flow/Flow; public static final fun toSuspendFlow (Lio/github/androidpoet/supabase/core/result/SupabaseResult;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; } diff --git a/supabase-core/api/supabase-core.klib.api b/supabase-core/api/supabase-core.klib.api index 963b9b87..7beb00de 100644 --- a/supabase-core/api/supabase-core.klib.api +++ b/supabase-core/api/supabase-core.klib.api @@ -146,10 +146,10 @@ final class <#A: kotlin/Any?> io.github.androidpoet.supabase.core.models/Postgre final class <#A: kotlin/Any?> io.github.androidpoet.supabase.core.paging/Paginator { // io.github.androidpoet.supabase.core.paging/Paginator|null[0] constructor (kotlin/Int = ..., kotlin.coroutines/SuspendFunction2>) // io.github.androidpoet.supabase.core.paging/Paginator.|(kotlin.Int;kotlin.coroutines.SuspendFunction2>){}[0] - final val endReached // io.github.androidpoet.supabase.core.paging/Paginator.endReached|{}endReached[0] - final fun (): kotlinx.coroutines.flow/StateFlow // io.github.androidpoet.supabase.core.paging/Paginator.endReached.|(){}[0] final val error // io.github.androidpoet.supabase.core.paging/Paginator.error|{}error[0] final fun (): kotlinx.coroutines.flow/StateFlow // io.github.androidpoet.supabase.core.paging/Paginator.error.|(){}[0] + final val isEndReached // io.github.androidpoet.supabase.core.paging/Paginator.isEndReached|{}isEndReached[0] + final fun (): kotlinx.coroutines.flow/StateFlow // io.github.androidpoet.supabase.core.paging/Paginator.isEndReached.|(){}[0] final val isLoading // io.github.androidpoet.supabase.core.paging/Paginator.isLoading|{}isLoading[0] final fun (): kotlinx.coroutines.flow/StateFlow // io.github.androidpoet.supabase.core.paging/Paginator.isLoading.|(){}[0] final val items // io.github.androidpoet.supabase.core.paging/Paginator.items|{}items[0] @@ -552,7 +552,6 @@ final fun <#A: kotlin/Any?> (io.github.androidpoet.supabase.core.result/Supabase final fun <#A: kotlin/Any?> (io.github.androidpoet.supabase.core.result/SupabaseResult<#A>).io.github.androidpoet.supabase.core.result/getOrDefault(#A): #A // io.github.androidpoet.supabase.core.result/getOrDefault|getOrDefault@io.github.androidpoet.supabase.core.result.SupabaseResult<0:0>(0:0){0§}[0] final fun <#A: kotlin/Any?> (io.github.androidpoet.supabase.core.result/SupabaseResult<#A>).io.github.androidpoet.supabase.core.result/toFlow(): kotlinx.coroutines.flow/Flow<#A> // io.github.androidpoet.supabase.core.result/toFlow|toFlow@io.github.androidpoet.supabase.core.result.SupabaseResult<0:0>(){0§}[0] final fun <#A: kotlin/Any?> (io.github.androidpoet.supabase.core.result/SupabaseResult<#A>).io.github.androidpoet.supabase.core.result/toKotlinResult(): kotlin/Result<#A> // io.github.androidpoet.supabase.core.result/toKotlinResult|toKotlinResult@io.github.androidpoet.supabase.core.result.SupabaseResult<0:0>(){0§}[0] -final fun <#A: kotlin/Any?> (io.github.androidpoet.supabase.core.result/SupabaseResult<#A>).io.github.androidpoet.supabase.core.result/toResultFlow(): kotlinx.coroutines.flow/Flow> // io.github.androidpoet.supabase.core.result/toResultFlow|toResultFlow@io.github.androidpoet.supabase.core.result.SupabaseResult<0:0>(){0§}[0] final fun <#A: kotlin/Any?> (kotlinx.coroutines/CoroutineScope).io.github.androidpoet.supabase.core.result/deferredResult(kotlin.coroutines/SuspendFunction0>): kotlinx.coroutines/Deferred> // io.github.androidpoet.supabase.core.result/deferredResult|deferredResult@kotlinx.coroutines.CoroutineScope(kotlin.coroutines.SuspendFunction0>){0§}[0] final fun <#A: kotlin/Any?> io.github.androidpoet.supabase.core.result/dataFlow(kotlin.coroutines/SuspendFunction0>): kotlinx.coroutines.flow/Flow<#A> // io.github.androidpoet.supabase.core.result/dataFlow|dataFlow(kotlin.coroutines.SuspendFunction0>){0§}[0] final fun <#A: kotlin/Any?> io.github.androidpoet.supabase.core.result/mergeAll(kotlin.collections/List>): io.github.androidpoet.supabase.core.result/SupabaseResult> // io.github.androidpoet.supabase.core.result/mergeAll|mergeAll(kotlin.collections.List>){0§}[0] diff --git a/supabase-core/src/commonMain/kotlin/io/github/androidpoet/supabase/core/paging/Paginator.kt b/supabase-core/src/commonMain/kotlin/io/github/androidpoet/supabase/core/paging/Paginator.kt index 86390865..5e322316 100644 --- a/supabase-core/src/commonMain/kotlin/io/github/androidpoet/supabase/core/paging/Paginator.kt +++ b/supabase-core/src/commonMain/kotlin/io/github/androidpoet/supabase/core/paging/Paginator.kt @@ -15,13 +15,13 @@ import kotlinx.coroutines.withContext * * Unlike a flow that walks every page on its own, this loads the next page only * when the consumer asks — call [loadNext] when the list nears its end. It holds - * the accumulated [items], plus [isLoading], [endReached] and [error] as + * the accumulated [items], plus [isLoading], [isEndReached] and [error] as * [StateFlow]s a UI can observe directly (or fold into a screen state). It depends * on nothing but coroutines, so it works on every target and with or without * Compose. * * Provide a [fetch] that returns one page given an `offset` and `limit`; the - * paginator advances the offset and stops ([endReached]) once a page comes back + * paginator advances the offset and stops ([isEndReached]) once a page comes back * shorter than [pageSize]. [fetch] is expected to **throw** on failure (e.g. via * `getOrThrow()`); the throwable is captured into [error] rather than propagated, * except [CancellationException], which is always rethrown so coroutine @@ -62,10 +62,10 @@ public class Paginator( /** `true` while a page is being fetched. */ public val isLoading: StateFlow = _isLoading.asStateFlow() - private val _endReached = MutableStateFlow(false) + private val _isEndReached = MutableStateFlow(false) /** `true` once a short page signalled there are no more rows. */ - public val endReached: StateFlow = _endReached.asStateFlow() + public val isEndReached: StateFlow = _isEndReached.asStateFlow() private val _error = MutableStateFlow(null) @@ -83,12 +83,12 @@ public class Paginator( /** * Loads and appends the next page. No-op if a load is already running or - * [endReached] is set. Failures land in [error]; cancellation is rethrown. + * [isEndReached] is set. Failures land in [error]; cancellation is rethrown. */ public suspend fun loadNext() { val startEpoch = mutex.withLock { - if (_isLoading.value || _endReached.value) return + if (_isLoading.value || _isEndReached.value) return _isLoading.value = true _error.value = null epoch @@ -105,7 +105,7 @@ public class Paginator( mutex.withLock { epoch++ offset = 0 - _endReached.value = false + _isEndReached.value = false _error.value = null _items.value = emptyList() // Take ownership of the loading flag in the SAME lock as the reset and @@ -130,7 +130,7 @@ public class Paginator( if (epoch == startEpoch) { _items.update { it + page } offset += page.size - if (page.size < pageSize) _endReached.value = true + if (page.size < pageSize) _isEndReached.value = true } } } catch (e: CancellationException) { diff --git a/supabase-core/src/commonMain/kotlin/io/github/androidpoet/supabase/core/result/SupabaseResultFlow.kt b/supabase-core/src/commonMain/kotlin/io/github/androidpoet/supabase/core/result/SupabaseResultFlow.kt index dcaaa2df..6f53cb4f 100644 --- a/supabase-core/src/commonMain/kotlin/io/github/androidpoet/supabase/core/result/SupabaseResultFlow.kt +++ b/supabase-core/src/commonMain/kotlin/io/github/androidpoet/supabase/core/result/SupabaseResultFlow.kt @@ -10,7 +10,7 @@ import kotlinx.coroutines.flow.flowOf * failure. Convenient for `stateIn`/`collectAsState` in MVVM/Compose layers. * * Failures are dropped silently — handle them with [onFailure]/[fold] before - * converting, or use [toResultFlow] to keep the error in-stream. + * converting, or use [asFlow] to keep the error in-stream. */ public fun SupabaseResult.toFlow(): Flow = when (this) { @@ -39,10 +39,3 @@ public inline fun SupabaseResult.toSuspendFlow( if (self is SupabaseResult.Success) emit(transform(self.value)) } } - -/** - * Emits the whole result as a single element, so the failure (and its - * [SupabaseError]) survives into the stream. The error-preserving counterpart of - * [toFlow]. - */ -public fun SupabaseResult.toResultFlow(): Flow> = flowOf(this) diff --git a/supabase-core/src/commonTest/kotlin/io/github/androidpoet/supabase/core/PaginatorTest.kt b/supabase-core/src/commonTest/kotlin/io/github/androidpoet/supabase/core/PaginatorTest.kt index d93c0320..05bd82d6 100644 --- a/supabase-core/src/commonTest/kotlin/io/github/androidpoet/supabase/core/PaginatorTest.kt +++ b/supabase-core/src/commonTest/kotlin/io/github/androidpoet/supabase/core/PaginatorTest.kt @@ -25,14 +25,14 @@ class PaginatorTest { pager.loadNext() assertEquals(listOf(0, 1), pager.items.value) - assertTrue(!pager.endReached.value) + assertTrue(!pager.isEndReached.value) pager.loadNext() assertEquals(listOf(0, 1, 2, 3), pager.items.value) pager.loadNext() assertEquals(listOf(0, 1, 2, 3, 4), pager.items.value) - assertTrue(pager.endReached.value) + assertTrue(pager.isEndReached.value) } @Test @@ -42,13 +42,13 @@ class PaginatorTest { val pager = Paginator(pageSize = 10) { _, _ -> calls++ - listOf(1) // short immediately → endReached + listOf(1) // short immediately → isEndReached } pager.loadNext() pager.loadNext() pager.loadNext() assertEquals(1, calls) - assertTrue(pager.endReached.value) + assertTrue(pager.isEndReached.value) } @Test @@ -61,7 +61,7 @@ class PaginatorTest { pager.loadNext() // must not throw assertTrue(pager.error.value is IllegalStateException) assertTrue(pager.items.value.isEmpty()) - assertTrue(!pager.endReached.value) // a failure is retryable + assertTrue(!pager.isEndReached.value) // a failure is retryable } @Test @@ -87,7 +87,7 @@ class PaginatorTest { pager.refresh() assertEquals(listOf(0, 1), pager.items.value) // back to first page assertNull(pager.error.value) - assertTrue(!pager.endReached.value) + assertTrue(!pager.isEndReached.value) } @Test diff --git a/supabase-core/src/commonTest/kotlin/io/github/androidpoet/supabase/core/SupabaseResultParityTest.kt b/supabase-core/src/commonTest/kotlin/io/github/androidpoet/supabase/core/SupabaseResultParityTest.kt index f522a883..7c040501 100644 --- a/supabase-core/src/commonTest/kotlin/io/github/androidpoet/supabase/core/SupabaseResultParityTest.kt +++ b/supabase-core/src/commonTest/kotlin/io/github/androidpoet/supabase/core/SupabaseResultParityTest.kt @@ -2,12 +2,12 @@ package io.github.androidpoet.supabase.core import io.github.androidpoet.supabase.core.result.SupabaseError import io.github.androidpoet.supabase.core.result.SupabaseResult +import io.github.androidpoet.supabase.core.result.asFlow import io.github.androidpoet.supabase.core.result.filter import io.github.androidpoet.supabase.core.result.filterNot import io.github.androidpoet.supabase.core.result.getOrDefault import io.github.androidpoet.supabase.core.result.mergeAll import io.github.androidpoet.supabase.core.result.toFlow -import io.github.androidpoet.supabase.core.result.toResultFlow import io.github.androidpoet.supabase.core.result.toSuspendFlow import io.github.androidpoet.supabase.core.result.zip import kotlinx.coroutines.flow.toList @@ -134,9 +134,9 @@ class SupabaseResultParityTest { } @Test - fun test_toResultFlow_preservesFailure() = + fun test_asFlow_preservesFailure() = runTest { - val emitted = SupabaseResult.Failure(error).toResultFlow().toList() + val emitted = SupabaseResult.Failure(error).asFlow().toList() assertEquals(1, emitted.size) assertEquals(error, emitted.single().errorOrNull()) } diff --git a/supabase-database/api/supabase-database.klib.api b/supabase-database/api/supabase-database.klib.api index 86a6eacf..a4cb6bf8 100644 --- a/supabase-database/api/supabase-database.klib.api +++ b/supabase-database/api/supabase-database.klib.api @@ -212,7 +212,7 @@ final suspend inline fun <#A: reified kotlin/Any?> (io.github.androidpoet.supaba final suspend inline fun <#A: reified kotlin/Any?> (io.github.androidpoet.supabase.database/DatabaseClient).io.github.androidpoet.supabase.database/selectSingleTyped(kotlin/String, kotlin/String? = ..., kotlin/String = ..., noinline kotlin/Function1 = ...): io.github.androidpoet.supabase.core.result/SupabaseResult<#A> // io.github.androidpoet.supabase.database/selectSingleTyped|selectSingleTyped@io.github.androidpoet.supabase.database.DatabaseClient(kotlin.String;kotlin.String?;kotlin.String;kotlin.Function1){0§}[0] final suspend inline fun <#A: reified kotlin/Any?> (io.github.androidpoet.supabase.database/DatabaseClient).io.github.androidpoet.supabase.database/selectTyped(kotlin/String, kotlin/String? = ..., kotlin/String = ..., noinline kotlin/Function1 = ...): io.github.androidpoet.supabase.core.result/SupabaseResult> // io.github.androidpoet.supabase.database/selectTyped|selectTyped@io.github.androidpoet.supabase.database.DatabaseClient(kotlin.String;kotlin.String?;kotlin.String;kotlin.Function1){0§}[0] final suspend inline fun <#A: reified kotlin/Any?> (io.github.androidpoet.supabase.database/DatabaseClient).io.github.androidpoet.supabase.database/selectTypedOrThrow(kotlin/String, kotlin/String? = ..., kotlin/String = ..., noinline kotlin/Function1 = ...): kotlin.collections/List<#A> // io.github.androidpoet.supabase.database/selectTypedOrThrow|selectTypedOrThrow@io.github.androidpoet.supabase.database.DatabaseClient(kotlin.String;kotlin.String?;kotlin.String;kotlin.Function1){0§}[0] -final suspend inline fun <#A: reified kotlin/Any?> (io.github.androidpoet.supabase.database/DatabaseClient).io.github.androidpoet.supabase.database/selectWithCount(kotlin/String, kotlin/String? = ..., kotlin/String = ..., io.github.androidpoet.supabase.database/CountOption = ..., noinline kotlin/Function1 = ...): io.github.androidpoet.supabase.core.result/SupabaseResult> // io.github.androidpoet.supabase.database/selectWithCount|selectWithCount@io.github.androidpoet.supabase.database.DatabaseClient(kotlin.String;kotlin.String?;kotlin.String;io.github.androidpoet.supabase.database.CountOption;kotlin.Function1){0§}[0] +final suspend inline fun <#A: reified kotlin/Any?> (io.github.androidpoet.supabase.database/DatabaseClient).io.github.androidpoet.supabase.database/selectWithCountTyped(kotlin/String, kotlin/String? = ..., kotlin/String = ..., io.github.androidpoet.supabase.database/CountOption = ..., noinline kotlin/Function1 = ...): io.github.androidpoet.supabase.core.result/SupabaseResult> // io.github.androidpoet.supabase.database/selectWithCountTyped|selectWithCountTyped@io.github.androidpoet.supabase.database.DatabaseClient(kotlin.String;kotlin.String?;kotlin.String;io.github.androidpoet.supabase.database.CountOption;kotlin.Function1){0§}[0] final suspend inline fun <#A: reified kotlin/Any?> (io.github.androidpoet.supabase.database/DatabaseClient).io.github.androidpoet.supabase.database/updateTyped(kotlin/String, kotlin/String? = ..., #A, noinline kotlin/Function1 = ...): io.github.androidpoet.supabase.core.result/SupabaseResult> // io.github.androidpoet.supabase.database/updateTyped|updateTyped@io.github.androidpoet.supabase.database.DatabaseClient(kotlin.String;kotlin.String?;0:0;kotlin.Function1){0§}[0] final suspend inline fun <#A: reified kotlin/Any?> (io.github.androidpoet.supabase.database/DatabaseClient).io.github.androidpoet.supabase.database/updateUnitTyped(kotlin/String, kotlin/String? = ..., #A, io.github.androidpoet.supabase.database/CountOption? = ..., noinline kotlin/Function1 = ...): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.database/updateUnitTyped|updateUnitTyped@io.github.androidpoet.supabase.database.DatabaseClient(kotlin.String;kotlin.String?;0:0;io.github.androidpoet.supabase.database.CountOption?;kotlin.Function1){0§}[0] final suspend inline fun <#A: reified kotlin/Any?> (io.github.androidpoet.supabase.database/DatabaseClient).io.github.androidpoet.supabase.database/upsertTyped(kotlin/String, kotlin/String? = ..., #A, kotlin.collections/List? = ..., io.github.androidpoet.supabase.database/UpsertResolution = ..., kotlin/Boolean = ..., kotlin/String? = ...): io.github.androidpoet.supabase.core.result/SupabaseResult> // io.github.androidpoet.supabase.database/upsertTyped|upsertTyped@io.github.androidpoet.supabase.database.DatabaseClient(kotlin.String;kotlin.String?;0:0;kotlin.collections.List?;io.github.androidpoet.supabase.database.UpsertResolution;kotlin.Boolean;kotlin.String?){0§}[0] diff --git a/supabase-database/src/commonMain/kotlin/io/github/androidpoet/supabase/database/DatabaseClient.kt b/supabase-database/src/commonMain/kotlin/io/github/androidpoet/supabase/database/DatabaseClient.kt index abc7d822..f4e75ef6 100644 --- a/supabase-database/src/commonMain/kotlin/io/github/androidpoet/supabase/database/DatabaseClient.kt +++ b/supabase-database/src/commonMain/kotlin/io/github/androidpoet/supabase/database/DatabaseClient.kt @@ -135,7 +135,7 @@ public data class PostgrestPage( /** * The raw response [body] of a [DatabaseClient.selectRange] together with the total * [count] and fetched [range] from PostgREST's `Content-Range` header. The string - * analogue of [PostgrestPage]; the typed `selectWithCount` helper decodes [body] + * analogue of [PostgrestPage]; the typed `selectWithCountTyped` helper decodes [body] * into a [PostgrestPage]. */ public data class PostgrestRawPage( @@ -208,7 +208,7 @@ public interface DatabaseClient { /** * Like [select], but also returns the total [PostgrestRawPage.count] and the * fetched [PostgrestRawPage.range] from the `Content-Range` header alongside - * the raw [PostgrestRawPage.body]. Use the `selectWithCount` typed helper to + * the raw [PostgrestRawPage.body]. Use the `selectWithCountTyped` typed helper to * decode rows into a [PostgrestPage]. */ public suspend fun selectRange( diff --git a/supabase-database/src/commonMain/kotlin/io/github/androidpoet/supabase/database/DatabaseClientExt.kt b/supabase-database/src/commonMain/kotlin/io/github/androidpoet/supabase/database/DatabaseClientExt.kt index 8e288124..02626470 100644 --- a/supabase-database/src/commonMain/kotlin/io/github/androidpoet/supabase/database/DatabaseClientExt.kt +++ b/supabase-database/src/commonMain/kotlin/io/github/androidpoet/supabase/database/DatabaseClientExt.kt @@ -64,7 +64,7 @@ public suspend inline fun DatabaseClient.selectTypedOrThrow( * [PostgrestPage.count] reported by PostgREST's `Content-Range` header. Combine * with `limit`/`range` filters for count-aware pagination. */ -public suspend inline fun DatabaseClient.selectWithCount( +public suspend inline fun DatabaseClient.selectWithCountTyped( table: String, schema: String? = null, columns: String = "*", diff --git a/supabase-functions/api/android/supabase-functions.api b/supabase-functions/api/android/supabase-functions.api index 7b5ce750..f716a3bf 100644 --- a/supabase-functions/api/android/supabase-functions.api +++ b/supabase-functions/api/android/supabase-functions.api @@ -60,8 +60,8 @@ public final class io/github/androidpoet/supabase/functions/FunctionsAccessorKt public abstract interface class io/github/androidpoet/supabase/functions/FunctionsClient { public abstract fun invoke (Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/functions/FunctionMethod;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun invoke$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/functions/FunctionMethod;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public fun invokeSSE (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;)Lkotlinx/coroutines/flow/Flow; - public static synthetic fun invokeSSE$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; + public fun invokeSse (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;)Lkotlinx/coroutines/flow/Flow; + public static synthetic fun invokeSse$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; public abstract fun invokeWithBody (Ljava/lang/String;[BLjava/lang/String;Lio/github/androidpoet/supabase/functions/FunctionMethod;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun invokeWithBody$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;[BLjava/lang/String;Lio/github/androidpoet/supabase/functions/FunctionMethod;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public abstract fun setAuth (Ljava/lang/String;)V @@ -69,8 +69,8 @@ public abstract interface class io/github/androidpoet/supabase/functions/Functio public final class io/github/androidpoet/supabase/functions/FunctionsClient$DefaultImpls { public static synthetic fun invoke$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/functions/FunctionMethod;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public static fun invokeSSE (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;)Lkotlinx/coroutines/flow/Flow; - public static synthetic fun invokeSSE$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; + public static fun invokeSse (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;)Lkotlinx/coroutines/flow/Flow; + public static synthetic fun invokeSse$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; public static synthetic fun invokeWithBody$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;[BLjava/lang/String;Lio/github/androidpoet/supabase/functions/FunctionMethod;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; } diff --git a/supabase-functions/api/jvm/supabase-functions.api b/supabase-functions/api/jvm/supabase-functions.api index 7b5ce750..f716a3bf 100644 --- a/supabase-functions/api/jvm/supabase-functions.api +++ b/supabase-functions/api/jvm/supabase-functions.api @@ -60,8 +60,8 @@ public final class io/github/androidpoet/supabase/functions/FunctionsAccessorKt public abstract interface class io/github/androidpoet/supabase/functions/FunctionsClient { public abstract fun invoke (Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/functions/FunctionMethod;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun invoke$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/functions/FunctionMethod;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public fun invokeSSE (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;)Lkotlinx/coroutines/flow/Flow; - public static synthetic fun invokeSSE$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; + public fun invokeSse (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;)Lkotlinx/coroutines/flow/Flow; + public static synthetic fun invokeSse$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; public abstract fun invokeWithBody (Ljava/lang/String;[BLjava/lang/String;Lio/github/androidpoet/supabase/functions/FunctionMethod;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun invokeWithBody$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;[BLjava/lang/String;Lio/github/androidpoet/supabase/functions/FunctionMethod;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public abstract fun setAuth (Ljava/lang/String;)V @@ -69,8 +69,8 @@ public abstract interface class io/github/androidpoet/supabase/functions/Functio public final class io/github/androidpoet/supabase/functions/FunctionsClient$DefaultImpls { public static synthetic fun invoke$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/functions/FunctionMethod;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public static fun invokeSSE (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;)Lkotlinx/coroutines/flow/Flow; - public static synthetic fun invokeSSE$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; + public static fun invokeSse (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;)Lkotlinx/coroutines/flow/Flow; + public static synthetic fun invokeSse$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; public static synthetic fun invokeWithBody$default (Lio/github/androidpoet/supabase/functions/FunctionsClient;Ljava/lang/String;[BLjava/lang/String;Lio/github/androidpoet/supabase/functions/FunctionMethod;Ljava/util/Map;Lio/github/androidpoet/supabase/functions/FunctionRegion;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; } diff --git a/supabase-functions/api/supabase-functions.klib.api b/supabase-functions/api/supabase-functions.klib.api index ca209653..c2feb9cf 100644 --- a/supabase-functions/api/supabase-functions.klib.api +++ b/supabase-functions/api/supabase-functions.klib.api @@ -55,7 +55,7 @@ abstract interface io.github.androidpoet.supabase.functions/FunctionsClient { // abstract fun setAuth(kotlin/String) // io.github.androidpoet.supabase.functions/FunctionsClient.setAuth|setAuth(kotlin.String){}[0] abstract suspend fun invoke(kotlin/String, kotlin/String? = ..., io.github.androidpoet.supabase.functions/FunctionMethod = ..., kotlin.collections/Map = ..., io.github.androidpoet.supabase.functions/FunctionRegion? = ...): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.functions/FunctionsClient.invoke|invoke(kotlin.String;kotlin.String?;io.github.androidpoet.supabase.functions.FunctionMethod;kotlin.collections.Map;io.github.androidpoet.supabase.functions.FunctionRegion?){}[0] abstract suspend fun invokeWithBody(kotlin/String, kotlin/ByteArray, kotlin/String = ..., io.github.androidpoet.supabase.functions/FunctionMethod = ..., kotlin.collections/Map = ..., io.github.androidpoet.supabase.functions/FunctionRegion? = ...): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.functions/FunctionsClient.invokeWithBody|invokeWithBody(kotlin.String;kotlin.ByteArray;kotlin.String;io.github.androidpoet.supabase.functions.FunctionMethod;kotlin.collections.Map;io.github.androidpoet.supabase.functions.FunctionRegion?){}[0] - open fun invokeSSE(kotlin/String, kotlin/String? = ..., kotlin/String = ..., kotlin.collections/Map = ..., io.github.androidpoet.supabase.functions/FunctionRegion? = ...): kotlinx.coroutines.flow/Flow // io.github.androidpoet.supabase.functions/FunctionsClient.invokeSSE|invokeSSE(kotlin.String;kotlin.String?;kotlin.String;kotlin.collections.Map;io.github.androidpoet.supabase.functions.FunctionRegion?){}[0] + open fun invokeSse(kotlin/String, kotlin/String? = ..., kotlin/String = ..., kotlin.collections/Map = ..., io.github.androidpoet.supabase.functions/FunctionRegion? = ...): kotlinx.coroutines.flow/Flow // io.github.androidpoet.supabase.functions/FunctionsClient.invokeSse|invokeSse(kotlin.String;kotlin.String?;kotlin.String;kotlin.collections.Map;io.github.androidpoet.supabase.functions.FunctionRegion?){}[0] } final class io.github.androidpoet.supabase.functions/FunctionServerSentEvent { // io.github.androidpoet.supabase.functions/FunctionServerSentEvent|null[0] diff --git a/supabase-functions/src/commonMain/kotlin/io/github/androidpoet/supabase/functions/FunctionServerSentEvent.kt b/supabase-functions/src/commonMain/kotlin/io/github/androidpoet/supabase/functions/FunctionServerSentEvent.kt index 585adf18..ea592c1a 100644 --- a/supabase-functions/src/commonMain/kotlin/io/github/androidpoet/supabase/functions/FunctionServerSentEvent.kt +++ b/supabase-functions/src/commonMain/kotlin/io/github/androidpoet/supabase/functions/FunctionServerSentEvent.kt @@ -3,7 +3,7 @@ import io.github.androidpoet.supabase.client.defaultJson /** * One Server-Sent Event emitted by a streaming Edge Function, as produced by - * [FunctionsClient.invokeSSE]. + * [FunctionsClient.invokeSse]. * * Fields mirror the SSE wire format: [id] (`id:`), [event] (`event:`, defaulting * to `"message"` on the wire when omitted) and [data] (`data:`; multiple `data:` diff --git a/supabase-functions/src/commonMain/kotlin/io/github/androidpoet/supabase/functions/FunctionsClient.kt b/supabase-functions/src/commonMain/kotlin/io/github/androidpoet/supabase/functions/FunctionsClient.kt index 631f976e..fa363752 100644 --- a/supabase-functions/src/commonMain/kotlin/io/github/androidpoet/supabase/functions/FunctionsClient.kt +++ b/supabase-functions/src/commonMain/kotlin/io/github/androidpoet/supabase/functions/FunctionsClient.kt @@ -99,7 +99,7 @@ public enum class FunctionMethod { * reuses its base URL and session token, so calls are authenticated with the * current session unless a token is pinned via [setAuth]. [invoke] posts a text * body and reads the full response; [invokeWithBody] posts arbitrary bytes; and - * [invokeSSE] streams a `text/event-stream` response as a [Flow]. Obtain an + * [invokeSse] streams a `text/event-stream` response as a [Flow]. Obtain an * instance with [createFunctionsClient]. */ public interface FunctionsClient { @@ -168,12 +168,12 @@ public interface FunctionsClient { * `.catch`) since, unlike the buffered [invoke], a streamed call cannot return * a [SupabaseResult] up front. */ - public fun invokeSSE( + public fun invokeSse( functionName: String, body: String? = null, contentType: String = "application/json", headers: Map = emptyMap(), region: FunctionRegion? = null, ): Flow = - flow { throw UnsupportedOperationException("invokeSSE is not supported by this FunctionsClient") } + flow { throw UnsupportedOperationException("invokeSse is not supported by this FunctionsClient") } } diff --git a/supabase-functions/src/commonMain/kotlin/io/github/androidpoet/supabase/functions/FunctionsClientImpl.kt b/supabase-functions/src/commonMain/kotlin/io/github/androidpoet/supabase/functions/FunctionsClientImpl.kt index 74fad16c..fb1cf7c8 100644 --- a/supabase-functions/src/commonMain/kotlin/io/github/androidpoet/supabase/functions/FunctionsClientImpl.kt +++ b/supabase-functions/src/commonMain/kotlin/io/github/androidpoet/supabase/functions/FunctionsClientImpl.kt @@ -69,7 +69,7 @@ internal class FunctionsClientImpl( } } - override fun invokeSSE( + override fun invokeSse( functionName: String, body: String?, contentType: String, diff --git a/supabase-realtime/api/android/supabase-realtime.api b/supabase-realtime/api/android/supabase-realtime.api index f66de3b7..f54ffb8f 100644 --- a/supabase-realtime/api/android/supabase-realtime.api +++ b/supabase-realtime/api/android/supabase-realtime.api @@ -62,14 +62,14 @@ public final class io/github/androidpoet/supabase/realtime/RealtimeChannelBuilde public static synthetic fun configureBroadcastReplay$default (Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder;JLjava/lang/Integer;ILjava/lang/Object;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public final fun configurePresence (Ljava/lang/String;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public static synthetic fun configurePresence$default (Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder;Ljava/lang/String;ILjava/lang/Object;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; + public final fun configurePrivate (Z)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; + public static synthetic fun configurePrivate$default (Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder;ZILjava/lang/Object;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public final fun onBroadcast (Ljava/lang/String;Lkotlin/jvm/functions/Function2;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public final fun onPostgresChange (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/realtime/models/PostgresChangeEvent;Lkotlin/jvm/functions/Function2;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public final fun onPostgresChange (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/realtime/models/PostgresChangeEvent;Lkotlin/jvm/functions/Function3;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public static synthetic fun onPostgresChange$default (Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/realtime/models/PostgresChangeEvent;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public static synthetic fun onPostgresChange$default (Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/realtime/models/PostgresChangeEvent;Lkotlin/jvm/functions/Function3;ILjava/lang/Object;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public final fun onPresence (Lkotlin/jvm/functions/Function2;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; - public final fun setPrivate (Z)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; - public static synthetic fun setPrivate$default (Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder;ZILjava/lang/Object;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public final fun subscribe (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun subscribeWithResult (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } @@ -402,7 +402,6 @@ public final class io/github/androidpoet/supabase/realtime/RealtimeExtKt { public static final fun presenceJoinFlow (Lio/github/androidpoet/supabase/realtime/RealtimeSubscription;)Lkotlinx/coroutines/flow/Flow; public static final fun presenceLeaveFlow (Lio/github/androidpoet/supabase/realtime/RealtimeSubscription;)Lkotlinx/coroutines/flow/Flow; public static final fun presenceSyncFlow (Lio/github/androidpoet/supabase/realtime/RealtimeSubscription;)Lkotlinx/coroutines/flow/Flow; - public static final fun statusFlow (Lio/github/androidpoet/supabase/realtime/RealtimeSubscription;)Lkotlinx/coroutines/flow/StateFlow; public static final fun systemEventFlow (Lio/github/androidpoet/supabase/realtime/RealtimeSubscription;Ljava/lang/String;)Lkotlinx/coroutines/flow/Flow; public static synthetic fun systemEventFlow$default (Lio/github/androidpoet/supabase/realtime/RealtimeSubscription;Ljava/lang/String;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; } diff --git a/supabase-realtime/api/jvm/supabase-realtime.api b/supabase-realtime/api/jvm/supabase-realtime.api index f66de3b7..f54ffb8f 100644 --- a/supabase-realtime/api/jvm/supabase-realtime.api +++ b/supabase-realtime/api/jvm/supabase-realtime.api @@ -62,14 +62,14 @@ public final class io/github/androidpoet/supabase/realtime/RealtimeChannelBuilde public static synthetic fun configureBroadcastReplay$default (Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder;JLjava/lang/Integer;ILjava/lang/Object;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public final fun configurePresence (Ljava/lang/String;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public static synthetic fun configurePresence$default (Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder;Ljava/lang/String;ILjava/lang/Object;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; + public final fun configurePrivate (Z)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; + public static synthetic fun configurePrivate$default (Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder;ZILjava/lang/Object;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public final fun onBroadcast (Ljava/lang/String;Lkotlin/jvm/functions/Function2;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public final fun onPostgresChange (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/realtime/models/PostgresChangeEvent;Lkotlin/jvm/functions/Function2;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public final fun onPostgresChange (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/realtime/models/PostgresChangeEvent;Lkotlin/jvm/functions/Function3;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public static synthetic fun onPostgresChange$default (Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/realtime/models/PostgresChangeEvent;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public static synthetic fun onPostgresChange$default (Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/realtime/models/PostgresChangeEvent;Lkotlin/jvm/functions/Function3;ILjava/lang/Object;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public final fun onPresence (Lkotlin/jvm/functions/Function2;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; - public final fun setPrivate (Z)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; - public static synthetic fun setPrivate$default (Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder;ZILjava/lang/Object;)Lio/github/androidpoet/supabase/realtime/RealtimeChannelBuilder; public final fun subscribe (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun subscribeWithResult (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } @@ -402,7 +402,6 @@ public final class io/github/androidpoet/supabase/realtime/RealtimeExtKt { public static final fun presenceJoinFlow (Lio/github/androidpoet/supabase/realtime/RealtimeSubscription;)Lkotlinx/coroutines/flow/Flow; public static final fun presenceLeaveFlow (Lio/github/androidpoet/supabase/realtime/RealtimeSubscription;)Lkotlinx/coroutines/flow/Flow; public static final fun presenceSyncFlow (Lio/github/androidpoet/supabase/realtime/RealtimeSubscription;)Lkotlinx/coroutines/flow/Flow; - public static final fun statusFlow (Lio/github/androidpoet/supabase/realtime/RealtimeSubscription;)Lkotlinx/coroutines/flow/StateFlow; public static final fun systemEventFlow (Lio/github/androidpoet/supabase/realtime/RealtimeSubscription;Ljava/lang/String;)Lkotlinx/coroutines/flow/Flow; public static synthetic fun systemEventFlow$default (Lio/github/androidpoet/supabase/realtime/RealtimeSubscription;Ljava/lang/String;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; } diff --git a/supabase-realtime/api/supabase-realtime.klib.api b/supabase-realtime/api/supabase-realtime.klib.api index 3601438b..9a0a1c32 100644 --- a/supabase-realtime/api/supabase-realtime.klib.api +++ b/supabase-realtime/api/supabase-realtime.klib.api @@ -538,11 +538,11 @@ final class io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder { // final fun configureBroadcast(kotlin/Boolean = ..., kotlin/Boolean = ...): io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder // io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder.configureBroadcast|configureBroadcast(kotlin.Boolean;kotlin.Boolean){}[0] final fun configureBroadcastReplay(kotlin/Long, kotlin/Int? = ...): io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder // io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder.configureBroadcastReplay|configureBroadcastReplay(kotlin.Long;kotlin.Int?){}[0] final fun configurePresence(kotlin/String = ...): io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder // io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder.configurePresence|configurePresence(kotlin.String){}[0] + final fun configurePrivate(kotlin/Boolean = ...): io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder // io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder.configurePrivate|configurePrivate(kotlin.Boolean){}[0] final fun onBroadcast(kotlin/String, kotlin.coroutines/SuspendFunction1): io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder // io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder.onBroadcast|onBroadcast(kotlin.String;kotlin.coroutines.SuspendFunction1){}[0] final fun onPostgresChange(kotlin/String = ..., kotlin/String? = ..., kotlin/String? = ..., io.github.androidpoet.supabase.realtime.models/PostgresChangeEvent = ..., kotlin.coroutines/SuspendFunction1): io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder // io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder.onPostgresChange|onPostgresChange(kotlin.String;kotlin.String?;kotlin.String?;io.github.androidpoet.supabase.realtime.models.PostgresChangeEvent;kotlin.coroutines.SuspendFunction1){}[0] final fun onPostgresChange(kotlin/String = ..., kotlin/String? = ..., kotlin/String? = ..., io.github.androidpoet.supabase.realtime.models/PostgresChangeEvent = ..., kotlin.coroutines/SuspendFunction2): io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder // io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder.onPostgresChange|onPostgresChange(kotlin.String;kotlin.String?;kotlin.String?;io.github.androidpoet.supabase.realtime.models.PostgresChangeEvent;kotlin.coroutines.SuspendFunction2){}[0] final fun onPresence(kotlin.coroutines/SuspendFunction1, kotlin/Unit>): io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder // io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder.onPresence|onPresence(kotlin.coroutines.SuspendFunction1,kotlin.Unit>){}[0] - final fun setPrivate(kotlin/Boolean = ...): io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder // io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder.setPrivate|setPrivate(kotlin.Boolean){}[0] final suspend fun subscribe(): io.github.androidpoet.supabase.realtime/RealtimeSubscription // io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder.subscribe|subscribe(){}[0] final suspend fun subscribeWithResult(): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder.subscribeWithResult|subscribeWithResult(){}[0] } @@ -637,7 +637,6 @@ final fun (io.github.androidpoet.supabase.realtime/RealtimeSubscription).io.gith final fun (io.github.androidpoet.supabase.realtime/RealtimeSubscription).io.github.androidpoet.supabase.realtime/presenceJoinFlow(): kotlinx.coroutines.flow/Flow // io.github.androidpoet.supabase.realtime/presenceJoinFlow|presenceJoinFlow@io.github.androidpoet.supabase.realtime.RealtimeSubscription(){}[0] final fun (io.github.androidpoet.supabase.realtime/RealtimeSubscription).io.github.androidpoet.supabase.realtime/presenceLeaveFlow(): kotlinx.coroutines.flow/Flow // io.github.androidpoet.supabase.realtime/presenceLeaveFlow|presenceLeaveFlow@io.github.androidpoet.supabase.realtime.RealtimeSubscription(){}[0] final fun (io.github.androidpoet.supabase.realtime/RealtimeSubscription).io.github.androidpoet.supabase.realtime/presenceSyncFlow(): kotlinx.coroutines.flow/Flow> // io.github.androidpoet.supabase.realtime/presenceSyncFlow|presenceSyncFlow@io.github.androidpoet.supabase.realtime.RealtimeSubscription(){}[0] -final fun (io.github.androidpoet.supabase.realtime/RealtimeSubscription).io.github.androidpoet.supabase.realtime/statusFlow(): kotlinx.coroutines.flow/StateFlow // io.github.androidpoet.supabase.realtime/statusFlow|statusFlow@io.github.androidpoet.supabase.realtime.RealtimeSubscription(){}[0] final fun (io.github.androidpoet.supabase.realtime/RealtimeSubscription).io.github.androidpoet.supabase.realtime/systemEventFlow(kotlin/String? = ...): kotlinx.coroutines.flow/Flow // io.github.androidpoet.supabase.realtime/systemEventFlow|systemEventFlow@io.github.androidpoet.supabase.realtime.RealtimeSubscription(kotlin.String?){}[0] final fun io.github.androidpoet.supabase.realtime/createRealtimeClient(io.github.androidpoet.supabase.client/SupabaseClient, io.github.androidpoet.supabase.realtime/RealtimeConfig = ..., io.ktor.client.engine/HttpClientEngineFactory<*> = ...): io.github.androidpoet.supabase.realtime/RealtimeClient // io.github.androidpoet.supabase.realtime/createRealtimeClient|createRealtimeClient(io.github.androidpoet.supabase.client.SupabaseClient;io.github.androidpoet.supabase.realtime.RealtimeConfig;io.ktor.client.engine.HttpClientEngineFactory<*>){}[0] final inline fun <#A: reified kotlin/Any?> (io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder).io.github.androidpoet.supabase.realtime/onPostgresChange(kotlin/String = ..., kotlin/String? = ..., kotlin/String? = ..., io.github.androidpoet.supabase.realtime.models/PostgresChangeEvent = ..., crossinline kotlin.coroutines/SuspendFunction1<#A, kotlin/Unit>): io.github.androidpoet.supabase.realtime/RealtimeChannelBuilder // io.github.androidpoet.supabase.realtime/onPostgresChange|onPostgresChange@io.github.androidpoet.supabase.realtime.RealtimeChannelBuilder(kotlin.String;kotlin.String?;kotlin.String?;io.github.androidpoet.supabase.realtime.models.PostgresChangeEvent;kotlin.coroutines.SuspendFunction1<0:0,kotlin.Unit>){0§}[0] diff --git a/supabase-realtime/src/commonMain/kotlin/io/github/androidpoet/supabase/realtime/RealtimeChannelBuilder.kt b/supabase-realtime/src/commonMain/kotlin/io/github/androidpoet/supabase/realtime/RealtimeChannelBuilder.kt index 20735b47..dae95035 100644 --- a/supabase-realtime/src/commonMain/kotlin/io/github/androidpoet/supabase/realtime/RealtimeChannelBuilder.kt +++ b/supabase-realtime/src/commonMain/kotlin/io/github/androidpoet/supabase/realtime/RealtimeChannelBuilder.kt @@ -156,7 +156,7 @@ public class RealtimeChannelBuilder internal constructor( * applies Realtime authorization (RLS) using the client's session JWT. Required * for RLS-protected `postgres_changes` and private broadcast/presence channels. */ - public fun setPrivate( + public fun configurePrivate( enabled: Boolean = true, ): RealtimeChannelBuilder = apply { diff --git a/supabase-realtime/src/commonMain/kotlin/io/github/androidpoet/supabase/realtime/RealtimeExt.kt b/supabase-realtime/src/commonMain/kotlin/io/github/androidpoet/supabase/realtime/RealtimeExt.kt index 5a9311af..55325b3f 100644 --- a/supabase-realtime/src/commonMain/kotlin/io/github/androidpoet/supabase/realtime/RealtimeExt.kt +++ b/supabase-realtime/src/commonMain/kotlin/io/github/androidpoet/supabase/realtime/RealtimeExt.kt @@ -3,7 +3,6 @@ package io.github.androidpoet.supabase.realtime import io.github.androidpoet.supabase.realtime.models.PresenceState import kotlinx.coroutines.CancellationException import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map @@ -88,11 +87,6 @@ public fun RealtimeSubscription.systemEventFlow( .filter { it is RealtimeEvent.SystemEvent && (status == null || it.status == status) } .map { it as RealtimeEvent.SystemEvent } -/** The subscription's [RealtimeSubscription.status] as a [StateFlow], for - * observing the join lifecycle (e.g. to drive a connecting indicator). */ -public fun RealtimeSubscription.statusFlow(): StateFlow = - status - /** * Suspends until this subscription reaches `SUBSCRIBED` (or `ERROR`) and returns * that status, throwing [kotlinx.coroutines.TimeoutCancellationException] after @@ -103,7 +97,7 @@ public suspend fun RealtimeSubscription.awaitSubscribed( timeoutMs: Long = 10_000, ): RealtimeSubscription.Status = withTimeout(timeoutMs) { - statusFlow().first { it == RealtimeSubscription.Status.SUBSCRIBED || it == RealtimeSubscription.Status.ERROR } + status.first { it == RealtimeSubscription.Status.SUBSCRIBED || it == RealtimeSubscription.Status.ERROR } } /** @@ -115,7 +109,7 @@ public suspend fun RealtimeSubscription.awaitUnsubscribed( timeoutMs: Long = 10_000, ): RealtimeSubscription.Status = withTimeout(timeoutMs) { - statusFlow().first { it == RealtimeSubscription.Status.UNSUBSCRIBED || it == RealtimeSubscription.Status.ERROR } + status.first { it == RealtimeSubscription.Status.UNSUBSCRIBED || it == RealtimeSubscription.Status.ERROR } } /** diff --git a/supabase-realtime/src/commonTest/kotlin/io/github/androidpoet/supabase/realtime/RealtimeChannelBuilderConfigTest.kt b/supabase-realtime/src/commonTest/kotlin/io/github/androidpoet/supabase/realtime/RealtimeChannelBuilderConfigTest.kt index 950e0902..f2dd7ae3 100644 --- a/supabase-realtime/src/commonTest/kotlin/io/github/androidpoet/supabase/realtime/RealtimeChannelBuilderConfigTest.kt +++ b/supabase-realtime/src/commonTest/kotlin/io/github/androidpoet/supabase/realtime/RealtimeChannelBuilderConfigTest.kt @@ -22,7 +22,7 @@ class RealtimeChannelBuilderConfigTest { .configureBroadcast(receiveOwnBroadcasts = true, acknowledgeBroadcasts = true) .configureBroadcastReplay(sinceMs = 1234L, limit = 10) .configurePresence(key = "user-123") - .setPrivate(true) + .configurePrivate(true) .subscribe() val internal = subscription as ChannelSubscriptionImpl diff --git a/supabase-realtime/src/commonTest/kotlin/io/github/androidpoet/supabase/realtime/RealtimeClientExtTest.kt b/supabase-realtime/src/commonTest/kotlin/io/github/androidpoet/supabase/realtime/RealtimeClientExtTest.kt index 5cb93b6f..5ec26cdf 100644 --- a/supabase-realtime/src/commonTest/kotlin/io/github/androidpoet/supabase/realtime/RealtimeClientExtTest.kt +++ b/supabase-realtime/src/commonTest/kotlin/io/github/androidpoet/supabase/realtime/RealtimeClientExtTest.kt @@ -78,7 +78,7 @@ class RealtimeClientExtTest { val subscription = realtime.subscribe("room-x") { - setPrivate(true) + configurePrivate(true) configurePresence("user-1") } as ChannelSubscriptionImpl diff --git a/supabase-storage/api/android/supabase-storage.api b/supabase-storage/api/android/supabase-storage.api index fcd8d862..18917220 100644 --- a/supabase-storage/api/android/supabase-storage.api +++ b/supabase-storage/api/android/supabase-storage.api @@ -125,14 +125,14 @@ public abstract interface class io/github/androidpoet/supabase/storage/StorageCl public static synthetic fun createBucket$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/Long;Ljava/util/List;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public abstract fun createResumableUpload (Ljava/lang/String;Ljava/lang/String;[BLjava/lang/String;ZLjava/lang/Integer;ILjava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/github/androidpoet/supabase/storage/ResumableUpload; public static synthetic fun createResumableUpload$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;[BLjava/lang/String;ZLjava/lang/Integer;ILjava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/github/androidpoet/supabase/storage/ResumableUpload; + public abstract fun createSignedUploadUrl (Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun createSignedUploadUrl$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public abstract fun createSignedUploadUrlWithPath (Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun createSignedUploadUrlWithPath$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public abstract fun createSignedUrl (Ljava/lang/String;Ljava/lang/String;JZLjava/lang/String;Lio/github/androidpoet/supabase/storage/ImageTransformOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun createSignedUrl$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;JZLjava/lang/String;Lio/github/androidpoet/supabase/storage/ImageTransformOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public abstract fun createSignedUrls (Ljava/lang/String;Ljava/util/List;JZLjava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun createSignedUrls$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/util/List;JZLjava/lang/String;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public abstract fun createUploadSignedUrl (Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun createUploadSignedUrl$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public abstract fun createUploadSignedUrlWithPath (Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun createUploadSignedUrlWithPath$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public abstract fun createVectorBucket (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun createVectorIndex (Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/storage/models/VectorDataType;ILio/github/androidpoet/supabase/storage/models/VectorDistanceMetric;Lio/github/androidpoet/supabase/storage/models/VectorMetadataConfiguration;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun createVectorIndex$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/storage/models/VectorDataType;ILio/github/androidpoet/supabase/storage/models/VectorDistanceMetric;Lio/github/androidpoet/supabase/storage/models/VectorMetadataConfiguration;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; @@ -213,10 +213,10 @@ public final class io/github/androidpoet/supabase/storage/StorageClient$DefaultI public static synthetic fun copy$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static synthetic fun createBucket$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/Long;Ljava/util/List;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static synthetic fun createResumableUpload$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;[BLjava/lang/String;ZLjava/lang/Integer;ILjava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/github/androidpoet/supabase/storage/ResumableUpload; + public static synthetic fun createSignedUploadUrl$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public static synthetic fun createSignedUploadUrlWithPath$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static synthetic fun createSignedUrl$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;JZLjava/lang/String;Lio/github/androidpoet/supabase/storage/ImageTransformOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static synthetic fun createSignedUrls$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/util/List;JZLjava/lang/String;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public static synthetic fun createUploadSignedUrl$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public static synthetic fun createUploadSignedUrlWithPath$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static synthetic fun createVectorIndex$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/storage/models/VectorDataType;ILio/github/androidpoet/supabase/storage/models/VectorDistanceMetric;Lio/github/androidpoet/supabase/storage/models/VectorMetadataConfiguration;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static synthetic fun download$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static synthetic fun downloadBytes$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/storage/ImageTransformOptions;ZLjava/lang/String;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; @@ -1108,7 +1108,7 @@ public final class io/github/androidpoet/supabase/storage/models/VectorDataType$ public final class io/github/androidpoet/supabase/storage/models/VectorDistanceMetric : java/lang/Enum { public static final field COSINE Lio/github/androidpoet/supabase/storage/models/VectorDistanceMetric; public static final field Companion Lio/github/androidpoet/supabase/storage/models/VectorDistanceMetric$Companion; - public static final field DOTPRODUCT Lio/github/androidpoet/supabase/storage/models/VectorDistanceMetric; + public static final field DOT_PRODUCT Lio/github/androidpoet/supabase/storage/models/VectorDistanceMetric; public static final field EUCLIDEAN Lio/github/androidpoet/supabase/storage/models/VectorDistanceMetric; public static final field UNKNOWN Lio/github/androidpoet/supabase/storage/models/VectorDistanceMetric; public static fun getEntries ()Lkotlin/enums/EnumEntries; diff --git a/supabase-storage/api/jvm/supabase-storage.api b/supabase-storage/api/jvm/supabase-storage.api index fcd8d862..18917220 100644 --- a/supabase-storage/api/jvm/supabase-storage.api +++ b/supabase-storage/api/jvm/supabase-storage.api @@ -125,14 +125,14 @@ public abstract interface class io/github/androidpoet/supabase/storage/StorageCl public static synthetic fun createBucket$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/Long;Ljava/util/List;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public abstract fun createResumableUpload (Ljava/lang/String;Ljava/lang/String;[BLjava/lang/String;ZLjava/lang/Integer;ILjava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/github/androidpoet/supabase/storage/ResumableUpload; public static synthetic fun createResumableUpload$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;[BLjava/lang/String;ZLjava/lang/Integer;ILjava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/github/androidpoet/supabase/storage/ResumableUpload; + public abstract fun createSignedUploadUrl (Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun createSignedUploadUrl$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public abstract fun createSignedUploadUrlWithPath (Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun createSignedUploadUrlWithPath$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public abstract fun createSignedUrl (Ljava/lang/String;Ljava/lang/String;JZLjava/lang/String;Lio/github/androidpoet/supabase/storage/ImageTransformOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun createSignedUrl$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;JZLjava/lang/String;Lio/github/androidpoet/supabase/storage/ImageTransformOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public abstract fun createSignedUrls (Ljava/lang/String;Ljava/util/List;JZLjava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun createSignedUrls$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/util/List;JZLjava/lang/String;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public abstract fun createUploadSignedUrl (Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun createUploadSignedUrl$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public abstract fun createUploadSignedUrlWithPath (Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun createUploadSignedUrlWithPath$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public abstract fun createVectorBucket (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun createVectorIndex (Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/storage/models/VectorDataType;ILio/github/androidpoet/supabase/storage/models/VectorDistanceMetric;Lio/github/androidpoet/supabase/storage/models/VectorMetadataConfiguration;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun createVectorIndex$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/storage/models/VectorDataType;ILio/github/androidpoet/supabase/storage/models/VectorDistanceMetric;Lio/github/androidpoet/supabase/storage/models/VectorMetadataConfiguration;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; @@ -213,10 +213,10 @@ public final class io/github/androidpoet/supabase/storage/StorageClient$DefaultI public static synthetic fun copy$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static synthetic fun createBucket$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/Long;Ljava/util/List;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static synthetic fun createResumableUpload$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;[BLjava/lang/String;ZLjava/lang/Integer;ILjava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/github/androidpoet/supabase/storage/ResumableUpload; + public static synthetic fun createSignedUploadUrl$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public static synthetic fun createSignedUploadUrlWithPath$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static synthetic fun createSignedUrl$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;JZLjava/lang/String;Lio/github/androidpoet/supabase/storage/ImageTransformOptions;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static synthetic fun createSignedUrls$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/util/List;JZLjava/lang/String;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public static synthetic fun createUploadSignedUrl$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public static synthetic fun createUploadSignedUrlWithPath$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static synthetic fun createVectorIndex$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/storage/models/VectorDataType;ILio/github/androidpoet/supabase/storage/models/VectorDistanceMetric;Lio/github/androidpoet/supabase/storage/models/VectorMetadataConfiguration;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static synthetic fun download$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static synthetic fun downloadBytes$default (Lio/github/androidpoet/supabase/storage/StorageClient;Ljava/lang/String;Ljava/lang/String;Lio/github/androidpoet/supabase/storage/ImageTransformOptions;ZLjava/lang/String;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; @@ -1108,7 +1108,7 @@ public final class io/github/androidpoet/supabase/storage/models/VectorDataType$ public final class io/github/androidpoet/supabase/storage/models/VectorDistanceMetric : java/lang/Enum { public static final field COSINE Lio/github/androidpoet/supabase/storage/models/VectorDistanceMetric; public static final field Companion Lio/github/androidpoet/supabase/storage/models/VectorDistanceMetric$Companion; - public static final field DOTPRODUCT Lio/github/androidpoet/supabase/storage/models/VectorDistanceMetric; + public static final field DOT_PRODUCT Lio/github/androidpoet/supabase/storage/models/VectorDistanceMetric; public static final field EUCLIDEAN Lio/github/androidpoet/supabase/storage/models/VectorDistanceMetric; public static final field UNKNOWN Lio/github/androidpoet/supabase/storage/models/VectorDistanceMetric; public static fun getEntries ()Lkotlin/enums/EnumEntries; diff --git a/supabase-storage/api/supabase-storage.klib.api b/supabase-storage/api/supabase-storage.klib.api index 49f317b2..03a4f2df 100644 --- a/supabase-storage/api/supabase-storage.klib.api +++ b/supabase-storage/api/supabase-storage.klib.api @@ -24,7 +24,7 @@ final enum class io.github.androidpoet.supabase.storage.models/VectorDataType : final enum class io.github.androidpoet.supabase.storage.models/VectorDistanceMetric : kotlin/Enum { // io.github.androidpoet.supabase.storage.models/VectorDistanceMetric|null[0] enum entry COSINE // io.github.androidpoet.supabase.storage.models/VectorDistanceMetric.COSINE|null[0] - enum entry DOTPRODUCT // io.github.androidpoet.supabase.storage.models/VectorDistanceMetric.DOTPRODUCT|null[0] + enum entry DOT_PRODUCT // io.github.androidpoet.supabase.storage.models/VectorDistanceMetric.DOT_PRODUCT|null[0] enum entry EUCLIDEAN // io.github.androidpoet.supabase.storage.models/VectorDistanceMetric.EUCLIDEAN|null[0] enum entry UNKNOWN // io.github.androidpoet.supabase.storage.models/VectorDistanceMetric.UNKNOWN|null[0] @@ -117,10 +117,10 @@ abstract interface io.github.androidpoet.supabase.storage/StorageClient { // io. abstract suspend fun copy(kotlin/String, kotlin/String, kotlin/String, kotlin/String? = ..., kotlin/Boolean? = ...): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.storage/StorageClient.copy|copy(kotlin.String;kotlin.String;kotlin.String;kotlin.String?;kotlin.Boolean?){}[0] abstract suspend fun createAnalyticsBucket(kotlin/String): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.storage/StorageClient.createAnalyticsBucket|createAnalyticsBucket(kotlin.String){}[0] abstract suspend fun createBucket(kotlin/String, kotlin/String, kotlin/Boolean = ..., kotlin/Long? = ..., kotlin.collections/List? = ...): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.storage/StorageClient.createBucket|createBucket(kotlin.String;kotlin.String;kotlin.Boolean;kotlin.Long?;kotlin.collections.List?){}[0] + abstract suspend fun createSignedUploadUrl(kotlin/String, kotlin/String, kotlin/Boolean = ...): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.storage/StorageClient.createSignedUploadUrl|createSignedUploadUrl(kotlin.String;kotlin.String;kotlin.Boolean){}[0] + abstract suspend fun createSignedUploadUrlWithPath(kotlin/String, kotlin/String, kotlin/Boolean = ...): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.storage/StorageClient.createSignedUploadUrlWithPath|createSignedUploadUrlWithPath(kotlin.String;kotlin.String;kotlin.Boolean){}[0] abstract suspend fun createSignedUrl(kotlin/String, kotlin/String, kotlin/Long, kotlin/Boolean = ..., kotlin/String? = ..., io.github.androidpoet.supabase.storage/ImageTransformOptions? = ...): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.storage/StorageClient.createSignedUrl|createSignedUrl(kotlin.String;kotlin.String;kotlin.Long;kotlin.Boolean;kotlin.String?;io.github.androidpoet.supabase.storage.ImageTransformOptions?){}[0] abstract suspend fun createSignedUrls(kotlin/String, kotlin.collections/List, kotlin/Long, kotlin/Boolean = ..., kotlin/String? = ...): io.github.androidpoet.supabase.core.result/SupabaseResult> // io.github.androidpoet.supabase.storage/StorageClient.createSignedUrls|createSignedUrls(kotlin.String;kotlin.collections.List;kotlin.Long;kotlin.Boolean;kotlin.String?){}[0] - abstract suspend fun createUploadSignedUrl(kotlin/String, kotlin/String, kotlin/Boolean = ...): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.storage/StorageClient.createUploadSignedUrl|createUploadSignedUrl(kotlin.String;kotlin.String;kotlin.Boolean){}[0] - abstract suspend fun createUploadSignedUrlWithPath(kotlin/String, kotlin/String, kotlin/Boolean = ...): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.storage/StorageClient.createUploadSignedUrlWithPath|createUploadSignedUrlWithPath(kotlin.String;kotlin.String;kotlin.Boolean){}[0] abstract suspend fun createVectorBucket(kotlin/String): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.storage/StorageClient.createVectorBucket|createVectorBucket(kotlin.String){}[0] abstract suspend fun createVectorIndex(kotlin/String, kotlin/String, io.github.androidpoet.supabase.storage.models/VectorDataType, kotlin/Int, io.github.androidpoet.supabase.storage.models/VectorDistanceMetric, io.github.androidpoet.supabase.storage.models/VectorMetadataConfiguration? = ...): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.storage/StorageClient.createVectorIndex|createVectorIndex(kotlin.String;kotlin.String;io.github.androidpoet.supabase.storage.models.VectorDataType;kotlin.Int;io.github.androidpoet.supabase.storage.models.VectorDistanceMetric;io.github.androidpoet.supabase.storage.models.VectorMetadataConfiguration?){}[0] abstract suspend fun deleteAnalyticsBucket(kotlin/String): io.github.androidpoet.supabase.core.result/SupabaseResult // io.github.androidpoet.supabase.storage/StorageClient.deleteAnalyticsBucket|deleteAnalyticsBucket(kotlin.String){}[0] diff --git a/supabase-storage/src/commonMain/kotlin/io/github/androidpoet/supabase/storage/StorageClient.kt b/supabase-storage/src/commonMain/kotlin/io/github/androidpoet/supabase/storage/StorageClient.kt index 446b58d8..5c89a08a 100644 --- a/supabase-storage/src/commonMain/kotlin/io/github/androidpoet/supabase/storage/StorageClient.kt +++ b/supabase-storage/src/commonMain/kotlin/io/github/androidpoet/supabase/storage/StorageClient.kt @@ -612,21 +612,21 @@ public interface StorageClient { /** * Creates a signed *upload* token (`POST /object/upload/sign`) so a client without storage * credentials can later upload to [path] via [uploadToSignedUrl]. Returns just the token; use - * [createUploadSignedUrlWithPath] when you also need the upload URL and bound path. + * [createSignedUploadUrlWithPath] when you also need the upload URL and bound path. * * @param upsert when true, the resulting token permits overwriting an existing object. */ - public suspend fun createUploadSignedUrl( + public suspend fun createSignedUploadUrl( bucket: String, path: String, upsert: Boolean = false, ): SupabaseResult /** - * Like [createUploadSignedUrl] but returns the full [UploadSignedUrl] (absolute upload URL, + * Like [createSignedUploadUrl] but returns the full [UploadSignedUrl] (absolute upload URL, * token, and the server-bound path) instead of only the token. */ - public suspend fun createUploadSignedUrlWithPath( + public suspend fun createSignedUploadUrlWithPath( bucket: String, path: String, upsert: Boolean = false, @@ -908,7 +908,7 @@ public interface StorageClient { } /** - * A signed upload target returned by [StorageClient.createUploadSignedUrlWithPath]: the absolute + * A signed upload target returned by [StorageClient.createSignedUploadUrlWithPath]: the absolute * upload [url] and the [token] a client passes to [StorageClient.uploadToSignedUrl]. * * @property url the absolute URL to upload to. diff --git a/supabase-storage/src/commonMain/kotlin/io/github/androidpoet/supabase/storage/StorageClientImpl.kt b/supabase-storage/src/commonMain/kotlin/io/github/androidpoet/supabase/storage/StorageClientImpl.kt index 226ac720..900f301e 100644 --- a/supabase-storage/src/commonMain/kotlin/io/github/androidpoet/supabase/storage/StorageClientImpl.kt +++ b/supabase-storage/src/commonMain/kotlin/io/github/androidpoet/supabase/storage/StorageClientImpl.kt @@ -480,15 +480,15 @@ internal class StorageClientImpl( } } - override suspend fun createUploadSignedUrl( + override suspend fun createSignedUploadUrl( bucket: String, path: String, upsert: Boolean, ): SupabaseResult = - createUploadSignedUrlWithPath(bucket, path, upsert) + createSignedUploadUrlWithPath(bucket, path, upsert) .map { it.token } - override suspend fun createUploadSignedUrlWithPath( + override suspend fun createSignedUploadUrlWithPath( bucket: String, path: String, upsert: Boolean, diff --git a/supabase-storage/src/commonMain/kotlin/io/github/androidpoet/supabase/storage/models/StorageModels.kt b/supabase-storage/src/commonMain/kotlin/io/github/androidpoet/supabase/storage/models/StorageModels.kt index e9d7683c..f4e8e308 100644 --- a/supabase-storage/src/commonMain/kotlin/io/github/androidpoet/supabase/storage/models/StorageModels.kt +++ b/supabase-storage/src/commonMain/kotlin/io/github/androidpoet/supabase/storage/models/StorageModels.kt @@ -491,7 +491,7 @@ public enum class VectorDistanceMetric { /** Dot-product (inner product) similarity. */ @SerialName("dotproduct") - DOTPRODUCT, + DOT_PRODUCT, /** Fallback for a metric this client does not recognize (e.g. added server-side later). */ @SerialName("unknown") diff --git a/supabase-storage/src/commonTest/kotlin/io/github/androidpoet/supabase/storage/StorageClientExtTest.kt b/supabase-storage/src/commonTest/kotlin/io/github/androidpoet/supabase/storage/StorageClientExtTest.kt index f4412669..0e36f9bb 100644 --- a/supabase-storage/src/commonTest/kotlin/io/github/androidpoet/supabase/storage/StorageClientExtTest.kt +++ b/supabase-storage/src/commonTest/kotlin/io/github/androidpoet/supabase/storage/StorageClientExtTest.kt @@ -570,9 +570,13 @@ private class FakeStorageClient : StorageClient { return SupabaseResult.Success(paths.map { "https://example.supabase.co/storage/v1/object/sign/$bucket/$it?token=abc" }) } - override suspend fun createUploadSignedUrl(bucket: String, path: String, upsert: Boolean): SupabaseResult = error("not used") + override suspend fun createSignedUploadUrl(bucket: String, path: String, upsert: Boolean): SupabaseResult = error("not used") - override suspend fun createUploadSignedUrlWithPath(bucket: String, path: String, upsert: Boolean): SupabaseResult = error("not used") + override suspend fun createSignedUploadUrlWithPath( + bucket: String, + path: String, + upsert: Boolean, + ): SupabaseResult = error("not used") override suspend fun uploadToSignedUrl( bucket: String, diff --git a/supabase-storage/src/commonTest/kotlin/io/github/androidpoet/supabase/storage/StorageClientImplTest.kt b/supabase-storage/src/commonTest/kotlin/io/github/androidpoet/supabase/storage/StorageClientImplTest.kt index e5a129f3..73d30dd3 100644 --- a/supabase-storage/src/commonTest/kotlin/io/github/androidpoet/supabase/storage/StorageClientImplTest.kt +++ b/supabase-storage/src/commonTest/kotlin/io/github/androidpoet/supabase/storage/StorageClientImplTest.kt @@ -293,7 +293,7 @@ class StorageClientImplTest { val sut = StorageClientImpl(client) val result = - sut.createUploadSignedUrl( + sut.createSignedUploadUrl( bucket = "avatars", path = "a.png", ) @@ -309,7 +309,7 @@ class StorageClientImplTest { val client = FakeSupabaseClient() val sut = StorageClientImpl(client) - sut.createUploadSignedUrl( + sut.createSignedUploadUrl( bucket = "avatars", path = "a.png", upsert = true, @@ -325,7 +325,7 @@ class StorageClientImplTest { val sut = StorageClientImpl(client) val result = - sut.createUploadSignedUrlWithPath( + sut.createSignedUploadUrlWithPath( bucket = "avatars", path = "a.png", ) @@ -1172,7 +1172,7 @@ class StorageClientImplTest { val client = FakeSupabaseClient() val sut = StorageClientImpl(client) - val result = sut.createUploadSignedUrlWithPath(bucket = "avatars", path = "a.png") + val result = sut.createSignedUploadUrlWithPath(bucket = "avatars", path = "a.png") assertTrue(result is SupabaseResult.Success) assertEquals("avatars/a.png", result.value.path) diff --git a/website/pages/paging.mdx b/website/pages/paging.mdx index 0518b9fb..1c9a2a7c 100644 --- a/website/pages/paging.mdx +++ b/website/pages/paging.mdx @@ -45,7 +45,7 @@ each call appends one more page. It exposes everything a list screen needs as - `items` — the rows loaded so far (grows with each page) - `isLoading` — whether a page is in flight -- `endReached` — `true` once there are no more rows +- `isEndReached` — `true` once there are no more rows - `error` — the last failure, or `null` Plus `loadNext()` to fetch the next page and `refresh()` to start over (for @@ -137,13 +137,13 @@ row with retry, and the first-load empty state: fun TodosScreen(vm: TodosViewModel) { val todos by vm.pager.items.collectAsState() val isLoading by vm.pager.isLoading.collectAsState() - val endReached by vm.pager.endReached.collectAsState() + val isEndReached by vm.pager.isEndReached.collectAsState() val error by vm.pager.error.collectAsState() LazyColumn { itemsIndexed(todos, key = { _, t -> t.id }) { index, todo -> TodoRow(todo) - if (index >= todos.lastIndex - 3 && !endReached) { + if (index >= todos.lastIndex - 3 && !isEndReached) { LaunchedEffect(index) { vm.loadNext() } // prefetch near the end } } @@ -173,7 +173,7 @@ scope.launch { pager.items.collect { rows -> log("showing ${rows.size}") } } pager.loadNext() // Or drain the whole list (e.g. an export) — keep going until the end. -while (!pager.endReached.value) { +while (!pager.isEndReached.value) { pager.loadNext() pager.error.value?.let { throw it } // stop on a failed page } @@ -254,7 +254,7 @@ thin. | --- | --- | --- | | Setup | nothing — included | app adds `androidx.paging` + one `PagingSource` class | | Targets | all 16 | the ~12 Paging 3 publishes | -| You get | `items`/`isLoading`/`endReached`/`error` + `loadNext` | + auto-prefetch, placeholders, `LazyColumn` binding | +| You get | `items`/`isLoading`/`isEndReached`/`error` + `loadNext` | + auto-prefetch, placeholders, `LazyColumn` binding | | Best for | most apps, all platforms | Compose apps already on Paging 3 | ## Large or live tables: keyset paging diff --git a/website/pages/reference/auth-admin.mdx b/website/pages/reference/auth-admin.mdx index c63c3d3e..619a553d 100644 --- a/website/pages/reference/auth-admin.mdx +++ b/website/pages/reference/auth-admin.mdx @@ -949,7 +949,7 @@ data class OidcDiscoveryDocument( val issuer: String, val authorizationEndpoint: String, // authorization_endpoint val tokenEndpoint: String, // token_endpoint - val jwksUri: String, // jwks_uri + val jwksUrl: String, // jwks_uri val userinfoEndpoint: String? = null, // userinfo_endpoint val revocationEndpoint: String? = null, // revocation_endpoint val supportedScopes: List? = null, // supported_scopes @@ -983,7 +983,7 @@ data class CustomProvider( val authorizationUrl: String? = null, // authorization_url val tokenUrl: String? = null, // token_url val userinfoUrl: String? = null, // userinfo_url - val jwksUri: String? = null, // jwks_uri + val jwksUrl: String? = null, // jwks_uri val discoveryDocument: OidcDiscoveryDocument? = null, // discovery_document val createdAt: String? = null, // created_at val updatedAt: String? = null, // updated_at @@ -1014,7 +1014,7 @@ data class CustomProviderCreateRequest( val authorizationUrl: String? = null, // authorization_url val tokenUrl: String? = null, // token_url val userinfoUrl: String? = null, // userinfo_url - val jwksUri: String? = null, // jwks_uri + val jwksUrl: String? = null, // jwks_uri ) ``` @@ -1041,7 +1041,7 @@ data class CustomProviderUpdateRequest( val authorizationUrl: String? = null, // authorization_url val tokenUrl: String? = null, // token_url val userinfoUrl: String? = null, // userinfo_url - val jwksUri: String? = null, // jwks_uri + val jwksUrl: String? = null, // jwks_uri ) ``` diff --git a/website/pages/reference/core.mdx b/website/pages/reference/core.mdx index 309956b7..f575101f 100644 --- a/website/pages/reference/core.mdx +++ b/website/pages/reference/core.mdx @@ -223,15 +223,13 @@ public fun dataFlow(block: suspend () -> SupabaseResult): Flow public fun SupabaseResult.toFlow(): Flow public inline fun SupabaseResult.toFlow(transform: (T) -> R): Flow public inline fun SupabaseResult.toSuspendFlow(transform: suspend (T) -> R): Flow -public fun SupabaseResult.toResultFlow(): Flow> ``` -- **`asFlow`** — emits an already-computed result as a single-value cold `Flow`, keeping the wrapper. Handy for seeding a stream with a cached result before live values arrive. +- **`asFlow`** — emits an already-computed result as a single-value cold `Flow`, keeping the wrapper so a failure (and its error) survives into the stream. Handy for seeding a stream with a cached result before live values arrive. - **`supabaseFlow`** — wraps a not-yet-run suspending call in a cold `Flow` that runs it on collection and emits the result once, **keeping** the `SupabaseResult` wrapper. - **`dataFlow`** — the no-`Result` escape hatch: emits the plain value on success and **throws** (`SupabaseException`) on failure, so the wrapper never enters your stream. Pairs with exception-based `Flow.asResult()` UI helpers. - **`toFlow()`** — emits the success value, or an **empty** flow on failure (failures are dropped silently). A `transform` overload maps before emitting. - **`toSuspendFlow`** — `toFlow` with a `suspend` transform run in the collection context. -- **`toResultFlow`** — emits the whole result as one element, so a failure (and its error) survives into the stream — the error-preserving counterpart of `toFlow`. ```kotlin supabaseFlow { database.selectTyped("todos") } @@ -612,7 +610,7 @@ public class Paginator( ) { public val items: StateFlow> public val isLoading: StateFlow - public val endReached: StateFlow + public val isEndReached: StateFlow public val error: StateFlow public suspend fun loadNext() @@ -629,12 +627,12 @@ State: - **`items`** — the rows loaded so far, growing with each successful `loadNext`. - **`isLoading`** — `true` while a page is being fetched. -- **`endReached`** — `true` once a page came back shorter than `pageSize`. +- **`isEndReached`** — `true` once a page came back shorter than `pageSize`. - **`error`** — the last `fetch` failure, or `null`; cleared when a new load starts. Operations: -- **`loadNext()`** — loads and appends the next page. A no-op if a load is running or `endReached` is set. +- **`loadNext()`** — loads and appends the next page. A no-op if a load is running or `isEndReached` is set. - **`refresh()`** — resets to the first page and reloads it (pull-to-refresh); any in-flight page is discarded so it cannot append onto the cleared list. ```kotlin diff --git a/website/pages/reference/database.mdx b/website/pages/reference/database.mdx index 554f0333..49462e91 100644 --- a/website/pages/reference/database.mdx +++ b/website/pages/reference/database.mdx @@ -213,10 +213,10 @@ Still fails if more than one row matches. val maybe = database.selectMaybeSingleTyped("todos") { where { Todo.id eq 7 } } ``` -### `selectWithCount` +### `selectWithCountTyped` ```kotlin -public suspend inline fun DatabaseClient.selectWithCount( +public suspend inline fun DatabaseClient.selectWithCountTyped( table: String, schema: String? = null, columns: String = "*", @@ -235,7 +235,7 @@ for count-aware pagination. **Returns:** `SupabaseResult>`. ```kotlin -val page = database.selectWithCount("todos") { range(0, 19) } +val page = database.selectWithCountTyped("todos") { range(0, 19) } // page.value.rows, page.value.count ``` @@ -357,7 +357,7 @@ public suspend fun selectRange( Like `select`, but also returns the total and the fetched range from `Content-Range` alongside the raw body, packaged as a [`PostgrestRawPage`](#postgrestrawpage) (a data class with `body`, `count`, and -`range` — **not** a `Pair`). The typed [`selectWithCount`](#selectwithcount) sits +`range` — **not** a `Pair`). The typed [`selectWithCountTyped`](#selectwithcount) sits on top of this and decodes `body` into a `PostgrestPage`. - `count` — total computation strategy. Default `CountOption.EXACT`. @@ -1519,7 +1519,7 @@ public data class PostgrestRawPage( The raw response `body` of a [`selectRange`](#selectrange-interface-method) together with the total `count` and fetched `range` from `Content-Range`. The string analogue -of `PostgrestPage` — **not** a `Pair`. The typed `selectWithCount` helper decodes +of `PostgrestPage` — **not** a `Pair`. The typed `selectWithCountTyped` helper decodes `body` into a `PostgrestPage`. ### `PostgrestPage` @@ -1533,7 +1533,7 @@ public data class PostgrestPage( ``` A page of decoded `rows` together with the total `count` reported by PostgREST. -Produced by [`selectWithCount`](#selectwithcount). +Produced by [`selectWithCountTyped`](#selectwithcount). --- diff --git a/website/pages/reference/functions.mdx b/website/pages/reference/functions.mdx index 2ece4a8d..f3adabbf 100644 --- a/website/pages/reference/functions.mdx +++ b/website/pages/reference/functions.mdx @@ -176,10 +176,10 @@ val result = client.functions.invokeWithBody( ) ``` -### `invokeSSE` +### `invokeSse` ```kotlin -public fun invokeSSE( +public fun invokeSse( functionName: String, body: String? = null, contentType: String = "application/json", @@ -207,7 +207,7 @@ response surfaces as a terminal exception in the flow rather than an empty stream, so collect within `try`/`catch` (or Flow `.catch`). ```kotlin -client.functions.invokeSSE("stream-tokens") +client.functions.invokeSse("stream-tokens") .catch { e -> println("stream failed: $e") } .collect { event -> println(event.data) } ``` @@ -347,7 +347,7 @@ public data class FunctionServerSentEvent( ``` One Server-Sent Event emitted by a streaming Edge Function, as produced by -`invokeSSE`. Fields mirror the SSE wire format: +`invokeSse`. Fields mirror the SSE wire format: - `id` — the last-event-id (`id:` line). It persists across events, so an event that omits `id:` reports the most recently seen id (matching the browser @@ -377,7 +377,7 @@ valid JSON for `T` — wrap the call site if you need that as a value. @Serializable data class Token(val text: String) -client.functions.invokeSSE("stream-tokens") +client.functions.invokeSse("stream-tokens") .collect { event -> val token = event.decodeAs() if (token != null) print(token.text) diff --git a/website/pages/reference/realtime.mdx b/website/pages/reference/realtime.mdx index 2fe00bdc..005cb6cd 100644 --- a/website/pages/reference/realtime.mdx +++ b/website/pages/reference/realtime.mdx @@ -551,10 +551,10 @@ Sets the presence `key` identifying this client among channel members (defaults to a server-assigned key). Use a stable per-user key to dedupe a user across reconnects or devices. Returns the builder. -#### `setPrivate` +#### `configurePrivate` ```kotlin -fun setPrivate(enabled: Boolean = true): RealtimeChannelBuilder +fun configurePrivate(enabled: Boolean = true): RealtimeChannelBuilder ``` Marks the channel as private, so the server applies Realtime authorization (RLS) @@ -767,15 +767,6 @@ enum class SendType(val wireValue: String) { The kind of message [`send`](#send) dispatches, with its Phoenix `wireValue`. -### `statusFlow` - -```kotlin -fun RealtimeSubscription.statusFlow(): StateFlow -``` - -The subscription's `status` as a `StateFlow`, for observing the join lifecycle -(e.g. to drive a connecting indicator). - ### `awaitSubscribed` ```kotlin diff --git a/website/pages/reference/storage.mdx b/website/pages/reference/storage.mdx index caffcec3..01eb0461 100644 --- a/website/pages/reference/storage.mdx +++ b/website/pages/reference/storage.mdx @@ -332,7 +332,7 @@ storage.uploadResumable("videos", "clip.mp4", videoBytes) ### uploadToSignedUrl Uploads `data` to a pre-signed upload URL identified by `token` (see -[`createUploadSignedUrl`](#createuploadsignedurl)). +[`createSignedUploadUrl`](#createuploadsignedurl)). ```kotlin suspend fun uploadToSignedUrl( @@ -760,7 +760,7 @@ storage.deleteObjects("avatars", "jane/old.png", "jane/older.png") ## URLs The URL builders compute a string locally and never hit the network. Signing -operations (`createSignedUrl`, `createUploadSignedUrl`) are suspending and do call +operations (`createSignedUrl`, `createSignedUploadUrl`) are suspending and do call the server. ### createSignedUrl @@ -922,14 +922,14 @@ suspend fun StorageClient.createSignedRenderUrlsByPath( **Returns** `SupabaseResult>` — `Success` mapping each path to its render URL, `Failure` on error. -### createUploadSignedUrl +### createSignedUploadUrl Creates a signed *upload* token (`POST /object/upload/sign`) so a client without storage credentials can later upload to `path` via [`uploadToSignedUrl`](#uploadtosignedurl). Returns just the token. ```kotlin -suspend fun createUploadSignedUrl( +suspend fun createSignedUploadUrl( bucket: String, path: String, upsert: Boolean = false, @@ -942,17 +942,17 @@ suspend fun createUploadSignedUrl( **Returns** `SupabaseResult` — `Success` with the token, `Failure` on error. ```kotlin -val token = storage.createUploadSignedUrl("avatars", "jane/profile.png") +val token = storage.createSignedUploadUrl("avatars", "jane/profile.png") ``` -### createUploadSignedUrlWithPath +### createSignedUploadUrlWithPath -Like [`createUploadSignedUrl`](#createuploadsignedurl) but returns the full +Like [`createSignedUploadUrl`](#createuploadsignedurl) but returns the full [`UploadSignedUrl`](#uploadsignedurl) (absolute upload URL, token, and bound path) instead of only the token. ```kotlin -suspend fun createUploadSignedUrlWithPath( +suspend fun createSignedUploadUrlWithPath( bucket: String, path: String, upsert: Boolean = false, @@ -962,7 +962,7 @@ suspend fun createUploadSignedUrlWithPath( **Returns** `SupabaseResult` — `Success` with the signed target, `Failure` on error. ```kotlin -val signed = storage.createUploadSignedUrlWithPath("avatars", "jane/profile.png") +val signed = storage.createSignedUploadUrlWithPath("avatars", "jane/profile.png") ``` ### getSignedDownloadUrl @@ -2064,7 +2064,7 @@ data class AnalyticsBucket( ### UploadSignedUrl A signed upload target returned by -[`createUploadSignedUrlWithPath`](#createuploadsignedurlwithpath). +[`createSignedUploadUrlWithPath`](#createuploadsignedurlwithpath). ```kotlin data class UploadSignedUrl( @@ -2529,10 +2529,10 @@ enum class VectorDataType { FLOAT32, UNKNOWN } Similarity metric a vector index uses to rank query matches. ```kotlin -enum class VectorDistanceMetric { COSINE, EUCLIDEAN, DOTPRODUCT, UNKNOWN } +enum class VectorDistanceMetric { COSINE, EUCLIDEAN, DOT_PRODUCT, UNKNOWN } ``` - `COSINE` — cosine similarity (angle between vectors). - `EUCLIDEAN` — Euclidean (L2) distance. -- `DOTPRODUCT` — dot-product (inner product) similarity. +- `DOT_PRODUCT` — dot-product (inner product) similarity. - `UNKNOWN` — fallback for a metric this client does not recognize. diff --git a/website/pages/storage.mdx b/website/pages/storage.mdx index 00dcb058..094d2493 100644 --- a/website/pages/storage.mdx +++ b/website/pages/storage.mdx @@ -168,7 +168,7 @@ val signed = storage.createSignedUrl( storage.createSignedUrls("avatars", listOf("a.png", "b.png"), expiresIn = 3600) // Browser-side uploads (pre-signed token): -storage.createUploadSignedUrlWithPath("avatars", "user-123/new.png").onSuccess { signed -> +storage.createSignedUploadUrlWithPath("avatars", "user-123/new.png").onSuccess { signed -> storage.uploadToSignedUrl("avatars", "user-123/new.png", token = signed.token, data = bytes) } ```