@isograph/react 0.3.0 → 0.4.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 +5 -0
- package/dist/core/FragmentReference.d.ts +17 -8
- package/dist/core/FragmentReference.d.ts.map +1 -1
- package/dist/core/FragmentReference.js +3 -12
- package/dist/core/IsographEnvironment.d.ts +30 -35
- package/dist/core/IsographEnvironment.d.ts.map +1 -1
- package/dist/core/IsographEnvironment.js +4 -0
- package/dist/core/PromiseWrapper.d.ts +6 -7
- package/dist/core/PromiseWrapper.d.ts.map +1 -1
- package/dist/core/PromiseWrapper.js +6 -12
- package/dist/core/areEqualWithDeepComparison.d.ts +1 -3
- package/dist/core/areEqualWithDeepComparison.d.ts.map +1 -1
- package/dist/core/areEqualWithDeepComparison.js +16 -2
- package/dist/core/brand.d.ts +2 -0
- package/dist/core/brand.d.ts.map +1 -0
- package/dist/core/brand.js +2 -0
- package/dist/core/cache.d.ts +16 -24
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/cache.js +105 -72
- package/dist/core/check.d.ts +11 -7
- package/dist/core/check.d.ts.map +1 -1
- package/dist/core/check.js +2 -2
- package/dist/core/componentCache.d.ts +1 -1
- package/dist/core/componentCache.d.ts.map +1 -1
- package/dist/core/componentCache.js +27 -31
- package/dist/core/entrypoint.d.ts +43 -28
- package/dist/core/entrypoint.d.ts.map +1 -1
- package/dist/core/garbageCollection.d.ts +5 -6
- package/dist/core/garbageCollection.d.ts.map +1 -1
- package/dist/core/garbageCollection.js +1 -1
- package/dist/core/logging.d.ts +23 -15
- package/dist/core/logging.d.ts.map +1 -1
- package/dist/core/logging.js +8 -5
- package/dist/core/makeNetworkRequest.d.ts +5 -5
- package/dist/core/makeNetworkRequest.d.ts.map +1 -1
- package/dist/core/makeNetworkRequest.js +113 -28
- package/dist/core/read.d.ts +16 -11
- package/dist/core/read.d.ts.map +1 -1
- package/dist/core/read.js +468 -305
- package/dist/core/reader.d.ts +33 -37
- package/dist/core/reader.d.ts.map +1 -1
- package/dist/core/startUpdate.d.ts +8 -0
- package/dist/core/startUpdate.d.ts.map +1 -0
- package/dist/core/startUpdate.js +163 -0
- package/dist/core/util.d.ts +3 -0
- package/dist/core/util.d.ts.map +1 -1
- package/dist/index.d.ts +18 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/loadable-hooks/useClientSideDefer.d.ts +4 -10
- package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
- package/dist/loadable-hooks/useClientSideDefer.js +2 -2
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +8 -15
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useConnectionSpecPagination.js +6 -4
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts +1 -2
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts.map +1 -1
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts +4 -6
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +1 -1
- package/dist/loadable-hooks/useImperativeLoadableField.js +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts +6 -13
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.js +11 -9
- package/dist/react/FragmentReader.d.ts +7 -14
- package/dist/react/FragmentReader.d.ts.map +1 -1
- package/dist/react/FragmentReader.js +3 -30
- package/dist/react/FragmentRenderer.d.ts +15 -0
- package/dist/react/FragmentRenderer.d.ts.map +1 -0
- package/dist/react/FragmentRenderer.js +35 -0
- package/dist/react/IsographEnvironmentProvider.d.ts.map +1 -1
- package/dist/react/LoadableFieldReader.d.ts +12 -0
- package/dist/react/LoadableFieldReader.d.ts.map +1 -0
- package/dist/react/LoadableFieldReader.js +10 -0
- package/dist/react/LoadableFieldRenderer.d.ts +13 -0
- package/dist/react/LoadableFieldRenderer.d.ts.map +1 -0
- package/dist/react/LoadableFieldRenderer.js +37 -0
- package/dist/react/useImperativeReference.d.ts +7 -10
- package/dist/react/useImperativeReference.d.ts.map +1 -1
- package/dist/react/useImperativeReference.js +8 -9
- package/dist/react/useLazyReference.d.ts +4 -7
- package/dist/react/useLazyReference.d.ts.map +1 -1
- package/dist/react/useLazyReference.js +26 -5
- package/dist/react/useReadAndSubscribe.d.ts +3 -9
- package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
- package/dist/react/useReadAndSubscribe.js +7 -3
- package/dist/react/useRerenderOnChange.d.ts +1 -1
- package/dist/react/useRerenderOnChange.d.ts.map +1 -1
- package/dist/react/useResult.d.ts +3 -6
- package/dist/react/useResult.d.ts.map +1 -1
- package/dist/react/useResult.js +10 -8
- package/isograph.config.json +1 -0
- package/package.json +6 -6
- package/src/core/FragmentReference.ts +40 -16
- package/src/core/IsographEnvironment.ts +57 -39
- package/src/core/PromiseWrapper.ts +15 -18
- package/src/core/areEqualWithDeepComparison.ts +22 -2
- package/src/core/brand.ts +18 -0
- package/src/core/cache.ts +153 -113
- package/src/core/check.ts +17 -12
- package/src/core/componentCache.ts +47 -50
- package/src/core/entrypoint.ts +66 -21
- package/src/core/garbageCollection.ts +9 -9
- package/src/core/logging.ts +39 -25
- package/src/core/makeNetworkRequest.ts +212 -34
- package/src/core/read.ts +728 -440
- package/src/core/reader.ts +46 -29
- package/src/core/startUpdate.ts +334 -0
- package/src/core/util.ts +4 -0
- package/src/index.ts +89 -8
- package/src/loadable-hooks/useClientSideDefer.ts +11 -10
- package/src/loadable-hooks/useConnectionSpecPagination.ts +27 -13
- package/src/loadable-hooks/useImperativeExposedMutationField.ts +1 -1
- package/src/loadable-hooks/useImperativeLoadableField.ts +10 -12
- package/src/loadable-hooks/useSkipLimitPagination.ts +38 -19
- package/src/react/FragmentReader.tsx +23 -39
- package/src/react/FragmentRenderer.tsx +46 -0
- package/src/react/IsographEnvironmentProvider.tsx +1 -1
- package/src/react/LoadableFieldReader.tsx +40 -0
- package/src/react/LoadableFieldRenderer.tsx +41 -0
- package/src/react/useImperativeReference.ts +49 -27
- package/src/react/useLazyReference.ts +62 -14
- package/src/react/useReadAndSubscribe.ts +17 -9
- package/src/react/useRerenderOnChange.ts +2 -2
- package/src/react/useResult.ts +22 -8
- package/src/tests/__isograph/Economist/link/output_type.ts +2 -0
- package/src/tests/__isograph/Node/asEconomist/resolver_reader.ts +28 -0
- package/src/tests/__isograph/Node/link/output_type.ts +3 -0
- package/src/tests/__isograph/Query/linkedUpdate/entrypoint.ts +31 -0
- package/src/tests/__isograph/Query/linkedUpdate/normalization_ast.ts +95 -0
- package/src/tests/__isograph/Query/linkedUpdate/output_type.ts +3 -0
- package/src/tests/__isograph/Query/linkedUpdate/param_type.ts +51 -0
- package/src/tests/__isograph/Query/linkedUpdate/query_text.ts +20 -0
- package/src/tests/__isograph/Query/linkedUpdate/resolver_reader.ts +93 -0
- package/src/tests/__isograph/Query/meName/entrypoint.ts +8 -29
- package/src/tests/__isograph/Query/meName/normalization_ast.ts +25 -0
- package/src/tests/__isograph/Query/meName/query_text.ts +6 -0
- package/src/tests/__isograph/Query/meName/resolver_reader.ts +5 -0
- package/src/tests/__isograph/Query/meNameSuccessor/entrypoint.ts +8 -67
- package/src/tests/__isograph/Query/meNameSuccessor/normalization_ast.ts +56 -0
- package/src/tests/__isograph/Query/meNameSuccessor/query_text.ts +13 -0
- package/src/tests/__isograph/Query/meNameSuccessor/resolver_reader.ts +10 -0
- package/src/tests/__isograph/Query/nodeField/entrypoint.ts +8 -34
- package/src/tests/__isograph/Query/nodeField/normalization_ast.ts +30 -0
- package/src/tests/__isograph/Query/nodeField/query_text.ts +6 -0
- package/src/tests/__isograph/Query/nodeField/resolver_reader.ts +5 -0
- package/src/tests/__isograph/Query/startUpdate/entrypoint.ts +31 -0
- package/src/tests/__isograph/Query/startUpdate/normalization_ast.ts +51 -0
- package/src/tests/__isograph/Query/startUpdate/output_type.ts +3 -0
- package/src/tests/__isograph/Query/startUpdate/param_type.ts +26 -0
- package/src/tests/__isograph/Query/startUpdate/parameters_type.ts +3 -0
- package/src/tests/__isograph/Query/startUpdate/query_text.ts +11 -0
- package/src/tests/__isograph/Query/startUpdate/resolver_reader.ts +55 -0
- package/src/tests/__isograph/Query/subquery/entrypoint.ts +8 -44
- package/src/tests/__isograph/Query/subquery/normalization_ast.ts +38 -0
- package/src/tests/__isograph/Query/subquery/query_text.ts +8 -0
- package/src/tests/__isograph/Query/subquery/resolver_reader.ts +7 -0
- package/src/tests/__isograph/iso.ts +24 -3
- package/src/tests/__isograph/tsconfig.json +8 -0
- package/src/tests/garbageCollection.test.ts +10 -8
- package/src/tests/meNameSuccessor.ts +1 -1
- package/src/tests/nodeQuery.ts +2 -1
- package/src/tests/normalizeData.test.ts +1 -2
- package/src/tests/startUpdate.test.ts +205 -0
- package/tsconfig.pkg.json +1 -2
package/dist/core/cache.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SECOND_SPLIT_KEY = exports.FIRST_SPLIT_KEY = exports.TYPENAME_FIELD_NAME = void 0;
|
|
3
|
+
exports.THIRD_SPLIT_KEY = exports.SECOND_SPLIT_KEY = exports.FIRST_SPLIT_KEY = exports.TYPENAME_FIELD_NAME = void 0;
|
|
4
4
|
exports.getOrCreateItemInSuspenseCache = getOrCreateItemInSuspenseCache;
|
|
5
5
|
exports.stableCopy = stableCopy;
|
|
6
6
|
exports.getOrCreateCacheForArtifact = getOrCreateCacheForArtifact;
|
|
@@ -9,24 +9,18 @@ exports.subscribeToAnyChange = subscribeToAnyChange;
|
|
|
9
9
|
exports.subscribeToAnyChangesToRecord = subscribeToAnyChangesToRecord;
|
|
10
10
|
exports.subscribe = subscribe;
|
|
11
11
|
exports.onNextChangeToRecord = onNextChangeToRecord;
|
|
12
|
-
exports.
|
|
12
|
+
exports.callSubscriptions = callSubscriptions;
|
|
13
|
+
exports.insertEmptySetIfMissing = insertEmptySetIfMissing;
|
|
13
14
|
exports.getParentRecordKey = getParentRecordKey;
|
|
14
15
|
const react_disposable_state_1 = require("@isograph/react-disposable-state");
|
|
15
|
-
const IsographEnvironment_1 = require("./IsographEnvironment");
|
|
16
|
-
const read_1 = require("./read");
|
|
17
16
|
const areEqualWithDeepComparison_1 = require("./areEqualWithDeepComparison");
|
|
17
|
+
const IsographEnvironment_1 = require("./IsographEnvironment");
|
|
18
|
+
const logging_1 = require("./logging");
|
|
18
19
|
const makeNetworkRequest_1 = require("./makeNetworkRequest");
|
|
19
20
|
const PromiseWrapper_1 = require("./PromiseWrapper");
|
|
20
|
-
const
|
|
21
|
+
const read_1 = require("./read");
|
|
21
22
|
exports.TYPENAME_FIELD_NAME = '__typename';
|
|
22
23
|
function getOrCreateItemInSuspenseCache(environment, index, factory) {
|
|
23
|
-
// TODO this is probably a useless message, we should remove it
|
|
24
|
-
(0, logging_1.logMessage)(environment, {
|
|
25
|
-
kind: 'GettingSuspenseCacheItem',
|
|
26
|
-
index,
|
|
27
|
-
availableCacheItems: Object.keys(environment.fragmentCache),
|
|
28
|
-
found: !!environment.fragmentCache[index],
|
|
29
|
-
});
|
|
30
24
|
if (environment.fragmentCache[index] == null) {
|
|
31
25
|
environment.fragmentCache[index] = new react_disposable_state_1.ParentCache(factory);
|
|
32
26
|
}
|
|
@@ -54,18 +48,29 @@ function stableCopy(value) {
|
|
|
54
48
|
return stable;
|
|
55
49
|
}
|
|
56
50
|
function getOrCreateCacheForArtifact(environment, entrypoint, variables, fetchOptions) {
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
let cacheKey = '';
|
|
52
|
+
switch (entrypoint.networkRequestInfo.operation.kind) {
|
|
53
|
+
case 'Operation':
|
|
54
|
+
cacheKey =
|
|
55
|
+
entrypoint.networkRequestInfo.operation.text +
|
|
56
|
+
JSON.stringify(stableCopy(variables));
|
|
57
|
+
break;
|
|
58
|
+
case 'PersistedOperation':
|
|
59
|
+
cacheKey =
|
|
60
|
+
entrypoint.networkRequestInfo.operation.operationId +
|
|
61
|
+
JSON.stringify(stableCopy(variables));
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
59
64
|
const factory = () => {
|
|
60
|
-
const
|
|
65
|
+
const readerWithRefetchQueries = entrypoint.readerWithRefetchQueries.kind ===
|
|
66
|
+
'ReaderWithRefetchQueriesLoader'
|
|
67
|
+
? (0, PromiseWrapper_1.wrapPromise)(entrypoint.readerWithRefetchQueries.loader())
|
|
68
|
+
: (0, PromiseWrapper_1.wrapResolvedValue)(entrypoint.readerWithRefetchQueries);
|
|
69
|
+
const [networkRequest, disposeNetworkRequest] = (0, makeNetworkRequest_1.maybeMakeNetworkRequest)(environment, entrypoint, variables, readerWithRefetchQueries, fetchOptions !== null && fetchOptions !== void 0 ? fetchOptions : null);
|
|
61
70
|
const itemCleanupPair = [
|
|
62
71
|
{
|
|
63
72
|
kind: 'FragmentReference',
|
|
64
|
-
readerWithRefetchQueries
|
|
65
|
-
kind: 'ReaderWithRefetchQueries',
|
|
66
|
-
readerArtifact: entrypoint.readerWithRefetchQueries.readerArtifact,
|
|
67
|
-
nestedRefetchQueries: entrypoint.readerWithRefetchQueries.nestedRefetchQueries,
|
|
68
|
-
}),
|
|
73
|
+
readerWithRefetchQueries,
|
|
69
74
|
root: { __link: IsographEnvironment_1.ROOT_ID, __typename: entrypoint.concreteType },
|
|
70
75
|
variables,
|
|
71
76
|
networkRequest: networkRequest,
|
|
@@ -76,24 +81,24 @@ function getOrCreateCacheForArtifact(environment, entrypoint, variables, fetchOp
|
|
|
76
81
|
};
|
|
77
82
|
return getOrCreateItemInSuspenseCache(environment, cacheKey, factory);
|
|
78
83
|
}
|
|
79
|
-
function normalizeData(environment, normalizationAst, networkResponse, variables,
|
|
84
|
+
function normalizeData(environment, normalizationAst, networkResponse, variables, root) {
|
|
80
85
|
var _a, _b;
|
|
81
86
|
var _c, _d, _e;
|
|
82
87
|
const encounteredIds = new Map();
|
|
83
|
-
(0, logging_1.logMessage)(environment, {
|
|
88
|
+
(0, logging_1.logMessage)(environment, () => ({
|
|
84
89
|
kind: 'AboutToNormalize',
|
|
85
90
|
normalizationAst,
|
|
86
91
|
networkResponse,
|
|
87
92
|
variables,
|
|
88
|
-
});
|
|
93
|
+
}));
|
|
89
94
|
const recordsById = ((_a = (_c = environment.store)[_d = root.__typename]) !== null && _a !== void 0 ? _a : (_c[_d] = {}));
|
|
90
95
|
const newStoreRecord = ((_b = recordsById[_e = root.__link]) !== null && _b !== void 0 ? _b : (recordsById[_e] = {}));
|
|
91
|
-
normalizeDataIntoRecord(environment, normalizationAst, networkResponse, newStoreRecord, root, variables,
|
|
92
|
-
(0, logging_1.logMessage)(environment, {
|
|
96
|
+
normalizeDataIntoRecord(environment, normalizationAst, networkResponse, newStoreRecord, root, variables, encounteredIds);
|
|
97
|
+
(0, logging_1.logMessage)(environment, () => ({
|
|
93
98
|
kind: 'AfterNormalization',
|
|
94
99
|
store: environment.store,
|
|
95
100
|
encounteredIds,
|
|
96
|
-
});
|
|
101
|
+
}));
|
|
97
102
|
callSubscriptions(environment, encounteredIds);
|
|
98
103
|
return encounteredIds;
|
|
99
104
|
}
|
|
@@ -139,16 +144,21 @@ function onNextChangeToRecord(environment, recordLink) {
|
|
|
139
144
|
//
|
|
140
145
|
// That's probably okay to ignore. We don't, however, want to prevent
|
|
141
146
|
// updating other subscriptions if one subscription had missing data.
|
|
142
|
-
function withErrorHandling(f) {
|
|
147
|
+
function withErrorHandling(environment, f) {
|
|
143
148
|
return (t) => {
|
|
144
149
|
try {
|
|
145
150
|
return f(t);
|
|
146
151
|
}
|
|
147
|
-
catch (
|
|
152
|
+
catch (e) {
|
|
153
|
+
(0, logging_1.logMessage)(environment, () => ({
|
|
154
|
+
kind: 'ErrorEncounteredInWithErrorHandling',
|
|
155
|
+
error: e,
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
148
158
|
};
|
|
149
159
|
}
|
|
150
160
|
function callSubscriptions(environment, recordsEncounteredWhenNormalizing) {
|
|
151
|
-
environment.subscriptions.forEach(withErrorHandling((subscription) => {
|
|
161
|
+
environment.subscriptions.forEach(withErrorHandling(environment, (subscription) => {
|
|
152
162
|
var _a;
|
|
153
163
|
switch (subscription.kind) {
|
|
154
164
|
case 'FragmentSubscription': {
|
|
@@ -174,13 +184,13 @@ function callSubscriptions(environment, recordsEncounteredWhenNormalizing) {
|
|
|
174
184
|
throwOnNetworkError: false,
|
|
175
185
|
});
|
|
176
186
|
const mergedItem = (0, areEqualWithDeepComparison_1.mergeObjectsUsingReaderAst)(subscription.readerAst, subscription.encounteredDataAndRecords.item, newEncounteredDataAndRecords.item);
|
|
177
|
-
(0, logging_1.logMessage)(environment, {
|
|
187
|
+
(0, logging_1.logMessage)(environment, () => ({
|
|
178
188
|
kind: 'DeepEqualityCheck',
|
|
179
189
|
fragmentReference: subscription.fragmentReference,
|
|
180
190
|
old: subscription.encounteredDataAndRecords.item,
|
|
181
191
|
new: newEncounteredDataAndRecords.item,
|
|
182
192
|
deeplyEqual: mergedItem === subscription.encounteredDataAndRecords.item,
|
|
183
|
-
});
|
|
193
|
+
}));
|
|
184
194
|
if (mergedItem !== subscription.encounteredDataAndRecords.item) {
|
|
185
195
|
subscription.callback(newEncounteredDataAndRecords);
|
|
186
196
|
}
|
|
@@ -231,7 +241,7 @@ function isNotDisjointFrom(set1, set2) {
|
|
|
231
241
|
/**
|
|
232
242
|
* Mutate targetParentRecord according to the normalizationAst and networkResponseParentRecord.
|
|
233
243
|
*/
|
|
234
|
-
function normalizeDataIntoRecord(environment, normalizationAst, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables,
|
|
244
|
+
function normalizeDataIntoRecord(environment, normalizationAst, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds) {
|
|
235
245
|
let recordHasBeenUpdated = false;
|
|
236
246
|
for (const normalizationNode of normalizationAst) {
|
|
237
247
|
switch (normalizationNode.kind) {
|
|
@@ -242,13 +252,13 @@ function normalizeDataIntoRecord(environment, normalizationAst, networkResponseP
|
|
|
242
252
|
break;
|
|
243
253
|
}
|
|
244
254
|
case 'Linked': {
|
|
245
|
-
const linkedFieldResultedInChange = normalizeLinkedField(environment, normalizationNode, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables,
|
|
255
|
+
const linkedFieldResultedInChange = normalizeLinkedField(environment, normalizationNode, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds);
|
|
246
256
|
recordHasBeenUpdated =
|
|
247
257
|
recordHasBeenUpdated || linkedFieldResultedInChange;
|
|
248
258
|
break;
|
|
249
259
|
}
|
|
250
260
|
case 'InlineFragment': {
|
|
251
|
-
const inlineFragmentResultedInChange = normalizeInlineFragment(environment, normalizationNode, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables,
|
|
261
|
+
const inlineFragmentResultedInChange = normalizeInlineFragment(environment, normalizationNode, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds);
|
|
252
262
|
recordHasBeenUpdated =
|
|
253
263
|
recordHasBeenUpdated || inlineFragmentResultedInChange;
|
|
254
264
|
break;
|
|
@@ -262,12 +272,12 @@ function normalizeDataIntoRecord(environment, normalizationAst, networkResponseP
|
|
|
262
272
|
}
|
|
263
273
|
}
|
|
264
274
|
if (recordHasBeenUpdated) {
|
|
265
|
-
let encounteredRecordsIds =
|
|
275
|
+
let encounteredRecordsIds = insertEmptySetIfMissing(mutableEncounteredIds, targetParentRecordLink.__typename);
|
|
266
276
|
encounteredRecordsIds.add(targetParentRecordLink.__link);
|
|
267
277
|
}
|
|
268
278
|
return recordHasBeenUpdated;
|
|
269
279
|
}
|
|
270
|
-
function
|
|
280
|
+
function insertEmptySetIfMissing(map, key) {
|
|
271
281
|
let result = map.get(key);
|
|
272
282
|
if (result === undefined) {
|
|
273
283
|
result = new Set();
|
|
@@ -292,7 +302,7 @@ function normalizeScalarField(astNode, networkResponseParentRecord, targetStoreR
|
|
|
292
302
|
/**
|
|
293
303
|
* Mutate targetParentRecord with a given linked field ast node.
|
|
294
304
|
*/
|
|
295
|
-
function normalizeLinkedField(environment, astNode, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables,
|
|
305
|
+
function normalizeLinkedField(environment, astNode, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds) {
|
|
296
306
|
var _a, _b;
|
|
297
307
|
const networkResponseKey = getNetworkResponseKey(astNode);
|
|
298
308
|
const networkResponseData = networkResponseParentRecord[networkResponseKey];
|
|
@@ -315,7 +325,7 @@ function normalizeLinkedField(environment, astNode, networkResponseParentRecord,
|
|
|
315
325
|
dataIds.push(null);
|
|
316
326
|
continue;
|
|
317
327
|
}
|
|
318
|
-
const newStoreRecordId = normalizeNetworkResponseObject(environment, astNode, networkResponseObject, targetParentRecordLink, variables, i,
|
|
328
|
+
const newStoreRecordId = normalizeNetworkResponseObject(environment, astNode, networkResponseObject, targetParentRecordLink, variables, i, mutableEncounteredIds);
|
|
319
329
|
const __typename = (_a = astNode.concreteType) !== null && _a !== void 0 ? _a : networkResponseObject[exports.TYPENAME_FIELD_NAME];
|
|
320
330
|
if (__typename == null) {
|
|
321
331
|
throw new Error('Unexpected missing __typename in network response when normalizing a linked field. ' +
|
|
@@ -330,7 +340,7 @@ function normalizeLinkedField(environment, astNode, networkResponseParentRecord,
|
|
|
330
340
|
return !dataIdsAreTheSame(existingValue, dataIds);
|
|
331
341
|
}
|
|
332
342
|
else {
|
|
333
|
-
const newStoreRecordId = normalizeNetworkResponseObject(environment, astNode, networkResponseData, targetParentRecordLink, variables, null,
|
|
343
|
+
const newStoreRecordId = normalizeNetworkResponseObject(environment, astNode, networkResponseData, targetParentRecordLink, variables, null, mutableEncounteredIds);
|
|
334
344
|
let __typename = (_b = astNode.concreteType) !== null && _b !== void 0 ? _b : networkResponseData[exports.TYPENAME_FIELD_NAME];
|
|
335
345
|
if (__typename == null) {
|
|
336
346
|
throw new Error('Unexpected missing __typename in network response when normalizing a linked field. ' +
|
|
@@ -347,10 +357,10 @@ function normalizeLinkedField(environment, astNode, networkResponseParentRecord,
|
|
|
347
357
|
/**
|
|
348
358
|
* Mutate targetParentRecord with a given linked field ast node.
|
|
349
359
|
*/
|
|
350
|
-
function normalizeInlineFragment(environment, astNode, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables,
|
|
360
|
+
function normalizeInlineFragment(environment, astNode, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds) {
|
|
351
361
|
const typeToRefineTo = astNode.type;
|
|
352
362
|
if (networkResponseParentRecord[exports.TYPENAME_FIELD_NAME] === typeToRefineTo) {
|
|
353
|
-
const hasBeenModified = normalizeDataIntoRecord(environment, astNode.selections, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables,
|
|
363
|
+
const hasBeenModified = normalizeDataIntoRecord(environment, astNode.selections, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds);
|
|
354
364
|
return hasBeenModified;
|
|
355
365
|
}
|
|
356
366
|
return false;
|
|
@@ -374,7 +384,7 @@ function dataIdsAreTheSame(existingValue, newDataIds) {
|
|
|
374
384
|
return false;
|
|
375
385
|
}
|
|
376
386
|
}
|
|
377
|
-
function normalizeNetworkResponseObject(environment, astNode, networkResponseData, targetParentRecordLink, variables, index,
|
|
387
|
+
function normalizeNetworkResponseObject(environment, astNode, networkResponseData, targetParentRecordLink, variables, index, mutableEncounteredIds) {
|
|
378
388
|
var _a, _b, _c;
|
|
379
389
|
var _d;
|
|
380
390
|
const newStoreRecordId = getDataIdOfNetworkResponse(targetParentRecordLink, networkResponseData, astNode, variables, index);
|
|
@@ -385,7 +395,7 @@ function normalizeNetworkResponseObject(environment, astNode, networkResponseDat
|
|
|
385
395
|
}
|
|
386
396
|
const recordsById = ((_b = (_d = environment.store)[__typename]) !== null && _b !== void 0 ? _b : (_d[__typename] = {}));
|
|
387
397
|
const newStoreRecord = ((_c = recordsById[newStoreRecordId]) !== null && _c !== void 0 ? _c : (recordsById[newStoreRecordId] = {}));
|
|
388
|
-
normalizeDataIntoRecord(environment, astNode.selections, networkResponseData, newStoreRecord, { __link: newStoreRecordId, __typename: __typename }, variables,
|
|
398
|
+
normalizeDataIntoRecord(environment, astNode.selections, networkResponseData, newStoreRecord, { __link: newStoreRecordId, __typename: __typename }, variables, mutableEncounteredIds);
|
|
389
399
|
return newStoreRecordId;
|
|
390
400
|
}
|
|
391
401
|
function isScalarOrEmptyArray(data) {
|
|
@@ -422,6 +432,15 @@ function getParentRecordKey(astNode, variables) {
|
|
|
422
432
|
function getStoreKeyChunkForArgumentValue(argumentValue, variables) {
|
|
423
433
|
var _a;
|
|
424
434
|
switch (argumentValue.kind) {
|
|
435
|
+
case 'Object': {
|
|
436
|
+
return Object.fromEntries(argumentValue.value.map(([argumentName, argumentValue]) => {
|
|
437
|
+
return [
|
|
438
|
+
argumentName,
|
|
439
|
+
// substitute variables
|
|
440
|
+
getStoreKeyChunkForArgumentValue(argumentValue, variables),
|
|
441
|
+
];
|
|
442
|
+
}));
|
|
443
|
+
}
|
|
425
444
|
case 'Literal': {
|
|
426
445
|
return argumentValue.value;
|
|
427
446
|
}
|
|
@@ -444,48 +463,62 @@ function getStoreKeyChunkForArgumentValue(argumentValue, variables) {
|
|
|
444
463
|
}
|
|
445
464
|
}
|
|
446
465
|
function getStoreKeyChunkForArgument(argument, variables) {
|
|
447
|
-
const
|
|
448
|
-
|
|
466
|
+
const [argumentName, argumentValue] = argument;
|
|
467
|
+
let chunk = getStoreKeyChunkForArgumentValue(argumentValue, variables);
|
|
468
|
+
if (typeof chunk === 'object') {
|
|
469
|
+
chunk = JSON.stringify(stableCopy(chunk));
|
|
470
|
+
}
|
|
471
|
+
return `${exports.FIRST_SPLIT_KEY}${argumentName}${exports.SECOND_SPLIT_KEY}${chunk}`;
|
|
449
472
|
}
|
|
450
473
|
function getNetworkResponseKey(astNode) {
|
|
451
474
|
let networkResponseKey = astNode.fieldName;
|
|
452
475
|
const fieldParameters = astNode.arguments;
|
|
453
476
|
if (fieldParameters != null) {
|
|
454
|
-
for (const
|
|
455
|
-
|
|
456
|
-
let argumentValueChunk;
|
|
457
|
-
switch (argumentValue.kind) {
|
|
458
|
-
case 'Literal': {
|
|
459
|
-
argumentValueChunk = 'l_' + argumentValue.value;
|
|
460
|
-
break;
|
|
461
|
-
}
|
|
462
|
-
case 'Variable': {
|
|
463
|
-
argumentValueChunk = 'v_' + argumentValue.name;
|
|
464
|
-
break;
|
|
465
|
-
}
|
|
466
|
-
case 'String': {
|
|
467
|
-
argumentValueChunk = 's_' + argumentValue.value;
|
|
468
|
-
break;
|
|
469
|
-
}
|
|
470
|
-
case 'Enum': {
|
|
471
|
-
argumentValueChunk = 'e_' + argumentValue.value;
|
|
472
|
-
break;
|
|
473
|
-
}
|
|
474
|
-
default: {
|
|
475
|
-
// Ensure we have covered all variants
|
|
476
|
-
let _ = argumentValue;
|
|
477
|
-
_;
|
|
478
|
-
throw new Error('Unexpected case');
|
|
479
|
-
}
|
|
480
|
-
}
|
|
477
|
+
for (const [argumentName, argumentValue] of fieldParameters) {
|
|
478
|
+
let argumentValueChunk = getArgumentValueChunk(argumentValue);
|
|
481
479
|
networkResponseKey += `${exports.FIRST_SPLIT_KEY}${argumentName}${exports.SECOND_SPLIT_KEY}${argumentValueChunk}`;
|
|
482
480
|
}
|
|
483
481
|
}
|
|
484
482
|
return networkResponseKey;
|
|
485
483
|
}
|
|
484
|
+
function getArgumentValueChunk(argumentValue) {
|
|
485
|
+
switch (argumentValue.kind) {
|
|
486
|
+
case 'Object': {
|
|
487
|
+
return ('o_' +
|
|
488
|
+
argumentValue.value
|
|
489
|
+
.map(([argumentName, argumentValue]) => {
|
|
490
|
+
return (argumentName +
|
|
491
|
+
exports.THIRD_SPLIT_KEY +
|
|
492
|
+
getArgumentValueChunk(argumentValue));
|
|
493
|
+
})
|
|
494
|
+
.join('_') +
|
|
495
|
+
'_c');
|
|
496
|
+
}
|
|
497
|
+
case 'Literal': {
|
|
498
|
+
return 'l_' + argumentValue.value;
|
|
499
|
+
}
|
|
500
|
+
case 'Variable': {
|
|
501
|
+
return 'v_' + argumentValue.name;
|
|
502
|
+
}
|
|
503
|
+
case 'String': {
|
|
504
|
+
// replace all non-word characters (alphanumeric & underscore) with underscores
|
|
505
|
+
return 's_' + argumentValue.value.replaceAll(/\W/g, '_');
|
|
506
|
+
}
|
|
507
|
+
case 'Enum': {
|
|
508
|
+
return 'e_' + argumentValue.value;
|
|
509
|
+
}
|
|
510
|
+
default: {
|
|
511
|
+
// Ensure we have covered all variants
|
|
512
|
+
let _ = argumentValue;
|
|
513
|
+
_;
|
|
514
|
+
throw new Error('Unexpected case');
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
}
|
|
486
518
|
// an alias might be pullRequests____first___first____after___cursor
|
|
487
519
|
exports.FIRST_SPLIT_KEY = '____';
|
|
488
520
|
exports.SECOND_SPLIT_KEY = '___';
|
|
521
|
+
exports.THIRD_SPLIT_KEY = '__';
|
|
489
522
|
// Returns a key to look up an item in the store
|
|
490
523
|
function getDataIdOfNetworkResponse(parentRecordLink, dataToNormalize, astNode, variables, index) {
|
|
491
524
|
// If we are dealing with nested Query, use __ROOT as id
|
package/dist/core/check.d.ts
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NormalizationAstNodes } from './entrypoint';
|
|
2
2
|
import { Variables } from './FragmentReference';
|
|
3
|
-
import { IsographEnvironment,
|
|
4
|
-
export type ShouldFetch =
|
|
3
|
+
import { IsographEnvironment, StoreLink } from './IsographEnvironment';
|
|
4
|
+
export type ShouldFetch = RequiredShouldFetch | 'IfNecessary';
|
|
5
|
+
export type RequiredShouldFetch = 'Yes' | 'No';
|
|
5
6
|
export declare const DEFAULT_SHOULD_FETCH_VALUE: ShouldFetch;
|
|
6
|
-
export type FetchOptions = {
|
|
7
|
+
export type FetchOptions<TReadOutData> = {
|
|
7
8
|
shouldFetch?: ShouldFetch;
|
|
8
|
-
onComplete?: () => void;
|
|
9
|
+
onComplete?: (data: TReadOutData) => void;
|
|
9
10
|
onError?: () => void;
|
|
10
11
|
};
|
|
12
|
+
export type RequiredFetchOptions<TReadOutData> = {
|
|
13
|
+
shouldFetch: RequiredShouldFetch;
|
|
14
|
+
} & FetchOptions<TReadOutData>;
|
|
11
15
|
export type CheckResult = {
|
|
12
16
|
kind: 'EnoughData';
|
|
13
17
|
} | {
|
|
14
18
|
kind: 'MissingData';
|
|
15
|
-
record:
|
|
19
|
+
record: StoreLink;
|
|
16
20
|
};
|
|
17
|
-
export declare function check(environment: IsographEnvironment, normalizationAst:
|
|
21
|
+
export declare function check(environment: IsographEnvironment, normalizationAst: NormalizationAstNodes, variables: Variables, root: StoreLink): CheckResult;
|
|
18
22
|
//# sourceMappingURL=check.d.ts.map
|
package/dist/core/check.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/core/check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/core/check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAEL,mBAAmB,EACnB,SAAS,EAEV,MAAM,uBAAuB,CAAC;AAG/B,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,aAAa,CAAC;AAC9D,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,IAAI,CAAC;AAE/C,eAAO,MAAM,0BAA0B,EAAE,WAA2B,CAAC;AAErE,MAAM,MAAM,YAAY,CAAC,YAAY,IAAI;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,YAAY,IAAI;IAC/C,WAAW,EAAE,mBAAmB,CAAC;CAClC,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;AAE/B,MAAM,MAAM,WAAW,GACnB;IACE,IAAI,EAAE,YAAY,CAAC;CACpB,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEN,wBAAgB,KAAK,CACnB,WAAW,EAAE,mBAAmB,EAChC,gBAAgB,EAAE,qBAAqB,EACvC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,SAAS,GACd,WAAW,CAgBb"}
|
package/dist/core/check.js
CHANGED
|
@@ -12,10 +12,10 @@ function check(environment, normalizationAst, variables, root) {
|
|
|
12
12
|
const recordsById = ((_a = (_c = environment.store)[_d = root.__typename]) !== null && _a !== void 0 ? _a : (_c[_d] = {}));
|
|
13
13
|
const newStoreRecord = ((_b = recordsById[_e = root.__link]) !== null && _b !== void 0 ? _b : (recordsById[_e] = {}));
|
|
14
14
|
const checkResult = checkFromRecord(environment, normalizationAst, variables, newStoreRecord, root);
|
|
15
|
-
(0, logging_1.logMessage)(environment, {
|
|
15
|
+
(0, logging_1.logMessage)(environment, () => ({
|
|
16
16
|
kind: 'EnvironmentCheck',
|
|
17
17
|
result: checkResult,
|
|
18
|
-
});
|
|
18
|
+
}));
|
|
19
19
|
return checkResult;
|
|
20
20
|
}
|
|
21
21
|
function checkFromRecord(environment, normalizationAst, variables, record, recordLink) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IsographEnvironment } from './IsographEnvironment';
|
|
2
1
|
import { FragmentReference } from './FragmentReference';
|
|
2
|
+
import { IsographEnvironment } from './IsographEnvironment';
|
|
3
3
|
import { NetworkRequestReaderOptions } from './read';
|
|
4
4
|
export declare function getOrCreateCachedComponent(environment: IsographEnvironment, componentName: string, fragmentReference: FragmentReference<any, any>, networkRequestOptions: NetworkRequestReaderOptions): React.FC<any>;
|
|
5
5
|
//# sourceMappingURL=componentCache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentCache.d.ts","sourceRoot":"","sources":["../../src/core/componentCache.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"componentCache.d.ts","sourceRoot":"","sources":["../../src/core/componentCache.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAGrD,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,EAC9C,qBAAqB,EAAE,2BAA2B,GACjD,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CA0Cf"}
|
|
@@ -1,38 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getOrCreateCachedComponent = getOrCreateCachedComponent;
|
|
4
|
-
const cache_1 = require("./cache");
|
|
5
4
|
const useReadAndSubscribe_1 = require("../react/useReadAndSubscribe");
|
|
6
|
-
const
|
|
5
|
+
const FragmentReference_1 = require("./FragmentReference");
|
|
7
6
|
const logging_1 = require("./logging");
|
|
7
|
+
const PromiseWrapper_1 = require("./PromiseWrapper");
|
|
8
|
+
const startUpdate_1 = require("./startUpdate");
|
|
8
9
|
function getOrCreateCachedComponent(environment, componentName, fragmentReference, networkRequestOptions) {
|
|
9
|
-
var _a
|
|
10
|
-
|
|
11
|
-
//
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
Component.displayName = `${componentName} (id: ${fragmentReference.root}) @component`;
|
|
35
|
-
return Component;
|
|
36
|
-
})();
|
|
37
|
-
return byArgs[stringifiedArgs];
|
|
10
|
+
var _a;
|
|
11
|
+
var _b, _c;
|
|
12
|
+
// We create startUpdate outside of component to make it stable
|
|
13
|
+
const startUpdate = (0, startUpdate_1.createStartUpdate)(environment, fragmentReference, networkRequestOptions);
|
|
14
|
+
return ((_a = (_b = environment.componentCache)[_c = (0, FragmentReference_1.stableIdForFragmentReference)(fragmentReference, componentName)]) !== null && _a !== void 0 ? _a : (_b[_c] = (() => {
|
|
15
|
+
function Component(additionalRuntimeProps) {
|
|
16
|
+
const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
|
|
17
|
+
const data = (0, useReadAndSubscribe_1.useReadAndSubscribe)(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst);
|
|
18
|
+
(0, logging_1.logMessage)(environment, () => ({
|
|
19
|
+
kind: 'ComponentRerendered',
|
|
20
|
+
componentName,
|
|
21
|
+
rootLink: fragmentReference.root,
|
|
22
|
+
}));
|
|
23
|
+
return readerWithRefetchQueries.readerArtifact.resolver({
|
|
24
|
+
data,
|
|
25
|
+
parameters: fragmentReference.variables,
|
|
26
|
+
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
|
|
27
|
+
? startUpdate
|
|
28
|
+
: undefined,
|
|
29
|
+
}, additionalRuntimeProps);
|
|
30
|
+
}
|
|
31
|
+
Component.displayName = `${componentName} (id: ${fragmentReference.root}) @component`;
|
|
32
|
+
return Component;
|
|
33
|
+
})()));
|
|
38
34
|
}
|
|
@@ -1,38 +1,56 @@
|
|
|
1
|
+
import type { UnknownTReadFromStore } from './FragmentReference';
|
|
1
2
|
import type { TypeName } from './IsographEnvironment';
|
|
2
3
|
import { TopLevelReaderArtifact } from './reader';
|
|
3
4
|
import { Arguments } from './util';
|
|
4
|
-
export type ReaderWithRefetchQueries<TReadFromStore extends {
|
|
5
|
-
parameters: object;
|
|
6
|
-
data: object;
|
|
7
|
-
}, TClientFieldValue> = {
|
|
5
|
+
export type ReaderWithRefetchQueries<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue> = {
|
|
8
6
|
readonly kind: 'ReaderWithRefetchQueries';
|
|
9
7
|
readonly readerArtifact: TopLevelReaderArtifact<TReadFromStore, TClientFieldValue, any>;
|
|
10
8
|
readonly nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[];
|
|
11
9
|
};
|
|
12
|
-
export type
|
|
10
|
+
export type ReaderWithRefetchQueriesLoader<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue> = {
|
|
11
|
+
readonly kind: 'ReaderWithRefetchQueriesLoader';
|
|
12
|
+
readonly loader: () => Promise<ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>>;
|
|
13
|
+
};
|
|
14
|
+
export type NetworkRequestInfo<TNormalizationAst> = {
|
|
13
15
|
readonly kind: 'NetworkRequestInfo';
|
|
14
|
-
readonly
|
|
15
|
-
readonly normalizationAst:
|
|
16
|
+
readonly operation: IsographOperation | IsographPersistedOperation;
|
|
17
|
+
readonly normalizationAst: TNormalizationAst;
|
|
18
|
+
};
|
|
19
|
+
export type IsographOperation = {
|
|
20
|
+
readonly kind: 'Operation';
|
|
21
|
+
readonly text: string;
|
|
22
|
+
};
|
|
23
|
+
export type IsographPersistedOperation = {
|
|
24
|
+
readonly kind: 'PersistedOperation';
|
|
25
|
+
readonly operationId: string;
|
|
26
|
+
readonly extraInfo: IsographPersistedOperationExtraInfo | null;
|
|
16
27
|
};
|
|
17
|
-
export type
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
28
|
+
export type IsographPersistedOperationExtraInfo = {
|
|
29
|
+
readonly kind: 'PersistedOperationExtraInfo';
|
|
30
|
+
readonly operationName: string | null;
|
|
31
|
+
readonly operationKind: 'Query' | 'Mutation' | 'Subscription';
|
|
32
|
+
};
|
|
33
|
+
export type IsographEntrypoint<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue, TNormalizationAst extends NormalizationAst | NormalizationAstLoader> = {
|
|
21
34
|
readonly kind: 'Entrypoint';
|
|
22
|
-
readonly networkRequestInfo: NetworkRequestInfo
|
|
23
|
-
readonly readerWithRefetchQueries: ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>;
|
|
35
|
+
readonly networkRequestInfo: NetworkRequestInfo<TNormalizationAst>;
|
|
36
|
+
readonly readerWithRefetchQueries: ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue> | ReaderWithRefetchQueriesLoader<TReadFromStore, TClientFieldValue>;
|
|
24
37
|
readonly concreteType: TypeName;
|
|
25
38
|
};
|
|
26
|
-
export type IsographEntrypointLoader<TReadFromStore extends {
|
|
27
|
-
parameters: object;
|
|
28
|
-
data: object;
|
|
29
|
-
}, TClientFieldValue> = {
|
|
39
|
+
export type IsographEntrypointLoader<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue> = {
|
|
30
40
|
readonly kind: 'EntrypointLoader';
|
|
31
41
|
readonly typeAndField: string;
|
|
32
|
-
readonly loader: () => Promise<IsographEntrypoint<TReadFromStore, TClientFieldValue>>;
|
|
42
|
+
readonly loader: () => Promise<IsographEntrypoint<TReadFromStore, TClientFieldValue, NormalizationAst>>;
|
|
33
43
|
};
|
|
34
44
|
export type NormalizationAstNode = NormalizationScalarField | NormalizationLinkedField | NormalizationInlineFragment;
|
|
35
|
-
export type
|
|
45
|
+
export type NormalizationAstNodes = ReadonlyArray<NormalizationAstNode>;
|
|
46
|
+
export type NormalizationAst = {
|
|
47
|
+
readonly kind: 'NormalizationAst';
|
|
48
|
+
readonly selections: NormalizationAstNodes;
|
|
49
|
+
};
|
|
50
|
+
export type NormalizationAstLoader = {
|
|
51
|
+
readonly kind: 'NormalizationAstLoader';
|
|
52
|
+
readonly loader: () => Promise<NormalizationAst>;
|
|
53
|
+
};
|
|
36
54
|
export type NormalizationScalarField = {
|
|
37
55
|
readonly kind: 'Scalar';
|
|
38
56
|
readonly fieldName: string;
|
|
@@ -42,28 +60,25 @@ export type NormalizationLinkedField = {
|
|
|
42
60
|
readonly kind: 'Linked';
|
|
43
61
|
readonly fieldName: string;
|
|
44
62
|
readonly arguments: Arguments | null;
|
|
45
|
-
readonly selections:
|
|
63
|
+
readonly selections: NormalizationAstNodes;
|
|
46
64
|
readonly concreteType: TypeName | null;
|
|
47
65
|
};
|
|
48
66
|
export type NormalizationInlineFragment = {
|
|
49
67
|
readonly kind: 'InlineFragment';
|
|
50
68
|
readonly type: string;
|
|
51
|
-
readonly selections:
|
|
69
|
+
readonly selections: NormalizationAstNodes;
|
|
52
70
|
};
|
|
53
71
|
export type RefetchQueryNormalizationArtifact = {
|
|
54
72
|
readonly kind: 'RefetchQuery';
|
|
55
|
-
readonly networkRequestInfo: NetworkRequestInfo
|
|
73
|
+
readonly networkRequestInfo: NetworkRequestInfo<NormalizationAst>;
|
|
56
74
|
readonly concreteType: TypeName;
|
|
57
75
|
};
|
|
58
76
|
export type RefetchQueryNormalizationArtifactWrapper = {
|
|
59
77
|
readonly artifact: RefetchQueryNormalizationArtifact;
|
|
60
78
|
readonly allowedVariables: string[];
|
|
61
79
|
};
|
|
62
|
-
export declare function assertIsEntrypoint<TReadFromStore extends
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}, TClientFieldValue>(value: IsographEntrypoint<TReadFromStore, TClientFieldValue> | ((_: any) => any) | any): asserts value is IsographEntrypoint<TReadFromStore, TClientFieldValue>;
|
|
66
|
-
export type ExtractReadFromStore<Type> = Type extends IsographEntrypoint<infer X, any> ? X : never;
|
|
67
|
-
export type ExtractResolverResult<Type> = Type extends IsographEntrypoint<any, infer X> ? X : never;
|
|
80
|
+
export declare function assertIsEntrypoint<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue, TNormalizationAst extends NormalizationAst | NormalizationAstLoader>(value: IsographEntrypoint<TReadFromStore, TClientFieldValue, TNormalizationAst> | ((_: any) => any) | any): asserts value is IsographEntrypoint<TReadFromStore, TClientFieldValue, TNormalizationAst>;
|
|
81
|
+
export type ExtractReadFromStore<Type> = Type extends IsographEntrypoint<infer X, any, any> ? X : never;
|
|
82
|
+
export type ExtractResolverResult<Type> = Type extends IsographEntrypoint<any, infer X, any> ? X : never;
|
|
68
83
|
export type ExtractProps<Type> = Type extends React.FC<infer X> ? X : never;
|
|
69
84
|
//# sourceMappingURL=entrypoint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrypoint.d.ts","sourceRoot":"","sources":["../../src/core/entrypoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,MAAM,wBAAwB,CAClC,cAAc,SAAS
|
|
1
|
+
{"version":3,"file":"entrypoint.d.ts","sourceRoot":"","sources":["../../src/core/entrypoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { NormalizationAstNodes } from './entrypoint';
|
|
2
|
+
import { IsographEnvironment, type StoreLink } from './IsographEnvironment';
|
|
3
3
|
export type RetainedQuery = {
|
|
4
|
-
readonly normalizationAst:
|
|
4
|
+
readonly normalizationAst: NormalizationAstNodes;
|
|
5
5
|
readonly variables: {};
|
|
6
|
-
readonly root:
|
|
6
|
+
readonly root: StoreLink;
|
|
7
7
|
};
|
|
8
|
-
type DidUnretainSomeQuery = boolean;
|
|
8
|
+
export type DidUnretainSomeQuery = boolean;
|
|
9
9
|
export declare function unretainQuery(environment: IsographEnvironment, retainedQuery: RetainedQuery): DidUnretainSomeQuery;
|
|
10
10
|
export declare function retainQuery(environment: IsographEnvironment, queryToRetain: RetainedQuery): void;
|
|
11
11
|
export declare function garbageCollectEnvironment(environment: IsographEnvironment): void;
|
|
12
|
-
export {};
|
|
13
12
|
//# sourceMappingURL=garbageCollection.d.ts.map
|