@supabase/postgrest-js 1.8.6 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/main/PostgrestClient.d.ts +3 -3
  2. package/dist/main/PostgrestClient.d.ts.map +1 -1
  3. package/dist/main/PostgrestClient.js.map +1 -1
  4. package/dist/main/PostgrestFilterBuilder.d.ts +1 -1
  5. package/dist/main/PostgrestFilterBuilder.d.ts.map +1 -1
  6. package/dist/main/PostgrestFilterBuilder.js.map +1 -1
  7. package/dist/main/PostgrestQueryBuilder.d.ts +9 -9
  8. package/dist/main/PostgrestQueryBuilder.d.ts.map +1 -1
  9. package/dist/main/PostgrestQueryBuilder.js.map +1 -1
  10. package/dist/main/PostgrestTransformBuilder.d.ts +3 -3
  11. package/dist/main/PostgrestTransformBuilder.d.ts.map +1 -1
  12. package/dist/main/PostgrestTransformBuilder.js.map +1 -1
  13. package/dist/main/select-query-parser.d.ts +20 -8
  14. package/dist/main/select-query-parser.d.ts.map +1 -1
  15. package/dist/main/version.d.ts +1 -1
  16. package/dist/main/version.js +1 -1
  17. package/dist/module/PostgrestClient.d.ts +3 -3
  18. package/dist/module/PostgrestClient.d.ts.map +1 -1
  19. package/dist/module/PostgrestClient.js.map +1 -1
  20. package/dist/module/PostgrestFilterBuilder.d.ts +1 -1
  21. package/dist/module/PostgrestFilterBuilder.d.ts.map +1 -1
  22. package/dist/module/PostgrestFilterBuilder.js.map +1 -1
  23. package/dist/module/PostgrestQueryBuilder.d.ts +9 -9
  24. package/dist/module/PostgrestQueryBuilder.d.ts.map +1 -1
  25. package/dist/module/PostgrestQueryBuilder.js.map +1 -1
  26. package/dist/module/PostgrestTransformBuilder.d.ts +3 -3
  27. package/dist/module/PostgrestTransformBuilder.d.ts.map +1 -1
  28. package/dist/module/PostgrestTransformBuilder.js.map +1 -1
  29. package/dist/module/select-query-parser.d.ts +20 -8
  30. package/dist/module/select-query-parser.d.ts.map +1 -1
  31. package/dist/module/version.d.ts +1 -1
  32. package/dist/module/version.js +1 -1
  33. package/package.json +1 -1
  34. package/src/PostgrestClient.ts +6 -10
  35. package/src/PostgrestFilterBuilder.ts +2 -1
  36. package/src/PostgrestQueryBuilder.ts +11 -10
  37. package/src/PostgrestTransformBuilder.ts +27 -5
  38. package/src/select-query-parser.ts +58 -7
  39. package/src/version.ts +1 -1
@@ -66,6 +66,16 @@ type HasFKey<FKeyName, Relationships> = Relationships extends [infer R]
66
66
  : HasFKey<FKeyName, Rest>
67
67
  : false
68
68
 
69
+ type HasUniqueFKey<FKeyName, Relationships> = Relationships extends [infer R]
70
+ ? R extends { foreignKeyName: FKeyName; isOneToOne: true }
71
+ ? true
72
+ : false
73
+ : Relationships extends [infer R, ...infer Rest]
74
+ ? HasUniqueFKey<FKeyName, [R]> extends true
75
+ ? true
76
+ : HasUniqueFKey<FKeyName, Rest>
77
+ : false
78
+
69
79
  type HasFKeyToFRel<FRelName, Relationships> = Relationships extends [infer R]
70
80
  ? R extends { referencedRelation: FRelName }
71
81
  ? true
@@ -76,6 +86,16 @@ type HasFKeyToFRel<FRelName, Relationships> = Relationships extends [infer R]
76
86
  : HasFKeyToFRel<FRelName, Rest>
77
87
  : false
78
88
 
