@isograph/react 0.4.3 → 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/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 +7 -4
- 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 +33 -34
- 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/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 +10 -6
- package/src/core/startUpdate.ts +45 -30
- 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/asEconomist/resolver_reader.ts +1 -1
- package/src/tests/__isograph/Query/linkedUpdate/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/linkedUpdate/raw_response_type.ts +13 -0
- package/src/tests/__isograph/Query/linkedUpdate/resolver_reader.ts +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +7 -5
- package/src/tests/__isograph/Economist/__link/output_type.ts +0 -2
package/dist/core/read.js
CHANGED
|
@@ -5,6 +5,7 @@ exports.readLoadablySelectedFieldData = readLoadablySelectedFieldData;
|
|
|
5
5
|
exports.readResolverFieldData = readResolverFieldData;
|
|
6
6
|
exports.readScalarFieldData = readScalarFieldData;
|
|
7
7
|
exports.readLinkedFieldData = readLinkedFieldData;
|
|
8
|
+
exports.readClientPointerData = readClientPointerData;
|
|
8
9
|
exports.getNetworkRequestOptionsWithDefaults = getNetworkRequestOptionsWithDefaults;
|
|
9
10
|
exports.readImperativelyLoadedField = readImperativelyLoadedField;
|
|
10
11
|
const cache_1 = require("./cache");
|
|
@@ -12,6 +13,7 @@ const componentCache_1 = require("./componentCache");
|
|
|
12
13
|
const IsographEnvironment_1 = require("./IsographEnvironment");
|
|
13
14
|
const logging_1 = require("./logging");
|
|
14
15
|
const makeNetworkRequest_1 = require("./makeNetworkRequest");
|
|
16
|
+
const optimisticProxy_1 = require("./optimisticProxy");
|
|
15
17
|
const PromiseWrapper_1 = require("./PromiseWrapper");
|
|
16
18
|
const startUpdate_1 = require("./startUpdate");
|
|
17
19
|
function readButDoNotEvaluate(environment, fragmentReference, networkRequestOptions) {
|
|
@@ -62,10 +64,10 @@ function readButDoNotEvaluate(environment, fragmentReference, networkRequestOpti
|
|
|
62
64
|
}
|
|
63
65
|
}
|
|
64
66
|
function readData(environment, ast, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords) {
|
|
65
|
-
var _a, _b
|
|
67
|
+
var _a, _b;
|
|
66
68
|
const encounteredIds = (0, cache_1.insertEmptySetIfMissing)(mutableEncounteredRecords, root.__typename);
|
|
67
69
|
encounteredIds.add(root.__link);
|
|
68
|
-
let storeRecord = (
|
|
70
|
+
let storeRecord = (0, optimisticProxy_1.getStoreRecordProxy)(environment.store, root);
|
|
69
71
|
if (storeRecord === undefined) {
|
|
70
72
|
return {
|
|
71
73
|
kind: 'MissingData',
|
|
@@ -87,7 +89,7 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
|
87
89
|
if (data.kind === 'MissingData') {
|
|
88
90
|
return data;
|
|
89
91
|
}
|
|
90
|
-
target[(
|
|
92
|
+
target[(_a = field.alias) !== null && _a !== void 0 ? _a : field.fieldName] = data.data;
|
|
91
93
|
break;
|
|
92
94
|
}
|
|
93
95
|
case 'Link': {
|
|
@@ -99,7 +101,7 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
|
99
101
|
if (data.kind === 'MissingData') {
|
|
100
102
|
return data;
|
|
101
103
|
}
|
|
102
|
-
target[(
|
|
104
|
+
target[(_b = field.alias) !== null && _b !== void 0 ? _b : field.fieldName] = data.data;
|
|
103
105
|
break;
|
|
104
106
|
}
|
|
105
107
|
case 'ImperativelyLoadedField': {
|
|
@@ -175,14 +177,13 @@ function readLoadablySelectedFieldData(environment, field, root, variables, netw
|
|
|
175
177
|
// Fetcher
|
|
176
178
|
() => {
|
|
177
179
|
const fragmentReferenceAndDisposeFromEntrypoint = (entrypoint) => {
|
|
178
|
-
const readerWithRefetchQueries = entrypoint.readerWithRefetchQueries
|
|
179
|
-
'ReaderWithRefetchQueriesLoader'
|
|
180
|
-
? (0, PromiseWrapper_1.wrapPromise)(entrypoint.readerWithRefetchQueries.loader())
|
|
181
|
-
: (0, PromiseWrapper_1.wrapResolvedValue)(entrypoint.readerWithRefetchQueries);
|
|
180
|
+
const { fieldName, readerArtifactKind, readerWithRefetchQueries } = (0, IsographEnvironment_1.getOrLoadReaderWithRefetchQueries)(environment, entrypoint.readerWithRefetchQueries);
|
|
182
181
|
const [networkRequest, disposeNetworkRequest] = (0, makeNetworkRequest_1.maybeMakeNetworkRequest)(environment, entrypoint, localVariables, readerWithRefetchQueries, fetchOptions !== null && fetchOptions !== void 0 ? fetchOptions : null);
|
|
183
182
|
const fragmentReference = {
|
|
184
183
|
kind: 'FragmentReference',
|
|
185
184
|
readerWithRefetchQueries,
|
|
185
|
+
fieldName,
|
|
186
|
+
readerArtifactKind,
|
|
186
187
|
// TODO localVariables is not guaranteed to have an id field
|
|
187
188
|
root,
|
|
188
189
|
variables: localVariables,
|
|
@@ -202,10 +203,7 @@ function readLoadablySelectedFieldData(environment, field, root, variables, netw
|
|
|
202
203
|
else {
|
|
203
204
|
// Promise is pending or thrown
|
|
204
205
|
let entrypointLoaderState = { kind: 'EntrypointNotLoaded' };
|
|
205
|
-
const readerWithRefetchQueries = (0, PromiseWrapper_1.wrapPromise)(isographArtifactPromiseWrapper.promise.then((entrypoint) => entrypoint.readerWithRefetchQueries.
|
|
206
|
-
'ReaderWithRefetchQueriesLoader'
|
|
207
|
-
? entrypoint.readerWithRefetchQueries.loader()
|
|
208
|
-
: entrypoint.readerWithRefetchQueries));
|
|
206
|
+
const readerWithRefetchQueries = (0, PromiseWrapper_1.wrapPromise)(isographArtifactPromiseWrapper.promise.then((entrypoint) => (0, IsographEnvironment_1.getOrLoadReaderWithRefetchQueries)(environment, entrypoint.readerWithRefetchQueries).readerWithRefetchQueries.promise));
|
|
209
207
|
const networkRequest = (0, PromiseWrapper_1.wrapPromise)(isographArtifactPromiseWrapper.promise.then((entrypoint) => {
|
|
210
208
|
if (entrypointLoaderState.kind === 'EntrypointNotLoaded') {
|
|
211
209
|
const [networkRequest, disposeNetworkRequest] = (0, makeNetworkRequest_1.maybeMakeNetworkRequest)(environment, entrypoint, localVariables, readerWithRefetchQueries, fetchOptions !== null && fetchOptions !== void 0 ? fetchOptions : null);
|
|
@@ -219,6 +217,8 @@ function readLoadablySelectedFieldData(environment, field, root, variables, netw
|
|
|
219
217
|
const fragmentReference = {
|
|
220
218
|
kind: 'FragmentReference',
|
|
221
219
|
readerWithRefetchQueries,
|
|
220
|
+
fieldName: field.name,
|
|
221
|
+
readerArtifactKind: field.entrypoint.readerArtifactKind,
|
|
222
222
|
// TODO localVariables is not guaranteed to have an id field
|
|
223
223
|
root,
|
|
224
224
|
variables: localVariables,
|
|
@@ -322,6 +322,8 @@ function readResolverFieldData(environment, field, root, variables, nestedRefetc
|
|
|
322
322
|
const fragment = {
|
|
323
323
|
kind: 'FragmentReference',
|
|
324
324
|
readerWithRefetchQueries: (0, PromiseWrapper_1.wrapResolvedValue)(readerWithRefetchQueries),
|
|
325
|
+
fieldName: field.readerArtifact.fieldName,
|
|
326
|
+
readerArtifactKind: field.readerArtifact.kind,
|
|
325
327
|
root,
|
|
326
328
|
variables: generateChildVariableMap(variables, field.arguments),
|
|
327
329
|
networkRequest,
|
|
@@ -341,7 +343,7 @@ function readResolverFieldData(environment, field, root, variables, nestedRefetc
|
|
|
341
343
|
data: data.data,
|
|
342
344
|
parameters: variables,
|
|
343
345
|
startUpdate: field.readerArtifact.hasUpdatable
|
|
344
|
-
? (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragment,
|
|
346
|
+
? (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragment, networkRequestOptions)
|
|
345
347
|
: undefined,
|
|
346
348
|
};
|
|
347
349
|
return {
|
|
@@ -352,7 +354,7 @@ function readResolverFieldData(environment, field, root, variables, nestedRefetc
|
|
|
352
354
|
case 'ComponentReaderArtifact': {
|
|
353
355
|
return {
|
|
354
356
|
kind: 'Success',
|
|
355
|
-
data: (0, componentCache_1.getOrCreateCachedComponent)(environment,
|
|
357
|
+
data: (0, componentCache_1.getOrCreateCachedComponent)(environment, fragment, networkRequestOptions),
|
|
356
358
|
};
|
|
357
359
|
}
|
|
358
360
|
default: {
|
|
@@ -378,7 +380,45 @@ function readScalarFieldData(field, storeRecord, root, variables) {
|
|
|
378
380
|
}
|
|
379
381
|
function readLinkedFieldData(environment, field, storeRecord, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, readData) {
|
|
380
382
|
const storeRecordName = (0, cache_1.getParentRecordKey)(field, variables);
|
|
381
|
-
|
|
383
|
+
let value = storeRecord[storeRecordName];
|
|
384
|
+
if (field.condition) {
|
|
385
|
+
const data = readData(field.condition.readerAst, root);
|
|
386
|
+
if (data.kind === 'MissingData') {
|
|
387
|
+
return {
|
|
388
|
+
kind: 'MissingData',
|
|
389
|
+
reason: 'Missing data for ' + storeRecordName + ' on root ' + root.__link,
|
|
390
|
+
nestedReason: data,
|
|
391
|
+
recordLink: data.recordLink,
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
const readerWithRefetchQueries = {
|
|
395
|
+
kind: 'ReaderWithRefetchQueries',
|
|
396
|
+
readerArtifact: field.condition,
|
|
397
|
+
// TODO this is wrong
|
|
398
|
+
// should map field.condition.usedRefetchQueries
|
|
399
|
+
// but it doesn't exist
|
|
400
|
+
nestedRefetchQueries: [],
|
|
401
|
+
};
|
|
402
|
+
const fragment = {
|
|
403
|
+
kind: 'FragmentReference',
|
|
404
|
+
readerWithRefetchQueries: (0, PromiseWrapper_1.wrapResolvedValue)(readerWithRefetchQueries),
|
|
405
|
+
root,
|
|
406
|
+
fieldName: field.condition.fieldName,
|
|
407
|
+
readerArtifactKind: field.condition.kind,
|
|
408
|
+
variables: generateChildVariableMap(variables,
|
|
409
|
+
// TODO this is wrong
|
|
410
|
+
// should use field.arguments
|
|
411
|
+
// but it doesn't exist
|
|
412
|
+
[]),
|
|
413
|
+
networkRequest,
|
|
414
|
+
};
|
|
415
|
+
const condition = field.condition.resolver(Object.assign({ data: data.data, parameters: {} }, (field.condition.hasUpdatable
|
|
416
|
+
? {
|
|
417
|
+
startUpdate: (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragment, networkRequestOptions),
|
|
418
|
+
}
|
|
419
|
+
: undefined)));
|
|
420
|
+
value = condition;
|
|
421
|
+
}
|
|
382
422
|
if (Array.isArray(value)) {
|
|
383
423
|
const results = [];
|
|
384
424
|
for (const item of value) {
|
|
@@ -399,6 +439,24 @@ function readLinkedFieldData(environment, field, storeRecord, root, variables, n
|
|
|
399
439
|
results.push(null);
|
|
400
440
|
continue;
|
|
401
441
|
}
|
|
442
|
+
if (isClientPointer(field)) {
|
|
443
|
+
const result = readClientPointerData(environment, field, link, variables, nestedRefetchQueries, readData);
|
|
444
|
+
if (result.kind === 'MissingData') {
|
|
445
|
+
return {
|
|
446
|
+
kind: 'MissingData',
|
|
447
|
+
reason: 'Missing data for ' +
|
|
448
|
+
storeRecordName +
|
|
449
|
+
' on root ' +
|
|
450
|
+
root.__link +
|
|
451
|
+
'. Link is ' +
|
|
452
|
+
JSON.stringify(item),
|
|
453
|
+
nestedReason: result,
|
|
454
|
+
recordLink: result.recordLink,
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
results.push(result.data);
|
|
458
|
+
continue;
|
|
459
|
+
}
|
|
402
460
|
const result = readData(field.selections, link);
|
|
403
461
|
if (result.kind === 'MissingData') {
|
|
404
462
|
return {
|
|
@@ -421,42 +479,6 @@ function readLinkedFieldData(environment, field, storeRecord, root, variables, n
|
|
|
421
479
|
};
|
|
422
480
|
}
|
|
423
481
|
let link = (0, IsographEnvironment_1.assertLink)(value);
|
|
424
|
-
if (field.condition) {
|
|
425
|
-
const data = readData(field.condition.readerAst, root);
|
|
426
|
-
if (data.kind === 'MissingData') {
|
|
427
|
-
return {
|
|
428
|
-
kind: 'MissingData',
|
|
429
|
-
reason: 'Missing data for ' + storeRecordName + ' on root ' + root.__link,
|
|
430
|
-
nestedReason: data,
|
|
431
|
-
recordLink: data.recordLink,
|
|
432
|
-
};
|
|
433
|
-
}
|
|
434
|
-
const readerWithRefetchQueries = {
|
|
435
|
-
kind: 'ReaderWithRefetchQueries',
|
|
436
|
-
readerArtifact: field.condition,
|
|
437
|
-
// TODO this is wrong
|
|
438
|
-
// should map field.condition.usedRefetchQueries
|
|
439
|
-
// but it doesn't exist
|
|
440
|
-
nestedRefetchQueries: [],
|
|
441
|
-
};
|
|
442
|
-
const fragment = {
|
|
443
|
-
kind: 'FragmentReference',
|
|
444
|
-
readerWithRefetchQueries: (0, PromiseWrapper_1.wrapResolvedValue)(readerWithRefetchQueries),
|
|
445
|
-
root,
|
|
446
|
-
variables: generateChildVariableMap(variables,
|
|
447
|
-
// TODO this is wrong
|
|
448
|
-
// should use field.arguments
|
|
449
|
-
// but it doesn't exist
|
|
450
|
-
[]),
|
|
451
|
-
networkRequest,
|
|
452
|
-
};
|
|
453
|
-
const condition = field.condition.resolver(Object.assign({ data: data.data, parameters: {} }, (field.condition.hasUpdatable
|
|
454
|
-
? {
|
|
455
|
-
startUpdate: (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragment, readerWithRefetchQueries.readerArtifact.fieldName, networkRequestOptions),
|
|
456
|
-
}
|
|
457
|
-
: undefined)));
|
|
458
|
-
link = condition;
|
|
459
|
-
}
|
|
460
482
|
if (link === undefined) {
|
|
461
483
|
// TODO make this configurable, and also generated and derived from the schema
|
|
462
484
|
const missingFieldHandler = environment.missingFieldHandler;
|
|
@@ -491,83 +513,19 @@ function readLinkedFieldData(environment, field, storeRecord, root, variables, n
|
|
|
491
513
|
data: null,
|
|
492
514
|
};
|
|
493
515
|
}
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
// if field.refetchQueryIndex is not null, then the field is a client pointer, i.e.
|
|
498
|
-
// it is like a loadable field that returns the selections.
|
|
499
|
-
const refetchReaderParams = readData([
|
|
500
|
-
{
|
|
501
|
-
kind: 'Scalar',
|
|
502
|
-
fieldName: 'id',
|
|
503
|
-
alias: null,
|
|
504
|
-
arguments: null,
|
|
505
|
-
isUpdatable: false,
|
|
506
|
-
},
|
|
507
|
-
], targetId);
|
|
508
|
-
if (refetchReaderParams.kind === 'MissingData') {
|
|
516
|
+
if (isClientPointer(field)) {
|
|
517
|
+
const data = readClientPointerData(environment, field, link, variables, nestedRefetchQueries, readData);
|
|
518
|
+
if (data.kind === 'MissingData') {
|
|
509
519
|
return {
|
|
510
520
|
kind: 'MissingData',
|
|
511
|
-
reason: 'Missing data for ' +
|
|
512
|
-
nestedReason:
|
|
513
|
-
recordLink:
|
|
521
|
+
reason: 'Missing data for ' + storeRecordName + ' on root ' + root.__link,
|
|
522
|
+
nestedReason: data,
|
|
523
|
+
recordLink: data.recordLink,
|
|
514
524
|
};
|
|
515
525
|
}
|
|
516
|
-
|
|
517
|
-
if (refetchQuery == null) {
|
|
518
|
-
throw new Error('refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.');
|
|
519
|
-
}
|
|
520
|
-
const refetchQueryArtifact = refetchQuery.artifact;
|
|
521
|
-
const allowedVariables = refetchQuery.allowedVariables;
|
|
522
|
-
return {
|
|
523
|
-
kind: 'Success',
|
|
524
|
-
data: (args,
|
|
525
|
-
// TODO get the associated type for FetchOptions from the loadably selected field
|
|
526
|
-
fetchOptions) => {
|
|
527
|
-
const includeReadOutData = (variables, readOutData) => {
|
|
528
|
-
variables.id = readOutData.id;
|
|
529
|
-
return variables;
|
|
530
|
-
};
|
|
531
|
-
const localVariables = includeReadOutData(args !== null && args !== void 0 ? args : {}, refetchReaderParams.data);
|
|
532
|
-
writeQueryArgsToVariables(localVariables, field.arguments, variables);
|
|
533
|
-
return [
|
|
534
|
-
// Stable id
|
|
535
|
-
targetId.__typename +
|
|
536
|
-
':' +
|
|
537
|
-
targetId.__link +
|
|
538
|
-
'/' +
|
|
539
|
-
field.fieldName +
|
|
540
|
-
'/' +
|
|
541
|
-
stableStringifyArgs(localVariables),
|
|
542
|
-
// Fetcher
|
|
543
|
-
() => {
|
|
544
|
-
const variables = includeReadOutData(filterVariables(Object.assign(Object.assign({}, args), localVariables), allowedVariables), refetchReaderParams.data);
|
|
545
|
-
const readerWithRefetchQueries = (0, PromiseWrapper_1.wrapResolvedValue)({
|
|
546
|
-
kind: 'ReaderWithRefetchQueries',
|
|
547
|
-
readerArtifact: {
|
|
548
|
-
kind: 'EagerReaderArtifact',
|
|
549
|
-
fieldName: field.fieldName,
|
|
550
|
-
readerAst: field.selections,
|
|
551
|
-
resolver: ({ data }) => data,
|
|
552
|
-
hasUpdatable: false,
|
|
553
|
-
},
|
|
554
|
-
nestedRefetchQueries,
|
|
555
|
-
});
|
|
556
|
-
const [networkRequest, disposeNetworkRequest] = (0, makeNetworkRequest_1.maybeMakeNetworkRequest)(environment, refetchQueryArtifact, variables, readerWithRefetchQueries, fetchOptions !== null && fetchOptions !== void 0 ? fetchOptions : null);
|
|
557
|
-
const fragmentReference = {
|
|
558
|
-
kind: 'FragmentReference',
|
|
559
|
-
readerWithRefetchQueries: readerWithRefetchQueries,
|
|
560
|
-
root: targetId,
|
|
561
|
-
variables,
|
|
562
|
-
networkRequest,
|
|
563
|
-
};
|
|
564
|
-
return [fragmentReference, disposeNetworkRequest];
|
|
565
|
-
},
|
|
566
|
-
];
|
|
567
|
-
},
|
|
568
|
-
};
|
|
526
|
+
return data;
|
|
569
527
|
}
|
|
570
|
-
const data = readData(field.selections,
|
|
528
|
+
const data = readData(field.selections, link);
|
|
571
529
|
if (data.kind === 'MissingData') {
|
|
572
530
|
return {
|
|
573
531
|
kind: 'MissingData',
|
|
@@ -578,6 +536,83 @@ function readLinkedFieldData(environment, field, storeRecord, root, variables, n
|
|
|
578
536
|
}
|
|
579
537
|
return data;
|
|
580
538
|
}
|
|
539
|
+
function isClientPointer(field) {
|
|
540
|
+
return field.refetchQueryIndex !== null;
|
|
541
|
+
}
|
|
542
|
+
function readClientPointerData(environment, field, root, variables, nestedRefetchQueries, readData) {
|
|
543
|
+
const refetchReaderParams = readData([
|
|
544
|
+
{
|
|
545
|
+
kind: 'Scalar',
|
|
546
|
+
fieldName: 'id',
|
|
547
|
+
alias: null,
|
|
548
|
+
arguments: null,
|
|
549
|
+
isUpdatable: false,
|
|
550
|
+
},
|
|
551
|
+
], root);
|
|
552
|
+
if (refetchReaderParams.kind === 'MissingData') {
|
|
553
|
+
return {
|
|
554
|
+
kind: 'MissingData',
|
|
555
|
+
reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,
|
|
556
|
+
nestedReason: refetchReaderParams,
|
|
557
|
+
recordLink: refetchReaderParams.recordLink,
|
|
558
|
+
};
|
|
559
|
+
}
|
|
560
|
+
const refetchQuery = nestedRefetchQueries[field.refetchQueryIndex];
|
|
561
|
+
if (refetchQuery == null) {
|
|
562
|
+
throw new Error('refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.');
|
|
563
|
+
}
|
|
564
|
+
const refetchQueryArtifact = refetchQuery.artifact;
|
|
565
|
+
const allowedVariables = refetchQuery.allowedVariables;
|
|
566
|
+
return {
|
|
567
|
+
kind: 'Success',
|
|
568
|
+
data: (args,
|
|
569
|
+
// TODO get the associated type for FetchOptions from the loadably selected field
|
|
570
|
+
fetchOptions) => {
|
|
571
|
+
const includeReadOutData = (variables, readOutData) => {
|
|
572
|
+
variables.id = readOutData.id;
|
|
573
|
+
return variables;
|
|
574
|
+
};
|
|
575
|
+
const localVariables = includeReadOutData(args !== null && args !== void 0 ? args : {}, refetchReaderParams.data);
|
|
576
|
+
writeQueryArgsToVariables(localVariables, field.arguments, variables);
|
|
577
|
+
return [
|
|
578
|
+
// Stable id
|
|
579
|
+
root.__typename +
|
|
580
|
+
':' +
|
|
581
|
+
root.__link +
|
|
582
|
+
'/' +
|
|
583
|
+
field.fieldName +
|
|
584
|
+
'/' +
|
|
585
|
+
stableStringifyArgs(localVariables),
|
|
586
|
+
// Fetcher
|
|
587
|
+
() => {
|
|
588
|
+
const variables = includeReadOutData(filterVariables(Object.assign(Object.assign({}, args), localVariables), allowedVariables), refetchReaderParams.data);
|
|
589
|
+
const readerWithRefetchQueries = (0, PromiseWrapper_1.wrapResolvedValue)({
|
|
590
|
+
kind: 'ReaderWithRefetchQueries',
|
|
591
|
+
readerArtifact: {
|
|
592
|
+
kind: 'EagerReaderArtifact',
|
|
593
|
+
fieldName: field.fieldName,
|
|
594
|
+
readerAst: field.selections,
|
|
595
|
+
resolver: ({ data }) => data,
|
|
596
|
+
hasUpdatable: false,
|
|
597
|
+
},
|
|
598
|
+
nestedRefetchQueries,
|
|
599
|
+
});
|
|
600
|
+
const [networkRequest, disposeNetworkRequest] = (0, makeNetworkRequest_1.maybeMakeNetworkRequest)(environment, refetchQueryArtifact, variables, readerWithRefetchQueries, fetchOptions !== null && fetchOptions !== void 0 ? fetchOptions : null);
|
|
601
|
+
const fragmentReference = {
|
|
602
|
+
kind: 'FragmentReference',
|
|
603
|
+
fieldName: field.fieldName,
|
|
604
|
+
readerArtifactKind: 'EagerReaderArtifact',
|
|
605
|
+
readerWithRefetchQueries: readerWithRefetchQueries,
|
|
606
|
+
root,
|
|
607
|
+
variables,
|
|
608
|
+
networkRequest,
|
|
609
|
+
};
|
|
610
|
+
return [fragmentReference, disposeNetworkRequest];
|
|
611
|
+
},
|
|
612
|
+
];
|
|
613
|
+
},
|
|
614
|
+
};
|
|
615
|
+
}
|
|
581
616
|
function getNetworkRequestOptionsWithDefaults(networkRequestOptions) {
|
|
582
617
|
var _a, _b;
|
|
583
618
|
return {
|
package/dist/core/reader.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { Arguments } from './util';
|
|
|
7
7
|
export type TopLevelReaderArtifact<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue, TComponentProps extends Record<PropertyKey, never>> = EagerReaderArtifact<TReadFromStore, TClientFieldValue> | ComponentReaderArtifact<TReadFromStore, TComponentProps>;
|
|
8
8
|
export type EagerReaderArtifact<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue> = {
|
|
9
9
|
readonly kind: 'EagerReaderArtifact';
|
|
10
|
-
readonly fieldName:
|
|
10
|
+
readonly fieldName: ComponentOrFieldName;
|
|
11
11
|
readonly readerAst: ReaderAst<TReadFromStore>;
|
|
12
12
|
readonly resolver: (data: ResolverFirstParameter<TReadFromStore>) => TClientFieldValue;
|
|
13
13
|
readonly hasUpdatable: boolean;
|
|
@@ -51,13 +51,16 @@ export type ReaderLinkedField = {
|
|
|
51
51
|
data: any;
|
|
52
52
|
parameters: any;
|
|
53
53
|
startUpdate?: StartUpdate<any>;
|
|
54
|
-
}, StoreLink | null> | null;
|
|
54
|
+
}, StoreLink | null | (StoreLink | null)[] | StoreLink[]> | null;
|
|
55
55
|
readonly isUpdatable: boolean;
|
|
56
56
|
/**
|
|
57
57
|
* If refetchQueryIndex != null, then the linked field is a client pointer.
|
|
58
58
|
*/
|
|
59
59
|
readonly refetchQueryIndex: number | null;
|
|
60
60
|
};
|
|
61
|
+
export interface ReaderClientPointer extends ReaderLinkedField {
|
|
62
|
+
readonly refetchQueryIndex: number;
|
|
63
|
+
}
|
|
61
64
|
export type ReaderNonLoadableResolverField = {
|
|
62
65
|
readonly kind: 'Resolver';
|
|
63
66
|
readonly alias: string;
|
|
@@ -78,8 +81,8 @@ export type LoadablySelectedField = {
|
|
|
78
81
|
readonly name: string;
|
|
79
82
|
readonly queryArguments: Arguments | null;
|
|
80
83
|
readonly refetchReaderAst: ReaderAst<any>;
|
|
81
|
-
readonly entrypoint: IsographEntrypoint<any, any, any> | IsographEntrypointLoader<any, any>;
|
|
84
|
+
readonly entrypoint: IsographEntrypoint<any, any, any, any> | IsographEntrypointLoader<any, any, any>;
|
|
82
85
|
};
|
|
83
86
|
export type StableId = string;
|
|
84
|
-
export type LoadableField<TReadFromStore extends UnknownTReadFromStore, TResult, TArgs = ExtractParameters<TReadFromStore>> = (args: TArgs | void, fetchOptions: FetchOptions<TResult>) => [StableId, Factory<FragmentReference<TReadFromStore, TResult>>];
|
|
87
|
+
export type LoadableField<TReadFromStore extends UnknownTReadFromStore, TResult, TArgs = ExtractParameters<TReadFromStore>> = (args: TArgs | void, fetchOptions: FetchOptions<TResult, never>) => [StableId, Factory<FragmentReference<TReadFromStore, TResult>>];
|
|
85
88
|
//# sourceMappingURL=reader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/core/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,iCAAiC,EACjC,wCAAwC,EACzC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,MAAM,sBAAsB,CAChC,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,EACjB,eAAe,SAAS,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,IAEhD,mBAAmB,CAAC,cAAc,EAAE,iBAAiB,CAAC,GACtD,uBAAuB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAE7D,MAAM,MAAM,mBAAmB,CAC7B,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,IACf;IACF,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/core/reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type EncounteredIds } from './cache';
|
|
2
2
|
import { type ExtractStartUpdate, type ExtractUpdatableData, type FragmentReference, type UnknownTReadFromStore } from './FragmentReference';
|
|
3
3
|
import { type IsographEnvironment } from './IsographEnvironment';
|
|
4
|
+
import { type StoreLayer } from './optimisticProxy';
|
|
4
5
|
import { type NetworkRequestReaderOptions } from './read';
|
|
5
|
-
export declare function getOrCreateCachedStartUpdate<TReadFromStore extends UnknownTReadFromStore>(environment: IsographEnvironment, fragmentReference: FragmentReference<TReadFromStore, unknown>,
|
|
6
|
+
export declare function getOrCreateCachedStartUpdate<TReadFromStore extends UnknownTReadFromStore>(environment: IsographEnvironment, fragmentReference: FragmentReference<TReadFromStore, unknown>, networkRequestOptions: NetworkRequestReaderOptions): ExtractStartUpdate<TReadFromStore>;
|
|
6
7
|
export declare function createStartUpdate<TReadFromStore extends UnknownTReadFromStore>(environment: IsographEnvironment, fragmentReference: FragmentReference<TReadFromStore, unknown>, networkRequestOptions: NetworkRequestReaderOptions): ExtractStartUpdate<TReadFromStore>;
|
|
7
|
-
export declare function createUpdatableProxy<TReadFromStore extends UnknownTReadFromStore>(environment: IsographEnvironment, fragmentReference: FragmentReference<TReadFromStore, unknown>, networkRequestOptions: NetworkRequestReaderOptions, mutableUpdatedIds: EncounteredIds): ExtractUpdatableData<TReadFromStore>;
|
|
8
|
+
export declare function createUpdatableProxy<TReadFromStore extends UnknownTReadFromStore>(environment: IsographEnvironment, storeLayer: StoreLayer, fragmentReference: FragmentReference<TReadFromStore, unknown>, networkRequestOptions: NetworkRequestReaderOptions, mutableUpdatedIds: EncounteredIds): ExtractUpdatableData<TReadFromStore>;
|
|
8
9
|
//# sourceMappingURL=startUpdate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startUpdate.d.ts","sourceRoot":"","sources":["../../src/core/startUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"startUpdate.d.ts","sourceRoot":"","sources":["../../src/core/startUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAML,KAAK,2BAA2B,EAEjC,MAAM,QAAQ,CAAC;AAGhB,wBAAgB,4BAA4B,CAC1C,cAAc,SAAS,qBAAqB,EAE5C,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,GACjD,kBAAkB,CAAC,cAAc,CAAC,CAQpC;AAED,wBAAgB,iBAAiB,CAAC,cAAc,SAAS,qBAAqB,EAC5E,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,GACjD,kBAAkB,CAAC,cAAc,CAAC,CAqCpC;AAED,wBAAgB,oBAAoB,CAClC,cAAc,SAAS,qBAAqB,EAE5C,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,EAClD,iBAAiB,EAAE,cAAc,GAChC,oBAAoB,CAAC,cAAc,CAAC,CAmBtC"}
|
package/dist/core/startUpdate.js
CHANGED
|
@@ -7,40 +7,43 @@ const cache_1 = require("./cache");
|
|
|
7
7
|
const FragmentReference_1 = require("./FragmentReference");
|
|
8
8
|
const IsographEnvironment_1 = require("./IsographEnvironment");
|
|
9
9
|
const logging_1 = require("./logging");
|
|
10
|
+
const optimisticProxy_1 = require("./optimisticProxy");
|
|
10
11
|
const PromiseWrapper_1 = require("./PromiseWrapper");
|
|
11
12
|
const read_1 = require("./read");
|
|
12
|
-
function getOrCreateCachedStartUpdate(environment, fragmentReference,
|
|
13
|
+
function getOrCreateCachedStartUpdate(environment, fragmentReference, networkRequestOptions) {
|
|
13
14
|
var _a;
|
|
14
15
|
var _b, _c;
|
|
15
|
-
return ((_a = (_b = environment.eagerReaderCache)[_c = (0, FragmentReference_1.stableIdForFragmentReference)(fragmentReference
|
|
16
|
+
return ((_a = (_b = environment.eagerReaderCache)[_c = (0, FragmentReference_1.stableIdForFragmentReference)(fragmentReference)]) !== null && _a !== void 0 ? _a : (_b[_c] = createStartUpdate(environment, fragmentReference, networkRequestOptions)));
|
|
16
17
|
}
|
|
17
18
|
function createStartUpdate(environment, fragmentReference, networkRequestOptions) {
|
|
18
19
|
return (updater) => {
|
|
19
20
|
let mutableUpdatedIds = new Map();
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
21
|
+
const startUpdate = (storeLayer) => {
|
|
22
|
+
mutableUpdatedIds.clear();
|
|
23
|
+
let updatableData = createUpdatableProxy(environment, storeLayer, fragmentReference, networkRequestOptions, mutableUpdatedIds);
|
|
24
|
+
try {
|
|
25
|
+
updater({ updatableData });
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
(0, logging_1.logMessage)(environment, () => ({
|
|
29
|
+
kind: 'StartUpdateError',
|
|
30
|
+
error: e,
|
|
31
|
+
}));
|
|
32
|
+
throw e;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
environment.store = (0, optimisticProxy_1.addStartUpdateStoreLayer)(environment.store, startUpdate);
|
|
36
|
+
(0, logging_1.logMessage)(environment, () => ({
|
|
37
|
+
kind: 'StartUpdateComplete',
|
|
38
|
+
updatedIds: mutableUpdatedIds,
|
|
39
|
+
}));
|
|
40
|
+
(0, cache_1.callSubscriptions)(environment, mutableUpdatedIds);
|
|
38
41
|
};
|
|
39
42
|
}
|
|
40
|
-
function createUpdatableProxy(environment, fragmentReference, networkRequestOptions, mutableUpdatedIds) {
|
|
43
|
+
function createUpdatableProxy(environment, storeLayer, fragmentReference, networkRequestOptions, mutableUpdatedIds) {
|
|
41
44
|
var _a;
|
|
42
45
|
const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
|
|
43
|
-
return readUpdatableData(environment, readerWithRefetchQueries.readerArtifact.readerAst, fragmentReference.root, (_a = fragmentReference.variables) !== null && _a !== void 0 ? _a : {}, readerWithRefetchQueries.nestedRefetchQueries, fragmentReference.networkRequest, networkRequestOptions, {
|
|
46
|
+
return readUpdatableData(environment, storeLayer, readerWithRefetchQueries.readerArtifact.readerAst, fragmentReference.root, (_a = fragmentReference.variables) !== null && _a !== void 0 ? _a : {}, readerWithRefetchQueries.nestedRefetchQueries, fragmentReference.networkRequest, networkRequestOptions, {
|
|
44
47
|
lastInvalidated: 0,
|
|
45
48
|
}, mutableUpdatedIds).data;
|
|
46
49
|
}
|
|
@@ -65,21 +68,15 @@ function defineCachedProperty(target, property, mutableState, get, set) {
|
|
|
65
68
|
},
|
|
66
69
|
})));
|
|
67
70
|
}
|
|
68
|
-
function readUpdatableData(environment, ast, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableState, mutableUpdatedIds) {
|
|
69
|
-
var _a, _b
|
|
70
|
-
|
|
71
|
-
if (storeRecord == null) {
|
|
72
|
-
return {
|
|
73
|
-
kind: 'Success',
|
|
74
|
-
data: null,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
71
|
+
function readUpdatableData(environment, storeLayer, ast, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableState, mutableUpdatedIds) {
|
|
72
|
+
var _a, _b;
|
|
73
|
+
const storeRecord = (0, optimisticProxy_1.getMutableStoreRecordProxy)(storeLayer, root);
|
|
77
74
|
let target = {};
|
|
78
75
|
for (const field of ast) {
|
|
79
76
|
switch (field.kind) {
|
|
80
77
|
case 'Scalar': {
|
|
81
78
|
const storeRecordName = (0, cache_1.getParentRecordKey)(field, variables);
|
|
82
|
-
defineCachedProperty(target, (
|
|
79
|
+
defineCachedProperty(target, (_a = field.alias) !== null && _a !== void 0 ? _a : field.fieldName, mutableState, () => {
|
|
83
80
|
const data = (0, read_1.readScalarFieldData)(field, storeRecord, root, variables);
|
|
84
81
|
if (data.kind === 'MissingData') {
|
|
85
82
|
throw new Error(data.reason);
|
|
@@ -87,6 +84,7 @@ function readUpdatableData(environment, ast, root, variables, nestedRefetchQueri
|
|
|
87
84
|
return data.data;
|
|
88
85
|
}, field.isUpdatable
|
|
89
86
|
? (newValue) => {
|
|
87
|
+
const storeRecord = (0, optimisticProxy_1.getOrInsertRecord)(storeLayer.data, root);
|
|
90
88
|
storeRecord[storeRecordName] = newValue;
|
|
91
89
|
const updatedIds = (0, cache_1.insertEmptySetIfMissing)(mutableUpdatedIds, root.__typename);
|
|
92
90
|
updatedIds.add(root.__link);
|
|
@@ -96,14 +94,15 @@ function readUpdatableData(environment, ast, root, variables, nestedRefetchQueri
|
|
|
96
94
|
}
|
|
97
95
|
case 'Linked': {
|
|
98
96
|
const storeRecordName = (0, cache_1.getParentRecordKey)(field, variables);
|
|
99
|
-
defineCachedProperty(target, (
|
|
100
|
-
const data = (0, read_1.readLinkedFieldData)(environment, field, storeRecord, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, (ast, root) => readUpdatableData(environment, ast, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableState, mutableUpdatedIds));
|
|
97
|
+
defineCachedProperty(target, (_b = field.alias) !== null && _b !== void 0 ? _b : field.fieldName, mutableState, () => {
|
|
98
|
+
const data = (0, read_1.readLinkedFieldData)(environment, field, storeRecord, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, (ast, root) => readUpdatableData(environment, storeLayer, ast, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableState, mutableUpdatedIds));
|
|
101
99
|
if (data.kind === 'MissingData') {
|
|
102
100
|
throw new Error(data.reason);
|
|
103
101
|
}
|
|
104
102
|
return data.data;
|
|
105
103
|
}, 'isUpdatable' in field && field.isUpdatable
|
|
106
104
|
? (newValue) => {
|
|
105
|
+
const storeRecord = (0, optimisticProxy_1.getOrInsertRecord)(storeLayer.data, root);
|
|
107
106
|
if (Array.isArray(newValue)) {
|
|
108
107
|
storeRecord[storeRecordName] = newValue.map((node) => (0, IsographEnvironment_1.assertLink)(node === null || node === void 0 ? void 0 : node.__link));
|
|
109
108
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { retainQuery, unretainQuery, type RetainedQuery, garbageCollectEnvironment, type DidUnretainSomeQuery, } from './core/garbageCollection';
|
|
2
2
|
export { type PromiseWrapper, readPromise, getPromiseState, wrapResolvedValue, wrapPromise, type PromiseState, type Result, type AnyError, type NotSet, NOT_SET, } from './core/PromiseWrapper';
|
|
3
|
-
export { callSubscriptions, subscribe, normalizeData, type NetworkResponseObject, type NetworkResponseValue, type NetworkResponseScalarValue, type EncounteredIds, } from './core/cache';
|
|
3
|
+
export { callSubscriptions, subscribe, normalizeData, writeData, type NetworkResponseObject, type NetworkResponseValue, type NetworkResponseScalarValue, type EncounteredIds, } from './core/cache';
|
|
4
4
|
export { makeNetworkRequest } from './core/makeNetworkRequest';
|
|
5
|
-
export { ROOT_ID, type DataId, type DataTypeValue, type IsographEnvironment, type IsographNetworkFunction, type IsographStore, type MissingFieldHandler, type StoreLink, type Link, type StoreRecord, type CacheMap, createIsographEnvironment, createIsographStore, type FieldCache, type Subscriptions, type Subscription, type TypeName, type FragmentSubscription, type AnyChangesToRecordSubscription, type AnyRecordSubscription, type ComponentOrFieldName, type StringifiedArgs, } from './core/IsographEnvironment';
|
|
5
|
+
export { ROOT_ID, type DataId, type DataTypeValue, type IsographEnvironment, type IsographNetworkFunction, type BaseStoreLayerData as IsographStore, type MissingFieldHandler, type StoreLink, type Link, type StoreRecord, type CacheMap, createIsographEnvironment, createIsographStore, type FieldCache, type Subscriptions, type Subscription, type TypeName, type FragmentSubscription, type AnyChangesToRecordSubscription, type AnyRecordSubscription, type ComponentOrFieldName, type StringifiedArgs, } from './core/IsographEnvironment';
|
|
6
6
|
export { type EagerReaderArtifact, type ComponentReaderArtifact, type RefetchReaderArtifact, type ReaderAst, type ReaderAstNode, type ReaderLinkedField, type ReaderNonLoadableResolverField, type ReaderScalarField, type TopLevelReaderArtifact, type LoadableField, type StableId, type ResolverFirstParameter, type ReaderImperativelyLoadedField, type LoadablySelectedField as ReaderLoadableField, type ReaderLinkField, type StartUpdate, } from './core/reader';
|
|
7
7
|
export { type NormalizationAst, type NormalizationAstNode, type NormalizationAstNodes, type NormalizationAstLoader, type NormalizationLinkedField, type NormalizationScalarField, type IsographEntrypoint, type IsographOperation, type IsographPersistedOperation, type IsographPersistedOperationExtraInfo, assertIsEntrypoint, type RefetchQueryNormalizationArtifact, type RefetchQueryNormalizationArtifactWrapper, type ExtractProps, type ExtractReadFromStore, type ExtractResolverResult, type NetworkRequestInfo, type NormalizationInlineFragment, type ReaderWithRefetchQueries, type IsographEntrypointLoader, } from './core/entrypoint';
|
|
8
8
|
export { readButDoNotEvaluate, type WithEncounteredRecords, type NetworkRequestReaderOptions, type ReadDataResult, } from './core/read';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,aAAa,EACb,KAAK,aAAa,EAClB,yBAAyB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,cAAc,EACnB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,OAAO,GACR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,OAAO,EACP,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|