diff --git a/package-lock.json b/package-lock.json index 275bc0139..d39271f46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@supabase/auth-js": "2.71.1", "@supabase/functions-js": "2.5.0", "@supabase/node-fetch": "2.6.15", - "@supabase/postgrest-js": "1.21.4", + "@supabase/postgrest-js": "https://pkg.pr.new/@supabase/postgrest-js@18f855f", "@supabase/realtime-js": "2.15.5", "@supabase/storage-js": "2.12.1" }, @@ -1117,9 +1117,9 @@ } }, "node_modules/@supabase/postgrest-js": { - "version": "1.21.4", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.21.4.tgz", - "integrity": "sha512-TxZCIjxk6/dP9abAi89VQbWWMBbybpGWyvmIzTd79OeravM13OjR/YEYeyUOPcM1C3QyvXkvPZhUfItvmhY1IQ==", + "version": "0.0.0-automated", + "resolved": "https://pkg.pr.new/@supabase/postgrest-js@18f855f", + "integrity": "sha512-woj/h+ZJY5jN+V/T3L8wU7/PSNp4NDkPmsTg2zTGqk0NrzSWfO/JlXSNmqSVuNP6aJmkCl8qlAL2VbPZtoX0RA==", "license": "MIT", "dependencies": { "@supabase/node-fetch": "^2.6.14" diff --git a/package.json b/package.json index 9b474d756..402a0e959 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@supabase/auth-js": "2.71.1", "@supabase/functions-js": "2.5.0", "@supabase/node-fetch": "2.6.15", - "@supabase/postgrest-js": "1.21.4", + "@supabase/postgrest-js": "https://pkg.pr.new/@supabase/postgrest-js@18f855f", "@supabase/realtime-js": "2.15.5", "@supabase/storage-js": "2.12.1" }, diff --git a/src/SupabaseClient.ts b/src/SupabaseClient.ts index 3acd10edf..7fb252b98 100644 --- a/src/SupabaseClient.ts +++ b/src/SupabaseClient.ts @@ -1,6 +1,7 @@ import { FunctionsClient } from '@supabase/functions-js' import { AuthChangeEvent } from '@supabase/auth-js' import { + GetRpcFunctionFilterBuilderByArgs, PostgrestClient, PostgrestFilterBuilder, PostgrestQueryBuilder, @@ -238,25 +239,33 @@ export default class SupabaseClient< * `"estimated"`: Uses exact count for low numbers and planned count for high * numbers. */ - rpc( + rpc< + FnName extends string & keyof Schema['Functions'], + Args extends Schema['Functions'][FnName]['Args'] = never, + FilterBuilder extends GetRpcFunctionFilterBuilderByArgs< + Schema, + FnName, + Args + > = GetRpcFunctionFilterBuilderByArgs + >( fn: FnName, - args: Fn['Args'] = {}, + args: Args = {} as Args, options: { head?: boolean get?: boolean count?: 'exact' | 'planned' | 'estimated' - } = {} + } = { + head: false, + get: false, + count: undefined, + } ): PostgrestFilterBuilder< ClientOptions, Schema, - Fn['Returns'] extends any[] - ? Fn['Returns'][number] extends Record - ? Fn['Returns'][number] - : never - : never, - Fn['Returns'], - FnName, - null, + FilterBuilder['Row'], + FilterBuilder['Result'], + FilterBuilder['RelationName'], + FilterBuilder['Relationships'], 'RPC' > { return this.rest.rpc(fn, args, options) diff --git a/test/types/index.test-d.ts b/test/types/index.test-d.ts index a95d6c001..5f4d6713b 100644 --- a/test/types/index.test-d.ts +++ b/test/types/index.test-d.ts @@ -71,7 +71,7 @@ const supabase = createClient(URL, KEY) // rpc return type { - const { data, error } = await supabase.rpc('get_status') + const { data, error } = await supabase.rpc('get_status', { name_param: 'supabot' }) if (error) { throw new Error(error.message) }