@isograph/react 0.0.0-main-dd7a276d → 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.
@@ -1,6 +1,5 @@
1
1
  import { DataId } from './IsographEnvironment';
2
- import { RefetchQueryNormalizationArtifactWrapper } from '../core/entrypoint';
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 readerArtifact: TopLevelReaderArtifact<TReadFromStore, TClientFieldValue, any>;
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;
@@ -51,10 +51,13 @@ function getOrCreateCacheForArtifact(environment, entrypoint, variables) {
51
51
  const itemCleanupPair = [
52
52
  {
53
53
  kind: 'FragmentReference',
54
- readerArtifact: entrypoint.readerArtifact,
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.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,12 +1,16 @@
1
1
  /// <reference types="react" />
2
2
  import { TopLevelReaderArtifact } from './reader';
3
3
  import { Arguments } from './util';
4
+ export type ReaderWithRefetchQueries<TReadFromStore extends Object, TClientFieldValue> = {
5
+ readonly kind: 'ReaderWithRefetchQueries';
6
+ readonly readerArtifact: TopLevelReaderArtifact<TReadFromStore, TClientFieldValue, any>;
7
+ readonly nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[];
8
+ };
4
9
  export type IsographEntrypoint<TReadFromStore extends Object, TClientFieldValue> = {
5
10
  readonly kind: 'Entrypoint';
6
11
  readonly queryText: string;
7
12
  readonly normalizationAst: NormalizationAst;
8
- readonly readerArtifact: TopLevelReaderArtifact<TReadFromStore, TClientFieldValue, any>;
9
- readonly nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[];
13
+ readonly readerWithRefetchQueries: ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>;
10
14
  };
11
15
  export type NormalizationAstNode = NormalizationScalarField | NormalizationLinkedField | NormalizationInlineFragment;
12
16
  export type NormalizationAst = ReadonlyArray<NormalizationAstNode>;
@@ -28,7 +28,9 @@ function makeNetworkRequest(environment, artifact, variables) {
28
28
  });
29
29
  }
30
30
  if (status.kind === 'UndisposedIncomplete') {
31
- (0, cache_1.normalizeData)(environment, artifact.normalizationAst, (_a = networkResponse.data) !== null && _a !== void 0 ? _a : {}, variables, artifact.kind === 'Entrypoint' ? artifact.nestedRefetchQueries : []);
31
+ (0, cache_1.normalizeData)(environment, artifact.normalizationAst, (_a = networkResponse.data) !== null && _a !== void 0 ? _a : {}, variables, artifact.kind === 'Entrypoint'
32
+ ? artifact.readerWithRefetchQueries.nestedRefetchQueries
33
+ : []);
32
34
  const retainedQuery = {
33
35
  normalizationAst: artifact.normalizationAst,
34
36
  variables,
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
- readerArtifact: field.readerArtifact,
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,11 +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
- readerArtifact: field.entrypoint.readerArtifact,
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.nestedRefetchQueries,
257
264
  networkRequest,
258
265
  };
259
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
- readerArtifact: entrypoint.readerArtifact,
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.nestedRefetchQueries,
22
25
  networkRequest,
23
26
  },
24
27
  () => {
@@ -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-dd7a276d",
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-dd7a276d",
21
- "@isograph/react-disposable-state": "0.0.0-main-dd7a276d",
22
- "@isograph/reference-counted-pointer": "0.0.0-main-dd7a276d"
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 { RefetchQueryNormalizationArtifactWrapper } from '../core/entrypoint';
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 readerArtifact: TopLevelReaderArtifact<
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,10 +95,14 @@ export function getOrCreateCacheForArtifact<
95
95
  > = [
96
96
  {
97
97
  kind: 'FragmentReference',
98
- readerArtifact: entrypoint.readerArtifact,
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: entrypoint.nestedRefetchQueries,
102
106
  networkRequest: networkRequest,
103
107
  },
104
108
  disposeNetworkRequest,
@@ -44,7 +44,7 @@ export function getOrCreateCachedComponent(
44
44
  );
45
45
  }
46
46
 
47
- return fragmentReference.readerArtifact.resolver(
47
+ return fragmentReference.readerWithRefetchQueries.readerArtifact.resolver(
48
48
  data,
49
49
  additionalRuntimeProps,
50
50
  );
@@ -1,14 +1,11 @@
1
1
  import { TopLevelReaderArtifact } from './reader';
2
2
  import { Arguments } from './util';
3
3
 
4
- // This type should be treated as an opaque type.
5
- export type IsographEntrypoint<
4
+ export type ReaderWithRefetchQueries<
6
5
  TReadFromStore extends Object,
7
6
  TClientFieldValue,
8
7
  > = {
9
- readonly kind: 'Entrypoint';
10
- readonly queryText: string;
11
- readonly normalizationAst: NormalizationAst;
8
+ readonly kind: 'ReaderWithRefetchQueries';
12
9
  readonly readerArtifact: TopLevelReaderArtifact<
13
10
  TReadFromStore,
14
11
  TClientFieldValue,
@@ -18,6 +15,20 @@ export type IsographEntrypoint<
18
15
  readonly nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[];
19
16
  };
20
17
 
18
+ // This type should be treated as an opaque type.
19
+ export type IsographEntrypoint<
20
+ TReadFromStore extends Object,
21
+ TClientFieldValue,
22
+ > = {
23
+ readonly kind: 'Entrypoint';
24
+ readonly queryText: string;
25
+ readonly normalizationAst: NormalizationAst;
26
+ readonly readerWithRefetchQueries: ReaderWithRefetchQueries<
27
+ TReadFromStore,
28
+ TClientFieldValue
29
+ >;
30
+ };
31
+
21
32
  export type NormalizationAstNode =
22
33
  | NormalizationScalarField
23
34
  | NormalizationLinkedField
@@ -48,7 +48,9 @@ export function makeNetworkRequest(
48
48
  artifact.normalizationAst,
49
49
  networkResponse.data ?? {},
50
50
  variables,
51
- artifact.kind === 'Entrypoint' ? artifact.nestedRefetchQueries : [],
51
+ artifact.kind === 'Entrypoint'
52
+ ? artifact.readerWithRefetchQueries.nestedRefetchQueries
53
+ : [],
52
54
  );
53
55
  const retainedQuery = {
54
56
  normalizationAst: artifact.normalizationAst,
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
- readerArtifact: field.readerArtifact,
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,11 +375,17 @@ function readData<TReadFromStore>(
372
375
  );
373
376
  const fragmentReference: FragmentReference<any, any> = {
374
377
  kind: 'FragmentReference',
375
- readerArtifact: field.entrypoint.readerArtifact,
378
+ readerWithRefetchQueries: {
379
+ kind: 'ReaderWithRefetchQueries',
380
+ readerArtifact:
381
+ field.entrypoint.readerWithRefetchQueries.readerArtifact,
382
+ nestedRefetchQueries:
383
+ field.entrypoint.readerWithRefetchQueries
384
+ .nestedRefetchQueries,
385
+ },
376
386
  // TODO localVariables is not guaranteed to have an id field
377
387
  root: localVariables.id,
378
388
  variables: localVariables,
379
- nestedRefetchQueries: field.entrypoint.nestedRefetchQueries,
380
389
  networkRequest,
381
390
  };
382
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,10 +35,14 @@ export function useImperativeReference<
35
35
  setState([
36
36
  {
37
37
  kind: 'FragmentReference',
38
- readerArtifact: entrypoint.readerArtifact,
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: entrypoint.nestedRefetchQueries,
42
46
  networkRequest,
43
47
  },
44
48
  () => {
@@ -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(data);
40
+ return fragmentReference.readerWithRefetchQueries.readerArtifact.resolver(
41
+ data,
42
+ );
41
43
  }
42
44
  }
43
45
  }
@@ -37,8 +37,11 @@ const artifact: IsographEntrypoint<
37
37
  kind: "Entrypoint",
38
38
  queryText,
39
39
  normalizationAst,
40
- nestedRefetchQueries,
41
- readerArtifact: readerResolver,
42
- };
40
+ readerWithRefetchQueries: {
41
+ kind: "ReaderWithRefetchQueries",
42
+ nestedRefetchQueries,
43
+ readerArtifact: readerResolver,
44
+ }
45
+ };
43
46
 
44
47
  export default artifact;
@@ -73,8 +73,11 @@ const artifact: IsographEntrypoint<
73
73
  kind: "Entrypoint",
74
74
  queryText,
75
75
  normalizationAst,
76
- nestedRefetchQueries,
77
- readerArtifact: readerResolver,
78
- };
76
+ readerWithRefetchQueries: {
77
+ kind: "ReaderWithRefetchQueries",
78
+ nestedRefetchQueries,
79
+ readerArtifact: readerResolver,
80
+ }
81
+ };
79
82
 
80
83
  export default artifact;
@@ -36,8 +36,11 @@ const artifact: IsographEntrypoint<
36
36
  kind: "Entrypoint",
37
37
  queryText,
38
38
  normalizationAst,
39
- nestedRefetchQueries,
40
- readerArtifact: readerResolver,
41
- };
39
+ readerWithRefetchQueries: {
40
+ kind: "ReaderWithRefetchQueries",
41
+ nestedRefetchQueries,
42
+ readerArtifact: readerResolver,
43
+ }
44
+ };
42
45
 
43
46
  export default artifact;