@isograph/react 0.0.0-main-8821fa52 → 0.0.0-main-7faadacd
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-compile-typescript.log +1 -1
- package/dist/core/read.d.ts +3 -1
- package/dist/core/read.d.ts.map +1 -1
- package/dist/core/read.js +44 -33
- package/package.json +4 -4
- package/src/core/read.ts +72 -43
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @isograph/react@0.0.0-main-
|
|
2
|
+
> @isograph/react@0.0.0-main-7faadacd compile-typescript /Users/runner/work/isograph/isograph/libs/isograph-react
|
|
3
3
|
> rm -rf dist/* && tsc -p tsconfig.pkg.json
|
|
4
4
|
|
package/dist/core/read.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type EncounteredIds } from './cache';
|
|
2
|
+
import { RefetchQueryNormalizationArtifactWrapper } from './entrypoint';
|
|
2
3
|
import { ExtractData, FragmentReference, Variables, type UnknownTReadFromStore } from './FragmentReference';
|
|
3
4
|
import { IsographEnvironment, type DataTypeValue, type Link, type StoreRecord } from './IsographEnvironment';
|
|
4
5
|
import { PromiseWrapper } from './PromiseWrapper';
|
|
5
|
-
import { ReaderAst, type ReaderLinkedField, type ReaderScalarField } from './reader';
|
|
6
|
+
import { ReaderAst, type ReaderImperativelyLoadedField, type ReaderLinkedField, type ReaderScalarField } from './reader';
|
|
6
7
|
export type WithEncounteredRecords<T> = {
|
|
7
8
|
readonly encounteredRecords: EncounteredIds;
|
|
8
9
|
readonly item: ExtractData<T>;
|
|
@@ -25,4 +26,5 @@ export type NetworkRequestReaderOptions = {
|
|
|
25
26
|
throwOnNetworkError: boolean;
|
|
26
27
|
};
|
|
27
28
|
export declare function getNetworkRequestOptionsWithDefaults(networkRequestOptions?: Partial<NetworkRequestReaderOptions> | void): NetworkRequestReaderOptions;
|
|
29
|
+
export declare function readImperativelyLoadedField(environment: IsographEnvironment, field: ReaderImperativelyLoadedField, root: Link, variables: Variables, nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[], networkRequest: PromiseWrapper<void, any>, networkRequestOptions: NetworkRequestReaderOptions, mutableEncounteredRecords: EncounteredIds): ReadDataResult<unknown>;
|
|
28
30
|
//# sourceMappingURL=read.d.ts.map
|
package/dist/core/read.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/core/read.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/core/read.ts"],"names":[],"mappings":"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"}
|
package/dist/core/read.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.readButDoNotEvaluate = readButDoNotEvaluate;
|
|
|
4
4
|
exports.readScalarFieldData = readScalarFieldData;
|
|
5
5
|
exports.readLinkedFieldData = readLinkedFieldData;
|
|
6
6
|
exports.getNetworkRequestOptionsWithDefaults = getNetworkRequestOptionsWithDefaults;
|
|
7
|
+
exports.readImperativelyLoadedField = readImperativelyLoadedField;
|
|
7
8
|
const cache_1 = require("./cache");
|
|
8
9
|
const componentCache_1 = require("./componentCache");
|
|
9
10
|
const IsographEnvironment_1 = require("./IsographEnvironment");
|
|
@@ -99,41 +100,11 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
|
99
100
|
break;
|
|
100
101
|
}
|
|
101
102
|
case 'ImperativelyLoadedField': {
|
|
102
|
-
|
|
103
|
-
// id field).
|
|
104
|
-
const data = readData(environment, field.refetchReaderArtifact.readerAst, root, variables,
|
|
105
|
-
// Refetch fields just read the id, and don't need refetch query artifacts
|
|
106
|
-
[],
|
|
107
|
-
// This is probably indicative of the fact that we are doing redundant checks
|
|
108
|
-
// on the status of this network request...
|
|
109
|
-
networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
|
103
|
+
const data = readImperativelyLoadedField(environment, field, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
|
110
104
|
if (data.kind === 'MissingData') {
|
|
111
|
-
return
|
|
112
|
-
kind: 'MissingData',
|
|
113
|
-
reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,
|
|
114
|
-
nestedReason: data,
|
|
115
|
-
recordLink: data.recordLink,
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
const refetchQueryIndex = field.refetchQuery;
|
|
120
|
-
const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
|
|
121
|
-
if (refetchQuery == null) {
|
|
122
|
-
throw new Error('refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.');
|
|
123
|
-
}
|
|
124
|
-
const refetchQueryArtifact = refetchQuery.artifact;
|
|
125
|
-
const allowedVariables = refetchQuery.allowedVariables;
|
|
126
|
-
// Second, we allow the user to call the resolver, which will ultimately
|
|
127
|
-
// use the resolver reader AST to get the resolver parameters.
|
|
128
|
-
target[field.alias] = (args) => [
|
|
129
|
-
// Stable id
|
|
130
|
-
root.__link + '__' + field.name,
|
|
131
|
-
// Fetcher
|
|
132
|
-
field.refetchReaderArtifact.resolver(environment, refetchQueryArtifact, data.data, filterVariables(Object.assign(Object.assign({}, args), variables), allowedVariables), root,
|
|
133
|
-
// TODO these params should be removed
|
|
134
|
-
null, []),
|
|
135
|
-
];
|
|
105
|
+
return data;
|
|
136
106
|
}
|
|
107
|
+
target[field.alias] = data.data;
|
|
137
108
|
break;
|
|
138
109
|
}
|
|
139
110
|
case 'Resolver': {
|
|
@@ -540,3 +511,43 @@ function stableStringifyArgs(args) {
|
|
|
540
511
|
}
|
|
541
512
|
return s;
|
|
542
513
|
}
|
|
514
|
+
function readImperativelyLoadedField(environment, field, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords) {
|
|
515
|
+
// First, we read the data using the refetch reader AST (i.e. read out the
|
|
516
|
+
// id field).
|
|
517
|
+
const data = readData(environment, field.refetchReaderArtifact.readerAst, root, variables,
|
|
518
|
+
// Refetch fields just read the id, and don't need refetch query artifacts
|
|
519
|
+
[],
|
|
520
|
+
// This is probably indicative of the fact that we are doing redundant checks
|
|
521
|
+
// on the status of this network request...
|
|
522
|
+
networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
|
523
|
+
if (data.kind === 'MissingData') {
|
|
524
|
+
return {
|
|
525
|
+
kind: 'MissingData',
|
|
526
|
+
reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,
|
|
527
|
+
nestedReason: data,
|
|
528
|
+
recordLink: data.recordLink,
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
else {
|
|
532
|
+
const refetchQueryIndex = field.refetchQuery;
|
|
533
|
+
const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
|
|
534
|
+
if (refetchQuery == null) {
|
|
535
|
+
throw new Error('refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.');
|
|
536
|
+
}
|
|
537
|
+
const refetchQueryArtifact = refetchQuery.artifact;
|
|
538
|
+
const allowedVariables = refetchQuery.allowedVariables;
|
|
539
|
+
// Second, we allow the user to call the resolver, which will ultimately
|
|
540
|
+
// use the resolver reader AST to get the resolver parameters.
|
|
541
|
+
return {
|
|
542
|
+
kind: 'Success',
|
|
543
|
+
data: (args) => [
|
|
544
|
+
// Stable id
|
|
545
|
+
root.__link + '__' + field.name,
|
|
546
|
+
// Fetcher
|
|
547
|
+
field.refetchReaderArtifact.resolver(environment, refetchQueryArtifact, data.data, filterVariables(Object.assign(Object.assign({}, args), variables), allowedVariables), root,
|
|
548
|
+
// TODO these params should be removed
|
|
549
|
+
null, []),
|
|
550
|
+
],
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@isograph/react",
|
|
3
|
-
"version": "0.0.0-main-
|
|
3
|
+
"version": "0.0.0-main-7faadacd",
|
|
4
4
|
"description": "Use Isograph with React",
|
|
5
5
|
"homepage": "https://isograph.dev",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"iso-watch": "cross-env ../../target/debug/isograph_cli --config ./isograph.config.json --watch"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@isograph/disposable-types": "0.0.0-main-
|
|
24
|
-
"@isograph/react-disposable-state": "0.0.0-main-
|
|
25
|
-
"@isograph/reference-counted-pointer": "0.0.0-main-
|
|
23
|
+
"@isograph/disposable-types": "0.0.0-main-7faadacd",
|
|
24
|
+
"@isograph/react-disposable-state": "0.0.0-main-7faadacd",
|
|
25
|
+
"@isograph/reference-counted-pointer": "0.0.0-main-7faadacd"
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
28
|
"react": "^18.0.0 || ^19.0.0"
|
package/src/core/read.ts
CHANGED
|
@@ -38,6 +38,7 @@ import {
|
|
|
38
38
|
} from './PromiseWrapper';
|
|
39
39
|
import {
|
|
40
40
|
ReaderAst,
|
|
41
|
+
type ReaderImperativelyLoadedField,
|
|
41
42
|
type ReaderLinkedField,
|
|
42
43
|
type ReaderScalarField,
|
|
43
44
|
} from './reader';
|
|
@@ -211,58 +212,20 @@ function readData<TReadFromStore>(
|
|
|
211
212
|
break;
|
|
212
213
|
}
|
|
213
214
|
case 'ImperativelyLoadedField': {
|
|
214
|
-
|
|
215
|
-
// id field).
|
|
216
|
-
const data = readData(
|
|
215
|
+
const data = readImperativelyLoadedField(
|
|
217
216
|
environment,
|
|
218
|
-
field
|
|
217
|
+
field,
|
|
219
218
|
root,
|
|
220
219
|
variables,
|
|
221
|
-
|
|
222
|
-
[],
|
|
223
|
-
// This is probably indicative of the fact that we are doing redundant checks
|
|
224
|
-
// on the status of this network request...
|
|
220
|
+
nestedRefetchQueries,
|
|
225
221
|
networkRequest,
|
|
226
222
|
networkRequestOptions,
|
|
227
223
|
mutableEncounteredRecords,
|
|
228
224
|
);
|
|
229
225
|
if (data.kind === 'MissingData') {
|
|
230
|
-
return
|
|
231
|
-
kind: 'MissingData',
|
|
232
|
-
reason:
|
|
233
|
-
'Missing data for ' + field.alias + ' on root ' + root.__link,
|
|
234
|
-
nestedReason: data,
|
|
235
|
-
recordLink: data.recordLink,
|
|
236
|
-
};
|
|
237
|
-
} else {
|
|
238
|
-
const refetchQueryIndex = field.refetchQuery;
|
|
239
|
-
const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
|
|
240
|
-
if (refetchQuery == null) {
|
|
241
|
-
throw new Error(
|
|
242
|
-
'refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.',
|
|
243
|
-
);
|
|
244
|
-
}
|
|
245
|
-
const refetchQueryArtifact = refetchQuery.artifact;
|
|
246
|
-
const allowedVariables = refetchQuery.allowedVariables;
|
|
247
|
-
|
|
248
|
-
// Second, we allow the user to call the resolver, which will ultimately
|
|
249
|
-
// use the resolver reader AST to get the resolver parameters.
|
|
250
|
-
target[field.alias] = (args: any) => [
|
|
251
|
-
// Stable id
|
|
252
|
-
root.__link + '__' + field.name,
|
|
253
|
-
// Fetcher
|
|
254
|
-
field.refetchReaderArtifact.resolver(
|
|
255
|
-
environment,
|
|
256
|
-
refetchQueryArtifact,
|
|
257
|
-
data.data,
|
|
258
|
-
filterVariables({ ...args, ...variables }, allowedVariables),
|
|
259
|
-
root,
|
|
260
|
-
// TODO these params should be removed
|
|
261
|
-
null,
|
|
262
|
-
[],
|
|
263
|
-
),
|
|
264
|
-
];
|
|
226
|
+
return data;
|
|
265
227
|
}
|
|
228
|
+
target[field.alias] = data.data;
|
|
266
229
|
break;
|
|
267
230
|
}
|
|
268
231
|
case 'Resolver': {
|
|
@@ -830,3 +793,69 @@ function stableStringifyArgs(args: object) {
|
|
|
830
793
|
}
|
|
831
794
|
return s;
|
|
832
795
|
}
|
|
796
|
+
|
|
797
|
+
export function readImperativelyLoadedField(
|
|
798
|
+
environment: IsographEnvironment,
|
|
799
|
+
field: ReaderImperativelyLoadedField,
|
|
800
|
+
root: Link,
|
|
801
|
+
variables: Variables,
|
|
802
|
+
nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],
|
|
803
|
+
networkRequest: PromiseWrapper<void, any>,
|
|
804
|
+
networkRequestOptions: NetworkRequestReaderOptions,
|
|
805
|
+
mutableEncounteredRecords: EncounteredIds,
|
|
806
|
+
): ReadDataResult<unknown> {
|
|
807
|
+
// First, we read the data using the refetch reader AST (i.e. read out the
|
|
808
|
+
// id field).
|
|
809
|
+
const data = readData(
|
|
810
|
+
environment,
|
|
811
|
+
field.refetchReaderArtifact.readerAst,
|
|
812
|
+
root,
|
|
813
|
+
variables,
|
|
814
|
+
// Refetch fields just read the id, and don't need refetch query artifacts
|
|
815
|
+
[],
|
|
816
|
+
// This is probably indicative of the fact that we are doing redundant checks
|
|
817
|
+
// on the status of this network request...
|
|
818
|
+
networkRequest,
|
|
819
|
+
networkRequestOptions,
|
|
820
|
+
mutableEncounteredRecords,
|
|
821
|
+
);
|
|
822
|
+
if (data.kind === 'MissingData') {
|
|
823
|
+
return {
|
|
824
|
+
kind: 'MissingData',
|
|
825
|
+
reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,
|
|
826
|
+
nestedReason: data,
|
|
827
|
+
recordLink: data.recordLink,
|
|
828
|
+
};
|
|
829
|
+
} else {
|
|
830
|
+
const refetchQueryIndex = field.refetchQuery;
|
|
831
|
+
const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
|
|
832
|
+
if (refetchQuery == null) {
|
|
833
|
+
throw new Error(
|
|
834
|
+
'refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.',
|
|
835
|
+
);
|
|
836
|
+
}
|
|
837
|
+
const refetchQueryArtifact = refetchQuery.artifact;
|
|
838
|
+
const allowedVariables = refetchQuery.allowedVariables;
|
|
839
|
+
|
|
840
|
+
// Second, we allow the user to call the resolver, which will ultimately
|
|
841
|
+
// use the resolver reader AST to get the resolver parameters.
|
|
842
|
+
return {
|
|
843
|
+
kind: 'Success',
|
|
844
|
+
data: (args: any) => [
|
|
845
|
+
// Stable id
|
|
846
|
+
root.__link + '__' + field.name,
|
|
847
|
+
// Fetcher
|
|
848
|
+
field.refetchReaderArtifact.resolver(
|
|
849
|
+
environment,
|
|
850
|
+
refetchQueryArtifact,
|
|
851
|
+
data.data,
|
|
852
|
+
filterVariables({ ...args, ...variables }, allowedVariables),
|
|
853
|
+
root,
|
|
854
|
+
// TODO these params should be removed
|
|
855
|
+
null,
|
|
856
|
+
[],
|
|
857
|
+
),
|
|
858
|
+
],
|
|
859
|
+
};
|
|
860
|
+
}
|
|
861
|
+
}
|