@isograph/react 0.0.0-main-e7fae892 → 0.0.0-main-000d7173

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,6 @@
1
1
  import * as React from 'react';
2
- import { ExtractReadFromStore, ExtractResolverProps, IsographEntrypoint, type FragmentReference } from './index';
3
- export declare function EntrypointReader<TEntrypoint extends IsographEntrypoint<any, any, React.FC<any>>>(props: {
4
- queryReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, ExtractResolverProps<TEntrypoint>, React.FC<any>>;
2
+ import { ExtractReadFromStore, IsographEntrypoint, type FragmentReference } from './index';
3
+ export declare function EntrypointReader<TEntrypoint extends IsographEntrypoint<any, React.FC<any>>>(props: {
4
+ queryReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, React.FC<any>>;
5
5
  additionalProps?: any | void;
6
6
  }): ReturnType<React.FC<any>>;
package/dist/cache.d.ts CHANGED
@@ -13,8 +13,8 @@ declare global {
13
13
  * results.
14
14
  */
15
15
  export declare function stableCopy<T>(value: T): T;
16
- type IsoResolver = IsographEntrypoint<any, any, any>;
17
- export declare function getOrCreateCacheForArtifact<T>(environment: IsographEnvironment, artifact: IsographEntrypoint<any, any, T>, variables: object): ParentCache<PromiseWrapper<T>>;
16
+ type IsoResolver = IsographEntrypoint<any, any>;
17
+ export declare function getOrCreateCacheForArtifact<T>(environment: IsographEnvironment, artifact: IsographEntrypoint<any, T>, variables: object): ParentCache<PromiseWrapper<T>>;
18
18
  export declare function makeNetworkRequest<T>(environment: IsographEnvironment, artifact: IsoResolver, variables: object): ItemCleanupPair<PromiseWrapper<T>>;
19
19
  export declare function subscribe(environment: IsographEnvironment, callback: () => void): () => void;
20
20
  export declare function onNextChange(environment: IsographEnvironment): Promise<void>;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { ReaderArtifact, RefetchQueryArtifactWrapper } from './index';
3
3
  import { IsographEnvironment, DataId } from './IsographEnvironment';
4
- export declare function getOrCreateCachedComponent(environment: IsographEnvironment, root: DataId, componentName: string, readerArtifact: ReaderArtifact<any, any, any>, variables: {
4
+ export declare function getOrCreateCachedComponent(environment: IsographEnvironment, root: DataId, componentName: string, readerArtifact: ReaderArtifact<any, any>, variables: {
5
5
  [key: string]: string;
6
6
  }, resolverRefetchQueries: RefetchQueryArtifactWrapper[]): import("react").FC<any>;
package/dist/index.d.ts CHANGED
@@ -4,17 +4,17 @@ export { makeNetworkRequest, subscribe } from './cache';
4
4
  export { IsographEnvironmentContext, ROOT_ID, type DataId, type DataTypeValue, type IsographEnvironment, IsographEnvironmentProvider, type IsographEnvironmentProviderProps, type IsographNetworkFunction, type IsographStore, type Link, type StoreRecord, useIsographEnvironment, createIsographEnvironment, createIsographStore, } from './IsographEnvironment';
5
5
  export { useImperativeReference } from './useImperativeReference';
6
6
  export { EntrypointReader } from './EntrypointReader';
7
- export type IsographEntrypoint<TReadFromStore extends Object, TResolverProps, TResolverResult> = {
7
+ export type IsographEntrypoint<TReadFromStore extends Object, TResolverResult> = {
8
8
  kind: 'Entrypoint';
9
9
  queryText: string;
10
10
  normalizationAst: NormalizationAst;
11
- readerArtifact: ReaderArtifact<TReadFromStore, TResolverProps, TResolverResult>;
11
+ readerArtifact: ReaderArtifact<TReadFromStore, TResolverResult>;
12
12
  nestedRefetchQueries: RefetchQueryArtifactWrapper[];
13
13
  };
14
- export type ReaderArtifact<TReadFromStore extends Object, TResolverProps, TResolverResult> = {
14
+ export type ReaderArtifact<TReadFromStore extends Object, TResolverResult> = {
15
15
  kind: 'ReaderArtifact';
16
16
  readerAst: ReaderAst<TReadFromStore>;
17
- resolver: (data: TResolverProps, runtimeProps: any) => TResolverResult;
17
+ resolver: (data: TReadFromStore, runtimeProps: any) => TResolverResult;
18
18
  variant: ReaderResolverVariant;
19
19
  };
20
20
  export type ReaderAstNode = ReaderScalarField | ReaderLinkedField | ReaderResolverField | ReaderRefetchField | ReaderMutationField;
@@ -42,22 +42,21 @@ export type ReaderResolverVariant = {
42
42
  export type ReaderResolverField = {
43
43
  kind: 'Resolver';
44
44
  alias: string;
45
- readerArtifact: ReaderArtifact<any, any, any>;
45
+ readerArtifact: ReaderArtifact<any, any>;
46
46
  arguments: Arguments | null;
47
47
  usedRefetchQueries: number[];
48
48
  };
49
49
  export type ReaderRefetchField = {
50
50
  kind: 'RefetchField';
51
51
  alias: string;
52
- readerArtifact: ReaderArtifact<any, any, any>;
52
+ readerArtifact: ReaderArtifact<any, any>;
53
53
  refetchQuery: number;
54
54
  };
55
55
  export type ReaderMutationField = {
56
56
  kind: 'MutationField';
57
57
  alias: string;
58
- readerArtifact: ReaderArtifact<any, any, any>;
58
+ readerArtifact: ReaderArtifact<any, any>;
59
59
  refetchQuery: number;
60
- allowedVariables: string[];
61
60
  };
62
61
  export type NormalizationAstNode = NormalizationScalarField | NormalizationLinkedField;
63
62
  export type NormalizationAst = NormalizationAstNode[];
@@ -92,26 +91,25 @@ export type ArgumentValue = {
92
91
  value: any;
93
92
  };
94
93
  type Variable = any;
95
- export type FragmentReference<TReadFromStore extends Object, TResolverProps, TResolverResult> = {
94
+ export type FragmentReference<TReadFromStore extends Object, TResolverResult> = {
96
95
  kind: 'FragmentReference';
97
- readerArtifact: ReaderArtifact<TReadFromStore, TResolverProps, TResolverResult>;
96
+ readerArtifact: ReaderArtifact<TReadFromStore, TResolverResult>;
98
97
  root: DataId;
99
98
  variables: {
100
99
  [index: string]: Variable;
101
100
  } | null;
102
101
  nestedRefetchQueries: RefetchQueryArtifactWrapper[];
103
102
  };
104
- export type ExtractReadFromStore<Type> = Type extends IsographEntrypoint<infer X, any, any> ? X : never;
105
- export type ExtractResolverProps<Type> = Type extends IsographEntrypoint<any, infer X, any> ? X : never;
106
- export type ExtractResolverResult<Type> = Type extends IsographEntrypoint<any, any, infer X> ? X : never;
103
+ export type ExtractReadFromStore<Type> = Type extends IsographEntrypoint<infer X, any> ? X : never;
104
+ export type ExtractResolverResult<Type> = Type extends IsographEntrypoint<any, infer X> ? X : never;
107
105
  export declare function useLazyReference<TEntrypoint>(entrypoint: TEntrypoint | ((_: any) => any), variables: {
108
106
  [key: string]: Variable;
109
107
  }): {
110
- queryReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, ExtractResolverProps<TEntrypoint>, ExtractResolverResult<TEntrypoint>>;
108
+ queryReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, ExtractResolverResult<TEntrypoint>>;
111
109
  };
112
- export declare function useResult<TReadFromStore extends Object, TResolverProps, TResolverResult>(fragmentReference: FragmentReference<TReadFromStore, TResolverProps, TResolverResult>): TResolverResult;
113
- export declare function read<TReadFromStore extends Object, TResolverProps, TResolverResult>(environment: IsographEnvironment, fragmentReference: FragmentReference<TReadFromStore, TResolverProps, TResolverResult>): TResolverResult;
114
- export declare function readButDoNotEvaluate<TReadFromStore extends Object>(environment: IsographEnvironment, reference: FragmentReference<TReadFromStore, unknown, unknown>): TReadFromStore;
110
+ export declare function useResult<TReadFromStore extends Object, TResolverResult>(fragmentReference: FragmentReference<TReadFromStore, TResolverResult>): TResolverResult;
111
+ export declare function read<TReadFromStore extends Object, TResolverResult>(environment: IsographEnvironment, fragmentReference: FragmentReference<TReadFromStore, TResolverResult>): TResolverResult;
112
+ export declare function readButDoNotEvaluate<TReadFromStore extends Object>(environment: IsographEnvironment, reference: FragmentReference<TReadFromStore, unknown>): TReadFromStore;
115
113
  export declare function defaultMissingFieldHandler(_storeRecord: StoreRecord, _root: DataId, fieldName: string, arguments_: {
116
114
  [index: string]: any;
117
115
  } | null, variables: {
@@ -1,7 +1,7 @@
1
1
  import { UnassignedState } from '@isograph/react-disposable-state';
2
- import { type IsographEntrypoint, type FragmentReference, ExtractReadFromStore, ExtractResolverProps, ExtractResolverResult } from './index';
3
- export declare function useImperativeReference<TEntrypoint extends IsographEntrypoint<any, any, any>>(entrypoint: TEntrypoint): {
4
- queryReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, ExtractResolverProps<TEntrypoint>, ExtractResolverResult<TEntrypoint>> | UnassignedState;
2
+ import { type IsographEntrypoint, type FragmentReference, ExtractReadFromStore, ExtractResolverResult } from './index';
3
+ export declare function useImperativeReference<TEntrypoint extends IsographEntrypoint<any, any>>(entrypoint: TEntrypoint): {
4
+ queryReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, ExtractResolverResult<TEntrypoint>> | UnassignedState;
5
5
  loadQueryReference: (variables: {
6
6
  [index: string]: string;
7
7
  }) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isograph/react",
3
- "version": "0.0.0-main-e7fae892",
3
+ "version": "0.0.0-main-000d7173",
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-e7fae892",
20
- "@isograph/react-disposable-state": "0.0.0-main-e7fae892",
19
+ "@isograph/disposable-types": "0.0.0-main-000d7173",
20
+ "@isograph/react-disposable-state": "0.0.0-main-000d7173",
21
21
  "react": "^18.2.0"
22
22
  },
23
23
  "devDependencies": {
@@ -1,18 +1,16 @@
1
1
  import * as React from 'react';
2
2
  import {
3
3
  ExtractReadFromStore,
4
- ExtractResolverProps,
5
4
  IsographEntrypoint,
6
5
  type FragmentReference,
7
6
  useResult,
8
7
  } from './index';
9
8
 
10
9
  export function EntrypointReader<
11
- TEntrypoint extends IsographEntrypoint<any, any, React.FC<any>>,
10
+ TEntrypoint extends IsographEntrypoint<any, React.FC<any>>,
12
11
  >(props: {
13
12
  queryReference: FragmentReference<
14
13
  ExtractReadFromStore<TEntrypoint>,
15
- ExtractResolverProps<TEntrypoint>,
16
14
  React.FC<any>
17
15
  >;
18
16
  additionalProps?: any | void;
package/src/cache.tsx CHANGED
@@ -70,11 +70,11 @@ export function stableCopy<T>(value: T): T {
70
70
  return stable as any;
71
71
  }
72
72
 
73
- type IsoResolver = IsographEntrypoint<any, any, any>;
73
+ type IsoResolver = IsographEntrypoint<any, any>;
74
74
 
75
75
  export function getOrCreateCacheForArtifact<T>(
76
76
  environment: IsographEnvironment,
77
- artifact: IsographEntrypoint<any, any, T>,
77
+ artifact: IsographEntrypoint<any, T>,
78
78
  variables: object,
79
79
  ): ParentCache<PromiseWrapper<T>> {
80
80
  const cacheKey = artifact.queryText + JSON.stringify(stableCopy(variables));
@@ -10,7 +10,7 @@ export function getOrCreateCachedComponent(
10
10
  environment: IsographEnvironment,
11
11
  root: DataId,
12
12
  componentName: string,
13
- readerArtifact: ReaderArtifact<any, any, any>,
13
+ readerArtifact: ReaderArtifact<any, any>,
14
14
  variables: { [key: string]: string },
15
15
  resolverRefetchQueries: RefetchQueryArtifactWrapper[],
16
16
  ) {
package/src/index.tsx CHANGED
@@ -42,30 +42,21 @@ export { EntrypointReader } from './EntrypointReader';
42
42
  // This type should be treated as an opaque type.
43
43
  export type IsographEntrypoint<
44
44
  TReadFromStore extends Object,
45
- TResolverProps,
46
45
  TResolverResult,
47
46
  > = {
48
47
  kind: 'Entrypoint';
49
48
  queryText: string;
50
49
  normalizationAst: NormalizationAst;
51
- readerArtifact: ReaderArtifact<
52
- TReadFromStore,
53
- TResolverProps,
54
- TResolverResult
55
- >;
50
+ readerArtifact: ReaderArtifact<TReadFromStore, TResolverResult>;
56
51
  nestedRefetchQueries: RefetchQueryArtifactWrapper[];
57
52
  };
58
53
 
59
54
  // TODO this should probably be at least three distinct types, for @component,
60
55
  // non-@component and refetch resolvers
61
- export type ReaderArtifact<
62
- TReadFromStore extends Object,
63
- TResolverProps,
64
- TResolverResult,
65
- > = {
56
+ export type ReaderArtifact<TReadFromStore extends Object, TResolverResult> = {
66
57
  kind: 'ReaderArtifact';
67
58
  readerAst: ReaderAst<TReadFromStore>;
68
- resolver: (data: TResolverProps, runtimeProps: any) => TResolverResult;
59
+ resolver: (data: TReadFromStore, runtimeProps: any) => TResolverResult;
69
60
  variant: ReaderResolverVariant;
70
61
  };
71
62
 
@@ -105,7 +96,7 @@ export type ReaderResolverVariant =
105
96
  export type ReaderResolverField = {
106
97
  kind: 'Resolver';
107
98
  alias: string;
108
- readerArtifact: ReaderArtifact<any, any, any>;
99
+ readerArtifact: ReaderArtifact<any, any>;
109
100
  arguments: Arguments | null;
110
101
  usedRefetchQueries: number[];
111
102
  };
@@ -114,7 +105,7 @@ export type ReaderRefetchField = {
114
105
  kind: 'RefetchField';
115
106
  alias: string;
116
107
  // TODO this bad modeling. A refetch field cannot have variant: "Component" (I think)
117
- readerArtifact: ReaderArtifact<any, any, any>;
108
+ readerArtifact: ReaderArtifact<any, any>;
118
109
  refetchQuery: number;
119
110
  };
120
111
 
@@ -122,9 +113,8 @@ export type ReaderMutationField = {
122
113
  kind: 'MutationField';
123
114
  alias: string;
124
115
  // TODO this bad modeling. A mutation field cannot have variant: "Component" (I think)
125
- readerArtifact: ReaderArtifact<any, any, any>;
116
+ readerArtifact: ReaderArtifact<any, any>;
126
117
  refetchQuery: number;
127
- allowedVariables: string[];
128
118
  };
129
119
 
130
120
  export type NormalizationAstNode =
@@ -177,46 +167,31 @@ type Variable = any;
177
167
 
178
168
  export type FragmentReference<
179
169
  TReadFromStore extends Object,
180
- TResolverProps,
181
170
  TResolverResult,
182
171
  > = {
183
172
  kind: 'FragmentReference';
184
- readerArtifact: ReaderArtifact<
185
- TReadFromStore,
186
- TResolverProps,
187
- TResolverResult
188
- >;
173
+ readerArtifact: ReaderArtifact<TReadFromStore, TResolverResult>;
189
174
  root: DataId;
190
175
  variables: { [index: string]: Variable } | null;
191
176
  // TODO: We should instead have ReaderAst<TResolverProps>
192
177
  nestedRefetchQueries: RefetchQueryArtifactWrapper[];
193
178
  };
194
179
 
195
- function assertIsEntrypoint<
196
- TReadFromStore extends Object,
197
- TResolverProps,
198
- TResolverResult,
199
- >(
180
+ function assertIsEntrypoint<TReadFromStore extends Object, TResolverResult>(
200
181
  value:
201
- | IsographEntrypoint<TReadFromStore, TResolverProps, TResolverResult>
182
+ | IsographEntrypoint<TReadFromStore, TResolverResult>
202
183
  | ((_: any) => any)
203
184
  // Temporarily, allow any here. Once we automatically provide
204
185
  // types to entrypoints, we probably don't need this.
205
186
  | any,
206
- ): asserts value is IsographEntrypoint<
207
- TReadFromStore,
208
- TResolverProps,
209
- TResolverResult
210
- > {
187
+ ): asserts value is IsographEntrypoint<TReadFromStore, TResolverResult> {
211
188
  if (typeof value === 'function') throw new Error('Not a string');
212
189
  }
213
190
 
214
191
  export type ExtractReadFromStore<Type> =
215
- Type extends IsographEntrypoint<infer X, any, any> ? X : never;
216
- export type ExtractResolverProps<Type> =
217
- Type extends IsographEntrypoint<any, infer X, any> ? X : never;
192
+ Type extends IsographEntrypoint<infer X, any> ? X : never;
218
193
  export type ExtractResolverResult<Type> =
219
- Type extends IsographEntrypoint<any, any, infer X> ? X : never;
194
+ Type extends IsographEntrypoint<any, infer X> ? X : never;
220
195
  // Note: we cannot write TEntrypoint extends IsographEntrypoint<any, any, any>, or else
221
196
  // if we do not explicitly pass a type, the read out type will be any.
222
197
  // We cannot write TEntrypoint extends IsographEntrypoint<never, never, never>, or else
@@ -232,14 +207,12 @@ export function useLazyReference<TEntrypoint>(
232
207
  ): {
233
208
  queryReference: FragmentReference<
234
209
  ExtractReadFromStore<TEntrypoint>,
235
- ExtractResolverProps<TEntrypoint>,
236
210
  ExtractResolverResult<TEntrypoint>
237
211
  >;
238
212
  } {
239
213
  const environment = useIsographEnvironment();
240
214
  assertIsEntrypoint<
241
215
  ExtractReadFromStore<TEntrypoint>,
242
- ExtractResolverProps<TEntrypoint>,
243
216
  ExtractResolverResult<TEntrypoint>
244
217
  >(entrypoint);
245
218
  const cache = getOrCreateCacheForArtifact<ExtractResolverResult<TEntrypoint>>(
@@ -266,16 +239,8 @@ export function useLazyReference<TEntrypoint>(
266
239
  };
267
240
  }
268
241
 
269
- export function useResult<
270
- TReadFromStore extends Object,
271
- TResolverProps,
272
- TResolverResult,
273
- >(
274
- fragmentReference: FragmentReference<
275
- TReadFromStore,
276
- TResolverProps,
277
- TResolverResult
278
- >,
242
+ export function useResult<TReadFromStore extends Object, TResolverResult>(
243
+ fragmentReference: FragmentReference<TReadFromStore, TResolverResult>,
279
244
  ): TResolverResult {
280
245
  const environment = useIsographEnvironment();
281
246
 
@@ -289,17 +254,9 @@ export function useResult<
289
254
  return read(environment, fragmentReference);
290
255
  }
291
256
 
292
- export function read<
293
- TReadFromStore extends Object,
294
- TResolverProps,
295
- TResolverResult,
296
- >(
257
+ export function read<TReadFromStore extends Object, TResolverResult>(
297
258
  environment: IsographEnvironment,
298
- fragmentReference: FragmentReference<
299
- TReadFromStore,
300
- TResolverProps,
301
- TResolverResult
302
- >,
259
+ fragmentReference: FragmentReference<TReadFromStore, TResolverResult>,
303
260
  ): TResolverResult {
304
261
  const variant = fragmentReference.readerArtifact.variant;
305
262
  if (variant.kind === 'Eager') {
@@ -333,7 +290,7 @@ export function read<
333
290
 
334
291
  export function readButDoNotEvaluate<TReadFromStore extends Object>(
335
292
  environment: IsographEnvironment,
336
- reference: FragmentReference<TReadFromStore, unknown, unknown>,
293
+ reference: FragmentReference<TReadFromStore, unknown>,
337
294
  ): TReadFromStore {
338
295
  const response = readData(
339
296
  environment,
@@ -6,7 +6,6 @@ import {
6
6
  type IsographEntrypoint,
7
7
  type FragmentReference,
8
8
  ExtractReadFromStore,
9
- ExtractResolverProps,
10
9
  ExtractResolverResult,
11
10
  ROOT_ID,
12
11
  useIsographEnvironment,
@@ -14,14 +13,13 @@ import {
14
13
  } from './index';
15
14
 
16
15
  export function useImperativeReference<
17
- TEntrypoint extends IsographEntrypoint<any, any, any>,
16
+ TEntrypoint extends IsographEntrypoint<any, any>,
18
17
  >(
19
18
  entrypoint: TEntrypoint,
20
19
  ): {
21
20
  queryReference:
22
21
  | FragmentReference<
23
22
  ExtractReadFromStore<TEntrypoint>,
24
- ExtractResolverProps<TEntrypoint>,
25
23
  ExtractResolverResult<TEntrypoint>
26
24
  >
27
25
  | UnassignedState;
@@ -31,7 +29,6 @@ export function useImperativeReference<
31
29
  useUpdatableDisposableState<
32
30
  FragmentReference<
33
31
  ExtractReadFromStore<TEntrypoint>,
34
- ExtractResolverProps<TEntrypoint>,
35
32
  ExtractResolverResult<TEntrypoint>
36
33
  >
37
34
  >();