Skip to content

Commit 4b3ba3c

Browse files
committed
refactor(postgrest): isolate and share types using symlink
1 parent 5c6aee4 commit 4b3ba3c

File tree

19 files changed

+1233
-1202
lines changed

19 files changed

+1233
-1202
lines changed

packages/core/postgrest-js/src/PostgrestBuilder.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,20 @@
22
import nodeFetch from '@supabase/node-fetch'
33

44
import type {
5-
Fetch,
65
PostgrestSingleResponse,
76
PostgrestResponseSuccess,
87
CheckMatchingArrayTypes,
98
MergePartialResult,
109
IsValidResultOverride,
11-
ClientServerOptions,
12-
} from './types'
10+
} from './types/types'
11+
import { ClientServerOptions, Fetch } from './types/common/common'
1312
import PostgrestError from './PostgrestError'
1413
import { ContainsNull } from './select-query-parser/types'
1514

1615
export default abstract class PostgrestBuilder<
1716
ClientOptions extends ClientServerOptions,
1817
Result,
19-
ThrowOnError extends boolean = false,
18+
ThrowOnError extends boolean = false
2019
> implements
2120
PromiseLike<
2221
ThrowOnError extends true ? PostgrestResponseSuccess<Result> : PostgrestSingleResponse<Result>
@@ -85,7 +84,7 @@ export default abstract class PostgrestBuilder<
8584
TResult1 = ThrowOnError extends true
8685
? PostgrestResponseSuccess<Result>
8786
: PostgrestSingleResponse<Result>,
88-
TResult2 = never,
87+
TResult2 = never
8988
>(
9089
onfulfilled?:
9190
| ((
@@ -275,7 +274,7 @@ export default abstract class PostgrestBuilder<
275274
*/
276275
overrideTypes<
277276
NewResult,
278-
Options extends { merge?: boolean } = { merge: true },
277+
Options extends { merge?: boolean } = { merge: true }
279278
>(): PostgrestBuilder<
280279
ClientOptions,
281280
IsValidResultOverride<Result, NewResult, false, false> extends true

packages/core/postgrest-js/src/PostgrestClient.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
import PostgrestQueryBuilder from './PostgrestQueryBuilder'
22
import PostgrestFilterBuilder from './PostgrestFilterBuilder'
3-
import {
4-
Fetch,
5-
GenericSchema,
6-
ClientServerOptions,
7-
GetRpcFunctionFilterBuilderByArgs,
8-
} from './types'
3+
import { Fetch, GenericSchema, ClientServerOptions } from './types/common/common'
4+
import { GetRpcFunctionFilterBuilderByArgs } from './types/common/rpc'
95

106
/**
117
* PostgREST client.
@@ -36,7 +32,7 @@ export default class PostgrestClient<
3632
'__InternalSupabase'
3733
>[SchemaName] extends GenericSchema
3834
? Omit<Database, '__InternalSupabase'>[SchemaName]
39-
: any,
35+
: any
4036
> {
4137
url: string
4238
headers: Headers
@@ -72,7 +68,7 @@ export default class PostgrestClient<
7268
}
7369
from<
7470
TableName extends string & keyof Schema['Tables'],
75-
Table extends Schema['Tables'][TableName],
71+
Table extends Schema['Tables'][TableName]
7672
>(relation: TableName): PostgrestQueryBuilder<ClientOptions, Schema, Table, TableName>
7773
from<ViewName extends string & keyof Schema['Views'], View extends Schema['Views'][ViewName]>(
7874
relation: ViewName
@@ -143,7 +139,7 @@ export default class PostgrestClient<
143139
Schema,
144140
FnName,
145141
Args
146-
> = GetRpcFunctionFilterBuilderByArgs<Schema, FnName, Args>,
142+
> = GetRpcFunctionFilterBuilderByArgs<Schema, FnName, Args>
147143
>(
148144
fn: FnName,
149145
args: Args = {} as Args,

packages/core/postgrest-js/src/PostgrestFilterBuilder.ts

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import PostgrestTransformBuilder from './PostgrestTransformBuilder'
22
import { JsonPathToAccessor, JsonPathToType } from './select-query-parser/utils'
3-
import { ClientServerOptions, GenericSchema } from './types'
3+
import { ClientServerOptions, GenericSchema } from './types/common/common'
44

55
type FilterOperator =
66
| 'eq'
@@ -38,27 +38,27 @@ export type IsStringOperator<Path extends string> = Path extends `${string}->>${
3838
type ResolveFilterValue<
3939
Schema extends GenericSchema,
4040
Row extends Record<string, unknown>,
41-
ColumnName extends string,
41+
ColumnName extends string
4242
> = ColumnName extends `${infer RelationshipTable}.${infer Remainder}`
4343
? Remainder extends `${infer _}.${infer _}`
4444
? ResolveFilterValue<Schema, Row, Remainder>
4545
: ResolveFilterRelationshipValue<Schema, RelationshipTable, Remainder>
4646
: ColumnName extends keyof Row
47-
? Row[ColumnName]
48-
: // If the column selection is a jsonpath like `data->value` or `data->>value` we attempt to match
49-
// the expected type with the parsed custom json type
50-
IsStringOperator<ColumnName> extends true
51-
? string
52-
: JsonPathToType<Row, JsonPathToAccessor<ColumnName>> extends infer JsonPathValue
53-
? JsonPathValue extends never
54-
? never
55-
: JsonPathValue
56-
: never
47+
? Row[ColumnName]
48+
: // If the column selection is a jsonpath like `data->value` or `data->>value` we attempt to match
49+
// the expected type with the parsed custom json type
50+
IsStringOperator<ColumnName> extends true
51+
? string
52+
: JsonPathToType<Row, JsonPathToAccessor<ColumnName>> extends infer JsonPathValue
53+
? JsonPathValue extends never
54+
? never
55+
: JsonPathValue
56+
: never
5757

5858
type ResolveFilterRelationshipValue<
5959
Schema extends GenericSchema,
6060
RelationshipTable extends string,
61-
RelationshipColumn extends string,
61+
RelationshipColumn extends string
6262
> = Schema['Tables'] & Schema['Views'] extends infer TablesAndViews
6363
? RelationshipTable extends keyof TablesAndViews
6464
? 'Row' extends keyof TablesAndViews[RelationshipTable]
@@ -78,7 +78,7 @@ export default class PostgrestFilterBuilder<
7878
Result,
7979
RelationName = unknown,
8080
Relationships = unknown,
81-
Method = unknown,
81+
Method = unknown
8282
> extends PostgrestTransformBuilder<
8383
ClientOptions,
8484
Schema,
@@ -101,11 +101,11 @@ export default class PostgrestFilterBuilder<
101101
value: ResolveFilterValue<Schema, Row, ColumnName> extends never
102102
? NonNullable<unknown>
103103
: // We want to infer the type before wrapping it into a `NonNullable` to avoid too deep
104-
// type resolution error
105-
ResolveFilterValue<Schema, Row, ColumnName> extends infer ResolvedFilterValue
106-
? NonNullable<ResolvedFilterValue>
107-
: // We should never enter this case as all the branches are covered above
108-
never
104+
// type resolution error
105+
ResolveFilterValue<Schema, Row, ColumnName> extends infer ResolvedFilterValue
106+
? NonNullable<ResolvedFilterValue>
107+
: // We should never enter this case as all the branches are covered above
108+
never
109109
): this {
110110
this.url.searchParams.append(column, `eq.${value}`)
111111
return this
@@ -122,8 +122,8 @@ export default class PostgrestFilterBuilder<
122122
value: ResolveFilterValue<Schema, Row, ColumnName> extends never
123123
? unknown
124124
: ResolveFilterValue<Schema, Row, ColumnName> extends infer ResolvedFilterValue
125-
? ResolvedFilterValue
126-
: never
125+
? ResolvedFilterValue
126+
: never
127127
): this {
128128
this.url.searchParams.append(column, `neq.${value}`)
129129
return this
@@ -305,11 +305,11 @@ export default class PostgrestFilterBuilder<
305305
ResolveFilterValue<Schema, Row, ColumnName> extends never
306306
? unknown
307307
: // We want to infer the type before wrapping it into a `NonNullable` to avoid too deep
308-
// type resolution error
309-
ResolveFilterValue<Schema, Row, ColumnName> extends infer ResolvedFilterValue
310-
? ResolvedFilterValue
311-
: // We should never enter this case as all the branches are covered above
312-
never
308+
// type resolution error
309+
ResolveFilterValue<Schema, Row, ColumnName> extends infer ResolvedFilterValue
310+
? ResolvedFilterValue
311+
: // We should never enter this case as all the branches are covered above
312+
never
313313
>
314314
): this {
315315
const cleanedValues = Array.from(new Set(values))

packages/core/postgrest-js/src/PostgrestQueryBuilder.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
import PostgrestFilterBuilder from './PostgrestFilterBuilder'
22
import { GetResult } from './select-query-parser/result'
3-
import { ClientServerOptions, Fetch, GenericSchema, GenericTable, GenericView } from './types'
3+
import {
4+
ClientServerOptions,
5+
Fetch,
6+
GenericSchema,
7+
GenericTable,
8+
GenericView,
9+
} from './types/common/common'
410

511
export default class PostgrestQueryBuilder<
612
ClientOptions extends ClientServerOptions,
713
Schema extends GenericSchema,
814
Relation extends GenericTable | GenericView,
915
RelationName = unknown,
10-
Relationships = Relation extends { Relationships: infer R } ? R : unknown,
16+
Relationships = Relation extends { Relationships: infer R } ? R : unknown
1117
> {
1218
url: URL
1319
headers: Headers
@@ -63,7 +69,7 @@ export default class PostgrestQueryBuilder<
6369
Relationships,
6470
Query,
6571
ClientOptions
66-
>,
72+
>
6773
>(
6874
columns?: Query,
6975
options?: {

packages/core/postgrest-js/src/PostgrestTransformBuilder.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
import PostgrestBuilder from './PostgrestBuilder'
22
import PostgrestFilterBuilder, { InvalidMethodError } from './PostgrestFilterBuilder'
33
import { GetResult } from './select-query-parser/result'
4-
import {
5-
GenericSchema,
6-
CheckMatchingArrayTypes,
7-
ClientServerOptions,
8-
MaxAffectedEnabled,
9-
} from './types'
4+
import { CheckMatchingArrayTypes, MaxAffectedEnabled } from './types/types'
5+
import { ClientServerOptions, GenericSchema } from './types/common/common'
106

117
export default class PostgrestTransformBuilder<
128
ClientOptions extends ClientServerOptions,
@@ -15,7 +11,7 @@ export default class PostgrestTransformBuilder<
1511
Result,
1612
RelationName = unknown,
1713
Relationships = unknown,
18-
Method = unknown,
14+
Method = unknown
1915
> extends PostgrestBuilder<ClientOptions, Result> {
2016
/**
2117
* Perform a SELECT on the query result.
@@ -28,7 +24,7 @@ export default class PostgrestTransformBuilder<
2824
*/
2925
select<
3026
Query extends string = '*',
31-
NewResultOne = GetResult<Schema, Row, RelationName, Relationships, Query, ClientOptions>,
27+
NewResultOne = GetResult<Schema, Row, RelationName, Relationships, Query, ClientOptions>
3228
>(
3329
columns?: Query
3430
): PostgrestFilterBuilder<
@@ -226,7 +222,7 @@ export default class PostgrestTransformBuilder<
226222
* this returns an error.
227223
*/
228224
maybeSingle<
229-
ResultOne = Result extends (infer ResultOne)[] ? ResultOne : never,
225+
ResultOne = Result extends (infer ResultOne)[] ? ResultOne : never
230226
>(): PostgrestBuilder<ClientOptions, ResultOne | null> {
231227
// Temporary partial fix for https://github.com/supabase/postgrest-js/issues/361
232228
// Issue persists e.g. for `.insert([...]).select().maybeSingle()`

packages/core/postgrest-js/src/index.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@ export type {
2828
PostgrestResponseSuccess,
2929
PostgrestSingleResponse,
3030
PostgrestMaybeSingleResponse,
31-
ClientServerOptions as PostgrestClientOptions,
32-
GetRpcFunctionFilterBuilderByArgs,
33-
} from './types'
31+
} from './types/types'
32+
export type { ClientServerOptions as PostgrestClientOptions } from './types/common/common'
3433
// https://github.com/supabase/postgrest-js/issues/551
3534
// To be replaced with a helper type that only uses public types
3635
export type { GetResult as UnstableGetResult } from './select-query-parser/result'

0 commit comments

Comments
 (0)