Skip to content

Commit 7816a4d

Browse files
committedJan 20, 2025
fix(types): type instantiation is excessively deep and possibly infinite
When using MergeDeep type-fest even with simple structures we get this error For typescript > 4.5.5 this trick fix the issue by forcing TS to infer the value And reuse it instead of computing multiple time
1 parent c3aea0d commit 7816a4d

File tree

2 files changed

+21
-15
lines changed

2 files changed

+21
-15
lines changed
 

‎src/PostgrestFilterBuilder.ts

+15-9
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,11 @@ export default class PostgrestFilterBuilder<
7373
*/
7474
eq<ColumnName extends string>(
7575
column: ColumnName,
76-
value: ResolveFilterValue<Schema, Row, ColumnName> extends never
77-
? NonNullable<unknown>
78-
: NonNullable<ResolveFilterValue<Schema, Row, ColumnName>>
76+
value: ResolveFilterValue<Schema, Row, ColumnName> extends infer ResolvedFilterValue
77+
? ResolvedFilterValue extends never
78+
? NonNullable<unknown>
79+
: NonNullable<ResolvedFilterValue>
80+
: never
7981
): this {
8082
this.url.searchParams.append(column, `eq.${value}`)
8183
return this
@@ -89,9 +91,11 @@ export default class PostgrestFilterBuilder<
8991
*/
9092
neq<ColumnName extends string>(
9193
column: ColumnName,
92-
value: ResolveFilterValue<Schema, Row, ColumnName> extends never
93-
? unknown
94-
: ResolveFilterValue<Schema, Row, ColumnName>
94+
value: ResolveFilterValue<Schema, Row, ColumnName> extends infer ResolvedFilterValue
95+
? ResolvedFilterValue extends never
96+
? unknown
97+
: NonNullable<ResolvedFilterValue>
98+
: never
9599
): this {
96100
this.url.searchParams.append(column, `neq.${value}`)
97101
return this
@@ -269,9 +273,11 @@ export default class PostgrestFilterBuilder<
269273
*/
270274
in<ColumnName extends string>(
271275
column: ColumnName,
272-
values: ResolveFilterValue<Schema, Row, ColumnName> extends never
273-
? unknown[]
274-
: ReadonlyArray<ResolveFilterValue<Schema, Row, ColumnName>>
276+
values: ResolveFilterValue<Schema, Row, ColumnName> extends infer ResolvedFilterValue
277+
? ResolvedFilterValue extends never
278+
? unknown[]
279+
: ReadonlyArray<ResolvedFilterValue>
280+
: never
275281
): this {
276282
const cleanedValues = Array.from(new Set(values))
277283
.map((s) => {

‎test/issue-1354-d.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,27 @@ export type Database = {
1010
foo: {
1111
Row: {
1212
created_at: string | null
13-
bar: Custom
13+
bar: Json
1414
id: string
15-
baz: Custom
15+
baz: Json
1616
game_id: string
1717
updated_at: string | null
1818
user_id: string | null
1919
}
2020
Insert: {
2121
created_at?: string | null
22-
bar: Custom
22+
bar: Json
2323
id?: string
24-
baz: Custom
24+
baz: Json
2525
game_id: string
2626
updated_at?: string | null
2727
user_id?: string | null
2828
}
2929
Update: {
3030
created_at?: string | null
31-
bar?: Custom
31+
bar?: Json
3232
id?: string
33-
baz?: Custom
33+
baz?: Json
3434
game_id?: string
3535
updated_at?: string | null
3636
user_id?: string | null

0 commit comments

Comments
 (0)