@isograph/react 0.2.0 → 0.3.1

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.
Files changed (151) hide show
  1. package/.turbo/turbo-compile-typescript.log +4 -0
  2. package/dist/core/FragmentReference.d.ts +25 -6
  3. package/dist/core/FragmentReference.d.ts.map +1 -0
  4. package/dist/core/FragmentReference.js +3 -13
  5. package/dist/core/IsographEnvironment.d.ts +34 -26
  6. package/dist/core/IsographEnvironment.d.ts.map +1 -0
  7. package/dist/core/IsographEnvironment.js +19 -22
  8. package/dist/core/PromiseWrapper.d.ts +4 -4
  9. package/dist/core/PromiseWrapper.d.ts.map +1 -0
  10. package/dist/core/PromiseWrapper.js +9 -9
  11. package/dist/core/areEqualWithDeepComparison.d.ts +5 -3
  12. package/dist/core/areEqualWithDeepComparison.d.ts.map +1 -0
  13. package/dist/core/areEqualWithDeepComparison.js +89 -39
  14. package/dist/core/cache.d.ts +20 -13
  15. package/dist/core/cache.d.ts.map +1 -0
  16. package/dist/core/cache.js +205 -128
  17. package/dist/core/check.d.ts +22 -0
  18. package/dist/core/check.d.ts.map +1 -0
  19. package/dist/core/check.js +127 -0
  20. package/dist/core/componentCache.d.ts +2 -2
  21. package/dist/core/componentCache.d.ts.map +1 -0
  22. package/dist/core/componentCache.js +28 -32
  23. package/dist/core/entrypoint.d.ts +31 -15
  24. package/dist/core/entrypoint.d.ts.map +1 -0
  25. package/dist/core/entrypoint.js +1 -2
  26. package/dist/core/garbageCollection.d.ts +6 -5
  27. package/dist/core/garbageCollection.d.ts.map +1 -0
  28. package/dist/core/garbageCollection.js +49 -16
  29. package/dist/core/logging.d.ts +68 -0
  30. package/dist/core/logging.d.ts.map +1 -0
  31. package/dist/core/logging.js +22 -0
  32. package/dist/core/makeNetworkRequest.d.ts +6 -3
  33. package/dist/core/makeNetworkRequest.d.ts.map +1 -0
  34. package/dist/core/makeNetworkRequest.js +160 -19
  35. package/dist/core/read.d.ts +25 -5
  36. package/dist/core/read.d.ts.map +1 -0
  37. package/dist/core/read.js +416 -259
  38. package/dist/core/reader.d.ts +31 -15
  39. package/dist/core/reader.d.ts.map +1 -0
  40. package/dist/core/startUpdate.d.ts +5 -0
  41. package/dist/core/startUpdate.d.ts.map +1 -0
  42. package/dist/core/startUpdate.js +15 -0
  43. package/dist/core/util.d.ts +5 -0
  44. package/dist/core/util.d.ts.map +1 -0
  45. package/dist/index.d.ts +19 -14
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +11 -2
  48. package/dist/loadable-hooks/useClientSideDefer.d.ts +9 -3
  49. package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -0
  50. package/dist/loadable-hooks/useClientSideDefer.js +6 -8
  51. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +27 -0
  52. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -0
  53. package/dist/loadable-hooks/useConnectionSpecPagination.js +162 -0
  54. package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts +2 -2
  55. package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts.map +1 -0
  56. package/dist/loadable-hooks/useImperativeExposedMutationField.js +1 -2
  57. package/dist/loadable-hooks/useImperativeLoadableField.d.ts +13 -7
  58. package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +1 -0
  59. package/dist/loadable-hooks/useImperativeLoadableField.js +4 -5
  60. package/dist/loadable-hooks/useSkipLimitPagination.d.ts +13 -26
  61. package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -0
  62. package/dist/loadable-hooks/useSkipLimitPagination.js +93 -47
  63. package/dist/react/FragmentReader.d.ts +6 -4
  64. package/dist/react/FragmentReader.d.ts.map +1 -0
  65. package/dist/react/FragmentReader.js +4 -2
  66. package/dist/react/IsographEnvironmentProvider.d.ts +1 -0
  67. package/dist/react/IsographEnvironmentProvider.d.ts.map +1 -0
  68. package/dist/react/IsographEnvironmentProvider.js +3 -3
  69. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts +10 -0
  70. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts.map +1 -0
  71. package/dist/react/RenderAfterCommit__DO_NOT_USE.js +15 -0
  72. package/dist/react/useImperativeReference.d.ts +8 -6
  73. package/dist/react/useImperativeReference.d.ts.map +1 -0
  74. package/dist/react/useImperativeReference.js +6 -8
  75. package/dist/react/useLazyReference.d.ts +5 -3
  76. package/dist/react/useLazyReference.d.ts.map +1 -0
  77. package/dist/react/useLazyReference.js +34 -6
  78. package/dist/react/useReadAndSubscribe.d.ts +6 -3
  79. package/dist/react/useReadAndSubscribe.d.ts.map +1 -0
  80. package/dist/react/useReadAndSubscribe.js +13 -10
  81. package/dist/react/useRerenderOnChange.d.ts +7 -2
  82. package/dist/react/useRerenderOnChange.d.ts.map +1 -0
  83. package/dist/react/useRerenderOnChange.js +3 -4
  84. package/dist/react/useResult.d.ts +4 -3
  85. package/dist/react/useResult.d.ts.map +1 -0
  86. package/dist/react/useResult.js +14 -9
  87. package/isograph.config.json +8 -0
  88. package/package.json +14 -9
  89. package/{src/tests/schema.graphql → schema.graphql} +1 -0
  90. package/src/core/FragmentReference.ts +44 -17
  91. package/src/core/IsographEnvironment.ts +67 -50
  92. package/src/core/PromiseWrapper.ts +3 -3
  93. package/src/core/areEqualWithDeepComparison.ts +95 -41
  94. package/src/core/cache.ts +316 -169
  95. package/src/core/check.ts +212 -0
  96. package/src/core/componentCache.ts +40 -46
  97. package/src/core/entrypoint.ts +41 -16
  98. package/src/core/garbageCollection.ts +77 -26
  99. package/src/core/logging.ts +118 -0
  100. package/src/core/makeNetworkRequest.ts +249 -20
  101. package/src/core/read.ts +658 -368
  102. package/src/core/reader.ts +61 -21
  103. package/src/core/startUpdate.ts +28 -0
  104. package/src/core/util.ts +8 -0
  105. package/src/index.ts +94 -8
  106. package/src/loadable-hooks/useClientSideDefer.ts +48 -17
  107. package/src/loadable-hooks/useConnectionSpecPagination.ts +344 -0
  108. package/src/loadable-hooks/useImperativeExposedMutationField.ts +1 -1
  109. package/src/loadable-hooks/useImperativeLoadableField.ts +36 -12
  110. package/src/loadable-hooks/useSkipLimitPagination.ts +253 -94
  111. package/src/react/FragmentReader.tsx +15 -6
  112. package/src/react/IsographEnvironmentProvider.tsx +1 -1
  113. package/src/react/RenderAfterCommit__DO_NOT_USE.tsx +17 -0
  114. package/src/react/useImperativeReference.ts +50 -18
  115. package/src/react/useLazyReference.ts +79 -11
  116. package/src/react/useReadAndSubscribe.ts +33 -10
  117. package/src/react/useRerenderOnChange.ts +7 -2
  118. package/src/react/useResult.ts +30 -9
  119. package/src/tests/__isograph/Query/meName/entrypoint.ts +10 -29
  120. package/src/tests/__isograph/Query/meName/normalization_ast.ts +25 -0
  121. package/src/tests/__isograph/Query/meName/param_type.ts +5 -2
  122. package/src/tests/__isograph/Query/meName/query_text.ts +6 -0
  123. package/src/tests/__isograph/Query/meName/resolver_reader.ts +5 -0
  124. package/src/tests/__isograph/Query/meNameSuccessor/entrypoint.ts +10 -65
  125. package/src/tests/__isograph/Query/meNameSuccessor/normalization_ast.ts +56 -0
  126. package/src/tests/__isograph/Query/meNameSuccessor/param_type.ts +9 -6
  127. package/src/tests/__isograph/Query/meNameSuccessor/query_text.ts +13 -0
  128. package/src/tests/__isograph/Query/meNameSuccessor/resolver_reader.ts +10 -0
  129. package/src/tests/__isograph/Query/nodeField/entrypoint.ts +10 -28
  130. package/src/tests/__isograph/Query/nodeField/normalization_ast.ts +30 -0
  131. package/src/tests/__isograph/Query/nodeField/param_type.ts +7 -3
  132. package/src/tests/__isograph/Query/nodeField/parameters_type.ts +3 -0
  133. package/src/tests/__isograph/Query/nodeField/query_text.ts +6 -0
  134. package/src/tests/__isograph/Query/nodeField/resolver_reader.ts +5 -0
  135. package/src/tests/__isograph/Query/subquery/entrypoint.ts +28 -0
  136. package/src/tests/__isograph/Query/subquery/normalization_ast.ts +38 -0
  137. package/src/tests/__isograph/Query/subquery/output_type.ts +3 -0
  138. package/src/tests/__isograph/Query/subquery/param_type.ts +12 -0
  139. package/src/tests/__isograph/Query/subquery/parameters_type.ts +3 -0
  140. package/src/tests/__isograph/Query/subquery/query_text.ts +8 -0
  141. package/src/tests/__isograph/Query/subquery/resolver_reader.ts +52 -0
  142. package/src/tests/__isograph/iso.ts +24 -12
  143. package/src/tests/garbageCollection.test.ts +53 -45
  144. package/src/tests/meNameSuccessor.ts +8 -3
  145. package/src/tests/nodeQuery.ts +7 -4
  146. package/src/tests/normalizeData.test.ts +120 -0
  147. package/src/tests/tsconfig.json +3 -3
  148. package/tsconfig.json +2 -2
  149. package/tsconfig.pkg.json +7 -3
  150. package/vitest.config.ts +20 -0
  151. package/src/tests/isograph.config.json +0 -7
