@isograph/react 0.0.0-main-7faadacd → 0.0.0-main-aa925b7c
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-typescript.log +1 -1
- package/dist/core/read.d.ts +2 -1
- package/dist/core/read.d.ts.map +1 -1
- package/dist/core/read.js +62 -53
- package/package.json +4 -4
- package/src/core/read.ts +102 -74
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @isograph/react@0.0.0-main-
|
|
2
|
+
> @isograph/react@0.0.0-main-aa925b7c compile-typescript /Users/runner/work/isograph/isograph/libs/isograph-react
|
|
3
3
|
> rm -rf dist/* && tsc -p tsconfig.pkg.json
|
|
4
4
|
|
package/dist/core/read.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { RefetchQueryNormalizationArtifactWrapper } from './entrypoint';
|
|
|
3
3
|
import { ExtractData, FragmentReference, Variables, type UnknownTReadFromStore } from './FragmentReference';
|
|
4
4
|
import { IsographEnvironment, type DataTypeValue, type Link, type StoreRecord } from './IsographEnvironment';
|
|
5
5
|
import { PromiseWrapper } from './PromiseWrapper';
|
|
6
|
-
import { ReaderAst, type ReaderImperativelyLoadedField, type ReaderLinkedField, type ReaderScalarField } from './reader';
|
|
6
|
+
import { ReaderAst, type ReaderImperativelyLoadedField, type ReaderLinkedField, type ReaderNonLoadableResolverField, type ReaderScalarField } from './reader';
|
|
7
7
|
export type WithEncounteredRecords<T> = {
|
|
8
8
|
readonly encounteredRecords: EncounteredIds;
|
|
9
9
|
readonly item: ExtractData<T>;
|
|
@@ -19,6 +19,7 @@ export type ReadDataResult<Data> = ReadDataResultSuccess<Data> | {
|
|
|
19
19
|
readonly nestedReason?: ReadDataResult<unknown>;
|
|
20
20
|
readonly recordLink: Link;
|
|
21
21
|
};
|
|
22
|
+
export declare function readResolverFieldData(environment: IsographEnvironment, field: ReaderNonLoadableResolverField, root: Link, variables: Variables, nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[], networkRequest: PromiseWrapper<void, any>, networkRequestOptions: NetworkRequestReaderOptions, mutableEncounteredRecords: EncounteredIds): ReadDataResult<unknown>;
|
|
22
23
|
export declare function readScalarFieldData(field: ReaderScalarField, storeRecord: StoreRecord, root: Link, variables: Variables): ReadDataResult<string | number | boolean | Link | DataTypeValue[] | null>;
|
|
23
24
|
export declare function readLinkedFieldData(environment: IsographEnvironment, field: ReaderLinkedField, storeRecord: StoreRecord, root: Link, variables: Variables, networkRequest: PromiseWrapper<void, any>, readData: <TReadFromStore>(ast: ReaderAst<TReadFromStore>, root: Link) => ReadDataResult<object>): ReadDataResult<unknown>;
|
|
24
25
|
export type NetworkRequestReaderOptions = {
|
package/dist/core/read.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/core/read.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAEL,wCAAwC,EAEzC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,IAAI,EACT,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAEL,cAAc,EAKf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,KAAK,6BAA6B,EAClC,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;IACtC,QAAQ,CAAC,kBAAkB,EAAE,cAAc,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CAC/B,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,cAAc,SAAS,qBAAqB,EAE5C,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,GACjD,sBAAsB,CAAC,cAAc,CAAC,CAiExC;AAED,MAAM,MAAM,qBAAqB,CAAC,IAAI,IAAI;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,IAAI,IAC3B,qBAAqB,CAAC,IAAI,CAAC,GAC3B;IACE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;CAC3B,CAAC;
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/core/read.ts"],"names":[],"mappings":"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"}
|
package/dist/core/read.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.readButDoNotEvaluate = readButDoNotEvaluate;
|
|
4
|
+
exports.readResolverFieldData = readResolverFieldData;
|
|
4
5
|
exports.readScalarFieldData = readScalarFieldData;
|
|
5
6
|
exports.readLinkedFieldData = readLinkedFieldData;
|
|
6
7
|
exports.getNetworkRequestOptionsWithDefaults = getNetworkRequestOptionsWithDefaults;
|
|
@@ -108,60 +109,11 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
|
108
109
|
break;
|
|
109
110
|
}
|
|
110
111
|
case 'Resolver': {
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if (resolverRefetchQuery == null) {
|
|
115
|
-
throw new Error('resolverRefetchQuery is null in Resolver. This is indicative of a bug in Isograph.');
|
|
116
|
-
}
|
|
117
|
-
return resolverRefetchQuery;
|
|
118
|
-
});
|
|
119
|
-
const readerWithRefetchQueries = {
|
|
120
|
-
kind: 'ReaderWithRefetchQueries',
|
|
121
|
-
readerArtifact: field.readerArtifact,
|
|
122
|
-
nestedRefetchQueries: resolverRefetchQueries,
|
|
123
|
-
};
|
|
124
|
-
const fragment = {
|
|
125
|
-
kind: 'FragmentReference',
|
|
126
|
-
readerWithRefetchQueries: (0, PromiseWrapper_1.wrapResolvedValue)(readerWithRefetchQueries),
|
|
127
|
-
root,
|
|
128
|
-
variables: generateChildVariableMap(variables, field.arguments),
|
|
129
|
-
networkRequest,
|
|
130
|
-
};
|
|
131
|
-
switch (field.readerArtifact.kind) {
|
|
132
|
-
case 'EagerReaderArtifact': {
|
|
133
|
-
const data = readData(environment, field.readerArtifact.readerAst, root, generateChildVariableMap(variables, field.arguments), resolverRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
|
134
|
-
if (data.kind === 'MissingData') {
|
|
135
|
-
return {
|
|
136
|
-
kind: 'MissingData',
|
|
137
|
-
reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,
|
|
138
|
-
nestedReason: data,
|
|
139
|
-
recordLink: data.recordLink,
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
const firstParameter = {
|
|
144
|
-
data: data.data,
|
|
145
|
-
parameters: variables,
|
|
146
|
-
startUpdate: field.readerArtifact.hasUpdatable
|
|
147
|
-
? (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragment, readerWithRefetchQueries.readerArtifact.fieldName)
|
|
148
|
-
: undefined,
|
|
149
|
-
};
|
|
150
|
-
target[field.alias] =
|
|
151
|
-
field.readerArtifact.resolver(firstParameter);
|
|
152
|
-
}
|
|
153
|
-
break;
|
|
154
|
-
}
|
|
155
|
-
case 'ComponentReaderArtifact': {
|
|
156
|
-
target[field.alias] = (0, componentCache_1.getOrCreateCachedComponent)(environment, field.readerArtifact.fieldName, fragment, networkRequestOptions);
|
|
157
|
-
break;
|
|
158
|
-
}
|
|
159
|
-
default: {
|
|
160
|
-
let _ = field.readerArtifact;
|
|
161
|
-
_;
|
|
162
|
-
throw new Error('Unexpected kind');
|
|
163
|
-
}
|
|
112
|
+
const data = readResolverFieldData(environment, field, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
|
113
|
+
if (data.kind === 'MissingData') {
|
|
114
|
+
return data;
|
|
164
115
|
}
|
|
116
|
+
target[field.alias] = data.data;
|
|
165
117
|
break;
|
|
166
118
|
}
|
|
167
119
|
case 'LoadablySelectedField': {
|
|
@@ -341,6 +293,63 @@ function writeQueryArgsToVariables(targetVariables, queryArgs, variables) {
|
|
|
341
293
|
}
|
|
342
294
|
}
|
|
343
295
|
}
|
|
296
|
+
function readResolverFieldData(environment, field, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords) {
|
|
297
|
+
const usedRefetchQueries = field.usedRefetchQueries;
|
|
298
|
+
const resolverRefetchQueries = usedRefetchQueries.map((index) => {
|
|
299
|
+
const resolverRefetchQuery = nestedRefetchQueries[index];
|
|
300
|
+
if (resolverRefetchQuery == null) {
|
|
301
|
+
throw new Error('resolverRefetchQuery is null in Resolver. This is indicative of a bug in Isograph.');
|
|
302
|
+
}
|
|
303
|
+
return resolverRefetchQuery;
|
|
304
|
+
});
|
|
305
|
+
const readerWithRefetchQueries = {
|
|
306
|
+
kind: 'ReaderWithRefetchQueries',
|
|
307
|
+
readerArtifact: field.readerArtifact,
|
|
308
|
+
nestedRefetchQueries: resolverRefetchQueries,
|
|
309
|
+
};
|
|
310
|
+
const fragment = {
|
|
311
|
+
kind: 'FragmentReference',
|
|
312
|
+
readerWithRefetchQueries: (0, PromiseWrapper_1.wrapResolvedValue)(readerWithRefetchQueries),
|
|
313
|
+
root,
|
|
314
|
+
variables: generateChildVariableMap(variables, field.arguments),
|
|
315
|
+
networkRequest,
|
|
316
|
+
};
|
|
317
|
+
switch (field.readerArtifact.kind) {
|
|
318
|
+
case 'EagerReaderArtifact': {
|
|
319
|
+
const data = readData(environment, field.readerArtifact.readerAst, root, generateChildVariableMap(variables, field.arguments), resolverRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
|
320
|
+
if (data.kind === 'MissingData') {
|
|
321
|
+
return {
|
|
322
|
+
kind: 'MissingData',
|
|
323
|
+
reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,
|
|
324
|
+
nestedReason: data,
|
|
325
|
+
recordLink: data.recordLink,
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
const firstParameter = {
|
|
329
|
+
data: data.data,
|
|
330
|
+
parameters: variables,
|
|
331
|
+
startUpdate: field.readerArtifact.hasUpdatable
|
|
332
|
+
? (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragment, readerWithRefetchQueries.readerArtifact.fieldName)
|
|
333
|
+
: undefined,
|
|
334
|
+
};
|
|
335
|
+
return {
|
|
336
|
+
kind: 'Success',
|
|
337
|
+
data: field.readerArtifact.resolver(firstParameter),
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
case 'ComponentReaderArtifact': {
|
|
341
|
+
return {
|
|
342
|
+
kind: 'Success',
|
|
343
|
+
data: (0, componentCache_1.getOrCreateCachedComponent)(environment, field.readerArtifact.fieldName, fragment, networkRequestOptions),
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
default: {
|
|
347
|
+
let _ = field.readerArtifact;
|
|
348
|
+
_;
|
|
349
|
+
throw new Error('Unexpected kind');
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
344
353
|
function readScalarFieldData(field, storeRecord, root, variables) {
|
|
345
354
|
const storeRecordName = (0, cache_1.getParentRecordKey)(field, variables);
|
|
346
355
|
const value = storeRecord[storeRecordName];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@isograph/react",
|
|
3
|
-
"version": "0.0.0-main-
|
|
3
|
+
"version": "0.0.0-main-aa925b7c",
|
|
4
4
|
"description": "Use Isograph with React",
|
|
5
5
|
"homepage": "https://isograph.dev",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"iso-watch": "cross-env ../../target/debug/isograph_cli --config ./isograph.config.json --watch"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@isograph/disposable-types": "0.0.0-main-
|
|
24
|
-
"@isograph/react-disposable-state": "0.0.0-main-
|
|
25
|
-
"@isograph/reference-counted-pointer": "0.0.0-main-
|
|
23
|
+
"@isograph/disposable-types": "0.0.0-main-aa925b7c",
|
|
24
|
+
"@isograph/react-disposable-state": "0.0.0-main-aa925b7c",
|
|
25
|
+
"@isograph/reference-counted-pointer": "0.0.0-main-aa925b7c"
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
28
|
"react": "^18.0.0 || ^19.0.0"
|
package/src/core/read.ts
CHANGED
|
@@ -40,6 +40,7 @@ import {
|
|
|
40
40
|
ReaderAst,
|
|
41
41
|
type ReaderImperativelyLoadedField,
|
|
42
42
|
type ReaderLinkedField,
|
|
43
|
+
type ReaderNonLoadableResolverField,
|
|
43
44
|
type ReaderScalarField,
|
|
44
45
|
} from './reader';
|
|
45
46
|
import { getOrCreateCachedStartUpdate } from './startUpdate';
|
|
@@ -229,83 +230,20 @@ function readData<TReadFromStore>(
|
|
|
229
230
|
break;
|
|
230
231
|
}
|
|
231
232
|
case 'Resolver': {
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
if (resolverRefetchQuery == null) {
|
|
236
|
-
throw new Error(
|
|
237
|
-
'resolverRefetchQuery is null in Resolver. This is indicative of a bug in Isograph.',
|
|
238
|
-
);
|
|
239
|
-
}
|
|
240
|
-
return resolverRefetchQuery;
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
const readerWithRefetchQueries = {
|
|
244
|
-
kind: 'ReaderWithRefetchQueries',
|
|
245
|
-
readerArtifact: field.readerArtifact,
|
|
246
|
-
nestedRefetchQueries: resolverRefetchQueries,
|
|
247
|
-
} satisfies ReaderWithRefetchQueries<any, any>;
|
|
248
|
-
|
|
249
|
-
const fragment = {
|
|
250
|
-
kind: 'FragmentReference',
|
|
251
|
-
readerWithRefetchQueries: wrapResolvedValue(readerWithRefetchQueries),
|
|
233
|
+
const data = readResolverFieldData(
|
|
234
|
+
environment,
|
|
235
|
+
field,
|
|
252
236
|
root,
|
|
253
|
-
variables
|
|
237
|
+
variables,
|
|
238
|
+
nestedRefetchQueries,
|
|
254
239
|
networkRequest,
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
environment,
|
|
261
|
-
field.readerArtifact.readerAst,
|
|
262
|
-
root,
|
|
263
|
-
generateChildVariableMap(variables, field.arguments),
|
|
264
|
-
resolverRefetchQueries,
|
|
265
|
-
networkRequest,
|
|
266
|
-
networkRequestOptions,
|
|
267
|
-
mutableEncounteredRecords,
|
|
268
|
-
);
|
|
269
|
-
if (data.kind === 'MissingData') {
|
|
270
|
-
return {
|
|
271
|
-
kind: 'MissingData',
|
|
272
|
-
reason:
|
|
273
|
-
'Missing data for ' + field.alias + ' on root ' + root.__link,
|
|
274
|
-
nestedReason: data,
|
|
275
|
-
recordLink: data.recordLink,
|
|
276
|
-
};
|
|
277
|
-
} else {
|
|
278
|
-
const firstParameter = {
|
|
279
|
-
data: data.data,
|
|
280
|
-
parameters: variables,
|
|
281
|
-
startUpdate: field.readerArtifact.hasUpdatable
|
|
282
|
-
? getOrCreateCachedStartUpdate(
|
|
283
|
-
environment,
|
|
284
|
-
fragment,
|
|
285
|
-
readerWithRefetchQueries.readerArtifact.fieldName,
|
|
286
|
-
)
|
|
287
|
-
: undefined,
|
|
288
|
-
};
|
|
289
|
-
target[field.alias] =
|
|
290
|
-
field.readerArtifact.resolver(firstParameter);
|
|
291
|
-
}
|
|
292
|
-
break;
|
|
293
|
-
}
|
|
294
|
-
case 'ComponentReaderArtifact': {
|
|
295
|
-
target[field.alias] = getOrCreateCachedComponent(
|
|
296
|
-
environment,
|
|
297
|
-
field.readerArtifact.fieldName,
|
|
298
|
-
fragment,
|
|
299
|
-
networkRequestOptions,
|
|
300
|
-
);
|
|
301
|
-
break;
|
|
302
|
-
}
|
|
303
|
-
default: {
|
|
304
|
-
let _: never = field.readerArtifact;
|
|
305
|
-
_;
|
|
306
|
-
throw new Error('Unexpected kind');
|
|
307
|
-
}
|
|
240
|
+
networkRequestOptions,
|
|
241
|
+
mutableEncounteredRecords,
|
|
242
|
+
);
|
|
243
|
+
if (data.kind === 'MissingData') {
|
|
244
|
+
return data;
|
|
308
245
|
}
|
|
246
|
+
target[field.alias] = data.data;
|
|
309
247
|
break;
|
|
310
248
|
}
|
|
311
249
|
case 'LoadablySelectedField': {
|
|
@@ -574,6 +512,96 @@ function writeQueryArgsToVariables(
|
|
|
574
512
|
}
|
|
575
513
|
}
|
|
576
514
|
|
|
515
|
+
export function readResolverFieldData(
|
|
516
|
+
environment: IsographEnvironment,
|
|
517
|
+
field: ReaderNonLoadableResolverField,
|
|
518
|
+
root: Link,
|
|
519
|
+
variables: Variables,
|
|
520
|
+
nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],
|
|
521
|
+
networkRequest: PromiseWrapper<void, any>,
|
|
522
|
+
networkRequestOptions: NetworkRequestReaderOptions,
|
|
523
|
+
mutableEncounteredRecords: EncounteredIds,
|
|
524
|
+
): ReadDataResult<unknown> {
|
|
525
|
+
const usedRefetchQueries = field.usedRefetchQueries;
|
|
526
|
+
const resolverRefetchQueries = usedRefetchQueries.map((index) => {
|
|
527
|
+
const resolverRefetchQuery = nestedRefetchQueries[index];
|
|
528
|
+
if (resolverRefetchQuery == null) {
|
|
529
|
+
throw new Error(
|
|
530
|
+
'resolverRefetchQuery is null in Resolver. This is indicative of a bug in Isograph.',
|
|
531
|
+
);
|
|
532
|
+
}
|
|
533
|
+
return resolverRefetchQuery;
|
|
534
|
+
});
|
|
535
|
+
|
|
536
|
+
const readerWithRefetchQueries = {
|
|
537
|
+
kind: 'ReaderWithRefetchQueries',
|
|
538
|
+
readerArtifact: field.readerArtifact,
|
|
539
|
+
nestedRefetchQueries: resolverRefetchQueries,
|
|
540
|
+
} satisfies ReaderWithRefetchQueries<any, any>;
|
|
541
|
+
|
|
542
|
+
const fragment = {
|
|
543
|
+
kind: 'FragmentReference',
|
|
544
|
+
readerWithRefetchQueries: wrapResolvedValue(readerWithRefetchQueries),
|
|
545
|
+
root,
|
|
546
|
+
variables: generateChildVariableMap(variables, field.arguments),
|
|
547
|
+
networkRequest,
|
|
548
|
+
} satisfies FragmentReference<any, any>;
|
|
549
|
+
|
|
550
|
+
switch (field.readerArtifact.kind) {
|
|
551
|
+
case 'EagerReaderArtifact': {
|
|
552
|
+
const data = readData(
|
|
553
|
+
environment,
|
|
554
|
+
field.readerArtifact.readerAst,
|
|
555
|
+
root,
|
|
556
|
+
generateChildVariableMap(variables, field.arguments),
|
|
557
|
+
resolverRefetchQueries,
|
|
558
|
+
networkRequest,
|
|
559
|
+
networkRequestOptions,
|
|
560
|
+
mutableEncounteredRecords,
|
|
561
|
+
);
|
|
562
|
+
if (data.kind === 'MissingData') {
|
|
563
|
+
return {
|
|
564
|
+
kind: 'MissingData',
|
|
565
|
+
reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,
|
|
566
|
+
nestedReason: data,
|
|
567
|
+
recordLink: data.recordLink,
|
|
568
|
+
};
|
|
569
|
+
}
|
|
570
|
+
const firstParameter = {
|
|
571
|
+
data: data.data,
|
|
572
|
+
parameters: variables,
|
|
573
|
+
startUpdate: field.readerArtifact.hasUpdatable
|
|
574
|
+
? getOrCreateCachedStartUpdate(
|
|
575
|
+
environment,
|
|
576
|
+
fragment,
|
|
577
|
+
readerWithRefetchQueries.readerArtifact.fieldName,
|
|
578
|
+
)
|
|
579
|
+
: undefined,
|
|
580
|
+
};
|
|
581
|
+
return {
|
|
582
|
+
kind: 'Success',
|
|
583
|
+
data: field.readerArtifact.resolver(firstParameter),
|
|
584
|
+
};
|
|
585
|
+
}
|
|
586
|
+
case 'ComponentReaderArtifact': {
|
|
587
|
+
return {
|
|
588
|
+
kind: 'Success',
|
|
589
|
+
data: getOrCreateCachedComponent(
|
|
590
|
+
environment,
|
|
591
|
+
field.readerArtifact.fieldName,
|
|
592
|
+
fragment,
|
|
593
|
+
networkRequestOptions,
|
|
594
|
+
),
|
|
595
|
+
};
|
|
596
|
+
}
|
|
597
|
+
default: {
|
|
598
|
+
let _: never = field.readerArtifact;
|
|
599
|
+
_;
|
|
600
|
+
throw new Error('Unexpected kind');
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
|
|
577
605
|
export function readScalarFieldData(
|
|
578
606
|
field: ReaderScalarField,
|
|
579
607
|
storeRecord: StoreRecord,
|