quickli
Version:
Easy-to-use Supabase client with automatic configuration and connection management
68 lines (56 loc) • 2.33 kB
TypeScript
import { SupabaseClient as BaseClient, PostgrestResponse } from '@supabase/supabase-js';
interface ClientOptions {
retries?: number;
timeout?: number;
pageSize?: number;
}
interface PaginationOptions {
page?: number;
pageSize?: number;
orderBy?: string;
ascending?: boolean;
}
interface PaginationResult<T> {
data: T[];
pagination: {
total: number;
pageSize: number;
page: number;
totalPages: number;
};
}
declare class SupabaseClient {
constructor(url?: string, key?: string, options?: ClientOptions);
client: BaseClient;
from<T = any>(table: string): {
select: (...args: any[]) => Promise<PostgrestResponse<T>>;
insert: (...args: any[]) => Promise<PostgrestResponse<T>>;
update: (...args: any[]) => Promise<PostgrestResponse<T>>;
delete: (...args: any[]) => Promise<PostgrestResponse<T>>;
upsert: (...args: any[]) => Promise<PostgrestResponse<T>>;
};
auth(): ReturnType<BaseClient['auth']>;
storage(): ReturnType<BaseClient['storage']>;
rpc<T = any>(fn: string, params?: object): Promise<PostgrestResponse<T>>;
testConnection(): Promise<boolean>;
hasRealtimeSupport(): Promise<boolean>;
// Enhanced helper methods
findOne<T = any>(table: string, query?: object): Promise<T>;
findMany<T = any>(table: string, query?: object, options?: PaginationOptions): Promise<T[]>;
createOne<T = any>(table: string, data: object): Promise<T>;
createMany<T = any>(table: string, records: object[]): Promise<T[]>;
updateOne<T = any>(table: string, query: object, data: object): Promise<T>;
updateMany<T = any>(table: string, query: object, data: object): Promise<T[]>;
deleteOne<T = any>(table: string, query: object): Promise<T>;
deleteMany<T = any>(table: string, query: object): Promise<T[]>;
// Pagination
paginate<T = any>(table: string, query?: object, options?: PaginationOptions): Promise<PaginationResult<T>>;
// Aggregation
count(table: string, query?: object): Promise<number>;
sum(table: string, column: string, query?: object): Promise<number>;
average(table: string, column: string, query?: object): Promise<number>;
// Advanced filtering
search<T = any>(table: string, column: string, query: string, options?: object): Promise<T[]>;
}
declare const instance: SupabaseClient;
export = instance | SupabaseClient;