@@ -1,22 +1,90 @@
1
- import { FragmentReference, Variables } from '../core/FragmentReference';
2
- import { useIsographEnvironment } from './IsographEnvironmentProvider';
3
- import { IsographEntrypoint } from '../core/entrypoint';
4
- import { getOrCreateCacheForArtifact } from '../core/cache';
5
1
  import { useLazyDisposableState } from '@isograph/react-disposable-state';
2
+ import { getOrCreateCacheForArtifact } from '../core/cache';
3
+ import { FetchOptions, type RequiredFetchOptions } from '../core/check';
4
+ import {
5
+ IsographEntrypoint,
6
+ type NormalizationAst,
7
+ type NormalizationAstLoader,
8
+ } from '../core/entrypoint';
9
+ import {
10
+ ExtractParameters,
11
+ FragmentReference,
12
+ type UnknownTReadFromStore,
13
+ } from '../core/FragmentReference';
14
+ import { logMessage } from '../core/logging';
15
+ import { useIsographEnvironment } from './IsographEnvironmentProvider';
6
16
 
7
17
  export function useLazyReference<
8
- TReadFromStore extends Object,
18
+ TReadFromStore extends UnknownTReadFromStore,
9
19
  TClientFieldValue,
20
+ TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
10
21
  >(
11
- entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>,
12
- variables: Variables,
13
- ): {
14
- fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>;
15
- } {
22
+ entrypoint: IsographEntrypoint<
23
+ TReadFromStore,
24
+ TClientFieldValue,
25
+ TNormalizationAst
26
+ >,
27
+ variables: ExtractParameters<TReadFromStore>,
28
+ ...[fetchOptions]: TNormalizationAst extends NormalizationAstLoader
29
+ ? [fetchOptions: RequiredFetchOptions<TClientFieldValue>]
30
+ : [fetchOptions?: FetchOptions<TClientFieldValue>]
31
+ ): NormalizationAst | NormalizationAstLoader extends TNormalizationAst
32
+ ? unknown
33
+ : {
34
+ fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>;
35
+ } {
16
36
  const environment = useIsographEnvironment();
17
- const cache = getOrCreateCacheForArtifact(environment, entrypoint, variables);
37
+
38
+ if (entrypoint?.kind !== 'Entrypoint') {
39
+ // TODO have a separate error logger
40
+ logMessage(environment, () => ({
41
+ kind: 'NonEntrypointReceived',
42
+ entrypoint,
43
+ }));
44
+ }
45
+
46
+ const cache = getOrCreateCacheForArtifact(
47
+ environment,
48
+ entrypoint,
49
+ variables,
50
+ fetchOptions,
51
+ );
18
52
 
19
53
  return {
20
54
  fragmentReference: useLazyDisposableState(cache).state,
21
55
  };
22
56
  }
