@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.
@@ -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.readerWithRefetchQueries.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.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
- 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,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
- readerArtifact: field.entrypoint.readerWithRefetchQueries.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.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
- readerArtifact: entrypoint.readerWithRefetchQueries.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.readerWithRefetchQueries.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-043fded2",
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-043fded2",
21
- "@isograph/react-disposable-state": "0.0.0-main-043fded2",
22
- "@isograph/reference-counted-pointer": "0.0.0-main-043fded2"
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,11 +95,14 @@ export function getOrCreateCacheForArtifact<
95
95
  > = [
96
96
  {
97
97
  kind: 'FragmentReference',
98
- readerArtifact: entrypoint.readerWithRefetchQueries.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:
102
- entrypoint.readerWithRefetchQueries.nestedRefetchQueries,
103
106
  networkRequest: networkRequest,
104
107
  },
105
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,7 +1,7 @@
1
1
  import { TopLevelReaderArtifact } from './reader';
2
2
  import { Arguments } from './util';
3
3
 
4
- type ReaderWithRefetchQueries<
4
+ export type ReaderWithRefetchQueries<
5
5
  TReadFromStore extends Object,
6
6
  TClientFieldValue,
7
7
  > = {
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,14 +375,17 @@ function readData<TReadFromStore>(
372
375
  );
373
376
  const fragmentReference: FragmentReference<any, any> = {
374
377
  kind: 'FragmentReference',
375
- readerArtifact:
376
- field.entrypoint.readerWithRefetchQueries.readerArtifact,
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
- readerArtifact: entrypoint.readerWithRefetchQueries.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:
42
- entrypoint.readerWithRefetchQueries.nestedRefetchQueries,
43
46
  networkRequest,
44
47
  },
45
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
  }