@isograph/react 0.0.0-main-eadfb992 → 0.0.0-main-3179ac5f
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/core/FragmentReference.d.ts +7 -1
- package/dist/core/cache.d.ts +2 -2
- package/dist/core/cache.js +0 -2
- package/dist/core/read.d.ts +2 -2
- package/dist/core/reader.d.ts +12 -9
- package/dist/index.d.ts +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.js +1 -0
- package/dist/react/useImperativeReference.d.ts +2 -2
- package/dist/react/useLazyReference.d.ts +2 -2
- package/dist/react/useReadAndSubscribe.d.ts +2 -2
- package/dist/react/useResult.js +2 -2
- package/package.json +4 -4
- package/src/core/FragmentReference.ts +13 -1
- package/src/core/cache.ts +6 -4
- package/src/core/read.ts +9 -4
- package/src/core/reader.ts +12 -12
- package/src/index.ts +2 -0
- package/src/loadable-hooks/useSkipLimitPagination.ts +1 -0
- package/src/react/useImperativeReference.ts +6 -3
- package/src/react/useLazyReference.ts +5 -2
- package/src/react/useReadAndSubscribe.ts +2 -1
- package/src/react/useResult.ts +2 -2
- package/src/tests/__isograph/Query/meName/param_type.ts +1 -3
- package/src/tests/__isograph/Query/meNameSuccessor/param_type.ts +1 -3
- package/src/tests/__isograph/Query/nodeField/param_type.ts +2 -3
- package/src/tests/__isograph/Query/nodeField/parameters_type.ts +3 -0
- package/src/tests/__isograph/iso.ts +4 -5
@@ -5,6 +5,12 @@ export type VariableValue = string | number | boolean | null | object;
|
|
5
5
|
export type Variables = {
|
6
6
|
readonly [index: string]: VariableValue;
|
7
7
|
};
|
8
|
+
export type ExtractData<T> = T extends {
|
9
|
+
data: infer D extends object;
|
10
|
+
} ? D : never;
|
11
|
+
export type ExtractParameters<T> = T extends {
|
12
|
+
parameters: infer P extends Variables;
|
13
|
+
} ? P : Variables;
|
8
14
|
export type FragmentReference<TReadFromStore extends {
|
9
15
|
parameters: object;
|
10
16
|
data: object;
|
@@ -12,7 +18,7 @@ export type FragmentReference<TReadFromStore extends {
|
|
12
18
|
readonly kind: 'FragmentReference';
|
13
19
|
readonly readerWithRefetchQueries: PromiseWrapper<ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>>;
|
14
20
|
readonly root: DataId;
|
15
|
-
readonly variables:
|
21
|
+
readonly variables: ExtractParameters<TReadFromStore>;
|
16
22
|
readonly networkRequest: PromiseWrapper<void, any>;
|
17
23
|
};
|
18
24
|
export declare function stableIdForFragmentReference(fragmentReference: FragmentReference<any, any>): string;
|
package/dist/core/cache.d.ts
CHANGED
@@ -3,7 +3,7 @@ import { DataId, type IsographEnvironment } from './IsographEnvironment';
|
|
3
3
|
import { IsographEntrypoint, NormalizationAst, NormalizationLinkedField, NormalizationScalarField, RefetchQueryNormalizationArtifactWrapper } from '../core/entrypoint';
|
4
4
|
import { ReaderLinkedField, ReaderScalarField, type ReaderAst } from './reader';
|
5
5
|
import { WithEncounteredRecords } from './read';
|
6
|
-
import { FragmentReference, Variables } from './FragmentReference';
|
6
|
+
import { FragmentReference, Variables, ExtractParameters } from './FragmentReference';
|
7
7
|
export declare function getOrCreateItemInSuspenseCache<TReadFromStore extends {
|
8
8
|
parameters: object;
|
9
9
|
data: object;
|
@@ -17,7 +17,7 @@ export declare function stableCopy<T>(value: T): T;
|
|
17
17
|
export declare function getOrCreateCacheForArtifact<TReadFromStore extends {
|
18
18
|
parameters: object;
|
19
19
|
data: object;
|
20
|
-
}, TClientFieldValue>(environment: IsographEnvironment, entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>, variables:
|
20
|
+
}, TClientFieldValue>(environment: IsographEnvironment, entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>, variables: ExtractParameters<TReadFromStore>): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>>;
|
21
21
|
type NetworkResponseScalarValue = string | number | boolean;
|
22
22
|
type NetworkResponseValue = NetworkResponseScalarValue | null | NetworkResponseObject | NetworkResponseObject[] | NetworkResponseScalarValue[];
|
23
23
|
type NetworkResponseObject = {
|
package/dist/core/cache.js
CHANGED
@@ -105,9 +105,7 @@ function subscribe(environment, encounteredDataAndRecords, fragmentReference, ca
|
|
105
105
|
fragmentReference,
|
106
106
|
readerAst,
|
107
107
|
};
|
108
|
-
// @ts-expect-error
|
109
108
|
environment.subscriptions.add(fragmentSubscription);
|
110
|
-
// @ts-expect-error
|
111
109
|
return () => environment.subscriptions.delete(fragmentSubscription);
|
112
110
|
}
|
113
111
|
exports.subscribe = subscribe;
|
package/dist/core/read.d.ts
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
import { FragmentReference } from './FragmentReference';
|
1
|
+
import { FragmentReference, ExtractData } from './FragmentReference';
|
2
2
|
import { DataId, IsographEnvironment } from './IsographEnvironment';
|
3
3
|
export type WithEncounteredRecords<T> = {
|
4
4
|
readonly encounteredRecords: Set<DataId>;
|
5
|
-
readonly item: T
|
5
|
+
readonly item: ExtractData<T>;
|
6
6
|
};
|
7
7
|
export declare function readButDoNotEvaluate<TReadFromStore extends {
|
8
8
|
parameters: object;
|
package/dist/core/reader.d.ts
CHANGED
@@ -1,33 +1,36 @@
|
|
1
1
|
/// <reference types="react" />
|
2
2
|
import { Factory } from '@isograph/disposable-types';
|
3
|
-
import { FragmentReference,
|
3
|
+
import { FragmentReference, ExtractParameters, ExtractData } from './FragmentReference';
|
4
4
|
import { ComponentOrFieldName, DataId, IsographEnvironment } from './IsographEnvironment';
|
5
5
|
import { IsographEntrypoint, IsographEntrypointLoader, RefetchQueryNormalizationArtifact, RefetchQueryNormalizationArtifactWrapper } from './entrypoint';
|
6
6
|
import { Arguments } from './util';
|
7
7
|
export type TopLevelReaderArtifact<TReadFromStore extends {
|
8
8
|
parameters: object;
|
9
9
|
data: object;
|
10
|
-
}, TClientFieldValue, TComponentProps extends Record<string, never
|
10
|
+
}, TClientFieldValue, TComponentProps extends Record<string, never>> = EagerReaderArtifact<TReadFromStore, TClientFieldValue> | ComponentReaderArtifact<TReadFromStore, TComponentProps>;
|
11
11
|
export type EagerReaderArtifact<TReadFromStore extends {
|
12
12
|
parameters: object;
|
13
13
|
data: object;
|
14
|
-
}, TClientFieldValue
|
14
|
+
}, TClientFieldValue> = {
|
15
15
|
readonly kind: 'EagerReaderArtifact';
|
16
16
|
readonly readerAst: ReaderAst<TReadFromStore>;
|
17
|
-
readonly resolver: (data: ResolverFirstParameter<TReadFromStore
|
17
|
+
readonly resolver: (data: ResolverFirstParameter<TReadFromStore>) => TClientFieldValue;
|
18
18
|
};
|
19
19
|
export type ComponentReaderArtifact<TReadFromStore extends {
|
20
20
|
parameters: object;
|
21
21
|
data: object;
|
22
|
-
}, TComponentProps extends Record<string, unknown> = Record<string, never
|
22
|
+
}, TComponentProps extends Record<string, unknown> = Record<string, never>> = {
|
23
23
|
readonly kind: 'ComponentReaderArtifact';
|
24
24
|
readonly componentName: ComponentOrFieldName;
|
25
25
|
readonly readerAst: ReaderAst<TReadFromStore>;
|
26
|
-
readonly resolver: (data: ResolverFirstParameter<TReadFromStore
|
26
|
+
readonly resolver: (data: ResolverFirstParameter<TReadFromStore>, runtimeProps: TComponentProps) => React.ReactNode;
|
27
27
|
};
|
28
|
-
export type ResolverFirstParameter<TReadFromStore extends
|
29
|
-
|
30
|
-
|
28
|
+
export type ResolverFirstParameter<TReadFromStore extends {
|
29
|
+
data: object;
|
30
|
+
parameters: object;
|
31
|
+
}> = {
|
32
|
+
data: ExtractData<TReadFromStore>;
|
33
|
+
parameters: ExtractParameters<TReadFromStore>;
|
31
34
|
};
|
32
35
|
export type RefetchReaderArtifact = {
|
33
36
|
readonly kind: 'RefetchReaderArtifact';
|
package/dist/index.d.ts
CHANGED
@@ -7,7 +7,7 @@ export { type EagerReaderArtifact, type ComponentReaderArtifact, type RefetchRea
|
|
7
7
|
export { type NormalizationAst, type NormalizationAstNode, type NormalizationLinkedField, type NormalizationScalarField, type IsographEntrypoint, assertIsEntrypoint, type RefetchQueryNormalizationArtifact, type RefetchQueryNormalizationArtifactWrapper, type ExtractProps, type ExtractReadFromStore, type ExtractResolverResult, } from './core/entrypoint';
|
8
8
|
export { readButDoNotEvaluate } from './core/read';
|
9
9
|
export { type ExtractSecondParam, type Argument, type ArgumentName, type ArgumentValue, type Arguments, } from './core/util';
|
10
|
-
export { type FragmentReference, type Variables, stableIdForFragmentReference, } from './core/FragmentReference';
|
10
|
+
export { type FragmentReference, type Variables, type ExtractParameters, type ExtractData, stableIdForFragmentReference, } from './core/FragmentReference';
|
11
11
|
export { IsographEnvironmentProvider, useIsographEnvironment, type IsographEnvironmentProviderProps, } from './react/IsographEnvironmentProvider';
|
12
12
|
export { useImperativeReference } from './react/useImperativeReference';
|
13
13
|
export { FragmentReader } from './react/FragmentReader';
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import { UnassignedState } from '@isograph/react-disposable-state';
|
2
2
|
import { IsographEntrypoint } from '../core/entrypoint';
|
3
|
-
import { FragmentReference,
|
3
|
+
import { FragmentReference, ExtractParameters } from '../core/FragmentReference';
|
4
4
|
export declare function useImperativeReference<TReadFromStore extends {
|
5
5
|
parameters: object;
|
6
6
|
data: object;
|
7
7
|
}, TClientFieldValue>(entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>): {
|
8
8
|
fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue> | UnassignedState;
|
9
|
-
loadFragmentReference: (variables:
|
9
|
+
loadFragmentReference: (variables: ExtractParameters<TReadFromStore>) => void;
|
10
10
|
};
|
@@ -1,8 +1,8 @@
|
|
1
|
-
import { FragmentReference,
|
1
|
+
import { FragmentReference, ExtractParameters } from '../core/FragmentReference';
|
2
2
|
import { IsographEntrypoint } from '../core/entrypoint';
|
3
3
|
export declare function useLazyReference<TReadFromStore extends {
|
4
4
|
parameters: object;
|
5
5
|
data: object;
|
6
|
-
}, TClientFieldValue>(entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>, variables:
|
6
|
+
}, TClientFieldValue>(entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>, variables: ExtractParameters<TReadFromStore>): {
|
7
7
|
fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>;
|
8
8
|
};
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { FragmentReference } from '../core/FragmentReference';
|
1
|
+
import { FragmentReference, ExtractData } from '../core/FragmentReference';
|
2
2
|
import { NetworkRequestReaderOptions, WithEncounteredRecords } from '../core/read';
|
3
3
|
import type { ReaderAst } from '../core/reader';
|
4
4
|
/**
|
@@ -7,7 +7,7 @@ import type { ReaderAst } from '../core/reader';
|
|
7
7
|
export declare function useReadAndSubscribe<TReadFromStore extends {
|
8
8
|
parameters: object;
|
9
9
|
data: object;
|
10
|
-
}>(fragmentReference: FragmentReference<TReadFromStore, any>, networkRequestOptions: NetworkRequestReaderOptions, readerAst: ReaderAst<TReadFromStore>): TReadFromStore
|
10
|
+
}>(fragmentReference: FragmentReference<TReadFromStore, any>, networkRequestOptions: NetworkRequestReaderOptions, readerAst: ReaderAst<TReadFromStore>): ExtractData<TReadFromStore>;
|
11
11
|
export declare function useSubscribeToMultiple<TReadFromStore extends {
|
12
12
|
parameters: object;
|
13
13
|
data: object;
|
package/dist/react/useResult.js
CHANGED
@@ -18,11 +18,11 @@ function useResult(fragmentReference, partialNetworkRequestOptions) {
|
|
18
18
|
}
|
19
19
|
case 'EagerReaderArtifact': {
|
20
20
|
const data = (0, useReadAndSubscribe_1.useReadAndSubscribe)(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst);
|
21
|
-
const
|
21
|
+
const param = {
|
22
22
|
data: data,
|
23
23
|
parameters: fragmentReference.variables,
|
24
24
|
};
|
25
|
-
return readerWithRefetchQueries.readerArtifact.resolver(
|
25
|
+
return readerWithRefetchQueries.readerArtifact.resolver(param);
|
26
26
|
}
|
27
27
|
}
|
28
28
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@isograph/react",
|
3
|
-
"version": "0.0.0-main-
|
3
|
+
"version": "0.0.0-main-3179ac5f",
|
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-
|
21
|
-
"@isograph/react-disposable-state": "0.0.0-main-
|
22
|
-
"@isograph/reference-counted-pointer": "0.0.0-main-
|
20
|
+
"@isograph/disposable-types": "0.0.0-main-3179ac5f",
|
21
|
+
"@isograph/react-disposable-state": "0.0.0-main-3179ac5f",
|
22
|
+
"@isograph/reference-counted-pointer": "0.0.0-main-3179ac5f"
|
23
23
|
},
|
24
24
|
"peerDependencies": {
|
25
25
|
"react": "18.2.0"
|
@@ -7,6 +7,18 @@ export type VariableValue = string | number | boolean | null | object;
|
|
7
7
|
|
8
8
|
export type Variables = { readonly [index: string]: VariableValue };
|
9
9
|
|
10
|
+
export type ExtractData<T> = T extends {
|
11
|
+
data: infer D extends object;
|
12
|
+
}
|
13
|
+
? D
|
14
|
+
: never;
|
15
|
+
|
16
|
+
export type ExtractParameters<T> = T extends {
|
17
|
+
parameters: infer P extends Variables;
|
18
|
+
}
|
19
|
+
? P
|
20
|
+
: Variables;
|
21
|
+
|
10
22
|
export type FragmentReference<
|
11
23
|
TReadFromStore extends { parameters: object; data: object },
|
12
24
|
TClientFieldValue,
|
@@ -16,7 +28,7 @@ export type FragmentReference<
|
|
16
28
|
ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>
|
17
29
|
>;
|
18
30
|
readonly root: DataId;
|
19
|
-
readonly variables:
|
31
|
+
readonly variables: ExtractParameters<TReadFromStore>;
|
20
32
|
readonly networkRequest: PromiseWrapper<void, any>;
|
21
33
|
};
|
22
34
|
|
package/src/core/cache.ts
CHANGED
@@ -24,7 +24,11 @@ import {
|
|
24
24
|
import { ReaderLinkedField, ReaderScalarField, type ReaderAst } from './reader';
|
25
25
|
import { Argument, ArgumentValue } from './util';
|
26
26
|
import { WithEncounteredRecords, readButDoNotEvaluate } from './read';
|
27
|
-
import {
|
27
|
+
import {
|
28
|
+
FragmentReference,
|
29
|
+
Variables,
|
30
|
+
ExtractParameters,
|
31
|
+
} from './FragmentReference';
|
28
32
|
import { mergeObjectsUsingReaderAst } from './areEqualWithDeepComparison';
|
29
33
|
import { makeNetworkRequest } from './makeNetworkRequest';
|
30
34
|
import { wrapResolvedValue } from './PromiseWrapper';
|
@@ -82,7 +86,7 @@ export function getOrCreateCacheForArtifact<
|
|
82
86
|
>(
|
83
87
|
environment: IsographEnvironment,
|
84
88
|
entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>,
|
85
|
-
variables:
|
89
|
+
variables: ExtractParameters<TReadFromStore>,
|
86
90
|
): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>> {
|
87
91
|
const cacheKey = entrypoint.queryText + JSON.stringify(stableCopy(variables));
|
88
92
|
const factory = () => {
|
@@ -198,9 +202,7 @@ export function subscribe<
|
|
198
202
|
fragmentReference,
|
199
203
|
readerAst,
|
200
204
|
};
|
201
|
-
// @ts-expect-error
|
202
205
|
environment.subscriptions.add(fragmentSubscription);
|
203
|
-
// @ts-expect-error
|
204
206
|
return () => environment.subscriptions.delete(fragmentSubscription);
|
205
207
|
}
|
206
208
|
|
package/src/core/read.ts
CHANGED
@@ -5,7 +5,12 @@ import {
|
|
5
5
|
IsographEntrypoint,
|
6
6
|
RefetchQueryNormalizationArtifactWrapper,
|
7
7
|
} from './entrypoint';
|
8
|
-
import {
|
8
|
+
import {
|
9
|
+
FragmentReference,
|
10
|
+
Variables,
|
11
|
+
ExtractData,
|
12
|
+
ExtractParameters,
|
13
|
+
} from './FragmentReference';
|
9
14
|
import {
|
10
15
|
assertLink,
|
11
16
|
DataId,
|
@@ -26,7 +31,7 @@ import { Arguments } from './util';
|
|
26
31
|
|
27
32
|
export type WithEncounteredRecords<T> = {
|
28
33
|
readonly encounteredRecords: Set<DataId>;
|
29
|
-
readonly item: T
|
34
|
+
readonly item: ExtractData<T>;
|
30
35
|
};
|
31
36
|
|
32
37
|
export function readButDoNotEvaluate<
|
@@ -88,7 +93,7 @@ export function readButDoNotEvaluate<
|
|
88
93
|
type ReadDataResult<TReadFromStore> =
|
89
94
|
| {
|
90
95
|
readonly kind: 'Success';
|
91
|
-
readonly data: TReadFromStore
|
96
|
+
readonly data: ExtractData<TReadFromStore>;
|
92
97
|
readonly encounteredRecords: Set<DataId>;
|
93
98
|
}
|
94
99
|
| {
|
@@ -101,7 +106,7 @@ function readData<TReadFromStore>(
|
|
101
106
|
environment: IsographEnvironment,
|
102
107
|
ast: ReaderAst<TReadFromStore>,
|
103
108
|
root: DataId,
|
104
|
-
variables:
|
109
|
+
variables: ExtractParameters<TReadFromStore>,
|
105
110
|
nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],
|
106
111
|
networkRequest: PromiseWrapper<void, any>,
|
107
112
|
networkRequestOptions: NetworkRequestReaderOptions,
|
package/src/core/reader.ts
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
import { Factory } from '@isograph/disposable-types';
|
2
|
-
import {
|
2
|
+
import {
|
3
|
+
FragmentReference,
|
4
|
+
ExtractParameters,
|
5
|
+
ExtractData,
|
6
|
+
} from './FragmentReference';
|
3
7
|
import {
|
4
8
|
ComponentOrFieldName,
|
5
9
|
DataId,
|
@@ -17,43 +21,39 @@ export type TopLevelReaderArtifact<
|
|
17
21
|
TReadFromStore extends { parameters: object; data: object },
|
18
22
|
TClientFieldValue,
|
19
23
|
TComponentProps extends Record<string, never>,
|
20
|
-
TVariables = Variables,
|
21
24
|
> =
|
22
|
-
| EagerReaderArtifact<TReadFromStore, TClientFieldValue
|
23
|
-
| ComponentReaderArtifact<TReadFromStore, TComponentProps
|
25
|
+
| EagerReaderArtifact<TReadFromStore, TClientFieldValue>
|
26
|
+
| ComponentReaderArtifact<TReadFromStore, TComponentProps>;
|
24
27
|
|
25
28
|
export type EagerReaderArtifact<
|
26
29
|
TReadFromStore extends { parameters: object; data: object },
|
27
30
|
TClientFieldValue,
|
28
|
-
TVariables = Variables,
|
29
31
|
> = {
|
30
32
|
readonly kind: 'EagerReaderArtifact';
|
31
33
|
readonly readerAst: ReaderAst<TReadFromStore>;
|
32
34
|
readonly resolver: (
|
33
|
-
data: ResolverFirstParameter<TReadFromStore
|
35
|
+
data: ResolverFirstParameter<TReadFromStore>,
|
34
36
|
) => TClientFieldValue;
|
35
37
|
};
|
36
38
|
|
37
39
|
export type ComponentReaderArtifact<
|
38
40
|
TReadFromStore extends { parameters: object; data: object },
|
39
41
|
TComponentProps extends Record<string, unknown> = Record<string, never>,
|
40
|
-
TVariables = Variables,
|
41
42
|
> = {
|
42
43
|
readonly kind: 'ComponentReaderArtifact';
|
43
44
|
readonly componentName: ComponentOrFieldName;
|
44
45
|
readonly readerAst: ReaderAst<TReadFromStore>;
|
45
46
|
readonly resolver: (
|
46
|
-
data: ResolverFirstParameter<TReadFromStore
|
47
|
+
data: ResolverFirstParameter<TReadFromStore>,
|
47
48
|
runtimeProps: TComponentProps,
|
48
49
|
) => React.ReactNode;
|
49
50
|
};
|
50
51
|
|
51
52
|
export type ResolverFirstParameter<
|
52
|
-
TReadFromStore extends object,
|
53
|
-
TVariables = Variables,
|
53
|
+
TReadFromStore extends { data: object; parameters: object },
|
54
54
|
> = {
|
55
|
-
|
56
|
-
|
55
|
+
data: ExtractData<TReadFromStore>;
|
56
|
+
parameters: ExtractParameters<TReadFromStore>;
|
57
57
|
};
|
58
58
|
|
59
59
|
export type RefetchReaderArtifact = {
|
package/src/index.ts
CHANGED
@@ -3,7 +3,10 @@ import {
|
|
3
3
|
useUpdatableDisposableState,
|
4
4
|
} from '@isograph/react-disposable-state';
|
5
5
|
import { IsographEntrypoint } from '../core/entrypoint';
|
6
|
-
import {
|
6
|
+
import {
|
7
|
+
FragmentReference,
|
8
|
+
ExtractParameters,
|
9
|
+
} from '../core/FragmentReference';
|
7
10
|
import { useIsographEnvironment } from './IsographEnvironmentProvider';
|
8
11
|
import { ROOT_ID } from '../core/IsographEnvironment';
|
9
12
|
import { makeNetworkRequest } from '../core/makeNetworkRequest';
|
@@ -20,7 +23,7 @@ export function useImperativeReference<
|
|
20
23
|
fragmentReference:
|
21
24
|
| FragmentReference<TReadFromStore, TClientFieldValue>
|
22
25
|
| UnassignedState;
|
23
|
-
loadFragmentReference: (variables:
|
26
|
+
loadFragmentReference: (variables: ExtractParameters<TReadFromStore>) => void;
|
24
27
|
} {
|
25
28
|
const { state, setState } =
|
26
29
|
useUpdatableDisposableState<
|
@@ -29,7 +32,7 @@ export function useImperativeReference<
|
|
29
32
|
const environment = useIsographEnvironment();
|
30
33
|
return {
|
31
34
|
fragmentReference: state,
|
32
|
-
loadFragmentReference: (variables:
|
35
|
+
loadFragmentReference: (variables: ExtractParameters<TReadFromStore>) => {
|
33
36
|
const [networkRequest, disposeNetworkRequest] = makeNetworkRequest(
|
34
37
|
environment,
|
35
38
|
entrypoint,
|
@@ -1,4 +1,7 @@
|
|
1
|
-
import {
|
1
|
+
import {
|
2
|
+
FragmentReference,
|
3
|
+
ExtractParameters,
|
4
|
+
} from '../core/FragmentReference';
|
2
5
|
import { useIsographEnvironment } from './IsographEnvironmentProvider';
|
3
6
|
import { IsographEntrypoint } from '../core/entrypoint';
|
4
7
|
import { getOrCreateCacheForArtifact } from '../core/cache';
|
@@ -9,7 +12,7 @@ export function useLazyReference<
|
|
9
12
|
TClientFieldValue,
|
10
13
|
>(
|
11
14
|
entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>,
|
12
|
-
variables:
|
15
|
+
variables: ExtractParameters<TReadFromStore>,
|
13
16
|
): {
|
14
17
|
fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>;
|
15
18
|
} {
|
@@ -2,6 +2,7 @@ import { useEffect, useState } from 'react';
|
|
2
2
|
import {
|
3
3
|
FragmentReference,
|
4
4
|
stableIdForFragmentReference,
|
5
|
+
ExtractData,
|
5
6
|
} from '../core/FragmentReference';
|
6
7
|
import {
|
7
8
|
NetworkRequestReaderOptions,
|
@@ -22,7 +23,7 @@ export function useReadAndSubscribe<
|
|
22
23
|
fragmentReference: FragmentReference<TReadFromStore, any>,
|
23
24
|
networkRequestOptions: NetworkRequestReaderOptions,
|
24
25
|
readerAst: ReaderAst<TReadFromStore>,
|
25
|
-
): TReadFromStore {
|
26
|
+
): ExtractData<TReadFromStore> {
|
26
27
|
const environment = useIsographEnvironment();
|
27
28
|
const [readOutDataAndRecords, setReadOutDataAndRecords] = useState(() =>
|
28
29
|
readButDoNotEvaluate(environment, fragmentReference, networkRequestOptions),
|
package/src/react/useResult.ts
CHANGED
@@ -48,11 +48,11 @@ export function useResult<
|
|
48
48
|
networkRequestOptions,
|
49
49
|
readerWithRefetchQueries.readerArtifact.readerAst,
|
50
50
|
);
|
51
|
-
const
|
51
|
+
const param = {
|
52
52
|
data: data,
|
53
53
|
parameters: fragmentReference.variables,
|
54
54
|
};
|
55
|
-
return readerWithRefetchQueries.readerArtifact.resolver(
|
55
|
+
return readerWithRefetchQueries.readerArtifact.resolver(param);
|
56
56
|
}
|
57
57
|
}
|
58
58
|
}
|
@@ -1,6 +1,4 @@
|
|
1
1
|
|
2
|
-
import { type Variables } from '@isograph/react';
|
3
|
-
|
4
2
|
export type Query__meNameSuccessor__param = {
|
5
3
|
readonly data: {
|
6
4
|
readonly me: {
|
@@ -12,5 +10,5 @@ export type Query__meNameSuccessor__param = {
|
|
12
10
|
} | null),
|
13
11
|
},
|
14
12
|
},
|
15
|
-
readonly parameters:
|
13
|
+
readonly parameters: Record<string, never>,
|
16
14
|
};
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
import { type Variables } from '@isograph/react';
|
1
|
+
import type { Query__nodeField__parameters } from './parameters_type';
|
3
2
|
|
4
3
|
export type Query__nodeField__param = {
|
5
4
|
readonly data: {
|
@@ -7,5 +6,5 @@ export type Query__nodeField__param = {
|
|
7
6
|
readonly id: string,
|
8
7
|
} | null),
|
9
8
|
},
|
10
|
-
readonly parameters:
|
9
|
+
readonly parameters: Query__nodeField__parameters,
|
11
10
|
};
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import type { IsographEntrypoint
|
1
|
+
import type { IsographEntrypoint } from '@isograph/react';
|
2
2
|
import { type Query__meNameSuccessor__param } from './Query/meNameSuccessor/param_type';
|
3
3
|
import { type Query__meName__param } from './Query/meName/param_type';
|
4
4
|
import { type Query__nodeField__param } from './Query/nodeField/param_type';
|
@@ -10,9 +10,9 @@ import entrypoint_Query__nodeField from '../__isograph/Query/nodeField/entrypoin
|
|
10
10
|
// This means that the type of the exported iso literal is exactly
|
11
11
|
// the type of the passed-in function, which takes one parameter
|
12
12
|
// of type TParam.
|
13
|
-
type IdentityWithParam<TParam extends object> = <TClientFieldReturn
|
13
|
+
type IdentityWithParam<TParam extends object> = <TClientFieldReturn>(
|
14
14
|
clientField: (param: TParam) => TClientFieldReturn
|
15
|
-
) => (param:
|
15
|
+
) => (param: TParam) => TClientFieldReturn;
|
16
16
|
|
17
17
|
// This is the type given it to client fields with @component.
|
18
18
|
// This means that the type of the exported iso literal is exactly
|
@@ -24,10 +24,9 @@ type IdentityWithParam<TParam extends object> = <TClientFieldReturn, TVariables
|
|
24
24
|
type IdentityWithParamComponent<TParam extends object> = <
|
25
25
|
TClientFieldReturn,
|
26
26
|
TComponentProps = Record<string, never>,
|
27
|
-
TVariables = Variables
|
28
27
|
>(
|
29
28
|
clientComponentField: (data: TParam, componentProps: TComponentProps) => TClientFieldReturn
|
30
|
-
) => (data:
|
29
|
+
) => (data: TParam, componentProps: TComponentProps) => TClientFieldReturn;
|
31
30
|
|
32
31
|
type WhitespaceCharacter = ' ' | '\t' | '\n';
|
33
32
|
type Whitespace<In> = In extends `${WhitespaceCharacter}${infer In}`
|