57
+
58
+ // @ts-ignore
59
+ function tsTests() {
60
+ let withAst!: IsographEntrypoint<any, unknown, NormalizationAst>;
61
+ let withAstLoader!: IsographEntrypoint<any, unknown, NormalizationAstLoader>;
62
+ let withAstOrLoader!: IsographEntrypoint<
63
+ any,
64
+ unknown,
65
+ NormalizationAst | NormalizationAstLoader
66
+ >;
67
+
68
+ useLazyReference(withAst, {}) satisfies {};
69
+ useLazyReference(withAst, {}, { shouldFetch: 'Yes' }) satisfies {};
70
+ useLazyReference(withAst, {}, { shouldFetch: 'IfNecessary' }) satisfies {};
71
+
72
+ // @ts-expect-error if there's no ast, require `shouldFetch` to be specified
73
+ useLazyReference(withAstLoader, {});
74
+ useLazyReference(withAstLoader, {}, { shouldFetch: 'Yes' }) satisfies {};
75
+ // @ts-expect-error if there's no ast, `shouldFetch` can't be `IfNecessary`
76
+ useLazyReference(withAstLoader, {}, { shouldFetch: 'IfNecessary' });
77
+
78
+ // if the type is unknown there can be no ast so we should use the same rules
79
+ // but because of TS bugs with inference we just return unknown
80
+ // @ts-expect-error this returns unknown which doesn't satisfy the constraint
81
+ useLazyReference(withAstOrLoader, {}) satisfies {};
82
+ // @ts-expect-error this returns unknown which doesn't satisfy the constraint
83
+ useLazyReference(withAstOrLoader, {}, { shouldFetch: 'Yes' }) satisfies {};
84
+ useLazyReference(
85
+ withAstOrLoader,
86
+ {},
87
+ { shouldFetch: 'IfNecessary' },
88
+ // @ts-expect-error this returns unknown which doesn't satisfy the constraint
89
+ ) satisfies {};
90
+ }
@@ -1,24 +1,31 @@
1
1
  import { useEffect, useState } from 'react';
