@@ -367,6 +367,168 @@ test("requires variables with mixed TVariables", () => {
367367 ) ;
368368} ) ;
369369
370+ // https://github.com/apollographql/apollo-client/issues/13342
371+ test ( "constant variable types do not widen returnPartialData" , ( ) => {
372+ {
373+ const query : TypedDocumentNode < { character : string } , { type : "main" } > =
374+ gql `` ;
375+
376+ const { data, dataState } = useQuery ( query , {
377+ variables : { type : "main" } ,
378+ } ) ;
379+
380+ expectTypeOf ( data ) . toEqualTypeOf <
381+ | DataValue . Complete < { character : string } >
382+ | DataValue . Streaming < { character : string } >
383+ | undefined
384+ > ( ) ;
385+ expectTypeOf ( dataState ) . toEqualTypeOf < "empty" | "streaming" | "complete" > ( ) ;
386+ }
387+
388+ {
389+ const query : TypedDocumentNode < { character : string } , { type : "main" } > =
390+ gql `` ;
391+
392+ const { data, dataState } = useQuery ( query , {
393+ variables : { type : "main" } ,
394+ returnPartialData : false ,
395+ } ) ;
396+
397+ expectTypeOf ( data ) . toEqualTypeOf <
398+ | DataValue . Complete < { character : string } >
399+ | DataValue . Streaming < { character : string } >
400+ | undefined
401+ > ( ) ;
402+ expectTypeOf ( dataState ) . toEqualTypeOf < "empty" | "streaming" | "complete" > ( ) ;
403+ }
404+
405+ {
406+ const query : TypedDocumentNode < { character : string } , { type : "main" } > =
407+ gql `` ;
408+
409+ const { data, dataState } = useQuery ( query , {
410+ variables : { type : "main" } ,
411+ returnPartialData : true ,
412+ } ) ;
413+
414+ expectTypeOf ( data ) . toEqualTypeOf <
415+ | DataValue . Complete < { character : string } >
416+ | DataValue . Streaming < { character : string } >
417+ | DataValue . Partial < { character : string } >
418+ | undefined
419+ > ( ) ;
420+ expectTypeOf ( dataState ) . toEqualTypeOf <
421+ "empty" | "partial" | "streaming" | "complete"
422+ > ( ) ;
423+ }
424+
425+ {
426+ const query : TypedDocumentNode < { character : string } , { episode : 10 } > =
427+ gql `` ;
428+
429+ const { data, dataState } = useQuery ( query , {
430+ variables : { episode : 10 } ,
431+ } ) ;
432+
433+ expectTypeOf ( data ) . toEqualTypeOf <
434+ | DataValue . Complete < { character : string } >
435+ | DataValue . Streaming < { character : string } >
436+ | undefined
437+ > ( ) ;
438+ expectTypeOf ( dataState ) . toEqualTypeOf < "empty" | "streaming" | "complete" > ( ) ;
439+ }
440+
441+ {
442+ const query : TypedDocumentNode < { character : string } , { episode : 10 } > =
443+ gql `` ;
444+
445+ const { data, dataState } = useQuery ( query , {
446+ variables : { episode : 10 } ,
447+ returnPartialData : false ,
448+ } ) ;
449+
450+ expectTypeOf ( data ) . toEqualTypeOf <
451+ | DataValue . Complete < { character : string } >
452+ | DataValue . Streaming < { character : string } >
453+ | undefined
454+ > ( ) ;
455+ expectTypeOf ( dataState ) . toEqualTypeOf < "empty" | "streaming" | "complete" > ( ) ;
456+ }
457+
458+ {
459+ const query : TypedDocumentNode < { character : string } , { episode : 10 } > =
460+ gql `` ;
461+
462+ const { data, dataState } = useQuery ( query , {
463+ variables : { episode : 10 } ,
464+ returnPartialData : true ,
465+ } ) ;
466+
467+ expectTypeOf ( data ) . toEqualTypeOf <
468+ | DataValue . Complete < { character : string } >
469+ | DataValue . Streaming < { character : string } >
470+ | DataValue . Partial < { character : string } >
471+ | undefined
472+ > ( ) ;
473+ expectTypeOf ( dataState ) . toEqualTypeOf <
474+ "empty" | "partial" | "streaming" | "complete"
475+ > ( ) ;
476+ }
477+
478+ {
479+ const query : TypedDocumentNode < { character : string } , { main : true } > =
480+ gql `` ;
481+
482+ const { data, dataState } = useQuery ( query , {
483+ variables : { main : true } ,
484+ } ) ;
485+
486+ expectTypeOf ( data ) . toEqualTypeOf <
487+ | DataValue . Complete < { character : string } >
488+ | DataValue . Streaming < { character : string } >
489+ | undefined
490+ > ( ) ;
491+ expectTypeOf ( dataState ) . toEqualTypeOf < "empty" | "streaming" | "complete" > ( ) ;
492+ }
493+
494+ {
495+ const query : TypedDocumentNode < { character : string } , { main : true } > =
496+ gql `` ;
497+
498+ const { data, dataState } = useQuery ( query , {
499+ variables : { main : true } ,
500+ returnPartialData : false ,
501+ } ) ;
502+
503+ expectTypeOf ( data ) . toEqualTypeOf <
504+ | DataValue . Complete < { character : string } >
505+ | DataValue . Streaming < { character : string } >
506+ | undefined
507+ > ( ) ;
508+ expectTypeOf ( dataState ) . toEqualTypeOf < "empty" | "streaming" | "complete" > ( ) ;
509+ }
510+
511+ {
512+ const query : TypedDocumentNode < { character : string } , { main : true } > =
513+ gql `` ;
514+
515+ const { data, dataState } = useQuery ( query , {
516+ variables : { main : true } ,
517+ returnPartialData : true ,
518+ } ) ;
519+
520+ expectTypeOf ( data ) . toEqualTypeOf <
521+ | DataValue . Complete < { character : string } >
522+ | DataValue . Streaming < { character : string } >
523+ | DataValue . Partial < { character : string } >
524+ | undefined
525+ > ( ) ;
526+ expectTypeOf ( dataState ) . toEqualTypeOf <
527+ "empty" | "partial" | "streaming" | "complete"
528+ > ( ) ;
529+ }
530+ } ) ;
531+
370532test ( "always returns empty data/dataState with unconditional skipToken" , ( ) => {
371533 const query : TypedDocumentNode <
372534 { character : string } ,
0 commit comments