89
+ type HasUniqueFKeyToFRel<FRelName, Relationships> = Relationships extends [infer R]
90
+ ? R extends { referencedRelation: FRelName; isOneToOne: true }
91
+ ? true
92
+ : false
93
+ : Relationships extends [infer R, ...infer Rest]
94
+ ? HasUniqueFKeyToFRel<FRelName, [R]> extends true
95
+ ? true
96
+ : HasUniqueFKeyToFRel<FRelName, Rest>
97
+ : false
98
+
79
99
  /**
80
100
  * Constructs a type definition for a single field of an object.
81
101
  *
@@ -86,6 +106,7 @@ type HasFKeyToFRel<FRelName, Relationships> = Relationships extends [infer R]
86
106
  type ConstructFieldDefinition<
87
107
  Schema extends GenericSchema,
88
108
  Row extends Record<string, unknown>,
109
+ RelationName,
89
110
  Relationships,
90
111
  Field
91
112
  > = Field extends { star: true }
@@ -95,13 +116,24 @@ type ConstructFieldDefinition<
95
116
  [_ in Field['name']]: GetResultHelper<
96
117
  Schema,
97
118
  (Schema['Tables'] & Schema['Views'])[Field['original']]['Row'],
119
+ Field['original'],
98
120
  (Schema['Tables'] & Schema['Views'])[Field['original']] extends { Relationships: infer R }
99
121
  ? R
100
122
  : unknown,
101
123
  Field['children'],
102
124
  unknown
103
125
  > extends infer Child
104
- ? Relationships extends unknown[]
126
+ ? // One-to-one relationship - referencing column(s) has unique/pkey constraint.
127
+ HasUniqueFKey<
128
+ Field['hint'],
129
+ (Schema['Tables'] & Schema['Views'])[Field['original']] extends {
130
+ Relationships: infer R
131
+ }
132
+ ? R
133
+ : unknown
134
+ > extends true
135
+ ? Child | null
136
+ : Relationships extends unknown[]
105
137
  ? HasFKey<Field['hint'], Relationships> extends true
106
138
  ? Child | null
107
139
  : Child[]
@@ -113,13 +145,24 @@ type ConstructFieldDefinition<
113
145
  [_ in Field['name']]: GetResultHelper<
114
146
  Schema,
115
147
  (Schema['Tables'] & Schema['Views'])[Field['original']]['Row'],
148
+ Field['original'],
116
149
  (Schema['Tables'] & Schema['Views'])[Field['original']] extends { Relationships: infer R }
117
150
  ? R
118
151
  : unknown,
119
152
  Field['children'],
120
153
  unknown
121
154
  > extends infer Child
122
- ? Relationships extends unknown[]
155
+ ? // One-to-one relationship - referencing column(s) has unique/pkey constraint.
156
+ HasUniqueFKeyToFRel<
157
+ RelationName,
158
+ (Schema['Tables'] & Schema['Views'])[Field['original']] extends {
159
+ Relationships: infer R
160
+ }
161
+ ? R
162
+ : unknown
163
+ > extends true
164
+ ? Child | null
165
+ : Relationships extends unknown[]
123
166
  ? HasFKeyToFRel<Field['original'], Relationships> extends true
124
167
  ? Child | null
125
168
  : Child[]
@@ -404,28 +447,35 @@ type ParseQuery<Query extends string> = string extends Query
404
447
  type GetResultHelper<
405
448
  Schema extends GenericSchema,
406
449
  Row extends Record<string, unknown>,
450
+ RelationName,
407
451
  Relationships,
408
452
  Fields extends unknown[],
409
453
  Acc
410
454
  > = Fields extends [infer R]
411
- ? ConstructFieldDefinition<Schema, Row, Relationships, R> extends SelectQueryError<infer E>
455
+ ? ConstructFieldDefinition<Schema, Row, RelationName, Relationships, R> extends SelectQueryError<
456
+ infer E
457
+ >
412
458
  ? SelectQueryError<E>
413
459
  : GetResultHelper<
414
460
  Schema,
415
461
  Row,
462
+ RelationName,
416
463
  Relationships,
417
464
  [],
418
- ConstructFieldDefinition<Schema, Row, Relationships, R> & Acc
465
+ ConstructFieldDefinition<Schema, Row, RelationName, Relationships, R> & Acc
419
466
  >
420
467
  : Fields extends [infer R, ...infer Rest]
421
- ? ConstructFieldDefinition<Schema, Row, Relationships, R> extends SelectQueryError<infer E>
468
+ ? ConstructFieldDefinition<Schema, Row, RelationName, Relationships, R> extends SelectQueryError<
469
+ infer E
470
+ >
422
471
  ? SelectQueryError<E>
423
472
  : GetResultHelper<
424
473
  Schema,
425
474
  Row,
475
+ RelationName,
426
476
  Relationships,
427
477
  Rest,
428
- ConstructFieldDefinition<Schema, Row, Relationships, R> & Acc
478
+ ConstructFieldDefinition<Schema, Row, RelationName, Relationships, R> & Acc
429
479
  >
430
480
  : Prettify<Acc>
431
481
 
@@ -438,8 +488,9 @@ type GetResultHelper<
438
488
  export type GetResult<
439
489
  Schema extends GenericSchema,
440
490
  Row extends Record<string, unknown>,
491
+ RelationName,
441
492
  Relationships,
442
493
  Query extends string
443
494
  > = ParseQuery<Query> extends unknown[]
444
- ? GetResultHelper<Schema, Row, Relationships, ParseQuery<Query>, unknown>
495
+ ? GetResultHelper<Schema, Row, RelationName, Relationships, ParseQuery<Query>, unknown>
445
496
  : ParseQuery<Query>
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '1.8.6'
1
+ export const version = '1.9.0'