2
+ import { subscribe } from '../core/cache';
2
3
  import {
4
+ ExtractData,
3
5
  FragmentReference,
4
6
  stableIdForFragmentReference,
7
+ type UnknownTReadFromStore,
5
8
  } from '../core/FragmentReference';
9
+ import { readPromise } from '../core/PromiseWrapper';
6
10
  import {
7
11
  NetworkRequestReaderOptions,
8
12
  readButDoNotEvaluate,
9
13
  WithEncounteredRecords,
10
14
  } from '../core/read';
11
- import { useRerenderOnChange } from './useRerenderOnChange';
15
+ import type { ReaderAst } from '../core/reader';
12
16
  import { useIsographEnvironment } from './IsographEnvironmentProvider';
13
- import { subscribe } from '../core/cache';
17
+ import { useRerenderOnChange } from './useRerenderOnChange';
14
18
 
15
19
  /**
16
20
  * Read the data from a fragment reference and subscribe to updates.
17
21
  */
18
- export function useReadAndSubscribe<TReadFromStore extends Object>(
22
+ export function useReadAndSubscribe<
23
+ TReadFromStore extends UnknownTReadFromStore,
24
+ >(
19
25
  fragmentReference: FragmentReference<TReadFromStore, any>,
20
26
  networkRequestOptions: NetworkRequestReaderOptions,
21
- ): TReadFromStore {
27
+ readerAst: ReaderAst<TReadFromStore>,
28
+ ): ExtractData<TReadFromStore> {
22
29
  const environment = useIsographEnvironment();
23
30
  const [readOutDataAndRecords, setReadOutDataAndRecords] = useState(() =>
24
31
  readButDoNotEvaluate(environment, fragmentReference, networkRequestOptions),
@@ -27,23 +34,33 @@ export function useReadAndSubscribe<TReadFromStore extends Object>(
27
34
  readOutDataAndRecords,
28
35
  fragmentReference,
29
36
  setReadOutDataAndRecords,
37
+ readerAst,
30
38
  );
31
39
  return readOutDataAndRecords.item;
32
40
  }
33
41
 
34
- export function useSubscribeToMultiple<TReadFromStore extends Object>(
42
+ export function useSubscribeToMultiple<
43
+ TReadFromStore extends UnknownTReadFromStore,
44
+ >(
35
45
  items: ReadonlyArray<{
36
46
  records: WithEncounteredRecords<TReadFromStore>;
37
47
  callback: (updatedRecords: WithEncounteredRecords<TReadFromStore>) => void;
38
48
  fragmentReference: FragmentReference<TReadFromStore, any>;
49
+ readerAst: ReaderAst<TReadFromStore>;
39
50
  }>,
40
51
  ) {
41
52
  const environment = useIsographEnvironment();
42
53
  useEffect(
43
54
  () => {
44
55
  const cleanupFns = items.map(
45
- ({ records, callback, fragmentReference }) => {
46
- return subscribe(environment, records, fragmentReference, callback);
56
+ ({ records, callback, fragmentReference, readerAst }) => {
57
+ return subscribe(
58
+ environment,
59
+ records,
60
+ fragmentReference,
61
+ callback,
62
+ readerAst,
63
+ );
47
64
  },
48
65
  );
49
66
  return () => {
@@ -57,9 +74,15 @@ export function useSubscribeToMultiple<TReadFromStore extends Object>(
57
74
  // TODO find out
58
75
  [
59
76
  items
60
- .map(({ fragmentReference }) =>
61
- stableIdForFragmentReference(fragmentReference),
62
- )
77
+ .map(({ fragmentReference }) => {
78
+ const readerWithRefetchQueries = readPromise(
79
+ fragmentReference.readerWithRefetchQueries,
80
+ );
81
+ stableIdForFragmentReference(
82
+ fragmentReference,
83
+ readerWithRefetchQueries.readerArtifact.fieldName,
84
+ );
85
+ })
63
86
  .join('.'),
64
87
  ],
65
88
  );
@@ -1,17 +1,21 @@
1
1
  import { useEffect } from 'react';
2
2
  import { subscribe } from '../core/cache';
3
- import { WithEncounteredRecords } from '../core/read';
4
3
  import { FragmentReference } from '../core/FragmentReference';
4
+ import { WithEncounteredRecords } from '../core/read';
5
+ import type { ReaderAst } from '../core/reader';
5
6
  import { useIsographEnvironment } from './IsographEnvironmentProvider';
6
7
 
7
8
  // TODO add unit tests for this. Add integration tests that test
8
9
  // behavior when the encounteredRecords underneath a fragment change.
9
- export function useRerenderOnChange<TReadFromStore extends Object>(
10
+ export function useRerenderOnChange<
11
+ TReadFromStore extends { parameters: object; data: object },
12
+ >(
10
13
  encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>,
11
14
  fragmentReference: FragmentReference<any, any>,
12
15
  setEncounteredDataAndRecords: (
13
16
  data: WithEncounteredRecords<TReadFromStore>,
14
17
  ) => void,
18
+ readerAst: ReaderAst<TReadFromStore>,
15
19
  ) {
16
20
  const environment = useIsographEnvironment();
17
21
  useEffect(() => {
@@ -22,6 +26,7 @@ export function useRerenderOnChange<TReadFromStore extends Object>(
22
26
  (newEncounteredDataAndRecords) => {
23
27
  setEncounteredDataAndRecords(newEncounteredDataAndRecords);
24
28
  },
29
+ readerAst,
25
30
  );
26
31
  // Note: this is an empty array on purpose:
27
32
  // - the fragment reference is stable for the life of the component
@@ -1,18 +1,25 @@
1
- import { useIsographEnvironment } from '../react/IsographEnvironmentProvider';
2
- import { FragmentReference } from '../core/FragmentReference';
3
1
  import { getOrCreateCachedComponent } from '../core/componentCache';
4
- import { useReadAndSubscribe } from './useReadAndSubscribe';
5
2
  import {
6
- getNetworkRequestOptionsWithDefaults,
7
- NetworkRequestReaderOptions,
8
- } from '../core/read';
3
+ FragmentReference,
4
+ type UnknownTReadFromStore,
5
+ } from '../core/FragmentReference';
9
6
  import {
10
7
  getPromiseState,
11
8
  PromiseWrapper,
12
9
  readPromise,
13
10
  } from '../core/PromiseWrapper';
11
+ import {
12
+ getNetworkRequestOptionsWithDefaults,
13
+ NetworkRequestReaderOptions,
14
+ } from '../core/read';
15
+ import { getOrCreateCachedStartUpdate } from '../core/startUpdate';
16
+ import { useIsographEnvironment } from '../react/IsographEnvironmentProvider';
17
+ import { useReadAndSubscribe } from './useReadAndSubscribe';
14
18
 
15
- export function useResult<TReadFromStore extends Object, TClientFieldValue>(
19
+ export function useResult<
20
+ TReadFromStore extends UnknownTReadFromStore,
21
+ TClientFieldValue,
22
+ >(
16
23
  fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>,
17
24
  partialNetworkRequestOptions?: Partial<NetworkRequestReaderOptions> | void,
18
25
  ): TClientFieldValue {
@@ -34,7 +41,7 @@ export function useResult<TReadFromStore extends Object, TClientFieldValue>(
34
41
  // @ts-expect-error
35
42
  return getOrCreateCachedComponent(
36
43
  environment,
37
- readerWithRefetchQueries.readerArtifact.componentName,
44
+ readerWithRefetchQueries.readerArtifact.fieldName,
38
45
  fragmentReference,
39
46
  networkRequestOptions,
40
47
  );
@@ -43,8 +50,22 @@ export function useResult<TReadFromStore extends Object, TClientFieldValue>(
43
50
  const data = useReadAndSubscribe(
44
51
  fragmentReference,
45
52
  networkRequestOptions,
53
+ readerWithRefetchQueries.readerArtifact.readerAst,
46
54
  );
47
- return readerWithRefetchQueries.readerArtifact.resolver(data);
55
+ const param = {
56
+ data: data,
57
+ parameters: fragmentReference.variables,
58
+ ...(readerWithRefetchQueries.readerArtifact.hasUpdatable
59
+ ? {
60
+ startUpdate: getOrCreateCachedStartUpdate(
61
+ environment,
62
+ fragmentReference,
63
+ readerWithRefetchQueries.readerArtifact.fieldName,
64
+ ),
65
+ }
66
+ : undefined),
67
+ };
68
+ return readerWithRefetchQueries.readerArtifact.resolver(param);
48
69
  }
49
70
  }
50
71
  }
@@ -2,41 +2,22 @@ import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArti
2
2
  import {Query__meName__param} from './param_type';
3
3
  import {Query__meName__output_type} from './output_type';
4
4
  import readerResolver from './resolver_reader';
5
+ import queryText from './query_text';
6
+ import normalizationAst from './normalization_ast';
5
7
  const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
6
8
 
7
- const queryText = 'query meName {\
8
- me {\
9
- id,\
10
- name,\
11
- },\
12
- }';
13
-
14
- const normalizationAst: NormalizationAst = [
15
- {
16
- kind: "Linked",
17
- fieldName: "me",
18
- arguments: null,
19
- selections: [
20
- {
21
- kind: "Scalar",
22
- fieldName: "id",
23
- arguments: null,
24
- },
25
- {
26
- kind: "Scalar",
27
- fieldName: "name",
28
- arguments: null,
29
- },
30
- ],
31
- },
32
- ];
33
9
  const artifact: IsographEntrypoint<
34
10
  Query__meName__param,
35
- Query__meName__output_type
11
+ Query__meName__output_type,
12
+ NormalizationAst
36
13
  > = {
37
14
  kind: "Entrypoint",
38
- queryText,
39
- normalizationAst,
15
+ networkRequestInfo: {
16
+ kind: "NetworkRequestInfo",
17
+ queryText,
18
+ normalizationAst,
19
+ },
20
+ concreteType: "Query",
40
21
  readerWithRefetchQueries: {
41
22
  kind: "ReaderWithRefetchQueries",
42
23
  nestedRefetchQueries,
@@ -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;
@@ -1,6 +1,9 @@
1
1
 
2
2
  export type Query__meName__param = {
3
- me: {
4
- name: string,
3
+ readonly data: {
4
+ readonly me: {
5
+ readonly name: string,
6
+ },
5
7
  },
8
+ readonly parameters: Record<PropertyKey, never>,
6
9
  };
@@ -0,0 +1,6 @@
1
+ export default 'query meName {\
2
+ me {\
3
+ id,\
4
+ name,\
5
+ },\
6
+ }';
@@ -9,12 +9,15 @@ const readerAst: ReaderAst<Query__meName__param> = [
9
9
  fieldName: "me",
10
10
  alias: null,
11
11
  arguments: null,
12
+ condition: null,
13
+ isUpdatable: false,
12
14
  selections: [
13
15
  {
14
16
  kind: "Scalar",
15
17
  fieldName: "name",
16
18
  alias: null,
17
19
  arguments: null,
20
+ isUpdatable: false,
18
21
  },
19
22
  ],
20
23
  },
@@ -25,8 +28,10 @@ const artifact: EagerReaderArtifact<
25
28
  Query__meName__output_type
26
29
  > = {
27
30
  kind: "EagerReaderArtifact",
31
+ fieldName: "Query.meName",
28
32
  resolver,
29
33
  readerAst,
34
+ hasUpdatable: false,
30
35
  };
31
36
 
32
37
  export default artifact;
@@ -2,77 +2,22 @@ import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArti
2
2
  import {Query__meNameSuccessor__param} from './param_type';
3
3
  import {Query__meNameSuccessor__output_type} from './output_type';
4
4
  import readerResolver from './resolver_reader';
5
+ import queryText from './query_text';
6
+ import normalizationAst from './normalization_ast';
5
7
  const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
6
8
 
7
- const queryText = 'query meNameSuccessor {\
8
- me {\
9
- id,\
10
- name,\
11
- successor {\
12
- id,\
13
- successor {\
14
- id,\
15
- name,\
16
- },\
17
- },\
18
- },\
19
- }';
20
-
21
- const normalizationAst: NormalizationAst = [
22
- {
23
- kind: "Linked",
24
- fieldName: "me",
25
- arguments: null,
26
- selections: [
27
- {
28
- kind: "Scalar",
29
- fieldName: "id",
30
- arguments: null,
31
- },
32
- {
33
- kind: "Scalar",
34
- fieldName: "name",
35
- arguments: null,
36
- },
37
- {
38
- kind: "Linked",
39
- fieldName: "successor",
40
- arguments: null,
41
- selections: [
42
- {
43
- kind: "Scalar",
44
- fieldName: "id",
45
- arguments: null,
46
- },
47
- {
48
- kind: "Linked",
49
- fieldName: "successor",
50
- arguments: null,
51
- selections: [
52
- {
53
- kind: "Scalar",
54
- fieldName: "id",
55
- arguments: null,
56
- },
57
- {
58
- kind: "Scalar",
59
- fieldName: "name",
60
- arguments: null,
61
- },
62
- ],
63
- },
64
- ],
65
- },
66
- ],
67
- },
68
- ];
69
9
  const artifact: IsographEntrypoint<
70
10
  Query__meNameSuccessor__param,
71
- Query__meNameSuccessor__output_type
11
+ Query__meNameSuccessor__output_type,
12
+ NormalizationAst
72
13
  > = {
73
14
  kind: "Entrypoint",
74
- queryText,
75
- normalizationAst,
15
+ networkRequestInfo: {
16
+ kind: "NetworkRequestInfo",
17
+ queryText,
18
+ normalizationAst,
19
+ },
20
+ concreteType: "Query",
76
21
  readerWithRefetchQueries: {
77
22
  kind: "ReaderWithRefetchQueries",
78
23
  nestedRefetchQueries,
@@ -0,0 +1,56 @@
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
+ kind: "Linked",
23
+ fieldName: "successor",
24
+ arguments: null,
25
+ concreteType: "Economist",
26
+ selections: [
27
+ {
28
+ kind: "Scalar",
29
+ fieldName: "id",
30
+ arguments: null,
31
+ },
32
+ {
33
+ kind: "Linked",
34
+ fieldName: "successor",
35
+ arguments: null,
36
+ concreteType: "Economist",
37
+ selections: [
38
+ {
39
+ kind: "Scalar",
40
+ fieldName: "id",
41
+ arguments: null,
42
+ },
43
+ {
44
+ kind: "Scalar",
45
+ fieldName: "name",
46
+ arguments: null,
47
+ },
48
+ ],
49
+ },
50
+ ],
51
+ },
52
+ ],
53
+ },
54
+ ],
55
+ };
56
+ export default normalizationAst;
@@ -1,11 +1,14 @@
1
1
 
2
2
  export type Query__meNameSuccessor__param = {
3
- me: {
4
- name: string,
5
- successor: ({
6
- successor: ({
7
- name: string,
3
+ readonly data: {
4
+ readonly me: {
5
+ readonly name: string,
6
+ readonly successor: ({
7
+ readonly successor: ({
8
+ readonly name: string,
9
+ } | null),
8
10
  } | null),
9
- } | null),
11
+ },
10
12
  },
13
+ readonly parameters: Record<PropertyKey, never>,
11
14
  };
@@ -0,0 +1,13 @@
1
+ export default 'query meNameSuccessor {\
2
+ me {\
3
+ id,\
4
+ name,\
5
+ successor {\
6
+ id,\
7
+ successor {\
8
+ id,\
9
+ name,\
10
+ },\
11
+ },\
12
+ },\
13
+ }';
@@ -9,30 +9,38 @@ const readerAst: ReaderAst<Query__meNameSuccessor__param> = [
9
9
  fieldName: "me",
10
10
  alias: null,
11
11
  arguments: null,
12
+ condition: null,
13
+ isUpdatable: false,
12
14
  selections: [
13
15
  {
14
16
  kind: "Scalar",
15
17
  fieldName: "name",
16
18
  alias: null,
17
19
  arguments: null,
20
+ isUpdatable: false,
18
21
  },
19
22
  {
20
23
  kind: "Linked",
21
24
  fieldName: "successor",
22
25
  alias: null,
23
26
  arguments: null,
27
+ condition: null,
28
+ isUpdatable: false,
24
29
  selections: [
25
30
  {
26
31
  kind: "Linked",
27
32
  fieldName: "successor",
28
33
  alias: null,
29
34
  arguments: null,
35
+ condition: null,
36
+ isUpdatable: false,
30
37
  selections: [
31
38
  {
32
39
  kind: "Scalar",
33
40
  fieldName: "name",
34
41
  alias: null,
35
42
  arguments: null,
43
+ isUpdatable: false,
36
44
  },
37
45
  ],
38
46
  },
@@ -47,8 +55,10 @@ const artifact: EagerReaderArtifact<
47
55
  Query__meNameSuccessor__output_type
48
56
  > = {
49
57
  kind: "EagerReaderArtifact",
58
+ fieldName: "Query.meNameSuccessor",
50
59
  resolver,
51
60
  readerAst,
61
+ hasUpdatable: false,
52
62
  };
53
63
 
54
64
  export default artifact;