@isograph/react 0.4.2 → 0.5.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 (144) hide show
  1. package/.turbo/turbo-compile-libs.log +2 -2
  2. package/dist/core/FragmentReference.d.ts +4 -2
  3. package/dist/core/FragmentReference.d.ts.map +1 -1
  4. package/dist/core/FragmentReference.js +2 -2
  5. package/dist/core/IsographEnvironment.d.ts +19 -11
  6. package/dist/core/IsographEnvironment.d.ts.map +1 -1
  7. package/dist/core/IsographEnvironment.js +27 -2
  8. package/dist/core/PromiseWrapper.d.ts +13 -7
  9. package/dist/core/PromiseWrapper.d.ts.map +1 -1
  10. package/dist/core/areEqualWithDeepComparison.d.ts.map +1 -1
  11. package/dist/core/areEqualWithDeepComparison.js +5 -0
  12. package/dist/core/brand.d.ts +17 -0
  13. package/dist/core/brand.d.ts.map +1 -1
  14. package/dist/core/cache.d.ts +10 -7
  15. package/dist/core/cache.d.ts.map +1 -1
  16. package/dist/core/cache.js +102 -74
  17. package/dist/core/check.d.ts +8 -4
  18. package/dist/core/check.d.ts.map +1 -1
  19. package/dist/core/check.js +10 -7
  20. package/dist/core/componentCache.d.ts +1 -1
  21. package/dist/core/componentCache.d.ts.map +1 -1
  22. package/dist/core/componentCache.js +6 -4
  23. package/dist/core/entrypoint.d.ts +17 -7
  24. package/dist/core/entrypoint.d.ts.map +1 -1
  25. package/dist/core/garbageCollection.d.ts +8 -2
  26. package/dist/core/garbageCollection.d.ts.map +1 -1
  27. package/dist/core/garbageCollection.js +36 -14
  28. package/dist/core/logging.d.ts +16 -3
  29. package/dist/core/logging.d.ts.map +1 -1
  30. package/dist/core/makeNetworkRequest.d.ts +4 -2
  31. package/dist/core/makeNetworkRequest.d.ts.map +1 -1
  32. package/dist/core/makeNetworkRequest.js +115 -38
  33. package/dist/core/optimisticProxy.d.ts +59 -0
  34. package/dist/core/optimisticProxy.d.ts.map +1 -0
  35. package/dist/core/optimisticProxy.js +399 -0
  36. package/dist/core/read.d.ts +3 -2
  37. package/dist/core/read.d.ts.map +1 -1
  38. package/dist/core/read.js +158 -123
  39. package/dist/core/reader.d.ts +10 -5
  40. package/dist/core/reader.d.ts.map +1 -1
  41. package/dist/core/startUpdate.d.ts +3 -2
  42. package/dist/core/startUpdate.d.ts.map +1 -1
  43. package/dist/core/startUpdate.js +35 -36
  44. package/dist/index.d.ts +2 -2
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +2 -1
  47. package/dist/loadable-hooks/useClientSideDefer.d.ts +9 -4
  48. package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
  49. package/dist/loadable-hooks/useClientSideDefer.js +34 -1
  50. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +5 -3
  51. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
  52. package/dist/loadable-hooks/useConnectionSpecPagination.js +27 -13
  53. package/dist/loadable-hooks/useImperativeLoadableField.d.ts +1 -1
  54. package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +1 -1
  55. package/dist/loadable-hooks/useSkipLimitPagination.d.ts +1 -1
  56. package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
  57. package/dist/loadable-hooks/useSkipLimitPagination.js +1 -1
  58. package/dist/react/FragmentReader.d.ts +2 -1
  59. package/dist/react/FragmentReader.d.ts.map +1 -1
  60. package/dist/react/FragmentRenderer.d.ts +2 -1
  61. package/dist/react/FragmentRenderer.d.ts.map +1 -1
  62. package/dist/react/LoadableFieldReader.d.ts +9 -3
  63. package/dist/react/LoadableFieldReader.d.ts.map +1 -1
  64. package/dist/react/LoadableFieldReader.js +40 -1
  65. package/dist/react/LoadableFieldRenderer.d.ts +9 -3
  66. package/dist/react/LoadableFieldRenderer.d.ts.map +1 -1
  67. package/dist/react/LoadableFieldRenderer.js +36 -1
  68. package/dist/react/useImperativeReference.d.ts +4 -3
  69. package/dist/react/useImperativeReference.d.ts.map +1 -1
  70. package/dist/react/useImperativeReference.js +3 -5
  71. package/dist/react/useLazyReference.d.ts +2 -1
  72. package/dist/react/useLazyReference.d.ts.map +1 -1
  73. package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
  74. package/dist/react/useReadAndSubscribe.js +1 -3
  75. package/dist/react/useResult.d.ts.map +1 -1
  76. package/dist/react/useResult.js +6 -5
  77. package/package.json +16 -17
  78. package/src/core/FragmentReference.ts +10 -4
  79. package/src/core/IsographEnvironment.ts +59 -13
  80. package/src/core/PromiseWrapper.ts +14 -7
  81. package/src/core/areEqualWithDeepComparison.ts +5 -0
  82. package/src/core/brand.ts +18 -0
  83. package/src/core/cache.ts +186 -91
  84. package/src/core/check.ts +21 -10
  85. package/src/core/componentCache.ts +8 -4
  86. package/src/core/entrypoint.ts +35 -6
  87. package/src/core/garbageCollection.ts +61 -19
  88. package/src/core/logging.ts +15 -3
  89. package/src/core/makeNetworkRequest.ts +307 -74
  90. package/src/core/optimisticProxy.ts +563 -0
  91. package/src/core/read.ts +233 -163
  92. package/src/core/reader.ts +11 -7
  93. package/src/core/startUpdate.ts +47 -32
  94. package/src/index.ts +2 -1
  95. package/src/loadable-hooks/useClientSideDefer.ts +76 -26
  96. package/src/loadable-hooks/useConnectionSpecPagination.ts +34 -17
  97. package/src/loadable-hooks/useImperativeLoadableField.ts +2 -2
  98. package/src/loadable-hooks/useSkipLimitPagination.ts +2 -3
  99. package/src/react/FragmentReader.tsx +3 -1
  100. package/src/react/FragmentRenderer.tsx +8 -1
  101. package/src/react/LoadableFieldReader.tsx +123 -12
  102. package/src/react/LoadableFieldRenderer.tsx +122 -12
  103. package/src/react/useImperativeReference.ts +20 -11
  104. package/src/react/useLazyReference.ts +17 -6
  105. package/src/react/useReadAndSubscribe.ts +1 -8
  106. package/src/react/useResult.ts +9 -11
  107. package/src/tests/__isograph/Node/__link/output_type.ts +3 -0
  108. package/src/tests/__isograph/Node/asEconomist/resolver_reader.ts +3 -3
  109. package/src/tests/__isograph/Query/linkedUpdate/entrypoint.ts +3 -1
  110. package/src/tests/__isograph/Query/linkedUpdate/param_type.ts +4 -4
  111. package/src/tests/__isograph/Query/linkedUpdate/raw_response_type.ts +13 -0
  112. package/src/tests/__isograph/Query/linkedUpdate/resolver_reader.ts +6 -6
  113. package/src/tests/__isograph/Query/meName/entrypoint.ts +3 -1
  114. package/src/tests/__isograph/Query/meName/raw_response_type.ts +7 -0
  115. package/src/tests/__isograph/Query/meName/resolver_reader.ts +2 -2
  116. package/src/tests/__isograph/Query/meNameSuccessor/entrypoint.ts +3 -1
  117. package/src/tests/__isograph/Query/meNameSuccessor/raw_response_type.ts +14 -0
  118. package/src/tests/__isograph/Query/meNameSuccessor/resolver_reader.ts +4 -4
  119. package/src/tests/__isograph/Query/nodeField/entrypoint.ts +3 -1
  120. package/src/tests/__isograph/Query/nodeField/raw_response_type.ts +7 -0
  121. package/src/tests/__isograph/Query/nodeField/resolver_reader.ts +2 -2
  122. package/src/tests/__isograph/Query/normalizeUndefinedField/entrypoint.ts +33 -0
  123. package/src/tests/__isograph/Query/normalizeUndefinedField/normalization_ast.ts +25 -0
  124. package/src/tests/__isograph/Query/normalizeUndefinedField/output_type.ts +3 -0
  125. package/src/tests/__isograph/Query/normalizeUndefinedField/param_type.ts +9 -0
  126. package/src/tests/__isograph/Query/normalizeUndefinedField/query_text.ts +6 -0
  127. package/src/tests/__isograph/Query/normalizeUndefinedField/raw_response_type.ts +7 -0
  128. package/src/tests/__isograph/Query/normalizeUndefinedField/resolver_reader.ts +38 -0
  129. package/src/tests/__isograph/Query/startUpdate/entrypoint.ts +3 -1
  130. package/src/tests/__isograph/Query/startUpdate/raw_response_type.ts +8 -0
  131. package/src/tests/__isograph/Query/startUpdate/resolver_reader.ts +3 -3
  132. package/src/tests/__isograph/Query/subquery/entrypoint.ts +3 -1
  133. package/src/tests/__isograph/Query/subquery/raw_response_type.ts +9 -0
  134. package/src/tests/__isograph/Query/subquery/resolver_reader.ts +3 -3
  135. package/src/tests/__isograph/iso.ts +11 -1
  136. package/src/tests/garbageCollection.test.ts +8 -5
  137. package/src/tests/meNameSuccessor.ts +6 -3
  138. package/src/tests/nodeQuery.ts +4 -2
  139. package/src/tests/normalizeData.test.ts +89 -15
  140. package/src/tests/optimisticProxy.test.ts +860 -0
  141. package/src/tests/startUpdate.test.ts +8 -6
  142. package/vitest.config.ts +10 -1
  143. package/src/tests/__isograph/Economist/link/output_type.ts +0 -2
  144. package/src/tests/__isograph/Node/link/output_type.ts +0 -3
