diff --git a/src/SupabaseClient.ts b/src/SupabaseClient.ts index c48e0ad69..f5490a2e0 100644 --- a/src/SupabaseClient.ts +++ b/src/SupabaseClient.ts @@ -1,6 +1,6 @@ import { DEFAULT_HEADERS, STORAGE_KEY } from './lib/constants' import { stripTrailingSlash, isBrowser } from './lib/helpers' -import { Fetch, SupabaseClientOptions } from './lib/types' +import { Fetch, GenericObject, SupabaseClientOptions } from './lib/types' import { SupabaseAuthClient } from './lib/SupabaseAuthClient' import { SupabaseQueryBuilder } from './lib/SupabaseQueryBuilder' import { SupabaseStorageClient } from '@supabase/storage-js' @@ -179,7 +179,6 @@ export default class SupabaseClient { } const allSubscriptions = this.getSubscriptions() - const openSubscriptionsCount = allSubscriptions.filter((chan) => chan.isJoined()).length if (allSubscriptions.length === 0) { const { error } = await this.realtime.disconnect() @@ -189,6 +188,8 @@ export default class SupabaseClient { } } + const openSubscriptionsCount = allSubscriptions.filter((chan) => chan.isJoined()).length + return resolve({ data: { openSubscriptions: openSubscriptionsCount }, error: null, @@ -254,8 +255,8 @@ export default class SupabaseClient { }) } - private _getAuthHeaders(): { [key: string]: string } { - const headers: { [key: string]: string } = this.headers + private _getAuthHeaders(): GenericObject { + const headers: GenericObject = this.headers const authBearer = this.auth.session()?.access_token ?? this.supabaseKey headers['apikey'] = this.supabaseKey headers['Authorization'] = `Bearer ${authBearer}` diff --git a/src/index.ts b/src/index.ts index 18e1aa9cb..4cb6753c5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,7 +17,7 @@ const createClient = ( supabaseUrl: string, supabaseKey: string, options?: SupabaseClientOptions -) => { +): SupabaseClient => { return new SupabaseClient(supabaseUrl, supabaseKey, options) } diff --git a/src/lib/SupabaseQueryBuilder.ts b/src/lib/SupabaseQueryBuilder.ts index 6845845a8..6a87e9312 100644 --- a/src/lib/SupabaseQueryBuilder.ts +++ b/src/lib/SupabaseQueryBuilder.ts @@ -1,7 +1,7 @@ import { PostgrestQueryBuilder } from '@supabase/postgrest-js' import { SupabaseRealtimeClient } from './SupabaseRealtimeClient' import { RealtimeClient } from '@supabase/realtime-js' -import { Fetch, SupabaseEventTypes, SupabaseRealtimePayload } from './types' +import { Fetch, GenericObject, SupabaseEventTypes, SupabaseRealtimePayload } from './types' export class SupabaseQueryBuilder extends PostgrestQueryBuilder { private _subscription: SupabaseRealtimeClient | null = null @@ -19,7 +19,7 @@ export class SupabaseQueryBuilder extends PostgrestQueryBuilder { table, fetch, }: { - headers?: { [key: string]: string } + headers?: GenericObject schema: string realtime: RealtimeClient table: string diff --git a/src/lib/types.ts b/src/lib/types.ts index 2c4b2720e..ba15dab5d 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -1,12 +1,14 @@ import { GoTrueClient } from '@supabase/gotrue-js' import { RealtimeClientOptions } from '@supabase/realtime-js' -export type Fetch = typeof fetch - type GoTrueClientOptions = ConstructorParameters[0] export interface SupabaseAuthClientOptions extends GoTrueClientOptions {} +export type GenericObject = { [key: string]: string } + +export type Fetch = typeof fetch + export type SupabaseClientOptions = { /** * The Postgres schema which your tables belong to. Must be on the list of exposed schemas in Supabase. Defaults to 'public'. @@ -15,7 +17,7 @@ export type SupabaseClientOptions = { /** * Optional headers for initializing the client. */ - headers?: { [key: string]: string } + headers?: GenericObject /** * Automatically refreshes the token for logged in users. */