@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.
- package/.turbo/turbo-compile-libs.log +2 -2
- package/dist/core/FragmentReference.d.ts +4 -2
- package/dist/core/FragmentReference.d.ts.map +1 -1
- package/dist/core/FragmentReference.js +2 -2
- package/dist/core/IsographEnvironment.d.ts +19 -11
- package/dist/core/IsographEnvironment.d.ts.map +1 -1
- package/dist/core/IsographEnvironment.js +27 -2
- package/dist/core/PromiseWrapper.d.ts +13 -7
- package/dist/core/PromiseWrapper.d.ts.map +1 -1
- package/dist/core/areEqualWithDeepComparison.d.ts.map +1 -1
- package/dist/core/areEqualWithDeepComparison.js +5 -0
- package/dist/core/brand.d.ts +17 -0
- package/dist/core/brand.d.ts.map +1 -1
- package/dist/core/cache.d.ts +10 -7
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/cache.js +102 -74
- package/dist/core/check.d.ts +8 -4
- package/dist/core/check.d.ts.map +1 -1
- package/dist/core/check.js +10 -7
- package/dist/core/componentCache.d.ts +1 -1
- package/dist/core/componentCache.d.ts.map +1 -1
- package/dist/core/componentCache.js +6 -4
- package/dist/core/entrypoint.d.ts +17 -7
- package/dist/core/entrypoint.d.ts.map +1 -1
- package/dist/core/garbageCollection.d.ts +8 -2
- package/dist/core/garbageCollection.d.ts.map +1 -1
- package/dist/core/garbageCollection.js +36 -14
- package/dist/core/logging.d.ts +16 -3
- package/dist/core/logging.d.ts.map +1 -1
- package/dist/core/makeNetworkRequest.d.ts +4 -2
- package/dist/core/makeNetworkRequest.d.ts.map +1 -1
- package/dist/core/makeNetworkRequest.js +115 -38
- package/dist/core/optimisticProxy.d.ts +59 -0
- package/dist/core/optimisticProxy.d.ts.map +1 -0
- package/dist/core/optimisticProxy.js +399 -0
- package/dist/core/read.d.ts +3 -2
- package/dist/core/read.d.ts.map +1 -1
- package/dist/core/read.js +158 -123
- package/dist/core/reader.d.ts +10 -5
- package/dist/core/reader.d.ts.map +1 -1
- package/dist/core/startUpdate.d.ts +3 -2
- package/dist/core/startUpdate.d.ts.map +1 -1
- package/dist/core/startUpdate.js +35 -36
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/loadable-hooks/useClientSideDefer.d.ts +9 -4
- package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
- package/dist/loadable-hooks/useClientSideDefer.js +34 -1
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +5 -3
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useConnectionSpecPagination.js +27 -13
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts +1 -1
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.js +1 -1
- package/dist/react/FragmentReader.d.ts +2 -1
- package/dist/react/FragmentReader.d.ts.map +1 -1
- package/dist/react/FragmentRenderer.d.ts +2 -1
- package/dist/react/FragmentRenderer.d.ts.map +1 -1
- package/dist/react/LoadableFieldReader.d.ts +9 -3
- package/dist/react/LoadableFieldReader.d.ts.map +1 -1
- package/dist/react/LoadableFieldReader.js +40 -1
- package/dist/react/LoadableFieldRenderer.d.ts +9 -3
- package/dist/react/LoadableFieldRenderer.d.ts.map +1 -1
- package/dist/react/LoadableFieldRenderer.js +36 -1
- package/dist/react/useImperativeReference.d.ts +4 -3
- package/dist/react/useImperativeReference.d.ts.map +1 -1
- package/dist/react/useImperativeReference.js +3 -5
- package/dist/react/useLazyReference.d.ts +2 -1
- package/dist/react/useLazyReference.d.ts.map +1 -1
- package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
- package/dist/react/useReadAndSubscribe.js +1 -3
- package/dist/react/useResult.d.ts.map +1 -1
- package/dist/react/useResult.js +6 -5
- package/package.json +16 -17
- package/src/core/FragmentReference.ts +10 -4
- package/src/core/IsographEnvironment.ts +59 -13
- package/src/core/PromiseWrapper.ts +14 -7
- package/src/core/areEqualWithDeepComparison.ts +5 -0
- package/src/core/brand.ts +18 -0
- package/src/core/cache.ts +186 -91
- package/src/core/check.ts +21 -10
- package/src/core/componentCache.ts +8 -4
- package/src/core/entrypoint.ts +35 -6
- package/src/core/garbageCollection.ts +61 -19
- package/src/core/logging.ts +15 -3
- package/src/core/makeNetworkRequest.ts +307 -74
- package/src/core/optimisticProxy.ts +563 -0
- package/src/core/read.ts +233 -163
- package/src/core/reader.ts +11 -7
- package/src/core/startUpdate.ts +47 -32
- package/src/index.ts +2 -1
- package/src/loadable-hooks/useClientSideDefer.ts +76 -26
- package/src/loadable-hooks/useConnectionSpecPagination.ts +34 -17
- package/src/loadable-hooks/useImperativeLoadableField.ts +2 -2
- package/src/loadable-hooks/useSkipLimitPagination.ts +2 -3
- package/src/react/FragmentReader.tsx +3 -1
- package/src/react/FragmentRenderer.tsx +8 -1
- package/src/react/LoadableFieldReader.tsx +123 -12
- package/src/react/LoadableFieldRenderer.tsx +122 -12
- package/src/react/useImperativeReference.ts +20 -11
- package/src/react/useLazyReference.ts +17 -6
- package/src/react/useReadAndSubscribe.ts +1 -8
- package/src/react/useResult.ts +9 -11
- package/src/tests/__isograph/Node/__link/output_type.ts +3 -0
- package/src/tests/__isograph/Node/asEconomist/resolver_reader.ts +3 -3
- package/src/tests/__isograph/Query/linkedUpdate/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/linkedUpdate/param_type.ts +4 -4
- package/src/tests/__isograph/Query/linkedUpdate/raw_response_type.ts +13 -0
- package/src/tests/__isograph/Query/linkedUpdate/resolver_reader.ts +6 -6
- package/src/tests/__isograph/Query/meName/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/meName/raw_response_type.ts +7 -0
- package/src/tests/__isograph/Query/meName/resolver_reader.ts +2 -2
- package/src/tests/__isograph/Query/meNameSuccessor/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/meNameSuccessor/raw_response_type.ts +14 -0
- package/src/tests/__isograph/Query/meNameSuccessor/resolver_reader.ts +4 -4
- package/src/tests/__isograph/Query/nodeField/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/nodeField/raw_response_type.ts +7 -0
- package/src/tests/__isograph/Query/nodeField/resolver_reader.ts +2 -2
- package/src/tests/__isograph/Query/normalizeUndefinedField/entrypoint.ts +33 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/normalization_ast.ts +25 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/output_type.ts +3 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/param_type.ts +9 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/query_text.ts +6 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/raw_response_type.ts +7 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/resolver_reader.ts +38 -0
- package/src/tests/__isograph/Query/startUpdate/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/startUpdate/raw_response_type.ts +8 -0
- package/src/tests/__isograph/Query/startUpdate/resolver_reader.ts +3 -3
- package/src/tests/__isograph/Query/subquery/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/subquery/raw_response_type.ts +9 -0
- package/src/tests/__isograph/Query/subquery/resolver_reader.ts +3 -3
- package/src/tests/__isograph/iso.ts +11 -1
- package/src/tests/garbageCollection.test.ts +8 -5
- package/src/tests/meNameSuccessor.ts +6 -3
- package/src/tests/nodeQuery.ts +4 -2
- package/src/tests/normalizeData.test.ts +89 -15
- package/src/tests/optimisticProxy.test.ts +860 -0
- package/src/tests/startUpdate.test.ts +8 -6
- package/vitest.config.ts +10 -1
- package/src/tests/__isograph/Economist/link/output_type.ts +0 -2
- 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
|
-
>(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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 {
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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 {
|
|
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<
|
|
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
|
-
|
|
79
|
-
fragmentReference.readerWithRefetchQueries,
|
|
80
|
-
);
|
|
81
|
-
stableIdForFragmentReference(
|
|
82
|
-
fragmentReference,
|
|
83
|
-
readerWithRefetchQueries.readerArtifact.fieldName,
|
|
84
|
-
);
|
|
77
|
+
stableIdForFragmentReference(fragmentReference);
|
|
85
78
|
})
|
|
86
79
|
.join('.'),
|
|
87
80
|
],
|
package/src/react/useResult.ts
CHANGED
|
@@ -28,25 +28,23 @@ export function useResult<
|
|
|
28
28
|
partialNetworkRequestOptions,
|
|
29
29
|
);
|
|
30
30
|
|
|
31
|
-
|
|
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
|
}
|
|
@@ -10,7 +10,7 @@ const readerAst: ReaderAst<{ data: any, parameters: Record<PropertyKey, never> }
|
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
kind: "Link",
|
|
13
|
-
alias: "
|
|
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: "
|
|
23
|
-
resolver: ({ data }) => data.__typename === "Economist" ? data.
|
|
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
|
|
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
|
|
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: ({
|
|
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
|
|
42
|
+
readonly __link: Node____link__output_type,
|
|
43
43
|
/**
|
|
44
44
|
A client pointer for the Economist type.
|
|
45
45
|
*/
|
|
@@ -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: "
|
|
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: "
|
|
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: {
|
|
@@ -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: "
|
|
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: {
|
|
@@ -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: "
|
|
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: {
|