@isograph/react 0.0.0-main-043fded2 → 0.0.0-main-c06bc99a
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 +2 -4
- package/dist/core/cache.js +5 -2
- package/dist/core/componentCache.js +1 -1
- package/dist/core/entrypoint.d.ts +1 -2
- package/dist/core/read.js +12 -6
- package/dist/loadable-hooks/useSuspensefulSkipLimitPagination.js +1 -1
- package/dist/react/useImperativeReference.js +5 -2
- package/dist/react/useResult.js +3 -3
- package/package.json +4 -4
- package/src/core/FragmentReference.ts +3 -7
- package/src/core/cache.ts +6 -3
- package/src/core/componentCache.ts +1 -1
- package/src/core/entrypoint.ts +1 -1
- package/src/core/read.ts +15 -9
- package/src/loadable-hooks/useSuspensefulSkipLimitPagination.ts +1 -1
- package/src/react/useImperativeReference.ts +6 -3
- package/src/react/useResult.ts +5 -3
@@ -1,6 +1,5 @@
|
|
1
1
|
import { DataId } from './IsographEnvironment';
|
2
|
-
import {
|
3
|
-
import { TopLevelReaderArtifact } from './reader';
|
2
|
+
import { ReaderWithRefetchQueries } from '../core/entrypoint';
|
4
3
|
import { PromiseWrapper } from './PromiseWrapper';
|
5
4
|
export type VariableValue = string | number | boolean | null | object;
|
6
5
|
export type Variables = {
|
@@ -8,10 +7,9 @@ export type Variables = {
|
|
8
7
|
};
|
9
8
|
export type FragmentReference<TReadFromStore extends Object, TClientFieldValue> = {
|
10
9
|
readonly kind: 'FragmentReference';
|
11
|
-
readonly
|
10
|
+
readonly readerWithRefetchQueries: ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>;
|
12
11
|
readonly root: DataId;
|
13
12
|
readonly variables: Variables | null;
|
14
|
-
readonly nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[];
|
15
13
|
readonly networkRequest: PromiseWrapper<void, any>;
|
16
14
|
};
|
17
15
|
export declare function stableIdForFragmentReference(fragmentReference: FragmentReference<any, any>): string;
|
package/dist/core/cache.js
CHANGED
@@ -51,10 +51,13 @@ function getOrCreateCacheForArtifact(environment, entrypoint, variables) {
|
|
51
51
|
const itemCleanupPair = [
|
52
52
|
{
|
53
53
|
kind: 'FragmentReference',
|
54
|
-
|
54
|
+
readerWithRefetchQueries: {
|
55
|
+
kind: 'ReaderWithRefetchQueries',
|
56
|
+
readerArtifact: entrypoint.readerWithRefetchQueries.readerArtifact,
|
57
|
+
nestedRefetchQueries: entrypoint.readerWithRefetchQueries.nestedRefetchQueries,
|
58
|
+
},
|
55
59
|
root: IsographEnvironment_1.ROOT_ID,
|
56
60
|
variables,
|
57
|
-
nestedRefetchQueries: entrypoint.readerWithRefetchQueries.nestedRefetchQueries,
|
58
61
|
networkRequest: networkRequest,
|
59
62
|
},
|
60
63
|
disposeNetworkRequest,
|
@@ -26,7 +26,7 @@ function getOrCreateCachedComponent(environment, componentName, fragmentReferenc
|
|
26
26
|
' ' +
|
27
27
|
fragmentReference.root);
|
28
28
|
}
|
29
|
-
return fragmentReference.readerArtifact.resolver(data, additionalRuntimeProps);
|
29
|
+
return fragmentReference.readerWithRefetchQueries.readerArtifact.resolver(data, additionalRuntimeProps);
|
30
30
|
}
|
31
31
|
Component.displayName = `${componentName} (id: ${fragmentReference.root}) @component`;
|
32
32
|
return Component;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/// <reference types="react" />
|
2
2
|
import { TopLevelReaderArtifact } from './reader';
|
3
3
|
import { Arguments } from './util';
|
4
|
-
type ReaderWithRefetchQueries<TReadFromStore extends Object, TClientFieldValue> = {
|
4
|
+
export type ReaderWithRefetchQueries<TReadFromStore extends Object, TClientFieldValue> = {
|
5
5
|
readonly kind: 'ReaderWithRefetchQueries';
|
6
6
|
readonly readerArtifact: TopLevelReaderArtifact<TReadFromStore, TClientFieldValue, any>;
|
7
7
|
readonly nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[];
|
@@ -43,4 +43,3 @@ export declare function assertIsEntrypoint<TReadFromStore extends Object, TClien
|
|
43
43
|
export type ExtractReadFromStore<Type> = Type extends IsographEntrypoint<infer X, any> ? X : never;
|
44
44
|
export type ExtractResolverResult<Type> = Type extends IsographEntrypoint<any, infer X> ? X : never;
|
45
45
|
export type ExtractProps<Type> = Type extends React.FC<infer X> ? X : never;
|
46
|
-
export {};
|
package/dist/core/read.js
CHANGED
@@ -8,7 +8,7 @@ const makeNetworkRequest_1 = require("./makeNetworkRequest");
|
|
8
8
|
function readButDoNotEvaluate(environment, fragmentReference, networkRequestOptions) {
|
9
9
|
var _a;
|
10
10
|
const mutableEncounteredRecords = new Set();
|
11
|
-
const response = readData(environment, fragmentReference.readerArtifact.readerAst, fragmentReference.root, (_a = fragmentReference.variables) !== null && _a !== void 0 ? _a : {}, fragmentReference.nestedRefetchQueries, fragmentReference.networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
11
|
+
const response = readData(environment, fragmentReference.readerWithRefetchQueries.readerArtifact.readerAst, fragmentReference.root, (_a = fragmentReference.variables) !== null && _a !== void 0 ? _a : {}, fragmentReference.readerWithRefetchQueries.nestedRefetchQueries, fragmentReference.networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
12
12
|
// @ts-expect-error
|
13
13
|
if (typeof window !== 'undefined' && window.__LOG) {
|
14
14
|
console.log('done reading', { response });
|
@@ -208,11 +208,14 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
208
208
|
else if (kind === 'ComponentReaderArtifact') {
|
209
209
|
target[field.alias] = (0, componentCache_1.getOrCreateCachedComponent)(environment, field.readerArtifact.componentName, {
|
210
210
|
kind: 'FragmentReference',
|
211
|
-
|
211
|
+
readerWithRefetchQueries: {
|
212
|
+
kind: 'ReaderWithRefetchQueries',
|
213
|
+
readerArtifact: field.readerArtifact,
|
214
|
+
nestedRefetchQueries: resolverRefetchQueries,
|
215
|
+
},
|
212
216
|
root,
|
213
217
|
variables: generateChildVariableMap(variables, field.arguments),
|
214
218
|
networkRequest,
|
215
|
-
nestedRefetchQueries: resolverRefetchQueries,
|
216
219
|
}, networkRequestOptions);
|
217
220
|
}
|
218
221
|
break;
|
@@ -249,12 +252,15 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
249
252
|
const [networkRequest, disposeNetworkRequest] = (0, makeNetworkRequest_1.makeNetworkRequest)(environment, field.entrypoint, localVariables);
|
250
253
|
const fragmentReference = {
|
251
254
|
kind: 'FragmentReference',
|
252
|
-
|
255
|
+
readerWithRefetchQueries: {
|
256
|
+
kind: 'ReaderWithRefetchQueries',
|
257
|
+
readerArtifact: field.entrypoint.readerWithRefetchQueries.readerArtifact,
|
258
|
+
nestedRefetchQueries: field.entrypoint.readerWithRefetchQueries
|
259
|
+
.nestedRefetchQueries,
|
260
|
+
},
|
253
261
|
// TODO localVariables is not guaranteed to have an id field
|
254
262
|
root: localVariables.id,
|
255
263
|
variables: localVariables,
|
256
|
-
nestedRefetchQueries: field.entrypoint.readerWithRefetchQueries
|
257
|
-
.nestedRefetchQueries,
|
258
264
|
networkRequest,
|
259
265
|
};
|
260
266
|
return [fragmentReference, disposeNetworkRequest];
|
@@ -42,7 +42,7 @@ function useSuspensefulSkipLimitPagination(loadableField) {
|
|
42
42
|
}
|
43
43
|
(0, useResult_1.maybeUnwrapNetworkRequest)(fragmentReference.networkRequest, networkRequestOptions);
|
44
44
|
const data = (0, read_1.readButDoNotEvaluate)(environment, fragmentReference, networkRequestOptions);
|
45
|
-
return fragmentReference.readerArtifact.resolver(data.item, undefined);
|
45
|
+
return fragmentReference.readerWithRefetchQueries.readerArtifact.resolver(data.item, undefined);
|
46
46
|
});
|
47
47
|
const items = flatten(results);
|
48
48
|
const loadedSoFar = items.length;
|
@@ -15,10 +15,13 @@ function useImperativeReference(entrypoint) {
|
|
15
15
|
setState([
|
16
16
|
{
|
17
17
|
kind: 'FragmentReference',
|
18
|
-
|
18
|
+
readerWithRefetchQueries: {
|
19
|
+
kind: 'ReaderWithRefetchQueries',
|
20
|
+
readerArtifact: entrypoint.readerWithRefetchQueries.readerArtifact,
|
21
|
+
nestedRefetchQueries: entrypoint.readerWithRefetchQueries.nestedRefetchQueries,
|
22
|
+
},
|
19
23
|
root: IsographEnvironment_1.ROOT_ID,
|
20
24
|
variables,
|
21
|
-
nestedRefetchQueries: entrypoint.readerWithRefetchQueries.nestedRefetchQueries,
|
22
25
|
networkRequest,
|
23
26
|
},
|
24
27
|
() => {
|
package/dist/react/useResult.js
CHANGED
@@ -10,14 +10,14 @@ function useResult(fragmentReference, partialNetworkRequestOptions) {
|
|
10
10
|
const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
|
11
11
|
const networkRequestOptions = (0, read_1.getNetworkRequestOptionsWithDefaults)(partialNetworkRequestOptions);
|
12
12
|
maybeUnwrapNetworkRequest(fragmentReference.networkRequest, networkRequestOptions);
|
13
|
-
switch (fragmentReference.readerArtifact.kind) {
|
13
|
+
switch (fragmentReference.readerWithRefetchQueries.readerArtifact.kind) {
|
14
14
|
case 'ComponentReaderArtifact': {
|
15
15
|
// @ts-expect-error
|
16
|
-
return (0, componentCache_1.getOrCreateCachedComponent)(environment, fragmentReference.readerArtifact.componentName, fragmentReference, networkRequestOptions);
|
16
|
+
return (0, componentCache_1.getOrCreateCachedComponent)(environment, fragmentReference.readerWithRefetchQueries.readerArtifact.componentName, fragmentReference, networkRequestOptions);
|
17
17
|
}
|
18
18
|
case 'EagerReaderArtifact': {
|
19
19
|
const data = (0, useReadAndSubscribe_1.useReadAndSubscribe)(fragmentReference, networkRequestOptions);
|
20
|
-
return fragmentReference.readerArtifact.resolver(data);
|
20
|
+
return fragmentReference.readerWithRefetchQueries.readerArtifact.resolver(data);
|
21
21
|
}
|
22
22
|
}
|
23
23
|
}
|
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-c06bc99a",
|
4
4
|
"description": "Use Isograph with React",
|
5
5
|
"homepage": "https://isograph.dev",
|
6
6
|
"main": "dist/index.js",
|
@@ -17,9 +17,9 @@
|
|
17
17
|
"tsc": "tsc"
|
18
18
|
},
|
19
19
|
"dependencies": {
|
20
|
-
"@isograph/disposable-types": "0.0.0-main-
|
21
|
-
"@isograph/react-disposable-state": "0.0.0-main-
|
22
|
-
"@isograph/reference-counted-pointer": "0.0.0-main-
|
20
|
+
"@isograph/disposable-types": "0.0.0-main-c06bc99a",
|
21
|
+
"@isograph/react-disposable-state": "0.0.0-main-c06bc99a",
|
22
|
+
"@isograph/reference-counted-pointer": "0.0.0-main-c06bc99a"
|
23
23
|
},
|
24
24
|
"peerDependencies": {
|
25
25
|
"react": "18.2.0"
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { DataId } from './IsographEnvironment';
|
2
|
-
import {
|
3
|
-
import { TopLevelReaderArtifact } from './reader';
|
2
|
+
import { ReaderWithRefetchQueries } from '../core/entrypoint';
|
4
3
|
import { PromiseWrapper } from './PromiseWrapper';
|
5
4
|
|
6
5
|
// TODO type this better
|
@@ -13,15 +12,12 @@ export type FragmentReference<
|
|
13
12
|
TClientFieldValue,
|
14
13
|
> = {
|
15
14
|
readonly kind: 'FragmentReference';
|
16
|
-
readonly
|
15
|
+
readonly readerWithRefetchQueries: ReaderWithRefetchQueries<
|
17
16
|
TReadFromStore,
|
18
|
-
TClientFieldValue
|
19
|
-
any
|
17
|
+
TClientFieldValue
|
20
18
|
>;
|
21
19
|
readonly root: DataId;
|
22
20
|
readonly variables: Variables | null;
|
23
|
-
// TODO: We should instead have ReaderAst<TClientFieldProps>
|
24
|
-
readonly nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[];
|
25
21
|
readonly networkRequest: PromiseWrapper<void, any>;
|
26
22
|
};
|
27
23
|
|
package/src/core/cache.ts
CHANGED
@@ -95,11 +95,14 @@ export function getOrCreateCacheForArtifact<
|
|
95
95
|
> = [
|
96
96
|
{
|
97
97
|
kind: 'FragmentReference',
|
98
|
-
|
98
|
+
readerWithRefetchQueries: {
|
99
|
+
kind: 'ReaderWithRefetchQueries',
|
100
|
+
readerArtifact: entrypoint.readerWithRefetchQueries.readerArtifact,
|
101
|
+
nestedRefetchQueries:
|
102
|
+
entrypoint.readerWithRefetchQueries.nestedRefetchQueries,
|
103
|
+
},
|
99
104
|
root: ROOT_ID,
|
100
105
|
variables,
|
101
|
-
nestedRefetchQueries:
|
102
|
-
entrypoint.readerWithRefetchQueries.nestedRefetchQueries,
|
103
106
|
networkRequest: networkRequest,
|
104
107
|
},
|
105
108
|
disposeNetworkRequest,
|
package/src/core/entrypoint.ts
CHANGED
package/src/core/read.ts
CHANGED
@@ -26,10 +26,10 @@ export function readButDoNotEvaluate<TReadFromStore extends Object>(
|
|
26
26
|
const mutableEncounteredRecords = new Set<DataId>();
|
27
27
|
const response = readData(
|
28
28
|
environment,
|
29
|
-
fragmentReference.readerArtifact.readerAst,
|
29
|
+
fragmentReference.readerWithRefetchQueries.readerArtifact.readerAst,
|
30
30
|
fragmentReference.root,
|
31
31
|
fragmentReference.variables ?? {},
|
32
|
-
fragmentReference.nestedRefetchQueries,
|
32
|
+
fragmentReference.readerWithRefetchQueries.nestedRefetchQueries,
|
33
33
|
fragmentReference.networkRequest,
|
34
34
|
networkRequestOptions,
|
35
35
|
mutableEncounteredRecords,
|
@@ -309,11 +309,14 @@ function readData<TReadFromStore>(
|
|
309
309
|
field.readerArtifact.componentName,
|
310
310
|
{
|
311
311
|
kind: 'FragmentReference',
|
312
|
-
|
312
|
+
readerWithRefetchQueries: {
|
313
|
+
kind: 'ReaderWithRefetchQueries',
|
314
|
+
readerArtifact: field.readerArtifact,
|
315
|
+
nestedRefetchQueries: resolverRefetchQueries,
|
316
|
+
},
|
313
317
|
root,
|
314
318
|
variables: generateChildVariableMap(variables, field.arguments),
|
315
319
|
networkRequest,
|
316
|
-
nestedRefetchQueries: resolverRefetchQueries,
|
317
320
|
} as const,
|
318
321
|
networkRequestOptions,
|
319
322
|
);
|
@@ -372,14 +375,17 @@ function readData<TReadFromStore>(
|
|
372
375
|
);
|
373
376
|
const fragmentReference: FragmentReference<any, any> = {
|
374
377
|
kind: 'FragmentReference',
|
375
|
-
|
376
|
-
|
378
|
+
readerWithRefetchQueries: {
|
379
|
+
kind: 'ReaderWithRefetchQueries',
|
380
|
+
readerArtifact:
|
381
|
+
field.entrypoint.readerWithRefetchQueries.readerArtifact,
|
382
|
+
nestedRefetchQueries:
|
383
|
+
field.entrypoint.readerWithRefetchQueries
|
384
|
+
.nestedRefetchQueries,
|
385
|
+
},
|
377
386
|
// TODO localVariables is not guaranteed to have an id field
|
378
387
|
root: localVariables.id,
|
379
388
|
variables: localVariables,
|
380
|
-
nestedRefetchQueries:
|
381
|
-
field.entrypoint.readerWithRefetchQueries
|
382
|
-
.nestedRefetchQueries,
|
383
389
|
networkRequest,
|
384
390
|
};
|
385
391
|
return [fragmentReference, disposeNetworkRequest];
|
@@ -91,7 +91,7 @@ export function useSuspensefulSkipLimitPagination<
|
|
91
91
|
fragmentReference,
|
92
92
|
networkRequestOptions,
|
93
93
|
);
|
94
|
-
return fragmentReference.readerArtifact.resolver(
|
94
|
+
return fragmentReference.readerWithRefetchQueries.readerArtifact.resolver(
|
95
95
|
data.item,
|
96
96
|
undefined,
|
97
97
|
) as ReadonlyArray<any>;
|
@@ -35,11 +35,14 @@ export function useImperativeReference<
|
|
35
35
|
setState([
|
36
36
|
{
|
37
37
|
kind: 'FragmentReference',
|
38
|
-
|
38
|
+
readerWithRefetchQueries: {
|
39
|
+
kind: 'ReaderWithRefetchQueries',
|
40
|
+
readerArtifact: entrypoint.readerWithRefetchQueries.readerArtifact,
|
41
|
+
nestedRefetchQueries:
|
42
|
+
entrypoint.readerWithRefetchQueries.nestedRefetchQueries,
|
43
|
+
},
|
39
44
|
root: ROOT_ID,
|
40
45
|
variables,
|
41
|
-
nestedRefetchQueries:
|
42
|
-
entrypoint.readerWithRefetchQueries.nestedRefetchQueries,
|
43
46
|
networkRequest,
|
44
47
|
},
|
45
48
|
() => {
|
package/src/react/useResult.ts
CHANGED
@@ -22,12 +22,12 @@ export function useResult<TReadFromStore extends Object, TClientFieldValue>(
|
|
22
22
|
networkRequestOptions,
|
23
23
|
);
|
24
24
|
|
25
|
-
switch (fragmentReference.readerArtifact.kind) {
|
25
|
+
switch (fragmentReference.readerWithRefetchQueries.readerArtifact.kind) {
|
26
26
|
case 'ComponentReaderArtifact': {
|
27
27
|
// @ts-expect-error
|
28
28
|
return getOrCreateCachedComponent(
|
29
29
|
environment,
|
30
|
-
fragmentReference.readerArtifact.componentName,
|
30
|
+
fragmentReference.readerWithRefetchQueries.readerArtifact.componentName,
|
31
31
|
fragmentReference,
|
32
32
|
networkRequestOptions,
|
33
33
|
);
|
@@ -37,7 +37,9 @@ export function useResult<TReadFromStore extends Object, TClientFieldValue>(
|
|
37
37
|
fragmentReference,
|
38
38
|
networkRequestOptions,
|
39
39
|
);
|
40
|
-
return fragmentReference.readerArtifact.resolver(
|
40
|
+
return fragmentReference.readerWithRefetchQueries.readerArtifact.resolver(
|
41
|
+
data,
|
42
|
+
);
|
41
43
|
}
|
42
44
|
}
|
43
45
|
}
|