@isograph/react 0.0.0-main-2f494978 → 0.0.0-main-3779371d

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.
package/dist/cache.d.ts CHANGED
@@ -15,7 +15,7 @@ declare global {
15
15
  */
16
16
  export declare function stableCopy<T>(value: T): T;
17
17
  type IsoResolver = IsographEntrypoint<any, any>;
18
- export declare function getOrCreateCacheForArtifact<T>(environment: IsographEnvironment, artifact: IsographEntrypoint<any, T>, variables: object): ParentCache<PromiseWrapper<T>>;
18
+ export declare function getOrCreateCacheForArtifact<TReadFromStore extends Object, TClientFieldValue>(environment: IsographEnvironment, artifact: IsographEntrypoint<TReadFromStore, TClientFieldValue>, variables: object): ParentCache<PromiseWrapper<TClientFieldValue>>;
19
19
  export declare function makeNetworkRequest<T>(environment: IsographEnvironment, artifact: IsoResolver, variables: object): ItemCleanupPair<PromiseWrapper<T>>;
20
20
  export declare function subscribe(environment: IsographEnvironment, callback: () => void): () => void;
21
21
  export declare function onNextChange(environment: IsographEnvironment): Promise<void>;
@@ -1,8 +1,8 @@
1
1
  import { UnassignedState } from '@isograph/react-disposable-state';
2
- import { ExtractReadFromStore, ExtractResolverResult, IsographEntrypoint } from './entrypoint';
2
+ import { IsographEntrypoint } from './entrypoint';
3
3
  import { FragmentReference } from './FragmentReference';
4
- export declare function useImperativeReference<TEntrypoint extends IsographEntrypoint<any, any>>(entrypoint: TEntrypoint): {
5
- queryReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, ExtractResolverResult<TEntrypoint>> | UnassignedState;
4
+ export declare function useImperativeReference<TReadFromStore extends Object, TClientFieldValue>(entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>): {
5
+ queryReference: FragmentReference<TReadFromStore, TClientFieldValue> | UnassignedState;
6
6
  loadQueryReference: (variables: {
7
7
  [index: string]: string;
8
8
  }) => void;
@@ -1,7 +1,7 @@
1
1
  import { FragmentReference, Variable } from './FragmentReference';
2
- import { ExtractReadFromStore, ExtractResolverResult } from './entrypoint';
3
- export declare function useLazyReference<TEntrypoint>(entrypoint: TEntrypoint | ((_: any) => any), variables: {
2
+ import { IsographEntrypoint } from './entrypoint';
3
+ export declare function useLazyReference<TReadFromStore extends Object, TClientFieldValue>(entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>, variables: {
4
4
  [key: string]: Variable;
5
5
  }): {
6
- queryReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, ExtractResolverResult<TEntrypoint>>;
6
+ queryReference: FragmentReference<TReadFromStore, TClientFieldValue>;
7
7
  };
@@ -3,20 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useLazyReference = void 0;
4
4
  const IsographEnvironmentProvider_1 = require("./IsographEnvironmentProvider");
5
5
  const IsographEnvironment_1 = require("./IsographEnvironment");
6
- const entrypoint_1 = require("./entrypoint");
7
6
  const cache_1 = require("./cache");
8
7
  const react_disposable_state_1 = require("@isograph/react-disposable-state");
9
- // Note: we cannot write TEntrypoint extends IsographEntrypoint<any, any, any>, or else
10
- // if we do not explicitly pass a type, the read out type will be any.
11
- // We cannot write TEntrypoint extends IsographEntrypoint<never, never, never>, or else
12
- // any actual Entrypoint we pass will not be valid.
13
8
  function useLazyReference(entrypoint, variables) {
14
9
  const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
15
- (0, entrypoint_1.assertIsEntrypoint)(entrypoint);
16
10
  const cache = (0, cache_1.getOrCreateCacheForArtifact)(environment, entrypoint, variables);
17
11
  // TODO add comment explaining why we never use this value
18
- // @ts-ignore
19
- const data = (0, react_disposable_state_1.useLazyDisposableState)(cache).state;
12
+ // @ts-ignore(6133)
13
+ const _data = (0, react_disposable_state_1.useLazyDisposableState)(cache).state;
20
14
  return {
21
15
  queryReference: {
22
16
  kind: 'FragmentReference',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isograph/react",
3
- "version": "0.0.0-main-2f494978",
3
+ "version": "0.0.0-main-3779371d",
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-2f494978",
20
- "@isograph/react-disposable-state": "0.0.0-main-2f494978",
19
+ "@isograph/disposable-types": "0.0.0-main-3779371d",
20
+ "@isograph/react-disposable-state": "0.0.0-main-3779371d",
21
21
  "react": "^18.2.0"
22
22
  },
23
23
  "devDependencies": {
package/src/cache.ts CHANGED
@@ -76,15 +76,22 @@ export function stableCopy<T>(value: T): T {
76
76
 
77
77
  type IsoResolver = IsographEntrypoint<any, any>;
78
78
 
79
- export function getOrCreateCacheForArtifact<T>(
79
+ export function getOrCreateCacheForArtifact<
80
+ TReadFromStore extends Object,
81
+ TClientFieldValue,
82
+ >(
80
83
  environment: IsographEnvironment,
81
- artifact: IsographEntrypoint<any, T>,
84
+ artifact: IsographEntrypoint<TReadFromStore, TClientFieldValue>,
82
85
  variables: object,
83
- ): ParentCache<PromiseWrapper<T>> {
86
+ ): ParentCache<PromiseWrapper<TClientFieldValue>> {
84
87
  const cacheKey = artifact.queryText + JSON.stringify(stableCopy(variables));
85
- const factory: Factory<PromiseWrapper<T>> = () =>
86
- makeNetworkRequest<T>(environment, artifact, variables);
87
- return getOrCreateCache<PromiseWrapper<T>>(environment, cacheKey, factory);
88
+ const factory: Factory<PromiseWrapper<TClientFieldValue>> = () =>
89
+ makeNetworkRequest<TClientFieldValue>(environment, artifact, variables);
90
+ return getOrCreateCache<PromiseWrapper<TClientFieldValue>>(
91
+ environment,
92
+ cacheKey,
93
+ factory,
94
+ );
88
95
  }
89
96
 
90
97
  type NetworkRequestStatus =
@@ -2,35 +2,26 @@ import {
2
2
  UnassignedState,
3
3
  useUpdatableDisposableState,
4
4
  } from '@isograph/react-disposable-state';
5
- import {
6
- ExtractReadFromStore,
7
- ExtractResolverResult,
8
- IsographEntrypoint,
9
- } from './entrypoint';
5
+ import { IsographEntrypoint } from './entrypoint';
10
6
  import { FragmentReference } from './FragmentReference';
11
7
  import { useIsographEnvironment } from './IsographEnvironmentProvider';
12
8
  import { makeNetworkRequest } from './cache';
13
9
  import { ROOT_ID } from './IsographEnvironment';
14
10
 
15
11
  export function useImperativeReference<
16
- TEntrypoint extends IsographEntrypoint<any, any>,
12
+ TReadFromStore extends Object,
13
+ TClientFieldValue,
17
14
  >(
18
- entrypoint: TEntrypoint,
15
+ entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>,
19
16
  ): {
20
17
  queryReference:
21
- | FragmentReference<
22
- ExtractReadFromStore<TEntrypoint>,
23
- ExtractResolverResult<TEntrypoint>
24
- >
18
+ | FragmentReference<TReadFromStore, TClientFieldValue>
25
19
  | UnassignedState;
26
20
  loadQueryReference: (variables: { [index: string]: string }) => void;
27
21
  } {
28
22
  const { state, setState } =
29
23
  useUpdatableDisposableState<
30
- FragmentReference<
31
- ExtractReadFromStore<TEntrypoint>,
32
- ExtractResolverResult<TEntrypoint>
33
- >
24
+ FragmentReference<TReadFromStore, TClientFieldValue>
34
25
  >();
35
26
  const environment = useIsographEnvironment();
36
27
  return {
@@ -1,50 +1,25 @@
1
1
  import { FragmentReference, Variable } from './FragmentReference';
2
2
  import { useIsographEnvironment } from './IsographEnvironmentProvider';
3
3
  import { ROOT_ID } from './IsographEnvironment';
4
- import {
5
- ExtractReadFromStore,
6
- ExtractResolverResult,
7
- assertIsEntrypoint,
8
- } from './entrypoint';
4
+ import { IsographEntrypoint } from './entrypoint';
9
5
  import { getOrCreateCacheForArtifact } from './cache';
10
6
  import { useLazyDisposableState } from '@isograph/react-disposable-state';
11
- import { type PromiseWrapper } from './PromiseWrapper';
12
7
 
13
- // Note: we cannot write TEntrypoint extends IsographEntrypoint<any, any, any>, or else
14
- // if we do not explicitly pass a type, the read out type will be any.
15
- // We cannot write TEntrypoint extends IsographEntrypoint<never, never, never>, or else
16
- // any actual Entrypoint we pass will not be valid.
17
- export function useLazyReference<TEntrypoint>(
18
- entrypoint:
19
- | TEntrypoint
20
- // Temporarily, we need to allow useLazyReference to take the result of calling
21
- // iso(`...`). At runtime, we confirm that the passed-in `iso` literal is actually
22
- // an entrypoint.
23
- | ((_: any) => any),
8
+ export function useLazyReference<
9
+ TReadFromStore extends Object,
10
+ TClientFieldValue,
11
+ >(
12
+ entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>,
24
13
  variables: { [key: string]: Variable },
25
14
  ): {
26
- queryReference: FragmentReference<
27
- ExtractReadFromStore<TEntrypoint>,
28
- ExtractResolverResult<TEntrypoint>
29
- >;
15
+ queryReference: FragmentReference<TReadFromStore, TClientFieldValue>;
30
16
  } {
31
17
  const environment = useIsographEnvironment();
32
- assertIsEntrypoint<
33
- ExtractReadFromStore<TEntrypoint>,
34
- ExtractResolverResult<TEntrypoint>
35
- >(entrypoint);
36
- const cache = getOrCreateCacheForArtifact<ExtractResolverResult<TEntrypoint>>(
37
- environment,
38
- entrypoint,
39
- variables,
40
- );
18
+ const cache = getOrCreateCacheForArtifact(environment, entrypoint, variables);
41
19
 
42
20
  // TODO add comment explaining why we never use this value
43
- // @ts-ignore
44
- const data =
45
- useLazyDisposableState<PromiseWrapper<ExtractResolverResult<TEntrypoint>>>(
46
- cache,
47
- ).state;
21
+ // @ts-ignore(6133)
22
+ const _data = useLazyDisposableState(cache).state;
48
23
 
49
24
  return {
50
25
  queryReference: {