@isograph/react 0.2.0 → 0.3.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/dist/core/FragmentReference.d.ts +14 -4
- package/dist/core/FragmentReference.d.ts.map +1 -0
- package/dist/core/FragmentReference.js +2 -3
- package/dist/core/IsographEnvironment.d.ts +28 -10
- package/dist/core/IsographEnvironment.d.ts.map +1 -0
- package/dist/core/IsographEnvironment.js +15 -22
- package/dist/core/PromiseWrapper.d.ts +1 -0
- package/dist/core/PromiseWrapper.d.ts.map +1 -0
- package/dist/core/PromiseWrapper.js +4 -5
- package/dist/core/areEqualWithDeepComparison.d.ts +5 -3
- package/dist/core/areEqualWithDeepComparison.d.ts.map +1 -0
- package/dist/core/areEqualWithDeepComparison.js +73 -39
- package/dist/core/cache.d.ts +26 -10
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +160 -98
- package/dist/core/check.d.ts +18 -0
- package/dist/core/check.d.ts.map +1 -0
- package/dist/core/check.js +127 -0
- package/dist/core/componentCache.d.ts +1 -1
- package/dist/core/componentCache.d.ts.map +1 -0
- package/dist/core/componentCache.js +14 -14
- package/dist/core/entrypoint.d.ts +27 -8
- package/dist/core/entrypoint.d.ts.map +1 -0
- package/dist/core/entrypoint.js +1 -2
- package/dist/core/garbageCollection.d.ts +3 -1
- package/dist/core/garbageCollection.d.ts.map +1 -0
- package/dist/core/garbageCollection.js +48 -15
- package/dist/core/logging.d.ts +69 -0
- package/dist/core/logging.d.ts.map +1 -0
- package/dist/core/logging.js +19 -0
- package/dist/core/makeNetworkRequest.d.ts +4 -1
- package/dist/core/makeNetworkRequest.d.ts.map +1 -0
- package/dist/core/makeNetworkRequest.js +71 -15
- package/dist/core/read.d.ts +20 -5
- package/dist/core/read.d.ts.map +1 -0
- package/dist/core/read.js +104 -41
- package/dist/core/reader.d.ts +34 -10
- package/dist/core/reader.d.ts.map +1 -0
- package/dist/core/util.d.ts +2 -0
- package/dist/core/util.d.ts.map +1 -0
- package/dist/index.d.ts +10 -5
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -2
- package/dist/loadable-hooks/useClientSideDefer.d.ts +15 -3
- package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -0
- package/dist/loadable-hooks/useClientSideDefer.js +4 -6
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +34 -0
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -0
- package/dist/loadable-hooks/useConnectionSpecPagination.js +160 -0
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts +1 -0
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts.map +1 -0
- package/dist/loadable-hooks/useImperativeExposedMutationField.js +1 -2
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts +13 -5
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +1 -0
- package/dist/loadable-hooks/useImperativeLoadableField.js +3 -4
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts +18 -24
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -0
- package/dist/loadable-hooks/useSkipLimitPagination.js +88 -44
- package/dist/react/FragmentReader.d.ts +7 -4
- package/dist/react/FragmentReader.d.ts.map +1 -0
- package/dist/react/FragmentReader.js +4 -2
- package/dist/react/IsographEnvironmentProvider.d.ts +1 -0
- package/dist/react/IsographEnvironmentProvider.d.ts.map +1 -0
- package/dist/react/IsographEnvironmentProvider.js +3 -3
- package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts +10 -0
- package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts.map +1 -0
- package/dist/react/RenderAfterCommit__DO_NOT_USE.js +15 -0
- package/dist/react/useImperativeReference.d.ts +8 -3
- package/dist/react/useImperativeReference.d.ts.map +1 -0
- package/dist/react/useImperativeReference.js +4 -5
- package/dist/react/useLazyReference.d.ts +7 -2
- package/dist/react/useLazyReference.d.ts.map +1 -0
- package/dist/react/useLazyReference.js +11 -4
- package/dist/react/useReadAndSubscribe.d.ts +12 -3
- package/dist/react/useReadAndSubscribe.d.ts.map +1 -0
- package/dist/react/useReadAndSubscribe.js +6 -7
- package/dist/react/useRerenderOnChange.d.ts +6 -1
- package/dist/react/useRerenderOnChange.d.ts.map +1 -0
- package/dist/react/useRerenderOnChange.js +3 -4
- package/dist/react/useResult.d.ts +5 -1
- package/dist/react/useResult.d.ts.map +1 -0
- package/dist/react/useResult.js +8 -5
- package/{src/tests/isograph.config.json → isograph.config.json} +1 -1
- package/package.json +12 -8
- package/{src/tests/schema.graphql → schema.graphql} +1 -0
- package/src/core/FragmentReference.ts +17 -5
- package/src/core/IsographEnvironment.ts +38 -29
- package/src/core/areEqualWithDeepComparison.ts +76 -42
- package/src/core/cache.ts +237 -123
- package/src/core/check.ts +207 -0
- package/src/core/componentCache.ts +18 -17
- package/src/core/entrypoint.ts +15 -8
- package/src/core/garbageCollection.ts +71 -20
- package/src/core/logging.ts +116 -0
- package/src/core/makeNetworkRequest.ts +89 -13
- package/src/core/read.ts +162 -55
- package/src/core/reader.ts +40 -13
- package/src/core/util.ts +4 -0
- package/src/index.ts +14 -1
- package/src/loadable-hooks/useClientSideDefer.ts +45 -15
- package/src/loadable-hooks/useConnectionSpecPagination.ts +331 -0
- package/src/loadable-hooks/useImperativeLoadableField.ts +36 -10
- package/src/loadable-hooks/useSkipLimitPagination.ts +231 -90
- package/src/react/FragmentReader.tsx +13 -4
- package/src/react/RenderAfterCommit__DO_NOT_USE.tsx +17 -0
- package/src/react/useImperativeReference.ts +18 -7
- package/src/react/useLazyReference.ts +24 -4
- package/src/react/useReadAndSubscribe.ts +20 -5
- package/src/react/useRerenderOnChange.ts +6 -1
- package/src/react/useResult.ts +10 -2
- package/src/tests/__isograph/Query/meName/entrypoint.ts +7 -2
- package/src/tests/__isograph/Query/meName/param_type.ts +5 -2
- package/src/tests/__isograph/Query/meName/resolver_reader.ts +1 -0
- package/src/tests/__isograph/Query/meNameSuccessor/entrypoint.ts +9 -2
- package/src/tests/__isograph/Query/meNameSuccessor/param_type.ts +9 -6
- package/src/tests/__isograph/Query/meNameSuccessor/resolver_reader.ts +3 -0
- package/src/tests/__isograph/Query/nodeField/entrypoint.ts +13 -2
- package/src/tests/__isograph/Query/nodeField/param_type.ts +7 -3
- package/src/tests/__isograph/Query/nodeField/parameters_type.ts +3 -0
- package/src/tests/__isograph/Query/nodeField/resolver_reader.ts +1 -0
- package/src/tests/__isograph/Query/subquery/entrypoint.ts +67 -0
- package/src/tests/__isograph/Query/subquery/output_type.ts +3 -0
- package/src/tests/__isograph/Query/subquery/param_type.ts +12 -0
- package/src/tests/__isograph/Query/subquery/parameters_type.ts +3 -0
- package/src/tests/__isograph/Query/subquery/resolver_reader.ts +47 -0
- package/src/tests/__isograph/iso.ts +22 -11
- package/src/tests/garbageCollection.test.ts +45 -39
- package/src/tests/meNameSuccessor.ts +8 -3
- package/src/tests/nodeQuery.ts +6 -4
- package/src/tests/normalizeData.test.ts +120 -0
- package/src/tests/tsconfig.json +3 -3
- package/tsconfig.json +2 -2
- package/tsconfig.pkg.json +6 -1
- package/vitest.config.ts +20 -0
package/dist/core/read.js
CHANGED
@@ -1,20 +1,22 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.readButDoNotEvaluate = readButDoNotEvaluate;
|
4
|
+
exports.getNetworkRequestOptionsWithDefaults = getNetworkRequestOptionsWithDefaults;
|
4
5
|
const cache_1 = require("./cache");
|
5
6
|
const componentCache_1 = require("./componentCache");
|
6
7
|
const IsographEnvironment_1 = require("./IsographEnvironment");
|
7
8
|
const makeNetworkRequest_1 = require("./makeNetworkRequest");
|
8
9
|
const PromiseWrapper_1 = require("./PromiseWrapper");
|
10
|
+
const logging_1 = require("./logging");
|
9
11
|
function readButDoNotEvaluate(environment, fragmentReference, networkRequestOptions) {
|
10
12
|
var _a;
|
11
|
-
const mutableEncounteredRecords = new
|
13
|
+
const mutableEncounteredRecords = new Map();
|
12
14
|
const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
|
13
15
|
const response = readData(environment, readerWithRefetchQueries.readerArtifact.readerAst, fragmentReference.root, (_a = fragmentReference.variables) !== null && _a !== void 0 ? _a : {}, readerWithRefetchQueries.nestedRefetchQueries, fragmentReference.networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
}
|
16
|
+
(0, logging_1.logMessage)(environment, {
|
17
|
+
kind: 'DoneReading',
|
18
|
+
response,
|
19
|
+
});
|
18
20
|
if (response.kind === 'MissingData') {
|
19
21
|
// There are two cases here that we care about:
|
20
22
|
// 1. the network request is in flight, we haven't suspend on it, and we want
|
@@ -29,11 +31,11 @@ function readButDoNotEvaluate(environment, fragmentReference, networkRequestOpti
|
|
29
31
|
networkRequestOptions.throwOnNetworkError) {
|
30
32
|
// TODO assert that the network request state is not Err
|
31
33
|
throw new Promise((resolve, reject) => {
|
32
|
-
(0, cache_1.
|
34
|
+
(0, cache_1.onNextChangeToRecord)(environment, response.recordLink).then(resolve);
|
33
35
|
fragmentReference.networkRequest.promise.catch(reject);
|
34
36
|
});
|
35
37
|
}
|
36
|
-
throw (0, cache_1.
|
38
|
+
throw (0, cache_1.onNextChangeToRecord)(environment, response.recordLink);
|
37
39
|
}
|
38
40
|
else {
|
39
41
|
return {
|
@@ -42,15 +44,16 @@ function readButDoNotEvaluate(environment, fragmentReference, networkRequestOpti
|
|
42
44
|
};
|
43
45
|
}
|
44
46
|
}
|
45
|
-
exports.readButDoNotEvaluate = readButDoNotEvaluate;
|
46
47
|
function readData(environment, ast, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords) {
|
47
48
|
var _a, _b, _c, _d, _e;
|
48
|
-
|
49
|
-
|
49
|
+
const encounteredIds = (0, cache_1.insertIfNotExists)(mutableEncounteredRecords, root.__typename);
|
50
|
+
encounteredIds.add(root.__link);
|
51
|
+
let storeRecord = (_a = environment.store[root.__typename]) === null || _a === void 0 ? void 0 : _a[root.__link];
|
50
52
|
if (storeRecord === undefined) {
|
51
53
|
return {
|
52
54
|
kind: 'MissingData',
|
53
|
-
reason: 'No record for root ' + root,
|
55
|
+
reason: 'No record for root ' + root.__link,
|
56
|
+
recordLink: root,
|
54
57
|
};
|
55
58
|
}
|
56
59
|
if (storeRecord === null) {
|
@@ -71,10 +74,11 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
71
74
|
if (value === undefined) {
|
72
75
|
return {
|
73
76
|
kind: 'MissingData',
|
74
|
-
reason: 'No value for ' + storeRecordName + ' on root ' + root,
|
77
|
+
reason: 'No value for ' + storeRecordName + ' on root ' + root.__link,
|
78
|
+
recordLink: root,
|
75
79
|
};
|
76
80
|
}
|
77
|
-
target[(
|
81
|
+
target[(_b = field.alias) !== null && _b !== void 0 ? _b : field.fieldName] = value;
|
78
82
|
break;
|
79
83
|
}
|
80
84
|
case 'Linked': {
|
@@ -90,47 +94,85 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
90
94
|
reason: 'No link for ' +
|
91
95
|
storeRecordName +
|
92
96
|
' on root ' +
|
93
|
-
root +
|
97
|
+
root.__link +
|
94
98
|
'. Link is ' +
|
95
99
|
JSON.stringify(item),
|
100
|
+
recordLink: root,
|
96
101
|
};
|
97
102
|
}
|
98
103
|
else if (link === null) {
|
99
104
|
results.push(null);
|
100
105
|
continue;
|
101
106
|
}
|
102
|
-
const result = readData(environment, field.selections, link
|
107
|
+
const result = readData(environment, field.selections, link, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
103
108
|
if (result.kind === 'MissingData') {
|
104
109
|
return {
|
105
110
|
kind: 'MissingData',
|
106
111
|
reason: 'Missing data for ' +
|
107
112
|
storeRecordName +
|
108
113
|
' on root ' +
|
109
|
-
root +
|
114
|
+
root.__link +
|
110
115
|
'. Link is ' +
|
111
116
|
JSON.stringify(item),
|
112
117
|
nestedReason: result,
|
118
|
+
recordLink: result.recordLink,
|
113
119
|
};
|
114
120
|
}
|
115
121
|
results.push(result.data);
|
116
122
|
}
|
117
|
-
target[(
|
123
|
+
target[(_c = field.alias) !== null && _c !== void 0 ? _c : field.fieldName] = results;
|
118
124
|
break;
|
119
125
|
}
|
120
126
|
let link = (0, IsographEnvironment_1.assertLink)(value);
|
127
|
+
if (field.condition) {
|
128
|
+
const data = readData(environment, field.condition.readerAst, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
129
|
+
if (data.kind === 'MissingData') {
|
130
|
+
return {
|
131
|
+
kind: 'MissingData',
|
132
|
+
reason: 'Missing data for ' +
|
133
|
+
storeRecordName +
|
134
|
+
' on root ' +
|
135
|
+
root.__link,
|
136
|
+
nestedReason: data,
|
137
|
+
recordLink: data.recordLink,
|
138
|
+
};
|
139
|
+
}
|
140
|
+
const condition = field.condition.resolver({
|
141
|
+
data: data.data,
|
142
|
+
parameters: {},
|
143
|
+
});
|
144
|
+
if (condition === true) {
|
145
|
+
link = root;
|
146
|
+
}
|
147
|
+
else if (condition === false) {
|
148
|
+
link = null;
|
149
|
+
}
|
150
|
+
else {
|
151
|
+
link = condition;
|
152
|
+
}
|
153
|
+
}
|
121
154
|
if (link === undefined) {
|
122
155
|
// TODO make this configurable, and also generated and derived from the schema
|
123
|
-
const missingFieldHandler =
|
124
|
-
const altLink = missingFieldHandler(storeRecord, root, field.fieldName, field.arguments, variables);
|
156
|
+
const missingFieldHandler = environment.missingFieldHandler;
|
157
|
+
const altLink = missingFieldHandler === null || missingFieldHandler === void 0 ? void 0 : missingFieldHandler(storeRecord, root, field.fieldName, field.arguments, variables);
|
158
|
+
(0, logging_1.logMessage)(environment, {
|
159
|
+
kind: 'MissingFieldHandlerCalled',
|
160
|
+
root,
|
161
|
+
storeRecord,
|
162
|
+
fieldName: field.fieldName,
|
163
|
+
arguments: field.arguments,
|
164
|
+
variables,
|
165
|
+
});
|
125
166
|
if (altLink === undefined) {
|
126
167
|
return {
|
127
168
|
kind: 'MissingData',
|
128
169
|
reason: 'No link for ' +
|
129
170
|
storeRecordName +
|
130
171
|
' on root ' +
|
131
|
-
root +
|
172
|
+
root.__link +
|
132
173
|
'. Link is ' +
|
133
174
|
JSON.stringify(value),
|
175
|
+
recordLink: root,
|
134
176
|
};
|
135
177
|
}
|
136
178
|
else {
|
@@ -141,13 +183,14 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
141
183
|
target[(_d = field.alias) !== null && _d !== void 0 ? _d : field.fieldName] = null;
|
142
184
|
break;
|
143
185
|
}
|
144
|
-
const targetId = link
|
186
|
+
const targetId = link;
|
145
187
|
const data = readData(environment, field.selections, targetId, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
146
188
|
if (data.kind === 'MissingData') {
|
147
189
|
return {
|
148
190
|
kind: 'MissingData',
|
149
|
-
reason: 'Missing data for ' + storeRecordName + ' on root ' + root,
|
191
|
+
reason: 'Missing data for ' + storeRecordName + ' on root ' + root.__link,
|
150
192
|
nestedReason: data,
|
193
|
+
recordLink: data.recordLink,
|
151
194
|
};
|
152
195
|
}
|
153
196
|
target[(_e = field.alias) !== null && _e !== void 0 ? _e : field.fieldName] = data.data;
|
@@ -165,23 +208,24 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
165
208
|
if (data.kind === 'MissingData') {
|
166
209
|
return {
|
167
210
|
kind: 'MissingData',
|
168
|
-
reason: 'Missing data for ' + field.alias + ' on root ' + root,
|
211
|
+
reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,
|
169
212
|
nestedReason: data,
|
213
|
+
recordLink: data.recordLink,
|
170
214
|
};
|
171
215
|
}
|
172
216
|
else {
|
173
217
|
const refetchQueryIndex = field.refetchQuery;
|
174
|
-
if (refetchQueryIndex == null) {
|
175
|
-
throw new Error('refetchQuery is null in RefetchField');
|
176
|
-
}
|
177
218
|
const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
|
219
|
+
if (refetchQuery == null) {
|
220
|
+
throw new Error('refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.');
|
221
|
+
}
|
178
222
|
const refetchQueryArtifact = refetchQuery.artifact;
|
179
223
|
const allowedVariables = refetchQuery.allowedVariables;
|
180
224
|
// Second, we allow the user to call the resolver, which will ultimately
|
181
225
|
// use the resolver reader AST to get the resolver parameters.
|
182
226
|
target[field.alias] = (args) => [
|
183
227
|
// Stable id
|
184
|
-
root + '__' + field.name,
|
228
|
+
root.__link + '__' + field.name,
|
185
229
|
// Fetcher
|
186
230
|
field.refetchReaderArtifact.resolver(environment, refetchQueryArtifact, data.data, filterVariables(Object.assign(Object.assign({}, args), variables), allowedVariables), root,
|
187
231
|
// TODO these params should be removed
|
@@ -192,19 +236,31 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
192
236
|
}
|
193
237
|
case 'Resolver': {
|
194
238
|
const usedRefetchQueries = field.usedRefetchQueries;
|
195
|
-
const resolverRefetchQueries = usedRefetchQueries.map((index) =>
|
239
|
+
const resolverRefetchQueries = usedRefetchQueries.map((index) => {
|
240
|
+
const resolverRefetchQuery = nestedRefetchQueries[index];
|
241
|
+
if (resolverRefetchQuery == null) {
|
242
|
+
throw new Error('resolverRefetchQuery is null in Resolver. This is indicative of a bug in Isograph.');
|
243
|
+
}
|
244
|
+
return resolverRefetchQuery;
|
245
|
+
});
|
196
246
|
switch (field.readerArtifact.kind) {
|
197
247
|
case 'EagerReaderArtifact': {
|
198
|
-
const data = readData(environment, field.readerArtifact.readerAst, root, variables, resolverRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
248
|
+
const data = readData(environment, field.readerArtifact.readerAst, root, generateChildVariableMap(variables, field.arguments), resolverRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
199
249
|
if (data.kind === 'MissingData') {
|
200
250
|
return {
|
201
251
|
kind: 'MissingData',
|
202
|
-
reason: 'Missing data for ' + field.alias + ' on root ' + root,
|
252
|
+
reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,
|
203
253
|
nestedReason: data,
|
254
|
+
recordLink: data.recordLink,
|
204
255
|
};
|
205
256
|
}
|
206
257
|
else {
|
207
|
-
|
258
|
+
const firstParameter = {
|
259
|
+
data: data.data,
|
260
|
+
parameters: variables,
|
261
|
+
};
|
262
|
+
target[field.alias] =
|
263
|
+
field.readerArtifact.resolver(firstParameter);
|
208
264
|
}
|
209
265
|
break;
|
210
266
|
}
|
@@ -237,12 +293,13 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
237
293
|
if (refetchReaderParams.kind === 'MissingData') {
|
238
294
|
return {
|
239
295
|
kind: 'MissingData',
|
240
|
-
reason: 'Missing data for ' + field.alias + ' on root ' + root,
|
296
|
+
reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,
|
241
297
|
nestedReason: refetchReaderParams,
|
298
|
+
recordLink: refetchReaderParams.recordLink,
|
242
299
|
};
|
243
300
|
}
|
244
301
|
else {
|
245
|
-
target[field.alias] = (args) => {
|
302
|
+
target[field.alias] = (args, fetchOptions) => {
|
246
303
|
// TODO we should use the reader AST for this
|
247
304
|
const includeReadOutData = (variables, readOutData) => {
|
248
305
|
variables.id = readOutData.id;
|
@@ -252,7 +309,9 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
252
309
|
writeQueryArgsToVariables(localVariables, field.queryArguments, variables);
|
253
310
|
return [
|
254
311
|
// Stable id
|
255
|
-
root +
|
312
|
+
root.__typename +
|
313
|
+
':' +
|
314
|
+
root.__link +
|
256
315
|
'/' +
|
257
316
|
field.name +
|
258
317
|
'/' +
|
@@ -260,7 +319,7 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
260
319
|
// Fetcher
|
261
320
|
() => {
|
262
321
|
const fragmentReferenceAndDisposeFromEntrypoint = (entrypoint) => {
|
263
|
-
const [networkRequest, disposeNetworkRequest] = (0, makeNetworkRequest_1.
|
322
|
+
const [networkRequest, disposeNetworkRequest] = (0, makeNetworkRequest_1.maybeMakeNetworkRequest)(environment, entrypoint, localVariables, fetchOptions);
|
264
323
|
const fragmentReference = {
|
265
324
|
kind: 'FragmentReference',
|
266
325
|
readerWithRefetchQueries: (0, PromiseWrapper_1.wrapResolvedValue)({
|
@@ -270,7 +329,7 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
270
329
|
.nestedRefetchQueries,
|
271
330
|
}),
|
272
331
|
// TODO localVariables is not guaranteed to have an id field
|
273
|
-
root
|
332
|
+
root,
|
274
333
|
variables: localVariables,
|
275
334
|
networkRequest,
|
276
335
|
};
|
@@ -290,7 +349,7 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
290
349
|
let entrypointLoaderState = { kind: 'EntrypointNotLoaded' };
|
291
350
|
const networkRequest = (0, PromiseWrapper_1.wrapPromise)(isographArtifactPromiseWrapper.promise.then((entrypoint) => {
|
292
351
|
if (entrypointLoaderState.kind === 'EntrypointNotLoaded') {
|
293
|
-
const [networkRequest, disposeNetworkRequest] = (0, makeNetworkRequest_1.
|
352
|
+
const [networkRequest, disposeNetworkRequest] = (0, makeNetworkRequest_1.maybeMakeNetworkRequest)(environment, entrypoint, localVariables, fetchOptions);
|
294
353
|
entrypointLoaderState = {
|
295
354
|
kind: 'NetworkRequestStarted',
|
296
355
|
disposeNetworkRequest,
|
@@ -303,7 +362,7 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
303
362
|
kind: 'FragmentReference',
|
304
363
|
readerWithRefetchQueries: (0, PromiseWrapper_1.wrapPromise)(readerWithRefetchPromise),
|
305
364
|
// TODO localVariables is not guaranteed to have an id field
|
306
|
-
root
|
365
|
+
root,
|
307
366
|
variables: localVariables,
|
308
367
|
networkRequest,
|
309
368
|
};
|
@@ -353,7 +412,12 @@ function generateChildVariableMap(variables, fieldArguments) {
|
|
353
412
|
const childVars = {};
|
354
413
|
for (const [name, value] of fieldArguments) {
|
355
414
|
if (value.kind === 'Variable') {
|
356
|
-
|
415
|
+
const variable = variables[value.name];
|
416
|
+
// Variable could be null if it was not provided but has a default case,
|
417
|
+
// so we allow the loop to continue rather than throwing an error.
|
418
|
+
if (variable != null) {
|
419
|
+
childVars[name] = variable;
|
420
|
+
}
|
357
421
|
}
|
358
422
|
else {
|
359
423
|
childVars[name] = value.value;
|
@@ -398,7 +462,6 @@ function getNetworkRequestOptionsWithDefaults(networkRequestOptions) {
|
|
398
462
|
throwOnNetworkError: (_b = networkRequestOptions === null || networkRequestOptions === void 0 ? void 0 : networkRequestOptions.throwOnNetworkError) !== null && _b !== void 0 ? _b : true,
|
399
463
|
};
|
400
464
|
}
|
401
|
-
exports.getNetworkRequestOptionsWithDefaults = getNetworkRequestOptionsWithDefaults;
|
402
465
|
// TODO use a description of the params for this?
|
403
466
|
// TODO call stableStringifyArgs on the variable values, as well.
|
404
467
|
// This doesn't matter for now, since we are just using primitive values
|
package/dist/core/reader.d.ts
CHANGED
@@ -1,25 +1,41 @@
|
|
1
|
-
/// <reference types="react" />
|
2
1
|
import { Factory } from '@isograph/disposable-types';
|
3
|
-
import { FragmentReference } from './FragmentReference';
|
4
|
-
import { ComponentOrFieldName,
|
2
|
+
import { FragmentReference, ExtractParameters, ExtractData } from './FragmentReference';
|
3
|
+
import { ComponentOrFieldName, IsographEnvironment, type Link } from './IsographEnvironment';
|
5
4
|
import { IsographEntrypoint, IsographEntrypointLoader, RefetchQueryNormalizationArtifact, RefetchQueryNormalizationArtifactWrapper } from './entrypoint';
|
6
5
|
import { Arguments } from './util';
|
7
|
-
|
8
|
-
export type
|
6
|
+
import { FetchOptions } from './check';
|
7
|
+
export type TopLevelReaderArtifact<TReadFromStore extends {
|
8
|
+
parameters: object;
|
9
|
+
data: object;
|
10
|
+
}, TClientFieldValue, TComponentProps extends Record<PropertyKey, never>> = EagerReaderArtifact<TReadFromStore, TClientFieldValue> | ComponentReaderArtifact<TReadFromStore, TComponentProps>;
|
11
|
+
export type EagerReaderArtifact<TReadFromStore extends {
|
12
|
+
parameters: object;
|
13
|
+
data: object;
|
14
|
+
}, TClientFieldValue> = {
|
9
15
|
readonly kind: 'EagerReaderArtifact';
|
10
16
|
readonly readerAst: ReaderAst<TReadFromStore>;
|
11
|
-
readonly resolver: (data: TReadFromStore) => TClientFieldValue;
|
17
|
+
readonly resolver: (data: ResolverFirstParameter<TReadFromStore>) => TClientFieldValue;
|
12
18
|
};
|
13
|
-
export type ComponentReaderArtifact<TReadFromStore extends
|
19
|
+
export type ComponentReaderArtifact<TReadFromStore extends {
|
20
|
+
parameters: object;
|
21
|
+
data: object;
|
22
|
+
}, TComponentProps extends Record<string, unknown> = Record<PropertyKey, never>> = {
|
14
23
|
readonly kind: 'ComponentReaderArtifact';
|
15
24
|
readonly componentName: ComponentOrFieldName;
|
16
25
|
readonly readerAst: ReaderAst<TReadFromStore>;
|
17
|
-
readonly resolver: (data: TReadFromStore
|
26
|
+
readonly resolver: (data: ResolverFirstParameter<TReadFromStore>, runtimeProps: TComponentProps) => React.ReactNode;
|
27
|
+
};
|
28
|
+
export type ResolverFirstParameter<TReadFromStore extends {
|
29
|
+
data: object;
|
30
|
+
parameters: object;
|
31
|
+
}> = {
|
32
|
+
data: ExtractData<TReadFromStore>;
|
33
|
+
parameters: ExtractParameters<TReadFromStore>;
|
18
34
|
};
|
19
35
|
export type RefetchReaderArtifact = {
|
20
36
|
readonly kind: 'RefetchReaderArtifact';
|
21
37
|
readonly readerAst: ReaderAst<unknown>;
|
22
|
-
readonly resolver: (environment: IsographEnvironment, artifact: RefetchQueryNormalizationArtifact, variables: any, filteredVariables: any,
|
38
|
+
readonly resolver: (environment: IsographEnvironment, artifact: RefetchQueryNormalizationArtifact, variables: any, filteredVariables: any, rootLink: Link, readerArtifact: TopLevelReaderArtifact<any, any, any> | null, nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[]) => () => void;
|
23
39
|
};
|
24
40
|
export type ReaderAstNode = ReaderScalarField | ReaderLinkedField | ReaderNonLoadableResolverField | ReaderImperativelyLoadedField | ReaderLoadableField;
|
25
41
|
export type ReaderAst<TReadFromStore> = ReadonlyArray<ReaderAstNode>;
|
@@ -35,6 +51,10 @@ export type ReaderLinkedField = {
|
|
35
51
|
readonly alias: string | null;
|
36
52
|
readonly selections: ReaderAst<unknown>;
|
37
53
|
readonly arguments: Arguments | null;
|
54
|
+
readonly condition: EagerReaderArtifact<{
|
55
|
+
data: object;
|
56
|
+
parameters: object;
|
57
|
+
}, boolean | Link | null> | null;
|
38
58
|
};
|
39
59
|
export type ReaderNonLoadableResolverField = {
|
40
60
|
readonly kind: 'Resolver';
|
@@ -59,5 +79,9 @@ export type ReaderLoadableField = {
|
|
59
79
|
readonly entrypoint: IsographEntrypoint<any, any> | IsographEntrypointLoader<any, any>;
|
60
80
|
};
|
61
81
|
type StableId = string;
|
62
|
-
export type LoadableField<
|
82
|
+
export type LoadableField<TReadFromStore extends {
|
83
|
+
data: object;
|
84
|
+
parameters: object;
|
85
|
+
}, TResult, TArgs = ExtractParameters<TReadFromStore>> = (args: TArgs | void, fetchOptions: FetchOptions) => [StableId, Factory<FragmentReference<TReadFromStore, TResult>>];
|
63
86
|
export {};
|
87
|
+
//# sourceMappingURL=reader.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/core/reader.ts"],"names":[],"mappings":"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"}
|
package/dist/core/util.d.ts
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
export type ExtractSecondParam<T extends (arg1: any, arg2: any) => any> = T extends (arg1: any, arg2: infer P) => any ? P : never;
|
2
|
+
export type CombineWithIntrinsicAttributes<T> = T extends Record<PropertyKey, never> ? JSX.IntrinsicAttributes : T & JSX.IntrinsicAttributes;
|
2
3
|
export type Arguments = Argument[];
|
3
4
|
export type Argument = [ArgumentName, ArgumentValue];
|
4
5
|
export type ArgumentName = string;
|
@@ -15,3 +16,4 @@ export type ArgumentValue = {
|
|
15
16
|
readonly kind: 'Enum';
|
16
17
|
readonly value: string;
|
17
18
|
};
|
19
|
+
//# sourceMappingURL=util.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/core/util.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,GAAG,IACpE,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AAC1D,MAAM,MAAM,8BAA8B,CAAC,CAAC,IAC1C,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,GAChC,GAAG,CAAC,mBAAmB,GACvB,CAAC,GAAG,GAAG,CAAC,mBAAmB,CAAC;AAElC,MAAM,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC;AACnC,MAAM,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AACrD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAClC,MAAM,MAAM,aAAa,GACrB;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;CACrB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC"}
|
package/dist/index.d.ts
CHANGED
@@ -2,12 +2,14 @@ export { retainQuery, unretainQuery, type RetainedQuery, garbageCollectEnvironme
|
|
2
2
|
export { type PromiseWrapper, readPromise, getPromiseState, wrapResolvedValue, wrapPromise, } from './core/PromiseWrapper';
|
3
3
|
export { subscribe, normalizeData } 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 Link, type StoreRecord, createIsographEnvironment, createIsographStore,
|
6
|
-
export { type EagerReaderArtifact, type ComponentReaderArtifact, type RefetchReaderArtifact, type ReaderAst, type ReaderAstNode, type ReaderLinkedField, type ReaderNonLoadableResolverField, type ReaderScalarField, type TopLevelReaderArtifact, type LoadableField, } from './core/reader';
|
7
|
-
export { type NormalizationAst, type NormalizationAstNode, type NormalizationLinkedField, type NormalizationScalarField, type IsographEntrypoint, assertIsEntrypoint, type RefetchQueryNormalizationArtifact, type RefetchQueryNormalizationArtifactWrapper, type ExtractProps, type ExtractReadFromStore, type ExtractResolverResult, } from './core/entrypoint';
|
5
|
+
export { ROOT_ID, type DataId, type DataTypeValue, type IsographEnvironment, type IsographNetworkFunction, type IsographStore, type Link, type StoreRecord, createIsographEnvironment, createIsographStore, } from './core/IsographEnvironment';
|
6
|
+
export { type EagerReaderArtifact, type ComponentReaderArtifact, type RefetchReaderArtifact, type ReaderAst, type ReaderAstNode, type ReaderLinkedField, type ReaderNonLoadableResolverField, type ReaderScalarField, type TopLevelReaderArtifact, type LoadableField, type ResolverFirstParameter, } from './core/reader';
|
7
|
+
export { type NormalizationAst, type NormalizationAstNode, type NormalizationLinkedField, type NormalizationScalarField, type IsographEntrypoint, assertIsEntrypoint, type RefetchQueryNormalizationArtifact, type RefetchQueryNormalizationArtifactWrapper, type ExtractProps, type ExtractReadFromStore, type ExtractResolverResult, type NetworkRequestInfo, } from './core/entrypoint';
|
8
8
|
export { readButDoNotEvaluate } from './core/read';
|
9
|
-
export { type ExtractSecondParam, type Argument, type ArgumentName, type ArgumentValue, type Arguments, } from './core/util';
|
10
|
-
export { type FragmentReference, type Variables, stableIdForFragmentReference, } from './core/FragmentReference';
|
9
|
+
export { type ExtractSecondParam, type CombineWithIntrinsicAttributes, type Argument, type ArgumentName, type ArgumentValue, type Arguments, } from './core/util';
|
10
|
+
export { type FragmentReference, type Variables, type ExtractParameters, type ExtractData, stableIdForFragmentReference, } from './core/FragmentReference';
|
11
|
+
export { type LogMessage, type LogFunction, logMessage, registerLogger, } from './core/logging';
|
12
|
+
export { check, CheckResult, FetchOptions, ShouldFetch } from './core/check';
|
11
13
|
export { IsographEnvironmentProvider, useIsographEnvironment, type IsographEnvironmentProviderProps, } from './react/IsographEnvironmentProvider';
|
12
14
|
export { useImperativeReference } from './react/useImperativeReference';
|
13
15
|
export { FragmentReader } from './react/FragmentReader';
|
@@ -15,7 +17,10 @@ export { useResult } from './react/useResult';
|
|
15
17
|
export { useReadAndSubscribe, useSubscribeToMultiple, } from './react/useReadAndSubscribe';
|
16
18
|
export { useLazyReference } from './react/useLazyReference';
|
17
19
|
export { useRerenderOnChange } from './react/useRerenderOnChange';
|
20
|
+
export { RenderAfterCommit__DO_NOT_USE } from './react/RenderAfterCommit__DO_NOT_USE';
|
18
21
|
export { useClientSideDefer } from './loadable-hooks/useClientSideDefer';
|
19
22
|
export { useImperativeExposedMutationField } from './loadable-hooks/useImperativeExposedMutationField';
|
20
23
|
export { useSkipLimitPagination } from './loadable-hooks/useSkipLimitPagination';
|
24
|
+
export { useConnectionSpecPagination } from './loadable-hooks/useConnectionSpecPagination';
|
21
25
|
export { useImperativeLoadableField } from './loadable-hooks/useImperativeLoadableField';
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
@@ -0,0 +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,GAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,cAAc,EACnB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,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,EAClB,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,8BAA8B,EACnC,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,KAAK,iCAAiC,EACtC,KAAK,wCAAwC,EAC7C,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,8BAA8B,EACnC,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,UAAU,EACV,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE7E,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,KAAK,gCAAgC,GACtC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAEtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oDAAoD,CAAC;AACvG,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAC3F,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC"}
|
package/dist/index.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.useImperativeLoadableField = exports.useSkipLimitPagination = exports.useImperativeExposedMutationField = exports.useClientSideDefer = exports.useRerenderOnChange = exports.useLazyReference = exports.useSubscribeToMultiple = exports.useReadAndSubscribe = exports.useResult = exports.FragmentReader = exports.useImperativeReference = exports.useIsographEnvironment = exports.IsographEnvironmentProvider = exports.
|
3
|
+
exports.useImperativeLoadableField = exports.useConnectionSpecPagination = exports.useSkipLimitPagination = exports.useImperativeExposedMutationField = exports.useClientSideDefer = exports.RenderAfterCommit__DO_NOT_USE = exports.useRerenderOnChange = exports.useLazyReference = exports.useSubscribeToMultiple = exports.useReadAndSubscribe = exports.useResult = exports.FragmentReader = exports.useImperativeReference = exports.useIsographEnvironment = exports.IsographEnvironmentProvider = exports.check = exports.registerLogger = exports.logMessage = exports.stableIdForFragmentReference = exports.readButDoNotEvaluate = exports.assertIsEntrypoint = exports.createIsographStore = exports.createIsographEnvironment = exports.ROOT_ID = exports.makeNetworkRequest = exports.normalizeData = exports.subscribe = exports.wrapPromise = exports.wrapResolvedValue = exports.getPromiseState = exports.readPromise = exports.garbageCollectEnvironment = exports.unretainQuery = exports.retainQuery = void 0;
|
4
4
|
var garbageCollection_1 = require("./core/garbageCollection");
|
5
5
|
Object.defineProperty(exports, "retainQuery", { enumerable: true, get: function () { return garbageCollection_1.retainQuery; } });
|
6
6
|
Object.defineProperty(exports, "unretainQuery", { enumerable: true, get: function () { return garbageCollection_1.unretainQuery; } });
|
@@ -19,13 +19,17 @@ var IsographEnvironment_1 = require("./core/IsographEnvironment");
|
|
19
19
|
Object.defineProperty(exports, "ROOT_ID", { enumerable: true, get: function () { return IsographEnvironment_1.ROOT_ID; } });
|
20
20
|
Object.defineProperty(exports, "createIsographEnvironment", { enumerable: true, get: function () { return IsographEnvironment_1.createIsographEnvironment; } });
|
21
21
|
Object.defineProperty(exports, "createIsographStore", { enumerable: true, get: function () { return IsographEnvironment_1.createIsographStore; } });
|
22
|
-
Object.defineProperty(exports, "defaultMissingFieldHandler", { enumerable: true, get: function () { return IsographEnvironment_1.defaultMissingFieldHandler; } });
|
23
22
|
var entrypoint_1 = require("./core/entrypoint");
|
24
23
|
Object.defineProperty(exports, "assertIsEntrypoint", { enumerable: true, get: function () { return entrypoint_1.assertIsEntrypoint; } });
|
25
24
|
var read_1 = require("./core/read");
|
26
25
|
Object.defineProperty(exports, "readButDoNotEvaluate", { enumerable: true, get: function () { return read_1.readButDoNotEvaluate; } });
|
27
26
|
var FragmentReference_1 = require("./core/FragmentReference");
|
28
27
|
Object.defineProperty(exports, "stableIdForFragmentReference", { enumerable: true, get: function () { return FragmentReference_1.stableIdForFragmentReference; } });
|
28
|
+
var logging_1 = require("./core/logging");
|
29
|
+
Object.defineProperty(exports, "logMessage", { enumerable: true, get: function () { return logging_1.logMessage; } });
|
30
|
+
Object.defineProperty(exports, "registerLogger", { enumerable: true, get: function () { return logging_1.registerLogger; } });
|
31
|
+
var check_1 = require("./core/check");
|
32
|
+
Object.defineProperty(exports, "check", { enumerable: true, get: function () { return check_1.check; } });
|
29
33
|
var IsographEnvironmentProvider_1 = require("./react/IsographEnvironmentProvider");
|
30
34
|
Object.defineProperty(exports, "IsographEnvironmentProvider", { enumerable: true, get: function () { return IsographEnvironmentProvider_1.IsographEnvironmentProvider; } });
|
31
35
|
Object.defineProperty(exports, "useIsographEnvironment", { enumerable: true, get: function () { return IsographEnvironmentProvider_1.useIsographEnvironment; } });
|
@@ -42,11 +46,15 @@ var useLazyReference_1 = require("./react/useLazyReference");
|
|
42
46
|
Object.defineProperty(exports, "useLazyReference", { enumerable: true, get: function () { return useLazyReference_1.useLazyReference; } });
|
43
47
|
var useRerenderOnChange_1 = require("./react/useRerenderOnChange");
|
44
48
|
Object.defineProperty(exports, "useRerenderOnChange", { enumerable: true, get: function () { return useRerenderOnChange_1.useRerenderOnChange; } });
|
49
|
+
var RenderAfterCommit__DO_NOT_USE_1 = require("./react/RenderAfterCommit__DO_NOT_USE");
|
50
|
+
Object.defineProperty(exports, "RenderAfterCommit__DO_NOT_USE", { enumerable: true, get: function () { return RenderAfterCommit__DO_NOT_USE_1.RenderAfterCommit__DO_NOT_USE; } });
|
45
51
|
var useClientSideDefer_1 = require("./loadable-hooks/useClientSideDefer");
|
46
52
|
Object.defineProperty(exports, "useClientSideDefer", { enumerable: true, get: function () { return useClientSideDefer_1.useClientSideDefer; } });
|
47
53
|
var useImperativeExposedMutationField_1 = require("./loadable-hooks/useImperativeExposedMutationField");
|
48
54
|
Object.defineProperty(exports, "useImperativeExposedMutationField", { enumerable: true, get: function () { return useImperativeExposedMutationField_1.useImperativeExposedMutationField; } });
|
49
55
|
var useSkipLimitPagination_1 = require("./loadable-hooks/useSkipLimitPagination");
|
50
56
|
Object.defineProperty(exports, "useSkipLimitPagination", { enumerable: true, get: function () { return useSkipLimitPagination_1.useSkipLimitPagination; } });
|
57
|
+
var useConnectionSpecPagination_1 = require("./loadable-hooks/useConnectionSpecPagination");
|
58
|
+
Object.defineProperty(exports, "useConnectionSpecPagination", { enumerable: true, get: function () { return useConnectionSpecPagination_1.useConnectionSpecPagination; } });
|
51
59
|
var useImperativeLoadableField_1 = require("./loadable-hooks/useImperativeLoadableField");
|
52
60
|
Object.defineProperty(exports, "useImperativeLoadableField", { enumerable: true, get: function () { return useImperativeLoadableField_1.useImperativeLoadableField; } });
|
@@ -1,4 +1,16 @@
|
|
1
|
-
import { FragmentReference } from '../core/FragmentReference';
|
1
|
+
import { ExtractParameters, FragmentReference } from '../core/FragmentReference';
|
2
2
|
import { LoadableField } from '../core/reader';
|
3
|
-
|
4
|
-
export declare function useClientSideDefer<
|
3
|
+
import { FetchOptions } from '../core/check';
|
4
|
+
export declare function useClientSideDefer<TReadFromStore extends {
|
5
|
+
data: object;
|
6
|
+
parameters: object;
|
7
|
+
}, TResult>(loadableField: LoadableField<TReadFromStore, TResult, ExtractParameters<TReadFromStore>>, args?: Record<PropertyKey, never>, fetchOptions?: FetchOptions): {
|
8
|
+
fragmentReference: FragmentReference<TReadFromStore, TResult>;
|
9
|
+
};
|
10
|
+
export declare function useClientSideDefer<TReadFromStore extends {
|
11
|
+
data: object;
|
12
|
+
parameters: object;
|
13
|
+
}, TResult, TProvidedArgs extends object>(loadableField: LoadableField<TReadFromStore, TResult, Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>>, args: Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>, fetchOptions?: FetchOptions): {
|
14
|
+
fragmentReference: FragmentReference<TReadFromStore, TResult>;
|
15
|
+
};
|
16
|
+
//# sourceMappingURL=useClientSideDefer.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useClientSideDefer.d.ts","sourceRoot":"","sources":["../../src/loadable-hooks/useClientSideDefer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,wBAAgB,kBAAkB,CAChC,cAAc,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC3D,OAAO,EAEP,aAAa,EAAE,aAAa,CAC1B,cAAc,EACd,OAAO,EACP,iBAAiB,CAAC,cAAc,CAAC,CAClC,EACD,IAAI,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,EACjC,YAAY,CAAC,EAAE,YAAY,GAC1B;IAAE,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAErE,wBAAgB,kBAAkB,CAChC,cAAc,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC3D,OAAO,EACP,aAAa,SAAS,MAAM,EAE5B,aAAa,EAAE,aAAa,CAC1B,cAAc,EACd,OAAO,EACP,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,MAAM,aAAa,CAAC,CAC7D,EACD,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,MAAM,aAAa,CAAC,EAClE,YAAY,CAAC,EAAE,YAAY,GAC1B;IAAE,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC"}
|
@@ -1,15 +1,13 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.useClientSideDefer =
|
3
|
+
exports.useClientSideDefer = useClientSideDefer;
|
4
4
|
const IsographEnvironmentProvider_1 = require("../react/IsographEnvironmentProvider");
|
5
5
|
const cache_1 = require("../core/cache");
|
6
6
|
const react_disposable_state_1 = require("@isograph/react-disposable-state");
|
7
|
-
function useClientSideDefer(loadableField, args) {
|
8
|
-
|
9
|
-
const [id, loader] = loadableField(args);
|
7
|
+
function useClientSideDefer(loadableField, args, fetchOptions) {
|
8
|
+
const [id, loader] = loadableField(args, fetchOptions !== null && fetchOptions !== void 0 ? fetchOptions : {});
|
10
9
|
const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
|
11
10
|
const cache = (0, cache_1.getOrCreateItemInSuspenseCache)(environment, id, loader);
|
12
11
|
const fragmentReference = (0, react_disposable_state_1.useLazyDisposableState)(cache).state;
|
13
|
-
return fragmentReference;
|
12
|
+
return { fragmentReference };
|
14
13
|
}
|
15
|
-
exports.useClientSideDefer = useClientSideDefer;
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import { FragmentReference } from '../core/FragmentReference';
|
2
|
+
import { LoadableField } from '../core/reader';
|
3
|
+
import { FetchOptions } from '../core/check';
|
4
|
+
type UsePaginationReturnValue<TReadFromStore extends {
|
5
|
+
parameters: object;
|
6
|
+
data: object;
|
7
|
+
}, TItem> = {
|
8
|
+
kind: 'Pending';
|
9
|
+
pendingFragment: FragmentReference<TReadFromStore, Connection<TItem>>;
|
10
|
+
results: ReadonlyArray<TItem>;
|
11
|
+
} | {
|
12
|
+
kind: 'Complete';
|
13
|
+
fetchMore: (count: number, fetchOptions?: FetchOptions) => void;
|
14
|
+
results: ReadonlyArray<TItem>;
|
15
|
+
hasNextPage: boolean;
|
16
|
+
};
|
17
|
+
type PageInfo = {
|
18
|
+
readonly hasNextPage: boolean;
|
19
|
+
readonly endCursor: string | null;
|
20
|
+
};
|
21
|
+
type Connection<T> = {
|
22
|
+
readonly edges: ReadonlyArray<T> | null;
|
23
|
+
readonly pageInfo: PageInfo;
|
24
|
+
};
|
25
|
+
type UseConnectionSpecPaginationArgs = {
|
26
|
+
first: number;
|
27
|
+
after: string | null;
|
28
|
+
};
|
29
|
+
export declare function useConnectionSpecPagination<TReadFromStore extends {
|
30
|
+
parameters: object;
|
31
|
+
data: object;
|
32
|
+
}, TItem>(loadableField: LoadableField<TReadFromStore, Connection<TItem>, UseConnectionSpecPaginationArgs>, initialState?: PageInfo): UsePaginationReturnValue<TReadFromStore, TItem>;
|
33
|
+
export {};
|
34
|
+
//# sourceMappingURL=useConnectionSpecPagination.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useConnectionSpecPagination.d.ts","sourceRoot":"","sources":["../../src/loadable-hooks/useConnectionSpecPagination.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAM9D,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAI/D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,KAAK,wBAAwB,CAC3B,cAAc,SAAS;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC3D,KAAK,IAEH;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,EAAE,iBAAiB,CAAC,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;CAC/B,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAChE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAwBN,KAAK,QAAQ,GAAG;IACd,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,KAAK,UAAU,CAAC,CAAC,IAAI;IACnB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAOF,KAAK,+BAA+B,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,cAAc,SAAS;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,EACD,KAAK,EAEL,aAAa,EAAE,aAAa,CAC1B,cAAc,EACd,UAAU,CAAC,KAAK,CAAC,EACjB,+BAA+B,CAChC,EACD,YAAY,CAAC,EAAE,QAAQ,GACtB,wBAAwB,CAAC,cAAc,EAAE,KAAK,CAAC,CA4OjD"}
|