@isograph/react 0.0.0-main-39c44f34 → 0.0.0-main-2a44e7fd
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/.turbo/turbo-compile-libs.log +1 -1
- package/dist/loadable-hooks/useClientSideDefer.d.ts +9 -4
- package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
- package/dist/loadable-hooks/useClientSideDefer.js +2 -1
- package/dist/react/LoadableFieldReader.d.ts +8 -2
- package/dist/react/LoadableFieldReader.d.ts.map +1 -1
- package/dist/react/LoadableFieldReader.js +3 -1
- package/dist/react/LoadableFieldRenderer.d.ts +8 -2
- package/dist/react/LoadableFieldRenderer.d.ts.map +1 -1
- package/dist/react/LoadableFieldRenderer.js +3 -1
- package/package.json +4 -4
- package/src/loadable-hooks/useClientSideDefer.ts +16 -26
- package/src/react/LoadableFieldReader.tsx +33 -12
- package/src/react/LoadableFieldRenderer.tsx +33 -12
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
../.. | WARN Unsupported engine: wanted: {"node":"22.9.0"} (current: {"node":"v22.20.0","pnpm":"10.15.0"})
|
|
2
2
|
|
|
3
|
-
> @isograph/react@0.0.0-main-
|
|
3
|
+
> @isograph/react@0.0.0-main-2a44e7fd compile-libs /home/runner/work/isograph/isograph/libs/isograph-react
|
|
4
4
|
> rimraf dist && tsc -p tsconfig.pkg.json
|
|
5
5
|
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { FetchOptions } from '../core/check';
|
|
2
2
|
import { ExtractParameters, FragmentReference, type UnknownTReadFromStore } from '../core/FragmentReference';
|
|
3
3
|
import { LoadableField } from '../core/reader';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
type ArgsWithoutProvidedArgs<TReadFromStore extends UnknownTReadFromStore, TProvidedArgs extends object> = Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>;
|
|
5
|
+
export declare function useClientSideDefer<TReadFromStore extends UnknownTReadFromStore, TResult, TProvidedArgs extends object>(loadableField: LoadableField<TReadFromStore, TResult, Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>>, ...maybeRequiredArgs: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs> extends Record<PropertyKey, never> ? [
|
|
6
|
+
args?: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>,
|
|
7
|
+
fetchOptions?: FetchOptions<TResult>
|
|
8
|
+
] : [
|
|
9
|
+
args: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>,
|
|
10
|
+
fetchOptions?: FetchOptions<TResult>
|
|
11
|
+
]): {
|
|
8
12
|
fragmentReference: FragmentReference<TReadFromStore, TResult>;
|
|
9
13
|
};
|
|
14
|
+
export {};
|
|
10
15
|
//# sourceMappingURL=useClientSideDefer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useClientSideDefer.d.ts","sourceRoot":"","sources":["../../src/loadable-hooks/useClientSideDefer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,
|
|
1
|
+
{"version":3,"file":"useClientSideDefer.d.ts","sourceRoot":"","sources":["../../src/loadable-hooks/useClientSideDefer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,KAAK,uBAAuB,CAC1B,cAAc,SAAS,qBAAqB,EAC5C,aAAa,SAAS,MAAM,IAC1B,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,MAAM,aAAa,CAAC,CAAC;AAEjE,wBAAgB,kBAAkB,CAChC,cAAc,SAAS,qBAAqB,EAC5C,OAAO,EACP,aAAa,SAAS,MAAM,EAE5B,aAAa,EAAE,aAAa,CAC1B,cAAc,EACd,OAAO,EACP,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,MAAM,aAAa,CAAC,CAC7D,EACD,GAAG,iBAAiB,EAAE,uBAAuB,CAC3C,cAAc,EACd,aAAa,CACd,SAAS,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,GAChC;IACE,IAAI,CAAC,EAAE,uBAAuB,CAAC,cAAc,EAAE,aAAa,CAAC;IAC7D,YAAY,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC;CACrC,GACD;IACE,IAAI,EAAE,uBAAuB,CAAC,cAAc,EAAE,aAAa,CAAC;IAC5D,YAAY,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC;CACrC,GACJ;IAAE,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;CAAE,CAUnE"}
|
|
@@ -4,7 +4,8 @@ exports.useClientSideDefer = useClientSideDefer;
|
|
|
4
4
|
const react_disposable_state_1 = require("@isograph/react-disposable-state");
|
|
5
5
|
const cache_1 = require("../core/cache");
|
|
6
6
|
const IsographEnvironmentProvider_1 = require("../react/IsographEnvironmentProvider");
|
|
7
|
-
function useClientSideDefer(loadableField,
|
|
7
|
+
function useClientSideDefer(loadableField, ...maybeRequiredArgs) {
|
|
8
|
+
const [args, fetchOptions] = maybeRequiredArgs;
|
|
8
9
|
const [id, loader] = loadableField(args, fetchOptions !== null && fetchOptions !== void 0 ? fetchOptions : {});
|
|
9
10
|
const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
|
|
10
11
|
const cache = (0, cache_1.getOrCreateItemInSuspenseCache)(environment, id, loader);
|
|
@@ -2,11 +2,17 @@ import { type FetchOptions } from '../core/check';
|
|
|
2
2
|
import { ExtractParameters, type UnknownTReadFromStore } from '../core/FragmentReference';
|
|
3
3
|
import { type NetworkRequestReaderOptions } from '../core/read';
|
|
4
4
|
import { type LoadableField } from '../core/reader';
|
|
5
|
+
type ArgsWithoutProvidedArgs<TReadFromStore extends UnknownTReadFromStore, TProvidedArgs extends object> = Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>;
|
|
6
|
+
type MaybeRequiredArgs<TReadFromStore extends UnknownTReadFromStore, TProvidedArgs extends object> = ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs> extends Record<PropertyKey, never> ? {
|
|
7
|
+
args?: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>;
|
|
8
|
+
} : {
|
|
9
|
+
args: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>;
|
|
10
|
+
};
|
|
5
11
|
export declare function LoadableFieldReader<TReadFromStore extends UnknownTReadFromStore, TResult, TProvidedArgs extends object, TChildrenResult>(props: {
|
|
6
12
|
loadableField: LoadableField<TReadFromStore, TResult, Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>>;
|
|
7
|
-
args: Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>;
|
|
8
13
|
fetchOptions?: FetchOptions<TResult>;
|
|
9
14
|
networkRequestOptions?: Partial<NetworkRequestReaderOptions>;
|
|
10
15
|
children: (arg: TResult) => TChildrenResult;
|
|
11
|
-
}): TChildrenResult;
|
|
16
|
+
} & MaybeRequiredArgs<TReadFromStore, TProvidedArgs>): TChildrenResult;
|
|
17
|
+
export {};
|
|
12
18
|
//# sourceMappingURL=LoadableFieldReader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadableFieldReader.d.ts","sourceRoot":"","sources":["../../src/react/LoadableFieldReader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,
|
|
1
|
+
{"version":3,"file":"LoadableFieldReader.d.ts","sourceRoot":"","sources":["../../src/react/LoadableFieldReader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,KAAK,uBAAuB,CAC1B,cAAc,SAAS,qBAAqB,EAC5C,aAAa,SAAS,MAAM,IAC1B,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,MAAM,aAAa,CAAC,CAAC;AAEjE,KAAK,iBAAiB,CACpB,cAAc,SAAS,qBAAqB,EAC5C,aAAa,SAAS,MAAM,IAE5B,uBAAuB,CAAC,cAAc,EAAE,aAAa,CAAC,SAAS,MAAM,CACnE,WAAW,EACX,KAAK,CACN,GACG;IACE,IAAI,CAAC,EAAE,uBAAuB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;CAC/D,GACD;IACE,IAAI,EAAE,uBAAuB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;CAC9D,CAAC;AAER,wBAAgB,mBAAmB,CACjC,cAAc,SAAS,qBAAqB,EAC5C,OAAO,EACP,aAAa,SAAS,MAAM,EAC5B,eAAe,EAEf,KAAK,EAAE;IACL,aAAa,EAAE,aAAa,CAC1B,cAAc,EACd,OAAO,EACP,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,MAAM,aAAa,CAAC,CAC7D,CAAC;IACF,YAAY,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,qBAAqB,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC7D,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,eAAe,CAAC;CAC7C,GAAG,iBAAiB,CAAC,cAAc,EAAE,aAAa,CAAC,GACnD,eAAe,CAcjB"}
|
|
@@ -4,7 +4,9 @@ exports.LoadableFieldReader = LoadableFieldReader;
|
|
|
4
4
|
const useClientSideDefer_1 = require("../loadable-hooks/useClientSideDefer");
|
|
5
5
|
const useResult_1 = require("./useResult");
|
|
6
6
|
function LoadableFieldReader(props) {
|
|
7
|
-
const { fragmentReference } = (0, useClientSideDefer_1.useClientSideDefer)(props.loadableField,
|
|
7
|
+
const { fragmentReference } = (0, useClientSideDefer_1.useClientSideDefer)(props.loadableField,
|
|
8
|
+
// @ts-expect-error
|
|
9
|
+
props.args, props.fetchOptions);
|
|
8
10
|
const readOutFragmentData = (0, useResult_1.useResult)(fragmentReference, props.networkRequestOptions);
|
|
9
11
|
return props.children(readOutFragmentData);
|
|
10
12
|
}
|
|
@@ -3,11 +3,17 @@ import { type FetchOptions } from '../core/check';
|
|
|
3
3
|
import { ExtractParameters, type UnknownTReadFromStore } from '../core/FragmentReference';
|
|
4
4
|
import { type NetworkRequestReaderOptions } from '../core/read';
|
|
5
5
|
import { type LoadableField } from '../core/reader';
|
|
6
|
+
type ArgsWithoutProvidedArgs<TReadFromStore extends UnknownTReadFromStore, TProvidedArgs extends object> = Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>;
|
|
7
|
+
type MaybeRequiredArgs<TReadFromStore extends UnknownTReadFromStore, TProvidedArgs extends object> = ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs> extends Record<PropertyKey, never> ? {
|
|
8
|
+
args?: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>;
|
|
9
|
+
} : {
|
|
10
|
+
args: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>;
|
|
11
|
+
};
|
|
6
12
|
export declare function LoadableFieldRenderer<TReadFromStore extends UnknownTReadFromStore, TProvidedArgs extends object, TChildrenResult, TProps>(props: {
|
|
7
13
|
loadableField: LoadableField<TReadFromStore, React.FC<TProps>, Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>>;
|
|
8
|
-
args: Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>;
|
|
9
14
|
fetchOptions?: FetchOptions<React.FC<TProps>>;
|
|
10
15
|
networkRequestOptions?: Partial<NetworkRequestReaderOptions>;
|
|
11
16
|
additionalProps: Omit<TProps, keyof JSX.IntrinsicAttributes>;
|
|
12
|
-
}): TChildrenResult;
|
|
17
|
+
} & MaybeRequiredArgs<TReadFromStore, TProvidedArgs>): TChildrenResult;
|
|
18
|
+
export {};
|
|
13
19
|
//# sourceMappingURL=LoadableFieldRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadableFieldRenderer.d.ts","sourceRoot":"","sources":["../../src/react/LoadableFieldRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,
|
|
1
|
+
{"version":3,"file":"LoadableFieldRenderer.d.ts","sourceRoot":"","sources":["../../src/react/LoadableFieldRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,KAAK,uBAAuB,CAC1B,cAAc,SAAS,qBAAqB,EAC5C,aAAa,SAAS,MAAM,IAC1B,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,MAAM,aAAa,CAAC,CAAC;AAEjE,KAAK,iBAAiB,CACpB,cAAc,SAAS,qBAAqB,EAC5C,aAAa,SAAS,MAAM,IAE5B,uBAAuB,CAAC,cAAc,EAAE,aAAa,CAAC,SAAS,MAAM,CACnE,WAAW,EACX,KAAK,CACN,GACG;IACE,IAAI,CAAC,EAAE,uBAAuB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;CAC/D,GACD;IACE,IAAI,EAAE,uBAAuB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;CAC9D,CAAC;AAER,wBAAgB,qBAAqB,CACnC,cAAc,SAAS,qBAAqB,EAC5C,aAAa,SAAS,MAAM,EAC5B,eAAe,EACf,MAAM,EAEN,KAAK,EAAE;IACL,aAAa,EAAE,aAAa,CAC1B,cAAc,EACd,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAChB,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,MAAM,aAAa,CAAC,CAC7D,CAAC;IACF,YAAY,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,qBAAqB,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC7D,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,mBAAmB,CAAC,CAAC;CAC9D,GAAG,iBAAiB,CAAC,cAAc,EAAE,aAAa,CAAC,GACnD,eAAe,CAcjB"}
|
|
@@ -28,7 +28,9 @@ const React = __importStar(require("react"));
|
|
|
28
28
|
const useClientSideDefer_1 = require("../loadable-hooks/useClientSideDefer");
|
|
29
29
|
const useResult_1 = require("./useResult");
|
|
30
30
|
function LoadableFieldRenderer(props) {
|
|
31
|
-
const { fragmentReference } = (0, useClientSideDefer_1.useClientSideDefer)(props.loadableField,
|
|
31
|
+
const { fragmentReference } = (0, useClientSideDefer_1.useClientSideDefer)(props.loadableField,
|
|
32
|
+
// @ts-expect-error
|
|
33
|
+
props.args, props.fetchOptions);
|
|
32
34
|
const Component = (0, useResult_1.useResult)(fragmentReference, props.networkRequestOptions);
|
|
33
35
|
// TODO we probably can figure out a way to convince TypeScript of
|
|
34
36
|
// the validity of this.
|
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-2a44e7fd",
|
|
4
4
|
"description": "Use Isograph with React",
|
|
5
5
|
"homepage": "https://isograph.dev",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"iso": "cross-env ISO_PRINT_ABSOLUTE_FILEPATH=1 ../../target/debug/isograph_cli --config ./isograph.config.json"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@isograph/disposable-types": "0.0.0-main-
|
|
23
|
-
"@isograph/react-disposable-state": "0.0.0-main-
|
|
24
|
-
"@isograph/reference-counted-pointer": "0.0.0-main-
|
|
22
|
+
"@isograph/disposable-types": "0.0.0-main-2a44e7fd",
|
|
23
|
+
"@isograph/react-disposable-state": "0.0.0-main-2a44e7fd",
|
|
24
|
+
"@isograph/reference-counted-pointer": "0.0.0-main-2a44e7fd"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"react": "^18.0.0 || ^19.0.0"
|
|
@@ -9,32 +9,10 @@ import {
|
|
|
9
9
|
import { LoadableField } from '../core/reader';
|
|
10
10
|
import { useIsographEnvironment } from '../react/IsographEnvironmentProvider';
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
TReadFromStore extends UnknownTReadFromStore,
|
|
14
|
-
TResult,
|
|
15
|
-
>(
|
|
16
|
-
loadableField: LoadableField<
|
|
17
|
-
TReadFromStore,
|
|
18
|
-
TResult,
|
|
19
|
-
ExtractParameters<TReadFromStore>
|
|
20
|
-
>,
|
|
21
|
-
args?: Record<PropertyKey, never>,
|
|
22
|
-
fetchOptions?: FetchOptions<TResult>,
|
|
23
|
-
): { fragmentReference: FragmentReference<TReadFromStore, TResult> };
|
|
24
|
-
|
|
25
|
-
export function useClientSideDefer<
|
|
12
|
+
type ArgsWithoutProvidedArgs<
|
|
26
13
|
TReadFromStore extends UnknownTReadFromStore,
|
|
27
|
-
TResult,
|
|
28
14
|
TProvidedArgs extends object,
|
|
29
|
-
>
|
|
30
|
-
loadableField: LoadableField<
|
|
31
|
-
TReadFromStore,
|
|
32
|
-
TResult,
|
|
33
|
-
Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>
|
|
34
|
-
>,
|
|
35
|
-
args: Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>,
|
|
36
|
-
fetchOptions?: FetchOptions<TResult>,
|
|
37
|
-
): { fragmentReference: FragmentReference<TReadFromStore, TResult> };
|
|
15
|
+
> = Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>;
|
|
38
16
|
|
|
39
17
|
export function useClientSideDefer<
|
|
40
18
|
TReadFromStore extends UnknownTReadFromStore,
|
|
@@ -46,9 +24,21 @@ export function useClientSideDefer<
|
|
|
46
24
|
TResult,
|
|
47
25
|
Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>
|
|
48
26
|
>,
|
|
49
|
-
|
|
50
|
-
|
|
27
|
+
...maybeRequiredArgs: ArgsWithoutProvidedArgs<
|
|
28
|
+
TReadFromStore,
|
|
29
|
+
TProvidedArgs
|
|
30
|
+
> extends Record<PropertyKey, never>
|
|
31
|
+
? [
|
|
32
|
+
args?: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>,
|
|
33
|
+
fetchOptions?: FetchOptions<TResult>,
|
|
34
|
+
]
|
|
35
|
+
: [
|
|
36
|
+
args: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>,
|
|
37
|
+
fetchOptions?: FetchOptions<TResult>,
|
|
38
|
+
]
|
|
51
39
|
): { fragmentReference: FragmentReference<TReadFromStore, TResult> } {
|
|
40
|
+
const [args, fetchOptions] = maybeRequiredArgs;
|
|
41
|
+
|
|
52
42
|
const [id, loader] = loadableField(args, fetchOptions ?? {});
|
|
53
43
|
const environment = useIsographEnvironment();
|
|
54
44
|
const cache = getOrCreateItemInSuspenseCache(environment, id, loader);
|
|
@@ -8,25 +8,46 @@ import { type LoadableField } from '../core/reader';
|
|
|
8
8
|
import { useClientSideDefer } from '../loadable-hooks/useClientSideDefer';
|
|
9
9
|
import { useResult } from './useResult';
|
|
10
10
|
|
|
11
|
+
type ArgsWithoutProvidedArgs<
|
|
12
|
+
TReadFromStore extends UnknownTReadFromStore,
|
|
13
|
+
TProvidedArgs extends object,
|
|
14
|
+
> = Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>;
|
|
15
|
+
|
|
16
|
+
type MaybeRequiredArgs<
|
|
17
|
+
TReadFromStore extends UnknownTReadFromStore,
|
|
18
|
+
TProvidedArgs extends object,
|
|
19
|
+
> =
|
|
20
|
+
ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs> extends Record<
|
|
21
|
+
PropertyKey,
|
|
22
|
+
never
|
|
23
|
+
>
|
|
24
|
+
? {
|
|
25
|
+
args?: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>;
|
|
26
|
+
}
|
|
27
|
+
: {
|
|
28
|
+
args: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>;
|
|
29
|
+
};
|
|
30
|
+
|
|
11
31
|
export function LoadableFieldReader<
|
|
12
32
|
TReadFromStore extends UnknownTReadFromStore,
|
|
13
33
|
TResult,
|
|
14
34
|
TProvidedArgs extends object,
|
|
15
35
|
TChildrenResult,
|
|
16
|
-
>(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
36
|
+
>(
|
|
37
|
+
props: {
|
|
38
|
+
loadableField: LoadableField<
|
|
39
|
+
TReadFromStore,
|
|
40
|
+
TResult,
|
|
41
|
+
Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>
|
|
42
|
+
>;
|
|
43
|
+
fetchOptions?: FetchOptions<TResult>;
|
|
44
|
+
networkRequestOptions?: Partial<NetworkRequestReaderOptions>;
|
|
45
|
+
children: (arg: TResult) => TChildrenResult;
|
|
46
|
+
} & MaybeRequiredArgs<TReadFromStore, TProvidedArgs>,
|
|
47
|
+
): TChildrenResult {
|
|
28
48
|
const { fragmentReference } = useClientSideDefer(
|
|
29
49
|
props.loadableField,
|
|
50
|
+
// @ts-expect-error
|
|
30
51
|
props.args,
|
|
31
52
|
props.fetchOptions,
|
|
32
53
|
);
|
|
@@ -9,25 +9,46 @@ import { type LoadableField } from '../core/reader';
|
|
|
9
9
|
import { useClientSideDefer } from '../loadable-hooks/useClientSideDefer';
|
|
10
10
|
import { useResult } from './useResult';
|
|
11
11
|
|
|
12
|
+
type ArgsWithoutProvidedArgs<
|
|
13
|
+
TReadFromStore extends UnknownTReadFromStore,
|
|
14
|
+
TProvidedArgs extends object,
|
|
15
|
+
> = Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>;
|
|
16
|
+
|
|
17
|
+
type MaybeRequiredArgs<
|
|
18
|
+
TReadFromStore extends UnknownTReadFromStore,
|
|
19
|
+
TProvidedArgs extends object,
|
|
20
|
+
> =
|
|
21
|
+
ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs> extends Record<
|
|
22
|
+
PropertyKey,
|
|
23
|
+
never
|
|
24
|
+
>
|
|
25
|
+
? {
|
|
26
|
+
args?: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>;
|
|
27
|
+
}
|
|
28
|
+
: {
|
|
29
|
+
args: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>;
|
|
30
|
+
};
|
|
31
|
+
|
|
12
32
|
export function LoadableFieldRenderer<
|
|
13
33
|
TReadFromStore extends UnknownTReadFromStore,
|
|
14
34
|
TProvidedArgs extends object,
|
|
15
35
|
TChildrenResult,
|
|
16
36
|
TProps,
|
|
17
|
-
>(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
37
|
+
>(
|
|
38
|
+
props: {
|
|
39
|
+
loadableField: LoadableField<
|
|
40
|
+
TReadFromStore,
|
|
41
|
+
React.FC<TProps>,
|
|
42
|
+
Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>
|
|
43
|
+
>;
|
|
44
|
+
fetchOptions?: FetchOptions<React.FC<TProps>>;
|
|
45
|
+
networkRequestOptions?: Partial<NetworkRequestReaderOptions>;
|
|
46
|
+
additionalProps: Omit<TProps, keyof JSX.IntrinsicAttributes>;
|
|
47
|
+
} & MaybeRequiredArgs<TReadFromStore, TProvidedArgs>,
|
|
48
|
+
): TChildrenResult {
|
|
29
49
|
const { fragmentReference } = useClientSideDefer(
|
|
30
50
|
props.loadableField,
|
|
51
|
+
// @ts-expect-error
|
|
31
52
|
props.args,
|
|
32
53
|
props.fetchOptions,
|
|
33
54
|
);
|