@isograph/react 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-compile-libs.log +2 -2
- package/dist/core/FragmentReference.d.ts +4 -2
- package/dist/core/FragmentReference.d.ts.map +1 -1
- package/dist/core/FragmentReference.js +2 -2
- package/dist/core/IsographEnvironment.d.ts +19 -11
- package/dist/core/IsographEnvironment.d.ts.map +1 -1
- package/dist/core/IsographEnvironment.js +27 -2
- package/dist/core/PromiseWrapper.d.ts +13 -7
- package/dist/core/PromiseWrapper.d.ts.map +1 -1
- package/dist/core/areEqualWithDeepComparison.d.ts.map +1 -1
- package/dist/core/areEqualWithDeepComparison.js +5 -0
- package/dist/core/brand.d.ts +17 -0
- package/dist/core/brand.d.ts.map +1 -1
- package/dist/core/cache.d.ts +10 -7
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/cache.js +102 -74
- package/dist/core/check.d.ts +8 -4
- package/dist/core/check.d.ts.map +1 -1
- package/dist/core/check.js +10 -7
- package/dist/core/componentCache.d.ts +1 -1
- package/dist/core/componentCache.d.ts.map +1 -1
- package/dist/core/componentCache.js +6 -4
- package/dist/core/entrypoint.d.ts +17 -7
- package/dist/core/entrypoint.d.ts.map +1 -1
- package/dist/core/garbageCollection.d.ts +8 -2
- package/dist/core/garbageCollection.d.ts.map +1 -1
- package/dist/core/garbageCollection.js +36 -14
- package/dist/core/logging.d.ts +16 -3
- package/dist/core/logging.d.ts.map +1 -1
- package/dist/core/makeNetworkRequest.d.ts +4 -2
- package/dist/core/makeNetworkRequest.d.ts.map +1 -1
- package/dist/core/makeNetworkRequest.js +115 -38
- package/dist/core/optimisticProxy.d.ts +59 -0
- package/dist/core/optimisticProxy.d.ts.map +1 -0
- package/dist/core/optimisticProxy.js +399 -0
- package/dist/core/read.d.ts +3 -2
- package/dist/core/read.d.ts.map +1 -1
- package/dist/core/read.js +158 -123
- package/dist/core/reader.d.ts +10 -5
- package/dist/core/reader.d.ts.map +1 -1
- package/dist/core/startUpdate.d.ts +3 -2
- package/dist/core/startUpdate.d.ts.map +1 -1
- package/dist/core/startUpdate.js +35 -36
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/loadable-hooks/useClientSideDefer.d.ts +9 -4
- package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
- package/dist/loadable-hooks/useClientSideDefer.js +34 -1
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +5 -3
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useConnectionSpecPagination.js +27 -13
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts +1 -1
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.js +1 -1
- package/dist/react/FragmentReader.d.ts +2 -1
- package/dist/react/FragmentReader.d.ts.map +1 -1
- package/dist/react/FragmentRenderer.d.ts +2 -1
- package/dist/react/FragmentRenderer.d.ts.map +1 -1
- package/dist/react/LoadableFieldReader.d.ts +9 -3
- package/dist/react/LoadableFieldReader.d.ts.map +1 -1
- package/dist/react/LoadableFieldReader.js +40 -1
- package/dist/react/LoadableFieldRenderer.d.ts +9 -3
- package/dist/react/LoadableFieldRenderer.d.ts.map +1 -1
- package/dist/react/LoadableFieldRenderer.js +36 -1
- package/dist/react/useImperativeReference.d.ts +4 -3
- package/dist/react/useImperativeReference.d.ts.map +1 -1
- package/dist/react/useImperativeReference.js +3 -5
- package/dist/react/useLazyReference.d.ts +2 -1
- package/dist/react/useLazyReference.d.ts.map +1 -1
- package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
- package/dist/react/useReadAndSubscribe.js +1 -3
- package/dist/react/useResult.d.ts.map +1 -1
- package/dist/react/useResult.js +6 -5
- package/package.json +16 -17
- package/src/core/FragmentReference.ts +10 -4
- package/src/core/IsographEnvironment.ts +59 -13
- package/src/core/PromiseWrapper.ts +14 -7
- package/src/core/areEqualWithDeepComparison.ts +5 -0
- package/src/core/brand.ts +18 -0
- package/src/core/cache.ts +186 -91
- package/src/core/check.ts +21 -10
- package/src/core/componentCache.ts +8 -4
- package/src/core/entrypoint.ts +35 -6
- package/src/core/garbageCollection.ts +61 -19
- package/src/core/logging.ts +15 -3
- package/src/core/makeNetworkRequest.ts +307 -74
- package/src/core/optimisticProxy.ts +563 -0
- package/src/core/read.ts +233 -163
- package/src/core/reader.ts +11 -7
- package/src/core/startUpdate.ts +47 -32
- package/src/index.ts +2 -1
- package/src/loadable-hooks/useClientSideDefer.ts +76 -26
- package/src/loadable-hooks/useConnectionSpecPagination.ts +34 -17
- package/src/loadable-hooks/useImperativeLoadableField.ts +2 -2
- package/src/loadable-hooks/useSkipLimitPagination.ts +2 -3
- package/src/react/FragmentReader.tsx +3 -1
- package/src/react/FragmentRenderer.tsx +8 -1
- package/src/react/LoadableFieldReader.tsx +123 -12
- package/src/react/LoadableFieldRenderer.tsx +122 -12
- package/src/react/useImperativeReference.ts +20 -11
- package/src/react/useLazyReference.ts +17 -6
- package/src/react/useReadAndSubscribe.ts +1 -8
- package/src/react/useResult.ts +9 -11
- package/src/tests/__isograph/Node/__link/output_type.ts +3 -0
- package/src/tests/__isograph/Node/asEconomist/resolver_reader.ts +3 -3
- package/src/tests/__isograph/Query/linkedUpdate/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/linkedUpdate/param_type.ts +4 -4
- package/src/tests/__isograph/Query/linkedUpdate/raw_response_type.ts +13 -0
- package/src/tests/__isograph/Query/linkedUpdate/resolver_reader.ts +6 -6
- package/src/tests/__isograph/Query/meName/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/meName/raw_response_type.ts +7 -0
- package/src/tests/__isograph/Query/meName/resolver_reader.ts +2 -2
- package/src/tests/__isograph/Query/meNameSuccessor/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/meNameSuccessor/raw_response_type.ts +14 -0
- package/src/tests/__isograph/Query/meNameSuccessor/resolver_reader.ts +4 -4
- package/src/tests/__isograph/Query/nodeField/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/nodeField/raw_response_type.ts +7 -0
- package/src/tests/__isograph/Query/nodeField/resolver_reader.ts +2 -2
- package/src/tests/__isograph/Query/normalizeUndefinedField/entrypoint.ts +33 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/normalization_ast.ts +25 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/output_type.ts +3 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/param_type.ts +9 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/query_text.ts +6 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/raw_response_type.ts +7 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/resolver_reader.ts +38 -0
- package/src/tests/__isograph/Query/startUpdate/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/startUpdate/raw_response_type.ts +8 -0
- package/src/tests/__isograph/Query/startUpdate/resolver_reader.ts +3 -3
- package/src/tests/__isograph/Query/subquery/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/subquery/raw_response_type.ts +9 -0
- package/src/tests/__isograph/Query/subquery/resolver_reader.ts +3 -3
- package/src/tests/__isograph/iso.ts +11 -1
- package/src/tests/garbageCollection.test.ts +8 -5
- package/src/tests/meNameSuccessor.ts +6 -3
- package/src/tests/nodeQuery.ts +4 -2
- package/src/tests/normalizeData.test.ts +89 -15
- package/src/tests/optimisticProxy.test.ts +860 -0
- package/src/tests/startUpdate.test.ts +8 -6
- package/vitest.config.ts +10 -1
- package/src/tests/__isograph/Economist/link/output_type.ts +0 -2
- package/src/tests/__isograph/Node/link/output_type.ts +0 -3
|
@@ -16,6 +16,7 @@ const readerAst: ReaderAst<Query__nodeField__param> = [
|
|
|
16
16
|
],
|
|
17
17
|
condition: null,
|
|
18
18
|
isUpdatable: false,
|
|
19
|
+
refetchQueryIndex: null,
|
|
19
20
|
selections: [
|
|
20
21
|
{
|
|
21
22
|
kind: "Scalar",
|
|
@@ -25,7 +26,6 @@ const readerAst: ReaderAst<Query__nodeField__param> = [
|
|
|
25
26
|
isUpdatable: false,
|
|
26
27
|
},
|
|
27
28
|
],
|
|
28
|
-
refetchQueryIndex: null,
|
|
29
29
|
},
|
|
30
30
|
];
|
|
31
31
|
|
|
@@ -34,7 +34,7 @@ const artifact: EagerReaderArtifact<
|
|
|
34
34
|
Query__nodeField__output_type
|
|
35
35
|
> = {
|
|
36
36
|
kind: "EagerReaderArtifact",
|
|
37
|
-
fieldName: "
|
|
37
|
+
fieldName: "nodeField",
|
|
38
38
|
resolver,
|
|
39
39
|
readerAst,
|
|
40
40
|
hasUpdatable: false,
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
|
|
2
|
+
import {Query__normalizeUndefinedField__param} from './param_type';
|
|
3
|
+
import {Query__normalizeUndefinedField__output_type} from './output_type';
|
|
4
|
+
import type {Query__normalizeUndefinedField__raw_response_type} from './raw_response_type';
|
|
5
|
+
import readerResolver from './resolver_reader';
|
|
6
|
+
import queryText from './query_text';
|
|
7
|
+
import normalizationAst from './normalization_ast';
|
|
8
|
+
const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
|
|
9
|
+
|
|
10
|
+
const artifact: IsographEntrypoint<
|
|
11
|
+
Query__normalizeUndefinedField__param,
|
|
12
|
+
Query__normalizeUndefinedField__output_type,
|
|
13
|
+
NormalizationAst,
|
|
14
|
+
Query__normalizeUndefinedField__raw_response_type
|
|
15
|
+
> = {
|
|
16
|
+
kind: "Entrypoint",
|
|
17
|
+
networkRequestInfo: {
|
|
18
|
+
kind: "NetworkRequestInfo",
|
|
19
|
+
operation: {
|
|
20
|
+
kind: "Operation",
|
|
21
|
+
text: queryText,
|
|
22
|
+
},
|
|
23
|
+
normalizationAst,
|
|
24
|
+
},
|
|
25
|
+
concreteType: "Query",
|
|
26
|
+
readerWithRefetchQueries: {
|
|
27
|
+
kind: "ReaderWithRefetchQueries",
|
|
28
|
+
nestedRefetchQueries,
|
|
29
|
+
readerArtifact: readerResolver,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export default artifact;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type {NormalizationAst} from '@isograph/react';
|
|
2
|
+
const normalizationAst: NormalizationAst = {
|
|
3
|
+
kind: "NormalizationAst",
|
|
4
|
+
selections: [
|
|
5
|
+
{
|
|
6
|
+
kind: "Linked",
|
|
7
|
+
fieldName: "me",
|
|
8
|
+
arguments: null,
|
|
9
|
+
concreteType: "Economist",
|
|
10
|
+
selections: [
|
|
11
|
+
{
|
|
12
|
+
kind: "Scalar",
|
|
13
|
+
fieldName: "id",
|
|
14
|
+
arguments: null,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
kind: "Scalar",
|
|
18
|
+
fieldName: "name",
|
|
19
|
+
arguments: null,
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
};
|
|
25
|
+
export default normalizationAst;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { EagerReaderArtifact, ReaderAst } from '@isograph/react';
|
|
2
|
+
import { Query__normalizeUndefinedField__param } from './param_type';
|
|
3
|
+
import { Query__normalizeUndefinedField__output_type } from './output_type';
|
|
4
|
+
import { normalizeUndefinedField as resolver } from '../../../normalizeData.test';
|
|
5
|
+
|
|
6
|
+
const readerAst: ReaderAst<Query__normalizeUndefinedField__param> = [
|
|
7
|
+
{
|
|
8
|
+
kind: "Linked",
|
|
9
|
+
fieldName: "me",
|
|
10
|
+
alias: null,
|
|
11
|
+
arguments: null,
|
|
12
|
+
condition: null,
|
|
13
|
+
isUpdatable: false,
|
|
14
|
+
refetchQueryIndex: null,
|
|
15
|
+
selections: [
|
|
16
|
+
{
|
|
17
|
+
kind: "Scalar",
|
|
18
|
+
fieldName: "name",
|
|
19
|
+
alias: null,
|
|
20
|
+
arguments: null,
|
|
21
|
+
isUpdatable: false,
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const artifact: EagerReaderArtifact<
|
|
28
|
+
Query__normalizeUndefinedField__param,
|
|
29
|
+
Query__normalizeUndefinedField__output_type
|
|
30
|
+
> = {
|
|
31
|
+
kind: "EagerReaderArtifact",
|
|
32
|
+
fieldName: "normalizeUndefinedField",
|
|
33
|
+
resolver,
|
|
34
|
+
readerAst,
|
|
35
|
+
hasUpdatable: false,
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export default artifact;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
|
|
2
2
|
import {Query__startUpdate__param} from './param_type';
|
|
3
3
|
import {Query__startUpdate__output_type} from './output_type';
|
|
4
|
+
import type {Query__startUpdate__raw_response_type} from './raw_response_type';
|
|
4
5
|
import readerResolver from './resolver_reader';
|
|
5
6
|
import queryText from './query_text';
|
|
6
7
|
import normalizationAst from './normalization_ast';
|
|
@@ -9,7 +10,8 @@ const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
|
|
|
9
10
|
const artifact: IsographEntrypoint<
|
|
10
11
|
Query__startUpdate__param,
|
|
11
12
|
Query__startUpdate__output_type,
|
|
12
|
-
NormalizationAst
|
|
13
|
+
NormalizationAst,
|
|
14
|
+
Query__startUpdate__raw_response_type
|
|
13
15
|
> = {
|
|
14
16
|
kind: "Entrypoint",
|
|
15
17
|
networkRequestInfo: {
|
|
@@ -17,6 +17,7 @@ const readerAst: ReaderAst<Query__startUpdate__param> = [
|
|
|
17
17
|
],
|
|
18
18
|
condition: null,
|
|
19
19
|
isUpdatable: false,
|
|
20
|
+
refetchQueryIndex: null,
|
|
20
21
|
selections: [
|
|
21
22
|
{
|
|
22
23
|
kind: "Linked",
|
|
@@ -25,6 +26,7 @@ const readerAst: ReaderAst<Query__startUpdate__param> = [
|
|
|
25
26
|
arguments: null,
|
|
26
27
|
condition: Node__asEconomist__resolver_reader,
|
|
27
28
|
isUpdatable: false,
|
|
29
|
+
refetchQueryIndex: null,
|
|
28
30
|
selections: [
|
|
29
31
|
{
|
|
30
32
|
kind: "Scalar",
|
|
@@ -34,10 +36,8 @@ const readerAst: ReaderAst<Query__startUpdate__param> = [
|
|
|
34
36
|
isUpdatable: true,
|
|
35
37
|
},
|
|
36
38
|
],
|
|
37
|
-
refetchQueryIndex: null,
|
|
38
39
|
},
|
|
39
40
|
],
|
|
40
|
-
refetchQueryIndex: null,
|
|
41
41
|
},
|
|
42
42
|
];
|
|
43
43
|
|
|
@@ -46,7 +46,7 @@ const artifact: EagerReaderArtifact<
|
|
|
46
46
|
Query__startUpdate__output_type
|
|
47
47
|
> = {
|
|
48
48
|
kind: "EagerReaderArtifact",
|
|
49
|
-
fieldName: "
|
|
49
|
+
fieldName: "startUpdate",
|
|
50
50
|
resolver,
|
|
51
51
|
readerAst,
|
|
52
52
|
hasUpdatable: true,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
|
|
2
2
|
import {Query__subquery__param} from './param_type';
|
|
3
3
|
import {Query__subquery__output_type} from './output_type';
|
|
4
|
+
import type {Query__subquery__raw_response_type} from './raw_response_type';
|
|
4
5
|
import readerResolver from './resolver_reader';
|
|
5
6
|
import queryText from './query_text';
|
|
6
7
|
import normalizationAst from './normalization_ast';
|
|
@@ -9,7 +10,8 @@ const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
|
|
|
9
10
|
const artifact: IsographEntrypoint<
|
|
10
11
|
Query__subquery__param,
|
|
11
12
|
Query__subquery__output_type,
|
|
12
|
-
NormalizationAst
|
|
13
|
+
NormalizationAst,
|
|
14
|
+
Query__subquery__raw_response_type
|
|
13
15
|
> = {
|
|
14
16
|
kind: "Entrypoint",
|
|
15
17
|
networkRequestInfo: {
|
|
@@ -11,6 +11,7 @@ const readerAst: ReaderAst<Query__subquery__param> = [
|
|
|
11
11
|
arguments: null,
|
|
12
12
|
condition: null,
|
|
13
13
|
isUpdatable: false,
|
|
14
|
+
refetchQueryIndex: null,
|
|
14
15
|
selections: [
|
|
15
16
|
{
|
|
16
17
|
kind: "Linked",
|
|
@@ -24,6 +25,7 @@ const readerAst: ReaderAst<Query__subquery__param> = [
|
|
|
24
25
|
],
|
|
25
26
|
condition: null,
|
|
26
27
|
isUpdatable: false,
|
|
28
|
+
refetchQueryIndex: null,
|
|
27
29
|
selections: [
|
|
28
30
|
{
|
|
29
31
|
kind: "Scalar",
|
|
@@ -33,10 +35,8 @@ const readerAst: ReaderAst<Query__subquery__param> = [
|
|
|
33
35
|
isUpdatable: false,
|
|
34
36
|
},
|
|
35
37
|
],
|
|
36
|
-
refetchQueryIndex: null,
|
|
37
38
|
},
|
|
38
39
|
],
|
|
39
|
-
refetchQueryIndex: null,
|
|
40
40
|
},
|
|
41
41
|
];
|
|
42
42
|
|
|
@@ -45,7 +45,7 @@ const artifact: EagerReaderArtifact<
|
|
|
45
45
|
Query__subquery__output_type
|
|
46
46
|
> = {
|
|
47
47
|
kind: "EagerReaderArtifact",
|
|
48
|
-
fieldName: "
|
|
48
|
+
fieldName: "subquery",
|
|
49
49
|
resolver,
|
|
50
50
|
readerAst,
|
|
51
51
|
hasUpdatable: false,
|
|
@@ -3,12 +3,14 @@ import { type Query__linkedUpdate__param } from './Query/linkedUpdate/param_type
|
|
|
3
3
|
import { type Query__meNameSuccessor__param } from './Query/meNameSuccessor/param_type';
|
|
4
4
|
import { type Query__meName__param } from './Query/meName/param_type';
|
|
5
5
|
import { type Query__nodeField__param } from './Query/nodeField/param_type';
|
|
6
|
+
import { type Query__normalizeUndefinedField__param } from './Query/normalizeUndefinedField/param_type';
|
|
6
7
|
import { type Query__startUpdate__param } from './Query/startUpdate/param_type';
|
|
7
8
|
import { type Query__subquery__param } from './Query/subquery/param_type';
|
|
8
9
|
import entrypoint_Query__linkedUpdate from '../__isograph/Query/linkedUpdate/entrypoint';
|
|
9
10
|
import entrypoint_Query__meNameSuccessor from '../__isograph/Query/meNameSuccessor/entrypoint';
|
|
10
11
|
import entrypoint_Query__meName from '../__isograph/Query/meName/entrypoint';
|
|
11
12
|
import entrypoint_Query__nodeField from '../__isograph/Query/nodeField/entrypoint';
|
|
13
|
+
import entrypoint_Query__normalizeUndefinedField from '../__isograph/Query/normalizeUndefinedField/entrypoint';
|
|
12
14
|
import entrypoint_Query__startUpdate from '../__isograph/Query/startUpdate/entrypoint';
|
|
13
15
|
import entrypoint_Query__subquery from '../__isograph/Query/subquery/entrypoint';
|
|
14
16
|
|
|
@@ -76,6 +78,10 @@ export function iso<T>(
|
|
|
76
78
|
param: T & MatchesWhitespaceAndString<'field Query.nodeField', T>
|
|
77
79
|
): IdentityWithParam<Query__nodeField__param>;
|
|
78
80
|
|
|
81
|
+
export function iso<T>(
|
|
82
|
+
param: T & MatchesWhitespaceAndString<'field Query.normalizeUndefinedField', T>
|
|
83
|
+
): IdentityWithParam<Query__normalizeUndefinedField__param>;
|
|
84
|
+
|
|
79
85
|
export function iso<T>(
|
|
80
86
|
param: T & MatchesWhitespaceAndString<'field Query.startUpdate', T>
|
|
81
87
|
): IdentityWithParam<Query__startUpdate__param>;
|
|
@@ -100,6 +106,10 @@ export function iso<T>(
|
|
|
100
106
|
param: T & MatchesWhitespaceAndString<'entrypoint Query.nodeField', T>
|
|
101
107
|
): typeof entrypoint_Query__nodeField;
|
|
102
108
|
|
|
109
|
+
export function iso<T>(
|
|
110
|
+
param: T & MatchesWhitespaceAndString<'entrypoint Query.normalizeUndefinedField', T>
|
|
111
|
+
): typeof entrypoint_Query__normalizeUndefinedField;
|
|
112
|
+
|
|
103
113
|
export function iso<T>(
|
|
104
114
|
param: T & MatchesWhitespaceAndString<'entrypoint Query.startUpdate', T>
|
|
105
115
|
): typeof entrypoint_Query__startUpdate;
|
|
@@ -111,7 +121,7 @@ export function iso<T>(
|
|
|
111
121
|
export function iso(_isographLiteralText: string):
|
|
112
122
|
| IdentityWithParam<any>
|
|
113
123
|
| IdentityWithParamComponent<any>
|
|
114
|
-
| IsographEntrypoint<any, any, any>
|
|
124
|
+
| IsographEntrypoint<any, any, any, any>
|
|
115
125
|
{
|
|
116
126
|
throw new Error('iso: Unexpected invocation at runtime. Either the Babel transform ' +
|
|
117
127
|
'was not set up, or it failed to identify this call site. Make sure it ' +
|
|
@@ -2,17 +2,19 @@ import { describe, expect, test } from 'vitest';
|
|
|
2
2
|
import {
|
|
3
3
|
garbageCollectEnvironment,
|
|
4
4
|
retainQuery,
|
|
5
|
+
type RetainedQuery,
|
|
5
6
|
} from '../core/garbageCollection';
|
|
6
7
|
import {
|
|
7
8
|
createIsographEnvironment,
|
|
8
9
|
ROOT_ID,
|
|
9
|
-
type
|
|
10
|
+
type BaseStoreLayerData,
|
|
10
11
|
} from '../core/IsographEnvironment';
|
|
12
|
+
import { wrapResolvedValue } from '../core/PromiseWrapper';
|
|
11
13
|
import { iso } from './__isograph/iso';
|
|
12
14
|
import { meNameSuccessorRetainedQuery } from './meNameSuccessor';
|
|
13
15
|
import { nodeFieldRetainedQuery } from './nodeQuery';
|
|
14
16
|
|
|
15
|
-
const getDefaultStore = ():
|
|
17
|
+
const getDefaultStore = (): BaseStoreLayerData => ({
|
|
16
18
|
Query: {
|
|
17
19
|
[ROOT_ID]: {
|
|
18
20
|
me: { __link: '0', __typename: 'Economist' },
|
|
@@ -55,9 +57,10 @@ export const meNameField = iso(`
|
|
|
55
57
|
`)(() => {});
|
|
56
58
|
|
|
57
59
|
const meNameEntrypoint = iso(`entrypoint Query.meName`);
|
|
58
|
-
const meNameRetainedQuery = {
|
|
59
|
-
normalizationAst:
|
|
60
|
-
meNameEntrypoint.networkRequestInfo.normalizationAst
|
|
60
|
+
const meNameRetainedQuery: RetainedQuery = {
|
|
61
|
+
normalizationAst: wrapResolvedValue(
|
|
62
|
+
meNameEntrypoint.networkRequestInfo.normalizationAst,
|
|
63
|
+
),
|
|
61
64
|
variables: {},
|
|
62
65
|
root: { __link: ROOT_ID, __typename: 'Query' },
|
|
63
66
|
};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { RetainedQuery } from '../core/garbageCollection';
|
|
1
2
|
import { ROOT_ID } from '../core/IsographEnvironment';
|
|
3
|
+
import { wrapResolvedValue } from '../core/PromiseWrapper';
|
|
2
4
|
import { iso } from './__isograph/iso';
|
|
3
5
|
|
|
4
6
|
export const meNameField = iso(`
|
|
@@ -14,9 +16,10 @@ export const meNameField = iso(`
|
|
|
14
16
|
}
|
|
15
17
|
`)(() => {});
|
|
16
18
|
const meNameSuccessorEntrypoint = iso(`entrypoint Query.meNameSuccessor`);
|
|
17
|
-
export const meNameSuccessorRetainedQuery = {
|
|
18
|
-
normalizationAst:
|
|
19
|
-
meNameSuccessorEntrypoint.networkRequestInfo.normalizationAst
|
|
19
|
+
export const meNameSuccessorRetainedQuery: RetainedQuery = {
|
|
20
|
+
normalizationAst: wrapResolvedValue(
|
|
21
|
+
meNameSuccessorEntrypoint.networkRequestInfo.normalizationAst,
|
|
22
|
+
),
|
|
20
23
|
variables: {},
|
|
21
24
|
root: {
|
|
22
25
|
__link: ROOT_ID,
|
package/src/tests/nodeQuery.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RetainedQuery } from '../core/garbageCollection';
|
|
2
2
|
import { ROOT_ID } from '../core/IsographEnvironment';
|
|
3
|
+
import { wrapResolvedValue } from '../core/PromiseWrapper';
|
|
3
4
|
import { iso } from './__isograph/iso';
|
|
4
5
|
|
|
5
6
|
// TODO investigate why this can't be in garbageCollection.test.ts without
|
|
@@ -13,8 +14,9 @@ export const nodeField = iso(`
|
|
|
13
14
|
`)(() => {});
|
|
14
15
|
const nodeFieldEntrypoint = iso(`entrypoint Query.nodeField`);
|
|
15
16
|
export const nodeFieldRetainedQuery: RetainedQuery = {
|
|
16
|
-
normalizationAst:
|
|
17
|
-
nodeFieldEntrypoint.networkRequestInfo.normalizationAst
|
|
17
|
+
normalizationAst: wrapResolvedValue(
|
|
18
|
+
nodeFieldEntrypoint.networkRequestInfo.normalizationAst,
|
|
19
|
+
),
|
|
18
20
|
variables: { id: 0 },
|
|
19
21
|
root: { __link: ROOT_ID, __typename: 'Query' },
|
|
20
22
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { describe, expect, test, vi } from 'vitest';
|
|
1
|
+
import { beforeEach, describe, expect, test, vi } from 'vitest';
|
|
2
2
|
import { getOrCreateCacheForArtifact, normalizeData } from '../core/cache';
|
|
3
3
|
import {
|
|
4
4
|
createIsographEnvironment,
|
|
5
5
|
createIsographStore,
|
|
6
6
|
ROOT_ID,
|
|
7
|
-
type
|
|
7
|
+
type BaseStoreLayerData,
|
|
8
8
|
} from '../core/IsographEnvironment';
|
|
9
9
|
import {
|
|
10
10
|
readButDoNotEvaluate,
|
|
@@ -13,6 +13,86 @@ import {
|
|
|
13
13
|
import { iso } from './__isograph/iso';
|
|
14
14
|
import type { Query__subquery__param } from './__isograph/Query/subquery/param_type';
|
|
15
15
|
|
|
16
|
+
let store: ReturnType<typeof createIsographStore>;
|
|
17
|
+
let environment: ReturnType<typeof createIsographEnvironment>;
|
|
18
|
+
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
store = createIsographStore();
|
|
21
|
+
const networkFunction = vi.fn().mockRejectedValue(new Error('Fetch failed'));
|
|
22
|
+
environment = createIsographEnvironment(store, networkFunction);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export const normalizeUndefinedField = iso(`
|
|
26
|
+
field Query.normalizeUndefinedField {
|
|
27
|
+
me {
|
|
28
|
+
name
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
`)(() => {});
|
|
32
|
+
|
|
33
|
+
const normalizeUndefinedFieldEntrypoint = iso(
|
|
34
|
+
`entrypoint Query.normalizeUndefinedField`,
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
describe('normalize undefined field', () => {
|
|
38
|
+
test('should normalize scalar field to null', () => {
|
|
39
|
+
normalizeData(
|
|
40
|
+
environment,
|
|
41
|
+
environment.store,
|
|
42
|
+
normalizeUndefinedFieldEntrypoint.networkRequestInfo.normalizationAst
|
|
43
|
+
.selections,
|
|
44
|
+
{
|
|
45
|
+
me: { __typename: 'Economist', id: '1' },
|
|
46
|
+
},
|
|
47
|
+
{},
|
|
48
|
+
{
|
|
49
|
+
__link: ROOT_ID,
|
|
50
|
+
__typename: normalizeUndefinedFieldEntrypoint.concreteType,
|
|
51
|
+
},
|
|
52
|
+
new Map(),
|
|
53
|
+
);
|
|
54
|
+
expect(store).toStrictEqual({
|
|
55
|
+
Economist: {
|
|
56
|
+
'1': {
|
|
57
|
+
id: '1',
|
|
58
|
+
name: null,
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
Query: {
|
|
62
|
+
[ROOT_ID]: {
|
|
63
|
+
me: {
|
|
64
|
+
__typename: 'Economist',
|
|
65
|
+
__link: '1',
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
test('should normalize linked field to null', () => {
|
|
73
|
+
normalizeData(
|
|
74
|
+
environment,
|
|
75
|
+
environment.store,
|
|
76
|
+
normalizeUndefinedFieldEntrypoint.networkRequestInfo.normalizationAst
|
|
77
|
+
.selections,
|
|
78
|
+
{},
|
|
79
|
+
{},
|
|
80
|
+
{
|
|
81
|
+
__link: ROOT_ID,
|
|
82
|
+
__typename: normalizeUndefinedFieldEntrypoint.concreteType,
|
|
83
|
+
},
|
|
84
|
+
new Map(),
|
|
85
|
+
);
|
|
86
|
+
expect(store).toStrictEqual({
|
|
87
|
+
Query: {
|
|
88
|
+
[ROOT_ID]: {
|
|
89
|
+
me: null,
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
|
|
16
96
|
export const subquery = iso(`
|
|
17
97
|
field Query.subquery($id: ID!) {
|
|
18
98
|
query {
|
|
@@ -25,22 +105,18 @@ export const subquery = iso(`
|
|
|
25
105
|
|
|
26
106
|
const entrypoint = iso(`entrypoint Query.subquery`);
|
|
27
107
|
|
|
28
|
-
describe('
|
|
29
|
-
test('
|
|
30
|
-
const store = createIsographStore();
|
|
31
|
-
const networkFunction = vi
|
|
32
|
-
.fn()
|
|
33
|
-
.mockRejectedValue(new Error('Fetch failed'));
|
|
34
|
-
const environment = createIsographEnvironment(store, networkFunction);
|
|
35
|
-
|
|
108
|
+
describe('nested Query', () => {
|
|
109
|
+
test('should be normalized', () => {
|
|
36
110
|
normalizeData(
|
|
37
111
|
environment,
|
|
112
|
+
environment.store,
|
|
38
113
|
entrypoint.networkRequestInfo.normalizationAst.selections,
|
|
39
114
|
{
|
|
40
115
|
query: { node____id___v_id: { __typename: 'Economist', id: '1' } },
|
|
41
116
|
},
|
|
42
117
|
{ id: '1' },
|
|
43
118
|
{ __link: ROOT_ID, __typename: entrypoint.concreteType },
|
|
119
|
+
new Map(),
|
|
44
120
|
);
|
|
45
121
|
|
|
46
122
|
expect(store).toStrictEqual({
|
|
@@ -62,13 +138,11 @@ describe('normalizeData', () => {
|
|
|
62
138
|
},
|
|
63
139
|
},
|
|
64
140
|
},
|
|
65
|
-
} satisfies
|
|
141
|
+
} satisfies BaseStoreLayerData);
|
|
66
142
|
});
|
|
67
|
-
});
|
|
68
143
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const store: IsographStore = {
|
|
144
|
+
test('should be read', () => {
|
|
145
|
+
const store: BaseStoreLayerData = {
|
|
72
146
|
Economist: {
|
|
73
147
|
'1': {
|
|
74
148
|
__typename: 'Economist',
|