@@ -15,14 +15,17 @@ import {
1515 getRefetchMetadata ,
1616 getRequest ,
1717 graphql ,
18+ isErrorResult ,
1819 isPromise ,
20+ isValueResult ,
1921 LiveState ,
2022 Network ,
2123 PreloadableConcreteRequest ,
2224 PreloadableQueryRegistry ,
2325 QueryResponseCache ,
2426 ReaderFragment ,
2527 ReaderInlineDataFragment ,
28+ readFragment ,
2629 readInlineData ,
2730 RecordProxy ,
2831 RecordSource ,
@@ -35,7 +38,13 @@ import {
3538 suspenseSentinel ,
3639 Variables ,
3740} from "relay-runtime" ;
38- import { observeFragment , observeQuery , waitForFragmentData } from "relay-runtime/experimental" ;
41+ import {
42+ IdOf ,
43+ observeFragment ,
44+ observeQuery ,
45+ resolverDataInjector ,
46+ waitForFragmentData ,
47+ } from "relay-runtime/experimental" ;
3948
4049import type { HandlerProvider } from "relay-runtime/lib/handlers/RelayDefaultHandlerProvider" ;
4150import * as multiActorEnvironment from "relay-runtime/multi-actor-environment" ;
@@ -701,8 +710,6 @@ function multiActors() {
701710// Relay Resolvers
702711// ~~~~~~~~~~~~~~~~~~~~~~~
703712
704- const { readFragment } = __internal . ResolverFragments ;
705-
706713// Regular fragment.
707714interface UserComponent_user {
708715 readonly id : string ;
@@ -921,6 +928,20 @@ export function handleResult<T, E>(result: Result<T, E>) {
921928 }
922929}
923930
931+ // eslint-disable-next-line @definitelytyped/no-unnecessary-generics
932+ export function handleValueResult < T , E > ( result : Result < T , E > ) {
933+ if ( isValueResult ( result ) ) {
934+ const value : T = result . value ;
935+ }
936+ }
937+
938+ // eslint-disable-next-line @definitelytyped/no-unnecessary-generics
939+ export function handleErrorResult < T , E > ( result : Result < T , E > ) {
940+ if ( isErrorResult ( result ) ) {
941+ const errors : readonly E [ ] = result . errors ;
942+ }
943+ }
944+
924945// ~~~~~~~~~~~~~~~~~~
925946// Metadata
926947// ~~~~~~~~~~~~~~~~~~
@@ -1048,3 +1069,61 @@ function observeQueryTest() {
10481069
10491070 subscription . unsubscribe ( ) ;
10501071}
1072+
1073+ // ~~~~~~~~~~~~~~~~~~
1074+ // resolverDataInjector
1075+ // ~~~~~~~~~~~~~~~~~~
1076+
1077+ const MyResolverType__id_graphql : ReaderFragment = {
1078+ "argumentDefinitions" : [ ] ,
1079+ "kind" : "Fragment" ,
1080+ "metadata" : null ,
1081+ "name" : "MyResolverType__id" ,
1082+ "selections" : [
1083+ {
1084+ "kind" : "ClientExtension" ,
1085+ "selections" : [
1086+ {
1087+ "alias" : null ,
1088+ "args" : null ,
1089+ "kind" : "ScalarField" ,
1090+ "name" : "id" ,
1091+ "storageKey" : null ,
1092+ } ,
1093+ ] ,
1094+ } ,
1095+ ] ,
1096+ "type" : "MyResolverType" ,
1097+ "abstractKey" : null ,
1098+ } ;
1099+
1100+ interface MyResolverType {
1101+ id : string ;
1102+ }
1103+
1104+ function myResolverTypeRelayModelInstanceResolver ( id : DataID ) : MyResolverType {
1105+ return {
1106+ id,
1107+ } ;
1108+ }
1109+
1110+ export const resolverModule = resolverDataInjector (
1111+ MyResolverType__id_graphql ,
1112+ myResolverTypeRelayModelInstanceResolver ,
1113+ "id" ,
1114+ true ,
1115+ ) ;
1116+
1117+ // ~~~~~~~~~~~~~~~~~~
1118+ // Client edge resolver
1119+ // ~~~~~~~~~~~~~~~~~~
1120+
1121+ export function myDog ( ) : IdOf < "Dog" > {
1122+ return { id : "5" } ;
1123+ }
1124+
1125+ type AnimalTypenames = "Cat" | "Dog" ;
1126+
1127+ export function myAnimal ( ) : IdOf < "Animal" , AnimalTypenames > {
1128+ return Math . random ( ) > 0.5 ? { id : "5" , __typename : "Dog" } : { id : "6" , __typename : "Cat" } ;
1129+ }
0 commit comments