@@ -191,6 +191,17 @@ type ConstructFieldDefinition<
191191  Field 
192192>  =  Field  extends  {  star : true  } 
193193  ? Row 
194+   : Field  extends  {  spread : true ;  original : string ;  children : unknown [ ]  } 
195+   ? GetResultHelper < 
196+       Schema , 
197+       ( Schema [ 'Tables' ]  &  Schema [ 'Views' ] ) [ Field [ 'original' ] ] [ 'Row' ] , 
198+       Field [ 'original' ] , 
199+       ( Schema [ 'Tables' ]  &  Schema [ 'Views' ] ) [ Field [ 'original' ] ]  extends  {  Relationships : infer R  } 
200+         ? R 
201+         : unknown , 
202+       Field [ 'children' ] , 
203+       unknown 
204+     > 
194205  : Field  extends  {  name : string ;  original : string ;  hint : string ;  children : unknown [ ]  } 
195206  ? { 
196207      [ _  in  Field [ 'name' ] ] : GetResultHelper < 
@@ -394,12 +405,20 @@ type ParseField<Input extends string> = Input extends ''
394405 * - `*` 
395406 * - a field, as defined above 
396407 * - a renamed field, `renamed_field:field` 
408+  * - a spread field, `...field` 
397409 */ 
398410type  ParseNode < Input  extends  string >  =  Input  extends  '' 
399411  ? ParserError < 'Empty string' > 
400412  : // `*` 
401413  Input  extends  `*${infer Remainder } `
402414  ? [ {  star : true  } ,  EatWhitespace < Remainder > ] 
415+   : // `...field` 
416+   Input  extends  `...${infer Remainder } `
417+   ? ParseField < EatWhitespace < Remainder > >  extends  [ infer Field ,  `${infer Remainder } `] 
418+     ? Field  extends  {  children : unknown [ ]  } 
419+       ? [ Prettify < {  spread : true  }  &  Field > ,  EatWhitespace < Remainder > ] 
420+       : ParserError < 'Unable to parse spread resource' > 
421+     : ParserError < 'Unable to parse spread resource' > 
403422  : ParseIdentifier < Input >  extends  [ infer Name ,  `${infer Remainder } `] 
404423  ? EatWhitespace < Remainder >  extends  `::${infer _Remainder } `
405424    ? // `field::` 
0 commit comments