@isograph/react 0.0.0-main-ff94ae86 → 0.0.0-main-db159ebc
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 +1 -1
- package/dist/core/IsographEnvironment.d.ts +2 -2
- package/dist/core/IsographEnvironment.d.ts.map +1 -1
- package/dist/core/brand.d.ts +17 -0
- package/dist/core/brand.d.ts.map +1 -1
- package/dist/core/cache.d.ts +6 -5
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/cache.js +17 -2
- package/dist/core/entrypoint.d.ts +13 -6
- package/dist/core/entrypoint.d.ts.map +1 -1
- package/dist/core/logging.d.ts +1 -1
- package/dist/core/logging.d.ts.map +1 -1
- package/dist/core/makeNetworkRequest.d.ts +3 -2
- package/dist/core/makeNetworkRequest.d.ts.map +1 -1
- package/dist/core/reader.d.ts +1 -1
- package/dist/core/reader.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -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/useImperativeReference.d.ts +2 -1
- package/dist/react/useImperativeReference.d.ts.map +1 -1
- package/dist/react/useLazyReference.d.ts +2 -1
- package/dist/react/useLazyReference.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/core/IsographEnvironment.ts +3 -3
- package/src/core/brand.ts +18 -0
- package/src/core/cache.ts +57 -10
- package/src/core/entrypoint.ts +27 -5
- package/src/core/logging.ts +1 -1
- package/src/core/makeNetworkRequest.ts +39 -15
- package/src/core/read.ts +1 -1
- package/src/core/reader.ts +2 -2
- package/src/index.ts +1 -0
- package/src/react/FragmentReader.tsx +3 -1
- package/src/react/FragmentRenderer.tsx +8 -1
- package/src/react/useImperativeReference.ts +4 -1
- package/src/react/useLazyReference.ts +16 -5
- package/src/tests/__isograph/Query/linkedUpdate/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/linkedUpdate/raw_response_type.ts +1 -1
- package/src/tests/__isograph/Query/meName/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/meName/raw_response_type.ts +1 -1
- package/src/tests/__isograph/Query/meNameSuccessor/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/meNameSuccessor/raw_response_type.ts +1 -1
- package/src/tests/__isograph/Query/nodeField/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/nodeField/raw_response_type.ts +1 -1
- package/src/tests/__isograph/Query/normalizeUndefinedField/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/normalizeUndefinedField/raw_response_type.ts +1 -1
- package/src/tests/__isograph/Query/startUpdate/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/startUpdate/raw_response_type.ts +1 -1
- package/src/tests/__isograph/Query/subquery/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/subquery/raw_response_type.ts +1 -1
- package/src/tests/__isograph/iso.ts +1 -1
package/src/core/cache.ts
CHANGED
|
@@ -35,6 +35,7 @@ import {
|
|
|
35
35
|
import { logMessage } from './logging';
|
|
36
36
|
import { maybeMakeNetworkRequest } from './makeNetworkRequest';
|
|
37
37
|
import {
|
|
38
|
+
addNetworkResponseStoreLayer,
|
|
38
39
|
getMutableStoreRecordProxy,
|
|
39
40
|
type StoreLayerWithData,
|
|
40
41
|
} from './optimisticProxy';
|
|
@@ -86,12 +87,14 @@ export function getOrCreateCacheForArtifact<
|
|
|
86
87
|
TReadFromStore extends UnknownTReadFromStore,
|
|
87
88
|
TClientFieldValue,
|
|
88
89
|
TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
|
|
90
|
+
TRawResponseType extends NetworkResponseObject,
|
|
89
91
|
>(
|
|
90
92
|
environment: IsographEnvironment,
|
|
91
93
|
entrypoint: IsographEntrypoint<
|
|
92
94
|
TReadFromStore,
|
|
93
95
|
TClientFieldValue,
|
|
94
|
-
TNormalizationAst
|
|
96
|
+
TNormalizationAst,
|
|
97
|
+
TRawResponseType
|
|
95
98
|
>,
|
|
96
99
|
variables: ExtractParameters<TReadFromStore>,
|
|
97
100
|
fetchOptions?: FetchOptions<TClientFieldValue>,
|
|
@@ -145,15 +148,15 @@ export type NetworkResponseValue =
|
|
|
145
148
|
| NetworkResponseScalarValue
|
|
146
149
|
| null
|
|
147
150
|
| NetworkResponseObject
|
|
148
|
-
| (NetworkResponseObject | null)[]
|
|
149
|
-
| (NetworkResponseScalarValue | null)[];
|
|
151
|
+
| readonly (NetworkResponseObject | null)[]
|
|
152
|
+
| readonly (NetworkResponseScalarValue | null)[];
|
|
150
153
|
|
|
151
154
|
export type NetworkResponseObject = {
|
|
152
155
|
// N.B. undefined is here to support optional id's, but
|
|
153
156
|
// undefined should not *actually* be present in the network response.
|
|
154
|
-
[index: string]: undefined | NetworkResponseValue;
|
|
155
|
-
id?: DataId;
|
|
156
|
-
__typename?: TypeName;
|
|
157
|
+
readonly [index: string]: undefined | NetworkResponseValue;
|
|
158
|
+
readonly id?: DataId;
|
|
159
|
+
readonly __typename?: TypeName;
|
|
157
160
|
};
|
|
158
161
|
|
|
159
162
|
export function normalizeData(
|
|
@@ -516,13 +519,19 @@ function normalizeScalarField(
|
|
|
516
519
|
}
|
|
517
520
|
|
|
518
521
|
if (isScalarOrEmptyArray(networkResponseData)) {
|
|
519
|
-
targetStoreRecord[parentRecordKey] = networkResponseData
|
|
522
|
+
targetStoreRecord[parentRecordKey] = networkResponseData as
|
|
523
|
+
| NetworkResponseScalarValue
|
|
524
|
+
| (NetworkResponseScalarValue | null)[]; // have to cast array to mutable
|
|
520
525
|
return existingValue !== networkResponseData;
|
|
521
526
|
} else {
|
|
522
527
|
throw new Error('Unexpected object array when normalizing scalar');
|
|
523
528
|
}
|
|
524
529
|
}
|
|
525
530
|
|
|
531
|
+
function isArray(value: unknown): value is readonly unknown[] {
|
|
532
|
+
return Array.isArray(value);
|
|
533
|
+
}
|
|
534
|
+
|
|
526
535
|
/**
|
|
527
536
|
* Mutate targetParentRecord with a given linked field ast node.
|
|
528
537
|
*/
|
|
@@ -555,7 +564,7 @@ function normalizeLinkedField(
|
|
|
555
564
|
);
|
|
556
565
|
}
|
|
557
566
|
|
|
558
|
-
if (
|
|
567
|
+
if (isArray(networkResponseData)) {
|
|
559
568
|
// TODO check astNode.plural or the like
|
|
560
569
|
const dataIds: (StoreLink | null)[] = [];
|
|
561
570
|
for (let i = 0; i < networkResponseData.length; i++) {
|
|
@@ -721,7 +730,9 @@ function normalizeNetworkResponseObject(
|
|
|
721
730
|
|
|
722
731
|
function isScalarOrEmptyArray(
|
|
723
732
|
data: NonNullable<NetworkResponseValue>,
|
|
724
|
-
): data is
|
|
733
|
+
): data is
|
|
734
|
+
| NetworkResponseScalarValue
|
|
735
|
+
| readonly (NetworkResponseScalarValue | null)[] {
|
|
725
736
|
// N.B. empty arrays count as empty arrays of scalar fields.
|
|
726
737
|
if (Array.isArray(data)) {
|
|
727
738
|
// This is maybe fixed in a new version of Typescript??
|
|
@@ -735,7 +746,9 @@ function isScalarOrEmptyArray(
|
|
|
735
746
|
return isScalarValue;
|
|
736
747
|
}
|
|
737
748
|
|
|
738
|
-
function isNullOrEmptyArray(
|
|
749
|
+
function isNullOrEmptyArray(
|
|
750
|
+
data: unknown,
|
|
751
|
+
): data is readonly never[] | null[] | null {
|
|
739
752
|
if (Array.isArray(data)) {
|
|
740
753
|
if (data.length === 0) {
|
|
741
754
|
return true;
|
|
@@ -911,3 +924,37 @@ function getDataIdOfNetworkResponse(
|
|
|
911
924
|
}
|
|
912
925
|
return storeKey;
|
|
913
926
|
}
|
|
927
|
+
|
|
928
|
+
export function writeData<
|
|
929
|
+
TReadFromStore extends UnknownTReadFromStore,
|
|
930
|
+
TRawResponseType extends NetworkResponseObject,
|
|
931
|
+
>(
|
|
932
|
+
environment: IsographEnvironment,
|
|
933
|
+
entrypoint: IsographEntrypoint<
|
|
934
|
+
TReadFromStore,
|
|
935
|
+
unknown,
|
|
936
|
+
NormalizationAst,
|
|
937
|
+
TRawResponseType
|
|
938
|
+
>,
|
|
939
|
+
data: TRawResponseType,
|
|
940
|
+
variables: ExtractParameters<TReadFromStore>,
|
|
941
|
+
) {
|
|
942
|
+
const encounteredIds: EncounteredIds = new Map();
|
|
943
|
+
environment.store = addNetworkResponseStoreLayer(environment.store);
|
|
944
|
+
normalizeData(
|
|
945
|
+
environment,
|
|
946
|
+
environment.store,
|
|
947
|
+
entrypoint.networkRequestInfo.normalizationAst.selections,
|
|
948
|
+
data,
|
|
949
|
+
variables,
|
|
950
|
+
{ __link: ROOT_ID, __typename: entrypoint.concreteType },
|
|
951
|
+
encounteredIds,
|
|
952
|
+
);
|
|
953
|
+
logMessage(environment, () => ({
|
|
954
|
+
kind: 'AfterNormalization',
|
|
955
|
+
store: environment.store,
|
|
956
|
+
encounteredIds,
|
|
957
|
+
}));
|
|
958
|
+
|
|
959
|
+
callSubscriptions(environment, encounteredIds);
|
|
960
|
+
}
|
package/src/core/entrypoint.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { Contravariant, PhantomData } from './brand';
|
|
2
|
+
import type { NetworkResponseObject } from './cache';
|
|
1
3
|
import type { UnknownTReadFromStore } from './FragmentReference';
|
|
2
4
|
import type { TypeName } from './IsographEnvironment';
|
|
3
5
|
import { TopLevelReaderArtifact } from './reader';
|
|
@@ -55,6 +57,7 @@ export type IsographEntrypoint<
|
|
|
55
57
|
TReadFromStore extends UnknownTReadFromStore,
|
|
56
58
|
TClientFieldValue,
|
|
57
59
|
TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
|
|
60
|
+
TRawResponseType extends NetworkResponseObject,
|
|
58
61
|
> = {
|
|
59
62
|
readonly kind: 'Entrypoint';
|
|
60
63
|
readonly networkRequestInfo: NetworkRequestInfo<TNormalizationAst>;
|
|
@@ -62,16 +65,26 @@ export type IsographEntrypoint<
|
|
|
62
65
|
| ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>
|
|
63
66
|
| ReaderWithRefetchQueriesLoader<TReadFromStore, TClientFieldValue>;
|
|
64
67
|
readonly concreteType: TypeName;
|
|
68
|
+
/**
|
|
69
|
+
* This field exists solely for typechecking, and will not exist at runtime.
|
|
70
|
+
*/
|
|
71
|
+
readonly '~TRawResponseType'?: PhantomData<Contravariant<TRawResponseType>>;
|
|
65
72
|
};
|
|
66
73
|
|
|
67
74
|
export type IsographEntrypointLoader<
|
|
68
75
|
TReadFromStore extends UnknownTReadFromStore,
|
|
69
76
|
TClientFieldValue,
|
|
77
|
+
TRawResponseType extends NetworkResponseObject,
|
|
70
78
|
> = {
|
|
71
79
|
readonly kind: 'EntrypointLoader';
|
|
72
80
|
readonly typeAndField: string;
|
|
73
81
|
readonly loader: () => Promise<
|
|
74
|
-
IsographEntrypoint<
|
|
82
|
+
IsographEntrypoint<
|
|
83
|
+
TReadFromStore,
|
|
84
|
+
TClientFieldValue,
|
|
85
|
+
NormalizationAst,
|
|
86
|
+
TRawResponseType
|
|
87
|
+
>
|
|
75
88
|
>;
|
|
76
89
|
};
|
|
77
90
|
|
|
@@ -129,9 +142,15 @@ export function assertIsEntrypoint<
|
|
|
129
142
|
TReadFromStore extends UnknownTReadFromStore,
|
|
130
143
|
TClientFieldValue,
|
|
131
144
|
TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
|
|
145
|
+
TRawResponseType extends NetworkResponseObject,
|
|
132
146
|
>(
|
|
133
147
|
value:
|
|
134
|
-
| IsographEntrypoint<
|
|
148
|
+
| IsographEntrypoint<
|
|
149
|
+
TReadFromStore,
|
|
150
|
+
TClientFieldValue,
|
|
151
|
+
TNormalizationAst,
|
|
152
|
+
TRawResponseType
|
|
153
|
+
>
|
|
135
154
|
| ((_: any) => any)
|
|
136
155
|
// Temporarily, allow any here. Once we automatically provide
|
|
137
156
|
// types to entrypoints, we probably don't need this.
|
|
@@ -139,13 +158,16 @@ export function assertIsEntrypoint<
|
|
|
139
158
|
): asserts value is IsographEntrypoint<
|
|
140
159
|
TReadFromStore,
|
|
141
160
|
TClientFieldValue,
|
|
142
|
-
TNormalizationAst
|
|
161
|
+
TNormalizationAst,
|
|
162
|
+
TRawResponseType
|
|
143
163
|
> {
|
|
144
164
|
if (typeof value === 'function') throw new Error('Not a string');
|
|
145
165
|
}
|
|
146
166
|
|
|
147
167
|
export type ExtractReadFromStore<Type> =
|
|
148
|
-
Type extends IsographEntrypoint<infer X, any, any> ? X : never;
|
|
168
|
+
Type extends IsographEntrypoint<infer X, any, any, any> ? X : never;
|
|
169
|
+
export type ExtractRawResponseType<Type> =
|
|
170
|
+
Type extends IsographEntrypoint<any, any, any, infer X> ? X : never;
|
|
149
171
|
export type ExtractResolverResult<Type> =
|
|
150
|
-
Type extends IsographEntrypoint<any, infer X, any> ? X : never;
|
|
172
|
+
Type extends IsographEntrypoint<any, infer X, any, any> ? X : never;
|
|
151
173
|
export type ExtractProps<Type> = Type extends React.FC<infer X> ? X : never;
|
package/src/core/logging.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { ItemCleanupPair } from '@isograph/disposable-types';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
callSubscriptions,
|
|
4
|
+
normalizeData,
|
|
5
|
+
type EncounteredIds,
|
|
6
|
+
type NetworkResponseObject,
|
|
7
|
+
} from './cache';
|
|
3
8
|
import { check, DEFAULT_SHOULD_FETCH_VALUE, FetchOptions } from './check';
|
|
4
9
|
import { getOrCreateCachedComponent } from './componentCache';
|
|
5
10
|
import {
|
|
@@ -37,13 +42,18 @@ let networkRequestId = 0;
|
|
|
37
42
|
export function maybeMakeNetworkRequest<
|
|
38
43
|
TReadFromStore extends UnknownTReadFromStore,
|
|
39
44
|
TClientFieldValue,
|
|
40
|
-
TArtifact extends
|
|
41
|
-
| RefetchQueryNormalizationArtifact
|
|
42
|
-
| IsographEntrypoint<TReadFromStore, TClientFieldValue, TNormalizationAst>,
|
|
43
45
|
TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
|
|
46
|
+
TRawResponseType extends NetworkResponseObject,
|
|
44
47
|
>(
|
|
45
48
|
environment: IsographEnvironment,
|
|
46
|
-
artifact:
|
|
49
|
+
artifact:
|
|
50
|
+
| RefetchQueryNormalizationArtifact
|
|
51
|
+
| IsographEntrypoint<
|
|
52
|
+
TReadFromStore,
|
|
53
|
+
TClientFieldValue,
|
|
54
|
+
TNormalizationAst,
|
|
55
|
+
TRawResponseType
|
|
56
|
+
>,
|
|
47
57
|
variables: ExtractParameters<TReadFromStore>,
|
|
48
58
|
readerWithRefetchQueries: PromiseWrapper<
|
|
49
59
|
ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>
|
|
@@ -108,6 +118,7 @@ export function maybeMakeNetworkRequest<
|
|
|
108
118
|
function retainQueryWithoutMakingNetworkRequest<
|
|
109
119
|
TReadFromStore extends UnknownTReadFromStore,
|
|
110
120
|
TClientFieldValue,
|
|
121
|
+
TRawResponseType extends NetworkResponseObject,
|
|
111
122
|
>(
|
|
112
123
|
environment: IsographEnvironment,
|
|
113
124
|
artifact:
|
|
@@ -115,7 +126,8 @@ function retainQueryWithoutMakingNetworkRequest<
|
|
|
115
126
|
| IsographEntrypoint<
|
|
116
127
|
TReadFromStore,
|
|
117
128
|
TClientFieldValue,
|
|
118
|
-
NormalizationAst | NormalizationAstLoader
|
|
129
|
+
NormalizationAst | NormalizationAstLoader,
|
|
130
|
+
TRawResponseType
|
|
119
131
|
>,
|
|
120
132
|
variables: ExtractParameters<TReadFromStore>,
|
|
121
133
|
): ItemCleanupPair<PromiseWrapper<void, AnyError>> {
|
|
@@ -143,13 +155,18 @@ function retainQueryWithoutMakingNetworkRequest<
|
|
|
143
155
|
export function makeNetworkRequest<
|
|
144
156
|
TReadFromStore extends UnknownTReadFromStore,
|
|
145
157
|
TClientFieldValue,
|
|
146
|
-
TArtifact extends
|
|
147
|
-
| RefetchQueryNormalizationArtifact
|
|
148
|
-
| IsographEntrypoint<TReadFromStore, TClientFieldValue, TNormalizationAst>,
|
|
149
158
|
TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
|
|
159
|
+
TRawResponseType extends NetworkResponseObject,
|
|
150
160
|
>(
|
|
151
161
|
environment: IsographEnvironment,
|
|
152
|
-
artifact:
|
|
162
|
+
artifact:
|
|
163
|
+
| RefetchQueryNormalizationArtifact
|
|
164
|
+
| IsographEntrypoint<
|
|
165
|
+
TReadFromStore,
|
|
166
|
+
TClientFieldValue,
|
|
167
|
+
TNormalizationAst,
|
|
168
|
+
TRawResponseType
|
|
169
|
+
>,
|
|
153
170
|
variables: ExtractParameters<TReadFromStore>,
|
|
154
171
|
readerWithRefetchQueries: PromiseWrapper<
|
|
155
172
|
ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>
|
|
@@ -284,12 +301,17 @@ type NetworkRequestStatus =
|
|
|
284
301
|
function readDataForOnComplete<
|
|
285
302
|
TReadFromStore extends UnknownTReadFromStore,
|
|
286
303
|
TClientFieldValue,
|
|
287
|
-
TArtifact extends
|
|
288
|
-
| RefetchQueryNormalizationArtifact
|
|
289
|
-
| IsographEntrypoint<TReadFromStore, TClientFieldValue, TNormalizationAst>,
|
|
290
304
|
TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
|
|
305
|
+
TRawResponseType extends NetworkResponseObject,
|
|
291
306
|
>(
|
|
292
|
-
artifact:
|
|
307
|
+
artifact:
|
|
308
|
+
| RefetchQueryNormalizationArtifact
|
|
309
|
+
| IsographEntrypoint<
|
|
310
|
+
TReadFromStore,
|
|
311
|
+
TClientFieldValue,
|
|
312
|
+
TNormalizationAst,
|
|
313
|
+
TRawResponseType
|
|
314
|
+
>,
|
|
293
315
|
environment: IsographEnvironment,
|
|
294
316
|
root: StoreLink,
|
|
295
317
|
variables: ExtractParameters<TReadFromStore>,
|
|
@@ -386,6 +408,7 @@ function readDataForOnComplete<
|
|
|
386
408
|
function fetchNormalizationAstAndRetainArtifact<
|
|
387
409
|
TReadFromStore extends UnknownTReadFromStore,
|
|
388
410
|
TClientFieldValue,
|
|
411
|
+
TRawResponseType extends NetworkResponseObject,
|
|
389
412
|
>(
|
|
390
413
|
environment: IsographEnvironment,
|
|
391
414
|
artifact:
|
|
@@ -393,7 +416,8 @@ function fetchNormalizationAstAndRetainArtifact<
|
|
|
393
416
|
| IsographEntrypoint<
|
|
394
417
|
TReadFromStore,
|
|
395
418
|
TClientFieldValue,
|
|
396
|
-
NormalizationAst | NormalizationAstLoader
|
|
419
|
+
NormalizationAst | NormalizationAstLoader,
|
|
420
|
+
TRawResponseType
|
|
397
421
|
>,
|
|
398
422
|
variables: ExtractParameters<TReadFromStore>,
|
|
399
423
|
): RetainedQuery {
|
package/src/core/read.ts
CHANGED
|
@@ -344,7 +344,7 @@ export function readLoadablySelectedFieldData(
|
|
|
344
344
|
// Fetcher
|
|
345
345
|
() => {
|
|
346
346
|
const fragmentReferenceAndDisposeFromEntrypoint = (
|
|
347
|
-
entrypoint: IsographEntrypoint<any, any, any>,
|
|
347
|
+
entrypoint: IsographEntrypoint<any, any, any, {}>,
|
|
348
348
|
): [FragmentReference<any, any>, CleanupFn] => {
|
|
349
349
|
const readerWithRefetchQueries =
|
|
350
350
|
entrypoint.readerWithRefetchQueries.kind ===
|
package/src/core/reader.ts
CHANGED
|
@@ -153,8 +153,8 @@ export type LoadablySelectedField = {
|
|
|
153
153
|
|
|
154
154
|
// TODO we should not type these as any
|
|
155
155
|
readonly entrypoint:
|
|
156
|
-
| IsographEntrypoint<any, any, any>
|
|
157
|
-
| IsographEntrypointLoader<any, any>;
|
|
156
|
+
| IsographEntrypoint<any, any, any, any>
|
|
157
|
+
| IsographEntrypointLoader<any, any, any>;
|
|
158
158
|
};
|
|
159
159
|
|
|
160
160
|
export type StableId = string;
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { NetworkResponseObject } from '../core/cache';
|
|
1
2
|
import {
|
|
2
3
|
type ExtractReadFromStore,
|
|
3
4
|
type IsographEntrypoint,
|
|
@@ -8,7 +9,8 @@ import { useResult } from './useResult';
|
|
|
8
9
|
|
|
9
10
|
export function FragmentReader<
|
|
10
11
|
TResult,
|
|
11
|
-
|
|
12
|
+
TRawResponseType extends NetworkResponseObject,
|
|
13
|
+
TEntrypoint extends IsographEntrypoint<any, TResult, any, TRawResponseType>,
|
|
12
14
|
TChildrenResult,
|
|
13
15
|
>({
|
|
14
16
|
fragmentReference,
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
import { type FragmentReference } from '../core/FragmentReference';
|
|
7
7
|
import { type NetworkRequestReaderOptions } from '../core/read';
|
|
8
8
|
import { useResult } from './useResult';
|
|
9
|
+
import type { NetworkResponseObject } from '../core/cache';
|
|
9
10
|
|
|
10
11
|
export type IsExactlyIntrinsicAttributes<T> = T extends JSX.IntrinsicAttributes
|
|
11
12
|
? JSX.IntrinsicAttributes extends T
|
|
@@ -15,7 +16,13 @@ export type IsExactlyIntrinsicAttributes<T> = T extends JSX.IntrinsicAttributes
|
|
|
15
16
|
|
|
16
17
|
export function FragmentRenderer<
|
|
17
18
|
TProps extends Record<any, any>,
|
|
18
|
-
|
|
19
|
+
TRawResponseType extends NetworkResponseObject,
|
|
20
|
+
TEntrypoint extends IsographEntrypoint<
|
|
21
|
+
any,
|
|
22
|
+
React.FC<TProps>,
|
|
23
|
+
any,
|
|
24
|
+
TRawResponseType
|
|
25
|
+
>,
|
|
19
26
|
>(
|
|
20
27
|
props: IsExactlyIntrinsicAttributes<TProps> extends true
|
|
21
28
|
? {
|
|
@@ -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,
|
|
@@ -39,11 +40,13 @@ export function useImperativeReference<
|
|
|
39
40
|
TReadFromStore extends UnknownTReadFromStore,
|
|
40
41
|
TClientFieldValue,
|
|
41
42
|
TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
|
|
43
|
+
TRawResponseType extends NetworkResponseObject,
|
|
42
44
|
>(
|
|
43
45
|
entrypoint: IsographEntrypoint<
|
|
44
46
|
TReadFromStore,
|
|
45
47
|
TClientFieldValue,
|
|
46
|
-
TNormalizationAst
|
|
48
|
+
TNormalizationAst,
|
|
49
|
+
TRawResponseType
|
|
47
50
|
>,
|
|
48
51
|
): UseImperativeReferenceResult<
|
|
49
52
|
TReadFromStore,
|
|
@@ -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,11 +21,13 @@ 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
|
|
@@ -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 {};
|
|
@@ -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,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: {
|
|
@@ -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: {
|
|
@@ -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: {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
|
|
2
2
|
import {Query__normalizeUndefinedField__param} from './param_type';
|
|
3
3
|
import {Query__normalizeUndefinedField__output_type} from './output_type';
|
|
4
|
+
import type {Query__normalizeUndefinedField__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__normalizeUndefinedField__param,
|
|
11
12
|
Query__normalizeUndefinedField__output_type,
|
|
12
|
-
NormalizationAst
|
|
13
|
+
NormalizationAst,
|
|
14
|
+
Query__normalizeUndefinedField__raw_response_type
|
|
13
15
|
> = {
|
|
14
16
|
kind: "Entrypoint",
|
|
15
17
|
networkRequestInfo: {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
|
|
2
2
|
import {Query__startUpdate__param} from './param_type';
|
|
3
3
|
import {Query__startUpdate__output_type} from './output_type';
|
|
4
|
+
import type {Query__startUpdate__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__startUpdate__param,
|
|
11
12
|
Query__startUpdate__output_type,
|
|
12
|
-
NormalizationAst
|
|
13
|
+
NormalizationAst,
|
|
14
|
+
Query__startUpdate__raw_response_type
|
|
13
15
|
> = {
|
|
14
16
|
kind: "Entrypoint",
|
|
15
17
|
networkRequestInfo: {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
|
|
2
2
|
import {Query__subquery__param} from './param_type';
|
|
3
3
|
import {Query__subquery__output_type} from './output_type';
|
|
4
|
+
import type {Query__subquery__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__subquery__param,
|
|
11
12
|
Query__subquery__output_type,
|
|
12
|
-
NormalizationAst
|
|
13
|
+
NormalizationAst,
|
|
14
|
+
Query__subquery__raw_response_type
|
|
13
15
|
> = {
|
|
14
16
|
kind: "Entrypoint",
|
|
15
17
|
networkRequestInfo: {
|
|
@@ -121,7 +121,7 @@ export function iso<T>(
|
|
|
121
121
|
export function iso(_isographLiteralText: string):
|
|
122
122
|
| IdentityWithParam<any>
|
|
123
123
|
| IdentityWithParamComponent<any>
|
|
124
|
-
| IsographEntrypoint<any, any, any>
|
|
124
|
+
| IsographEntrypoint<any, any, any, any>
|
|
125
125
|
{
|
|
126
126
|
throw new Error('iso: Unexpected invocation at runtime. Either the Babel transform ' +
|
|
127
127
|
'was not set up, or it failed to identify this call site. Make sure it ' +
|