@isograph/react 0.0.0-main-2fbc0faf → 0.0.0-main-0b32e705

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,7 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import { ExtractReadFromStore, IsographEntrypoint } from './entrypoint';
3
3
  import { FragmentReference } from './FragmentReference';
4
- export declare function EntrypointReader<TProps extends Record<any, any>, TEntrypoint extends IsographEntrypoint<any, React.FC<TProps>>>(props: {
4
+ export declare function EntrypointReader<TProps extends Record<any, any>, TEntrypoint extends IsographEntrypoint<any, React.FC<TProps>>>(props: TProps extends Record<string, never> ? {
5
+ queryReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, React.FC<TProps>>;
6
+ additionalProps?: TProps;
7
+ } : {
5
8
  queryReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, React.FC<TProps>>;
6
9
  additionalProps: TProps;
7
10
  }): React.ReactNode;
@@ -2,9 +2,9 @@ import { DataId } from './IsographEnvironment';
2
2
  import { RefetchQueryArtifactWrapper } from './entrypoint';
3
3
  import { ReaderArtifact } from './reader';
4
4
  export type Variable = any;
5
- export type FragmentReference<TReadFromStore extends Object, TResolverResult> = {
5
+ export type FragmentReference<TReadFromStore extends Object, TClientFieldValue> = {
6
6
  kind: 'FragmentReference';
7
- readerArtifact: ReaderArtifact<TReadFromStore, TResolverResult>;
7
+ readerArtifact: ReaderArtifact<TReadFromStore, TClientFieldValue>;
8
8
  root: DataId;
9
9
  variables: {
10
10
  [index: string]: Variable;
@@ -1,10 +1,10 @@
1
1
  import { ReaderArtifact } from './reader';
2
2
  import { Arguments } from './util';
3
- export type IsographEntrypoint<TReadFromStore extends Object, TResolverResult> = {
3
+ export type IsographEntrypoint<TReadFromStore extends Object, TClientFieldValue> = {
4
4
  kind: 'Entrypoint';
5
5
  queryText: string;
6
6
  normalizationAst: NormalizationAst;
7
- readerArtifact: ReaderArtifact<TReadFromStore, TResolverResult>;
7
+ readerArtifact: ReaderArtifact<TReadFromStore, TClientFieldValue>;
8
8
  nestedRefetchQueries: RefetchQueryArtifactWrapper[];
9
9
  };
10
10
  export type NormalizationAstNode = NormalizationScalarField | NormalizationLinkedField;
@@ -29,6 +29,6 @@ export type RefetchQueryArtifactWrapper = {
29
29
  artifact: RefetchQueryArtifact;
30
30
  allowedVariables: string[];
31
31
  };
32
- export declare function assertIsEntrypoint<TReadFromStore extends Object, TResolverResult>(value: IsographEntrypoint<TReadFromStore, TResolverResult> | ((_: any) => any) | any): asserts value is IsographEntrypoint<TReadFromStore, TResolverResult>;
32
+ export declare function assertIsEntrypoint<TReadFromStore extends Object, TClientFieldValue>(value: IsographEntrypoint<TReadFromStore, TClientFieldValue> | ((_: any) => any) | any): asserts value is IsographEntrypoint<TReadFromStore, TClientFieldValue>;
33
33
  export type ExtractReadFromStore<Type> = Type extends IsographEntrypoint<infer X, any> ? X : never;
34
34
  export type ExtractResolverResult<Type> = Type extends IsographEntrypoint<any, infer X> ? X : never;
package/dist/read.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import { FragmentReference } from './FragmentReference';
2
2
  import { IsographEnvironment } from './IsographEnvironment';
3
- export declare function read<TReadFromStore extends Object, TResolverResult>(environment: IsographEnvironment, fragmentReference: FragmentReference<TReadFromStore, TResolverResult>): TResolverResult;
3
+ export declare function read<TReadFromStore extends Object, TClientFieldValue>(environment: IsographEnvironment, fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>): TClientFieldValue;
4
4
  export declare function readButDoNotEvaluate<TReadFromStore extends Object>(environment: IsographEnvironment, reference: FragmentReference<TReadFromStore, unknown>): TReadFromStore;
package/dist/reader.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { Arguments } from './util';
2
- export type ReaderArtifact<TReadFromStore extends Object, TResolverResult> = {
2
+ export type ReaderArtifact<TReadFromStore extends Object, TClientFieldValue> = {
3
3
  kind: 'ReaderArtifact';
4
4
  readerAst: ReaderAst<TReadFromStore>;
5
- resolver: (data: TReadFromStore, runtimeProps: any) => TResolverResult;
5
+ resolver: (data: TReadFromStore, runtimeProps: any) => TClientFieldValue;
6
6
  variant: ReaderResolverVariant;
7
7
  };
8
8
  export type ReaderAstNode = ReaderScalarField | ReaderLinkedField | ReaderResolverField | ReaderRefetchField | ReaderMutationField;
package/dist/reader.js CHANGED
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
- // TODO this should probably be at least three distinct types, for @component,
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,2 +1,2 @@
1
1
  import { FragmentReference } from './FragmentReference';
2
- export declare function useResult<TReadFromStore extends Object, TResolverResult>(fragmentReference: FragmentReference<TReadFromStore, TResolverResult>): TResolverResult;
2
+ export declare function useResult<TReadFromStore extends Object, TClientFieldValue>(fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>): TClientFieldValue;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isograph/react",
3
- "version": "0.0.0-main-2fbc0faf",
3
+ "version": "0.0.0-main-0b32e705",
4
4
  "description": "Use Isograph with React",
5
5
  "homepage": "https://isograph.dev",
6
6
  "main": "dist/index.js",
@@ -16,8 +16,8 @@
16
16
  "prepack": "yarn run test && yarn run compile"
17
17
  },
18
18
  "dependencies": {
19
- "@isograph/disposable-types": "0.0.0-main-2fbc0faf",
20
- "@isograph/react-disposable-state": "0.0.0-main-2fbc0faf",
19
+ "@isograph/disposable-types": "0.0.0-main-0b32e705",
20
+ "@isograph/react-disposable-state": "0.0.0-main-0b32e705",
21
21
  "react": "^18.2.0"
22
22
  },
23
23
  "devDependencies": {
@@ -6,15 +6,23 @@ import { useResult } from './useResult';
6
6
  export function EntrypointReader<
7
7
  TProps extends Record<any, any>,
8
8
  TEntrypoint extends IsographEntrypoint<any, React.FC<TProps>>,
9
- >(props: {
10
- queryReference: FragmentReference<
11
- ExtractReadFromStore<TEntrypoint>,
12
- React.FC<TProps>
13
- >;
14
- // TODO make additionalProps optional if TProps extends Record<string, never>
15
- // perhaps with a type overload
16
- additionalProps: TProps;
17
- }): React.ReactNode {
9
+ >(
10
+ props: TProps extends Record<string, never>
11
+ ? {
12
+ queryReference: FragmentReference<
13
+ ExtractReadFromStore<TEntrypoint>,
14
+ React.FC<TProps>
15
+ >;
16
+ additionalProps?: TProps;
17
+ }
18
+ : {
19
+ queryReference: FragmentReference<
20
+ ExtractReadFromStore<TEntrypoint>,
21
+ React.FC<TProps>
22
+ >;
23
+ additionalProps: TProps;
24
+ },
25
+ ): React.ReactNode {
18
26
  const Component = useResult(props.queryReference);
19
27
  return <Component {...props.additionalProps} />;
20
28
  }
@@ -7,10 +7,10 @@ export type Variable = any;
7
7
 
8
8
  export type FragmentReference<
9
9
  TReadFromStore extends Object,
10
- TResolverResult,
10
+ TClientFieldValue,
11
11
  > = {
12
12
  kind: 'FragmentReference';
13
- readerArtifact: ReaderArtifact<TReadFromStore, TResolverResult>;
13
+ readerArtifact: ReaderArtifact<TReadFromStore, TClientFieldValue>;
14
14
  root: DataId;
15
15
  variables: { [index: string]: Variable } | null;
16
16
  // TODO: We should instead have ReaderAst<TResolverProps>
package/src/entrypoint.ts CHANGED
@@ -4,12 +4,12 @@ import { Arguments } from './util';
4
4
  // This type should be treated as an opaque type.
5
5
  export type IsographEntrypoint<
6
6
  TReadFromStore extends Object,
7
- TResolverResult,
7
+ TClientFieldValue,
8
8
  > = {
9
9
  kind: 'Entrypoint';
10
10
  queryText: string;
11
11
  normalizationAst: NormalizationAst;
12
- readerArtifact: ReaderArtifact<TReadFromStore, TResolverResult>;
12
+ readerArtifact: ReaderArtifact<TReadFromStore, TClientFieldValue>;
13
13
  nestedRefetchQueries: RefetchQueryArtifactWrapper[];
14
14
  };
15
15
 
@@ -46,15 +46,15 @@ export type RefetchQueryArtifactWrapper = {
46
46
 
47
47
  export function assertIsEntrypoint<
48
48
  TReadFromStore extends Object,
49
- TResolverResult,
49
+ TClientFieldValue,
50
50
  >(
51
51
  value:
52
- | IsographEntrypoint<TReadFromStore, TResolverResult>
52
+ | IsographEntrypoint<TReadFromStore, TClientFieldValue>
53
53
  | ((_: any) => any)
54
54
  // Temporarily, allow any here. Once we automatically provide
55
55
  // types to entrypoints, we probably don't need this.
56
56
  | any,
57
- ): asserts value is IsographEntrypoint<TReadFromStore, TResolverResult> {
57
+ ): asserts value is IsographEntrypoint<TReadFromStore, TClientFieldValue> {
58
58
  if (typeof value === 'function') throw new Error('Not a string');
59
59
  }
60
60
 
package/src/read.ts CHANGED
@@ -10,10 +10,10 @@ import {
10
10
  } from './IsographEnvironment';
11
11
  import { ReaderAst } from './reader';
12
12
 
13
- export function read<TReadFromStore extends Object, TResolverResult>(
13
+ export function read<TReadFromStore extends Object, TClientFieldValue>(
14
14
  environment: IsographEnvironment,
15
- fragmentReference: FragmentReference<TReadFromStore, TResolverResult>,
16
- ): TResolverResult {
15
+ fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>,
16
+ ): TClientFieldValue {
17
17
  const variant = fragmentReference.readerArtifact.variant;
18
18
  if (variant.kind === 'Eager') {
19
19
  const data = readData(
package/src/reader.ts CHANGED
@@ -1,12 +1,11 @@
1
- // TODO this should probably be at least three distinct types, for @component,
2
-
3
1
  import { Arguments } from './util';
4
2
 
3
+ // TODO this should probably be at least three distinct types, for @component,
5
4
  // non-@component and refetch resolvers
6
- export type ReaderArtifact<TReadFromStore extends Object, TResolverResult> = {
5
+ export type ReaderArtifact<TReadFromStore extends Object, TClientFieldValue> = {
7
6
  kind: 'ReaderArtifact';
8
7
  readerAst: ReaderAst<TReadFromStore>;
9
- resolver: (data: TReadFromStore, runtimeProps: any) => TResolverResult;
8
+ resolver: (data: TReadFromStore, runtimeProps: any) => TClientFieldValue;
10
9
  variant: ReaderResolverVariant;
11
10
  };
12
11
 
package/src/useResult.ts CHANGED
@@ -4,9 +4,9 @@ import { subscribe } from './cache';
4
4
  import { read } from './read';
5
5
  import { FragmentReference } from './FragmentReference';
6
6
 
7
- export function useResult<TReadFromStore extends Object, TResolverResult>(
8
- fragmentReference: FragmentReference<TReadFromStore, TResolverResult>,
9
- ): TResolverResult {
7
+ export function useResult<TReadFromStore extends Object, TClientFieldValue>(
8
+ fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>,
9
+ ): TClientFieldValue {
10
10
  const environment = useIsographEnvironment();
11
11
 
12
12
  const [, setState] = useState<object | void>();
File without changes
File without changes