@@ -9,25 +9,43 @@ import { type LoadableField } from '../core/reader';
9
9
  import { useClientSideDefer } from '../loadable-hooks/useClientSideDefer';
10
10
  import { useResult } from './useResult';
11
11
 
12
+ type ArgsWithoutProvidedArgs<
13
+ TReadFromStore extends UnknownTReadFromStore,
14
+ TProvidedArgs extends object,
15
+ > = Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>;
16
+
17
+ type MaybeRequiredArgs<
18
+ TReadFromStore extends UnknownTReadFromStore,
19
+ TProvidedArgs extends object,
20
+ > =
21
+ {} extends ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>
22
+ ? {
23
+ args?: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>;
24
+ }
25
+ : {
26
+ args: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>;
27
+ };
28
+
12
29
  export function LoadableFieldRenderer<
13
30
  TReadFromStore extends UnknownTReadFromStore,
14
31
  TProvidedArgs extends object,
15
32
  TChildrenResult,
16
33
  TProps,
17
- >(props: {
18
- loadableField: LoadableField<
19
- TReadFromStore,
20
- React.FC<TProps>,
21
- Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>
22
- >;
23
- // TODO we can improve this to not require args if its an empty object
24
- args: Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>;
25
- fetchOptions?: FetchOptions<React.FC<TProps>>;
26
- networkRequestOptions?: Partial<NetworkRequestReaderOptions>;
27
- additionalProps: Omit<TProps, keyof JSX.IntrinsicAttributes>;
28
- }): TChildrenResult {
34
+ >(
35
+ props: {
36
+ loadableField: LoadableField<
37
+ TReadFromStore,
38
+ React.FC<TProps>,
39
+ Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>
40
+ >;
41
+ fetchOptions?: FetchOptions<React.FC<TProps>, never>;
42
+ networkRequestOptions?: Partial<NetworkRequestReaderOptions>;
43
+ additionalProps: Omit<TProps, keyof JSX.IntrinsicAttributes>;
44
+ } & MaybeRequiredArgs<TReadFromStore, TProvidedArgs>,
45
+ ): TChildrenResult {
29
46
  const { fragmentReference } = useClientSideDefer(
30
47
  props.loadableField,
48
+ // @ts-expect-error
31
49
  props.args,
32
50
  props.fetchOptions,
33
51
  );
@@ -39,3 +57,95 @@ export function LoadableFieldRenderer<
39
57
  // @ts-expect-error
40
58
  return <Component {...props.additionalProps} />;
41
59
  }
60
+
61
+ // @ts-ignore
62
+ function tsTests() {
63
+ let neverArgs!: LoadableField<
64
+ {
65
+ parameters: Record<string, never>;
66
+ data: {};
67
+ },
68
+ () => React.ReactNode
69
+ >;
70
+
71
+ let optionalArgs!: LoadableField<
72
+ {
73
+ parameters: {
74
+ foo?: string;
75
+ };
76
+ data: {};
77
+ },
78
+ () => React.ReactNode
79
+ >;
80
+
81
+ let requiredArgs!: LoadableField<
82
+ {
83
+ parameters: {
84
+ foo: string;
85
+ };
86
+ data: {};
87
+ },
88
+ () => React.ReactNode
89
+ >;
90
+
91
+ <LoadableFieldRenderer loadableField={neverArgs} additionalProps={{}} />;
92
+ <LoadableFieldRenderer
93
+ loadableField={neverArgs}
94
+ additionalProps={{}}
95
+ args={{}}
96
+ />;
97
+ <LoadableFieldRenderer
98
+ loadableField={neverArgs}
99
+ additionalProps={{}}
100
+ args={{
101
+ // @ts-expect-error
102
+ foo: 'bar',
103
+ }}
104
+ />;
105
+
106
+ <LoadableFieldRenderer loadableField={optionalArgs} additionalProps={{}} />;
107
+ <LoadableFieldRenderer
108
+ loadableField={optionalArgs}
109
+ additionalProps={{}}
110
+ args={{}}
111
+ />;
112
+ <LoadableFieldRenderer
113
+ loadableField={optionalArgs}
114
+ additionalProps={{}}
115
+ args={{
116
+ foo: 'bar',
117
+ }}
118
+ />;
119
+ <LoadableFieldRenderer
120
+ loadableField={optionalArgs}
121
+ additionalProps={{}}
122
+ args={{
123
+ // @ts-expect-error
124
+ foo: 12,
125
+ }}
126
+ />;
127
+
128
+ // @ts-expect-error
129
+ <LoadableFieldRenderer loadableField={requiredArgs} additionalProps={{}} />;
130
+ <LoadableFieldRenderer
131
+ loadableField={requiredArgs}
132
+ additionalProps={{}}
133
+ // @ts-expect-error
134
+ args={{}}
135
+ />;
136
+ <LoadableFieldRenderer
137
+ loadableField={requiredArgs}
138
+ additionalProps={{}}
139
+ args={{
140
+ foo: 'bar',
141
+ }}
142
+ />;
143
+ <LoadableFieldRenderer
144
+ loadableField={requiredArgs}
145
+ additionalProps={{}}
146
+ args={{
147
+ // @ts-expect-error
148
+ foo: 12,
149
+ }}
150
+ />;
151
+ }
@@ -2,6 +2,7 @@ import {
2
2
  UNASSIGNED_STATE,
3
3
  useUpdatableDisposableState,
4
4
  } from '@isograph/react-disposable-state';
5
+ import type { NetworkResponseObject } from '../core/cache';
5
6
  import { FetchOptions, type RequiredFetchOptions } from '../core/check';
6
7
  import {
7
8
  IsographEntrypoint,
@@ -13,15 +14,18 @@ import {
13
14
  FragmentReference,
14
15
  type UnknownTReadFromStore,
15
16
  } from '../core/FragmentReference';
16
- import { ROOT_ID } from '../core/IsographEnvironment';
17
+ import {
18
+ getOrLoadReaderWithRefetchQueries,
19
+ ROOT_ID,
20
+ } from '../core/IsographEnvironment';
17
21
  import { maybeMakeNetworkRequest } from '../core/makeNetworkRequest';
18
- import { wrapPromise, wrapResolvedValue } from '../core/PromiseWrapper';
19
22
  import { useIsographEnvironment } from './IsographEnvironmentProvider';
20
23
 
21
24
  export type UseImperativeReferenceResult<
22
25
  TReadFromStore extends UnknownTReadFromStore,
23
26
  TClientFieldValue,
24
27
  TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
28
+ TRawResponseType,
25
29
  > = {
26
30
  fragmentReference: FragmentReference<
27
31
  TReadFromStore,
@@ -31,7 +35,7 @@ export type UseImperativeReferenceResult<
31
35
  variables: ExtractParameters<TReadFromStore>,
32
36
  ...[fetchOptions]: NormalizationAstLoader extends TNormalizationAst
33
37
  ? [fetchOptions: RequiredFetchOptions<TClientFieldValue>]
34
- : [fetchOptions?: FetchOptions<TClientFieldValue>]
38
+ : [fetchOptions?: FetchOptions<TClientFieldValue, TRawResponseType>]
35
39
  ) => void;
36
40
  };
37
41
 
@@ -39,16 +43,19 @@ export function useImperativeReference<
39
43
  TReadFromStore extends UnknownTReadFromStore,
40
44
  TClientFieldValue,
41
45
  TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
46
+ TRawResponseType extends NetworkResponseObject,
42
47
  >(
43
48
  entrypoint: IsographEntrypoint<
44
49
  TReadFromStore,
45
50
  TClientFieldValue,
46
- TNormalizationAst
51
+ TNormalizationAst,
52
+ TRawResponseType
47
53
  >,
48
54
  ): UseImperativeReferenceResult<
49
55
  TReadFromStore,
50
56
  TClientFieldValue,
51
- TNormalizationAst
57
+ TNormalizationAst,
58
+ TRawResponseType
52
59
  > {
53
60
  const { state, setState } =
54
61
  useUpdatableDisposableState<
@@ -59,13 +66,13 @@ export function useImperativeReference<
59
66
  fragmentReference: state !== UNASSIGNED_STATE ? state : null,
60
67
  loadFragmentReference: (
61
68
  variables: ExtractParameters<TReadFromStore>,
62
- fetchOptions?: FetchOptions<TClientFieldValue>,
69
+ fetchOptions?: FetchOptions<TClientFieldValue, TRawResponseType>,
63
70
  ) => {
64
- const readerWithRefetchQueries =
65
- entrypoint.readerWithRefetchQueries.kind ===
66
- 'ReaderWithRefetchQueriesLoader'
67
- ? wrapPromise(entrypoint.readerWithRefetchQueries.loader())
68
- : wrapResolvedValue(entrypoint.readerWithRefetchQueries);
71
+ const { fieldName, readerArtifactKind, readerWithRefetchQueries } =
72
+ getOrLoadReaderWithRefetchQueries(
73
+ environment,
74
+ entrypoint.readerWithRefetchQueries,
75
+ );
69
76
  const [networkRequest, disposeNetworkRequest] = maybeMakeNetworkRequest(
70
77
  environment,
71
78
  entrypoint,
@@ -77,6 +84,8 @@ export function useImperativeReference<
77
84
  {
78
85
  kind: 'FragmentReference',
79
86
  readerWithRefetchQueries,
87
+ fieldName,
88
+ readerArtifactKind,
80
89
  root: { __link: ROOT_ID, __typename: entrypoint.concreteType },
81
90
  variables,
82
91
  networkRequest,
@@ -1,5 +1,8 @@
1
1
  import { useLazyDisposableState } from '@isograph/react-disposable-state';
2
- import { getOrCreateCacheForArtifact } from '../core/cache';
2
+ import {
3
+ getOrCreateCacheForArtifact,
4
+ type NetworkResponseObject,
5
+ } from '../core/cache';
3
6
  import { FetchOptions, type RequiredFetchOptions } from '../core/check';
4
7
  import {
5
8
  IsographEntrypoint,
@@ -18,16 +21,18 @@ export function useLazyReference<
18
21
  TReadFromStore extends UnknownTReadFromStore,
19
22
  TClientFieldValue,
20
23
  TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
24
+ TRawResponseType extends NetworkResponseObject,
21
25
  >(
22
26
  entrypoint: IsographEntrypoint<
23
27
  TReadFromStore,
24
28
  TClientFieldValue,
25
- TNormalizationAst
29
+ TNormalizationAst,
30
+ TRawResponseType
26
31
  >,
27
32
  variables: ExtractParameters<TReadFromStore>,
28
33
  ...[fetchOptions]: TNormalizationAst extends NormalizationAstLoader
29
34
  ? [fetchOptions: RequiredFetchOptions<TClientFieldValue>]
30
- : [fetchOptions?: FetchOptions<TClientFieldValue>]
35
+ : [fetchOptions?: FetchOptions<TClientFieldValue, TRawResponseType>]
31
36
  ): NormalizationAst | NormalizationAstLoader extends TNormalizationAst
32
37
  ? unknown
33
38
  : {
@@ -57,12 +62,18 @@ export function useLazyReference<
57
62
 
58
63
  // @ts-ignore
59
64
  function tsTests() {
60
- let withAst!: IsographEntrypoint<any, unknown, NormalizationAst>;
61
- let withAstLoader!: IsographEntrypoint<any, unknown, NormalizationAstLoader>;
65
+ let withAst!: IsographEntrypoint<any, unknown, NormalizationAst, any>;
66
+ let withAstLoader!: IsographEntrypoint<
67
+ any,
68
+ unknown,
69
+ NormalizationAstLoader,
70
+ {}
71
+ >;
62
72
  let withAstOrLoader!: IsographEntrypoint<
63
73
  any,
64
74
  unknown,
65
- NormalizationAst | NormalizationAstLoader
75
+ NormalizationAst | NormalizationAstLoader,
76
+ {}
66
77
  >;
67
78
 
68
79
  useLazyReference(withAst, {}) satisfies {};
@@ -6,7 +6,6 @@ import {
6
6
  stableIdForFragmentReference,
7
7
  type UnknownTReadFromStore,
8
8
  } from '../core/FragmentReference';
9
- import { readPromise } from '../core/PromiseWrapper';
10
9
  import {
11
10
  NetworkRequestReaderOptions,
12
11
  readButDoNotEvaluate,
@@ -75,13 +74,7 @@ export function useSubscribeToMultiple<
75
74
  [
76
75
  items
77
76
  .map(({ fragmentReference }) => {
78
- const readerWithRefetchQueries = readPromise(
79
- fragmentReference.readerWithRefetchQueries,
80
- );
81
- stableIdForFragmentReference(
82
- fragmentReference,
83
- readerWithRefetchQueries.readerArtifact.fieldName,
84
- );
77
+ stableIdForFragmentReference(fragmentReference);
85
78
  })
86
79
  .join('.'),
87
80
  ],
@@ -28,25 +28,23 @@ export function useResult<
28
28
  partialNetworkRequestOptions,
29
29
  );
30
30
 
31
- maybeUnwrapNetworkRequest(
32
- fragmentReference.networkRequest,
33
- networkRequestOptions,
34
- );
35
- const readerWithRefetchQueries = readPromise(
36
- fragmentReference.readerWithRefetchQueries,
37
- );
38
-
39
- switch (readerWithRefetchQueries.readerArtifact.kind) {
31
+ switch (fragmentReference.readerArtifactKind) {
40
32
  case 'ComponentReaderArtifact': {
41
33
  // @ts-expect-error
42
34
  return getOrCreateCachedComponent(
43
35
  environment,
44
- readerWithRefetchQueries.readerArtifact.fieldName,
45
36
  fragmentReference,
46
37
  networkRequestOptions,
47
38
  );
48
39
  }
49
40
  case 'EagerReaderArtifact': {
41
+ maybeUnwrapNetworkRequest(
42
+ fragmentReference.networkRequest,
43
+ networkRequestOptions,
44
+ );
45
+ const readerWithRefetchQueries = readPromise(
46
+ fragmentReference.readerWithRefetchQueries,
47
+ );
50
48
  const data = useReadAndSubscribe(
51
49
  fragmentReference,
52
50
  networkRequestOptions,
@@ -60,12 +58,12 @@ export function useResult<
60
58
  startUpdate: getOrCreateCachedStartUpdate(
61
59
  environment,
62
60
  fragmentReference,
63
- readerWithRefetchQueries.readerArtifact.fieldName,
64
61
  networkRequestOptions,
65
62
  ),
66
63
  }
67
64
  : undefined),
68
65
  };
66
+ // @ts-expect-error
69
67
  return readerWithRefetchQueries.readerArtifact.resolver(param);
70
68
  }
71
69
  }
@@ -0,0 +1,3 @@
1
+ import type { Link } from '@isograph/react';
2
+ export type Node____link__output_type =
3
+ | Link<"Economist">;
@@ -10,7 +10,7 @@ const readerAst: ReaderAst<{ data: any, parameters: Record<PropertyKey, never> }
10
10
  },
11
11
  {
12
12
  kind: "Link",
13
- alias: "link",
13
+ alias: "__link",
14
14
  },
15
15
  ];
16
16
 
@@ -19,8 +19,8 @@ const artifact: EagerReaderArtifact<
19
19
  Link<"Economist"> | null
20
20
  > = {
21
21
  kind: "EagerReaderArtifact",
22
- fieldName: "Node.asEconomist",
23
- resolver: ({ data }) => data.__typename === "Economist" ? data.link : null,
22
+ fieldName: "asEconomist",
23
+ resolver: ({ data }) => data.__typename === "Economist" ? data.__link : null,
24
24
  readerAst,
25
25
  hasUpdatable: false,
26
26
  };
@@ -1,6 +1,7 @@
1
1
  import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
2
2
  import {Query__linkedUpdate__param} from './param_type';
3
3
  import {Query__linkedUpdate__output_type} from './output_type';
4
+ import type {Query__linkedUpdate__raw_response_type} from './raw_response_type';
4
5
  import readerResolver from './resolver_reader';
5
6
  import queryText from './query_text';
6
7
  import normalizationAst from './normalization_ast';
@@ -9,7 +10,8 @@ const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
9
10
  const artifact: IsographEntrypoint<
10
11
  Query__linkedUpdate__param,
11
12
  Query__linkedUpdate__output_type,
12
- NormalizationAst
13
+ NormalizationAst,
14
+ Query__linkedUpdate__raw_response_type
13
15
  > = {
14
16
  kind: "Entrypoint",
15
17
  networkRequestInfo: {
@@ -1,4 +1,4 @@
1
- import { type Node__link__output_type } from '../../Node/link/output_type';
1
+ import { type Node____link__output_type } from '../../Node/__link/output_type';
2
2
  import type { StartUpdate } from '@isograph/react';
3
3
 
4
4
  export type Query__linkedUpdate__param = {
@@ -15,7 +15,7 @@ A client pointer for the Economist type.
15
15
  /**
16
16
  A store Link for the Node type.
17
17
  */
18
- readonly link: Node__link__output_type,
18
+ readonly __link: Node____link__output_type,
19
19
  /**
20
20
  A client pointer for the Economist type.
21
21
  */
@@ -34,12 +34,12 @@ A client pointer for the Economist type.
34
34
  name: string,
35
35
  } | null),
36
36
  } | null),
37
- set node(value: ({ link: Node__link__output_type } | null)),
37
+ set node(value: ({ __link: Node____link__output_type } | null)),
38
38
  readonly john_stuart_mill: ({
39
39
  /**
40
40
  A store Link for the Node type.
41
41
  */
42
- readonly link: Node__link__output_type,
42
+ readonly __link: Node____link__output_type,
43
43
  /**
44
44
  A client pointer for the Economist type.
45
45
  */
@@ -0,0 +1,13 @@
1
+ export type Query__linkedUpdate__raw_response_type = {
2
+ node____id___l_0?: ({
3
+ __typename: "Economist",
4
+ id: string,
5
+ name: string,
6
+ } | null),
7
+ node____id___l_1?: ({
8
+ __typename: "Economist",
9
+ id: string,
10
+ name: string,
11
+ } | null),
12
+ }
13
+
@@ -17,6 +17,7 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
17
17
  ],
18
18
  condition: null,
19
19
  isUpdatable: true,
20
+ refetchQueryIndex: null,
20
21
  selections: [
21
22
  {
22
23
  kind: "Linked",
@@ -25,6 +26,7 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
25
26
  arguments: null,
26
27
  condition: Node__asEconomist__resolver_reader,
27
28
  isUpdatable: false,
29
+ refetchQueryIndex: null,
28
30
  selections: [
29
31
  {
30
32
  kind: "Scalar",
@@ -34,10 +36,8 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
34
36
  isUpdatable: true,
35
37
  },
36
38
  ],
37
- refetchQueryIndex: null,
38
39
  },
39
40
  ],
40
- refetchQueryIndex: null,
41
41
  },
42
42
  {
43
43
  kind: "Linked",
@@ -51,10 +51,11 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
51
51
  ],
52
52
  condition: null,
53
53
  isUpdatable: false,
54
+ refetchQueryIndex: null,
54
55
  selections: [
55
56
  {
56
57
  kind: "Link",
57
- alias: "link",
58
+ alias: "__link",
58
59
  },
59
60
  {
60
61
  kind: "Linked",
@@ -63,6 +64,7 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
63
64
  arguments: null,
64
65
  condition: Node__asEconomist__resolver_reader,
65
66
  isUpdatable: false,
67
+ refetchQueryIndex: null,
66
68
  selections: [
67
69
  {
68
70
  kind: "Scalar",
@@ -72,10 +74,8 @@ const readerAst: ReaderAst<Query__linkedUpdate__param> = [
72
74
  isUpdatable: false,
73
75
  },
74
76
  ],
75
- refetchQueryIndex: null,
76
77
  },
77
78
  ],
78
- refetchQueryIndex: null,
79
79
  },
80
80
  ];
81
81
 
@@ -84,7 +84,7 @@ const artifact: EagerReaderArtifact<
84
84
  Query__linkedUpdate__output_type
85
85
  > = {
86
86
  kind: "EagerReaderArtifact",
87
- fieldName: "Query.linkedUpdate",
87
+ fieldName: "linkedUpdate",
88
88
  resolver,
89
89
  readerAst,
90
90
  hasUpdatable: true,
@@ -1,6 +1,7 @@
1
1
  import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
2
2
  import {Query__meName__param} from './param_type';
3
3
  import {Query__meName__output_type} from './output_type';
4
+ import type {Query__meName__raw_response_type} from './raw_response_type';
4
5
  import readerResolver from './resolver_reader';
5
6
  import queryText from './query_text';
6
7
  import normalizationAst from './normalization_ast';
@@ -9,7 +10,8 @@ const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
9
10
  const artifact: IsographEntrypoint<
10
11
  Query__meName__param,
11
12
  Query__meName__output_type,
12
- NormalizationAst
13
+ NormalizationAst,
14
+ Query__meName__raw_response_type
13
15
  > = {
14
16
  kind: "Entrypoint",
15
17
  networkRequestInfo: {
@@ -0,0 +1,7 @@
1
+ export type Query__meName__raw_response_type = {
2
+ me: {
3
+ id: string,
4
+ name: string,
5
+ },
6
+ }
7
+
@@ -11,6 +11,7 @@ const readerAst: ReaderAst<Query__meName__param> = [
11
11
  arguments: null,
12
12
  condition: null,
13
13
  isUpdatable: false,
14
+ refetchQueryIndex: null,
14
15
  selections: [
15
16
  {
16
17
  kind: "Scalar",
@@ -20,7 +21,6 @@ const readerAst: ReaderAst<Query__meName__param> = [
20
21
  isUpdatable: false,
21
22
  },
22
23
  ],
23
- refetchQueryIndex: null,
24
24
  },
25
25
  ];
26
26
 
@@ -29,7 +29,7 @@ const artifact: EagerReaderArtifact<
29
29
  Query__meName__output_type
30
30
  > = {
31
31
  kind: "EagerReaderArtifact",
32
- fieldName: "Query.meName",
32
+ fieldName: "meName",
33
33
  resolver,
34
34
  readerAst,
35
35
  hasUpdatable: false,
@@ -1,6 +1,7 @@
1
1
  import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
2
2
  import {Query__meNameSuccessor__param} from './param_type';
3
3
  import {Query__meNameSuccessor__output_type} from './output_type';
4
+ import type {Query__meNameSuccessor__raw_response_type} from './raw_response_type';
4
5
  import readerResolver from './resolver_reader';
5
6
  import queryText from './query_text';
6
7
  import normalizationAst from './normalization_ast';
@@ -9,7 +10,8 @@ const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
9
10
  const artifact: IsographEntrypoint<
10
11
  Query__meNameSuccessor__param,
11
12
  Query__meNameSuccessor__output_type,
12
- NormalizationAst
13
+ NormalizationAst,
14
+ Query__meNameSuccessor__raw_response_type
13
15
  > = {
14
16
  kind: "Entrypoint",
15
17
  networkRequestInfo: {
@@ -0,0 +1,14 @@
1
+ export type Query__meNameSuccessor__raw_response_type = {
2
+ me: {
3
+ id: string,
4
+ name: string,
5
+ successor?: ({
6
+ id: string,
7
+ successor?: ({
8
+ id: string,
9
+ name: string,
10
+ } | null),
11
+ } | null),
12
+ },
13
+ }
14
+
@@ -11,6 +11,7 @@ const readerAst: ReaderAst<Query__meNameSuccessor__param> = [
11
11
  arguments: null,
12
12
  condition: null,
13
13
  isUpdatable: false,
14
+ refetchQueryIndex: null,
14
15
  selections: [
15
16
  {
16
17
  kind: "Scalar",
@@ -26,6 +27,7 @@ const readerAst: ReaderAst<Query__meNameSuccessor__param> = [
26
27
  arguments: null,
27
28
  condition: null,
28
29
  isUpdatable: false,
30
+ refetchQueryIndex: null,
29
31
  selections: [
30
32
  {
31
33
  kind: "Linked",
@@ -34,6 +36,7 @@ const readerAst: ReaderAst<Query__meNameSuccessor__param> = [
34
36
  arguments: null,
35
37
  condition: null,
36
38
  isUpdatable: false,
39
+ refetchQueryIndex: null,
37
40
  selections: [
38
41
  {
39
42
  kind: "Scalar",
@@ -43,13 +46,10 @@ const readerAst: ReaderAst<Query__meNameSuccessor__param> = [
43
46
  isUpdatable: false,
44
47
  },
45
48
  ],
46
- refetchQueryIndex: null,
47
49
  },
48
50
  ],
49
- refetchQueryIndex: null,
50
51
  },
51
52
  ],
52
- refetchQueryIndex: null,
53
53
  },
54
54
  ];
55
55
 
@@ -58,7 +58,7 @@ const artifact: EagerReaderArtifact<
58
58
  Query__meNameSuccessor__output_type
59
59
  > = {
60
60
  kind: "EagerReaderArtifact",
61
- fieldName: "Query.meNameSuccessor",
61
+ fieldName: "meNameSuccessor",
62
62
  resolver,
63
63
  readerAst,
64
64
  hasUpdatable: false,
@@ -1,6 +1,7 @@
1
1
  import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
2
2
  import {Query__nodeField__param} from './param_type';
3
3
  import {Query__nodeField__output_type} from './output_type';
4
+ import type {Query__nodeField__raw_response_type} from './raw_response_type';
4
5
  import readerResolver from './resolver_reader';
5
6
  import queryText from './query_text';
6
7
  import normalizationAst from './normalization_ast';
@@ -9,7 +10,8 @@ const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
9
10
  const artifact: IsographEntrypoint<
10
11
  Query__nodeField__param,
11
12
  Query__nodeField__output_type,
12
- NormalizationAst
13
+ NormalizationAst,
14
+ Query__nodeField__raw_response_type
13
15
  > = {
14
16
  kind: "Entrypoint",
15
17
  networkRequestInfo: {
@@ -0,0 +1,7 @@
1
+ export type Query__nodeField__raw_response_type = {
2
+ node____id___v_id?: ({
3
+ __typename: string,
4
+ id: string,
5
+ } | null),
6
+ }
7
+