@isograph/react 0.4.3 → 0.5.1
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 +10 -3
- package/dist/_virtual/rolldown_runtime.js +25 -0
- package/dist/core/FragmentReference.d.mts +38 -0
- package/dist/core/FragmentReference.d.mts.map +1 -0
- package/dist/core/FragmentReference.d.ts +31 -27
- package/dist/core/FragmentReference.d.ts.map +1 -1
- package/dist/core/FragmentReference.js +8 -6
- package/dist/core/FragmentReference.mjs +10 -0
- package/dist/core/FragmentReference.mjs.map +1 -0
- package/dist/core/IsographEnvironment.d.mts +89 -0
- package/dist/core/IsographEnvironment.d.mts.map +1 -0
- package/dist/core/IsographEnvironment.d.ts +77 -72
- package/dist/core/IsographEnvironment.d.ts.map +1 -1
- package/dist/core/IsographEnvironment.js +62 -59
- package/dist/core/IsographEnvironment.mjs +67 -0
- package/dist/core/IsographEnvironment.mjs.map +1 -0
- package/dist/core/PromiseWrapper.d.mts +36 -0
- package/dist/core/PromiseWrapper.d.mts.map +1 -0
- package/dist/core/PromiseWrapper.d.ts +27 -18
- package/dist/core/PromiseWrapper.d.ts.map +1 -1
- package/dist/core/PromiseWrapper.js +45 -43
- package/dist/core/PromiseWrapper.mjs +49 -0
- package/dist/core/PromiseWrapper.mjs.map +1 -0
- package/dist/core/areEqualWithDeepComparison.js +56 -108
- package/dist/core/areEqualWithDeepComparison.mjs +62 -0
- package/dist/core/areEqualWithDeepComparison.mjs.map +1 -0
- package/dist/core/brand.d.mts +19 -0
- package/dist/core/brand.d.mts.map +1 -0
- package/dist/core/brand.d.ts +18 -1
- package/dist/core/brand.d.ts.map +1 -1
- package/dist/core/cache.d.mts +20 -0
- package/dist/core/cache.d.mts.map +1 -0
- package/dist/core/cache.d.ts +18 -34
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/cache.js +210 -516
- package/dist/core/cache.mjs +237 -0
- package/dist/core/cache.mjs.map +1 -0
- package/dist/core/check.d.mts +28 -0
- package/dist/core/check.d.mts.map +1 -0
- package/dist/core/check.d.ts +24 -18
- package/dist/core/check.d.ts.map +1 -1
- package/dist/core/check.js +80 -124
- package/dist/core/check.mjs +84 -0
- package/dist/core/check.mjs.map +1 -0
- package/dist/core/componentCache.js +10 -34
- package/dist/core/componentCache.mjs +12 -0
- package/dist/core/componentCache.mjs.map +1 -0
- package/dist/core/entrypoint.d.mts +99 -0
- package/dist/core/entrypoint.d.mts.map +1 -0
- package/dist/core/entrypoint.d.ts +83 -68
- package/dist/core/entrypoint.d.ts.map +1 -1
- package/dist/core/entrypoint.js +6 -5
- package/dist/core/entrypoint.mjs +8 -0
- package/dist/core/entrypoint.mjs.map +1 -0
- package/dist/core/garbageCollection.d.mts +18 -0
- package/dist/core/garbageCollection.d.mts.map +1 -0
- package/dist/core/garbageCollection.d.ts +15 -10
- package/dist/core/garbageCollection.d.ts.map +1 -1
- package/dist/core/garbageCollection.js +82 -99
- package/dist/core/garbageCollection.mjs +89 -0
- package/dist/core/garbageCollection.mjs.map +1 -0
- package/dist/core/getOrCreateCacheForArtifact.js +37 -0
- package/dist/core/getOrCreateCacheForArtifact.mjs +38 -0
- package/dist/core/getOrCreateCacheForArtifact.mjs.map +1 -0
- package/dist/core/logging.d.mts +95 -0
- package/dist/core/logging.d.mts.map +1 -0
- package/dist/core/logging.d.ts +78 -60
- package/dist/core/logging.d.ts.map +1 -1
- package/dist/core/logging.js +17 -18
- package/dist/core/logging.mjs +20 -0
- package/dist/core/logging.mjs.map +1 -0
- package/dist/core/makeNetworkRequest.d.mts +13 -0
- package/dist/core/makeNetworkRequest.d.mts.map +1 -0
- package/dist/core/makeNetworkRequest.d.ts +12 -8
- package/dist/core/makeNetworkRequest.d.ts.map +1 -1
- package/dist/core/makeNetworkRequest.js +188 -195
- package/dist/core/makeNetworkRequest.mjs +195 -0
- package/dist/core/makeNetworkRequest.mjs.map +1 -0
- package/dist/core/optimisticProxy.d.mts +43 -0
- package/dist/core/optimisticProxy.d.mts.map +1 -0
- package/dist/core/optimisticProxy.d.ts +43 -0
- package/dist/core/optimisticProxy.d.ts.map +1 -0
- package/dist/core/optimisticProxy.js +273 -0
- package/dist/core/optimisticProxy.mjs +268 -0
- package/dist/core/optimisticProxy.mjs.map +1 -0
- package/dist/core/read.d.mts +29 -0
- package/dist/core/read.d.mts.map +1 -0
- package/dist/core/read.d.ts +23 -27
- package/dist/core/read.d.ts.map +1 -1
- package/dist/core/read.js +438 -618
- package/dist/core/read.mjs +456 -0
- package/dist/core/read.mjs.map +1 -0
- package/dist/core/reader.d.mts +89 -0
- package/dist/core/reader.d.mts.map +1 -0
- package/dist/core/reader.d.ts +78 -74
- package/dist/core/reader.d.ts.map +1 -1
- package/dist/core/startUpdate.js +118 -156
- package/dist/core/startUpdate.mjs +125 -0
- package/dist/core/startUpdate.mjs.map +1 -0
- package/dist/core/subscribe.d.mts +12 -0
- package/dist/core/subscribe.d.mts.map +1 -0
- package/dist/core/subscribe.d.ts +12 -0
- package/dist/core/subscribe.d.ts.map +1 -0
- package/dist/core/subscribe.js +79 -0
- package/dist/core/subscribe.mjs +79 -0
- package/dist/core/subscribe.mjs.map +1 -0
- package/dist/core/util.d.mts +27 -0
- package/dist/core/util.d.mts.map +1 -0
- package/dist/core/util.d.ts +21 -17
- package/dist/core/util.d.ts.map +1 -1
- package/dist/core/util.js +22 -2
- package/dist/core/util.mjs +21 -0
- package/dist/core/util.mjs.map +1 -0
- package/dist/core/writeData.d.mts +11 -0
- package/dist/core/writeData.d.mts.map +1 -0
- package/dist/core/writeData.d.ts +11 -0
- package/dist/core/writeData.d.ts.map +1 -0
- package/dist/core/writeData.js +41 -0
- package/dist/core/writeData.mjs +42 -0
- package/dist/core/writeData.mjs.map +1 -0
- package/dist/index.d.mts +32 -0
- package/dist/index.d.ts +32 -29
- package/dist/index.js +70 -68
- package/dist/index.mjs +31 -0
- package/dist/loadable-hooks/useClientSideDefer.d.mts +12 -0
- package/dist/loadable-hooks/useClientSideDefer.d.mts.map +1 -0
- package/dist/loadable-hooks/useClientSideDefer.d.ts +10 -8
- package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
- package/dist/loadable-hooks/useClientSideDefer.js +14 -12
- package/dist/loadable-hooks/useClientSideDefer.mjs +14 -0
- package/dist/loadable-hooks/useClientSideDefer.mjs.map +1 -0
- package/dist/loadable-hooks/useConnectionSpecPagination.d.mts +33 -0
- package/dist/loadable-hooks/useConnectionSpecPagination.d.mts.map +1 -0
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +27 -21
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useConnectionSpecPagination.js +133 -158
- package/dist/loadable-hooks/useConnectionSpecPagination.mjs +134 -0
- package/dist/loadable-hooks/useConnectionSpecPagination.mjs.map +1 -0
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.mts +8 -0
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.mts.map +1 -0
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts +6 -3
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts.map +1 -1
- package/dist/loadable-hooks/useImperativeExposedMutationField.js +9 -12
- package/dist/loadable-hooks/useImperativeExposedMutationField.mjs +11 -0
- package/dist/loadable-hooks/useImperativeExposedMutationField.mjs.map +1 -0
- package/dist/loadable-hooks/useImperativeLoadableField.d.mts +19 -0
- package/dist/loadable-hooks/useImperativeLoadableField.d.mts.map +1 -0
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts +15 -11
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +1 -1
- package/dist/loadable-hooks/useImperativeLoadableField.js +16 -12
- package/dist/loadable-hooks/useImperativeLoadableField.mjs +17 -0
- package/dist/loadable-hooks/useImperativeLoadableField.mjs.map +1 -0
- package/dist/loadable-hooks/useSkipLimitPagination.d.mts +24 -0
- package/dist/loadable-hooks/useSkipLimitPagination.d.mts.map +1 -0
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts +19 -15
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.js +118 -160
- package/dist/loadable-hooks/useSkipLimitPagination.mjs +119 -0
- package/dist/loadable-hooks/useSkipLimitPagination.mjs.map +1 -0
- package/dist/react/FragmentReader.d.mts +18 -0
- package/dist/react/FragmentReader.d.mts.map +1 -0
- package/dist/react/FragmentReader.d.ts +16 -7
- package/dist/react/FragmentReader.d.ts.map +1 -1
- package/dist/react/FragmentReader.js +8 -7
- package/dist/react/FragmentReader.mjs +10 -0
- package/dist/react/FragmentReader.mjs.map +1 -0
- package/dist/react/FragmentRenderer.d.mts +20 -0
- package/dist/react/FragmentRenderer.d.mts.map +1 -0
- package/dist/react/FragmentRenderer.d.ts +18 -13
- package/dist/react/FragmentRenderer.d.ts.map +1 -1
- package/dist/react/FragmentRenderer.js +11 -33
- package/dist/react/FragmentRenderer.mjs +12 -0
- package/dist/react/FragmentRenderer.mjs.map +1 -0
- package/dist/react/IsographEnvironmentProvider.d.mts +17 -0
- package/dist/react/IsographEnvironmentProvider.d.mts.map +1 -0
- package/dist/react/IsographEnvironmentProvider.d.ts +15 -9
- package/dist/react/IsographEnvironmentProvider.d.ts.map +1 -1
- package/dist/react/IsographEnvironmentProvider.js +15 -39
- package/dist/react/IsographEnvironmentProvider.mjs +17 -0
- package/dist/react/IsographEnvironmentProvider.mjs.map +1 -0
- package/dist/react/LoadableFieldReader.d.mts +21 -0
- package/dist/react/LoadableFieldReader.d.mts.map +1 -0
- package/dist/react/LoadableFieldReader.d.ts +20 -11
- package/dist/react/LoadableFieldReader.d.ts.map +1 -1
- package/dist/react/LoadableFieldReader.js +13 -8
- package/dist/react/LoadableFieldReader.mjs +14 -0
- package/dist/react/LoadableFieldReader.mjs.map +1 -0
- package/dist/react/LoadableFieldRenderer.d.mts +22 -0
- package/dist/react/LoadableFieldRenderer.d.mts.map +1 -0
- package/dist/react/LoadableFieldRenderer.d.ts +21 -12
- package/dist/react/LoadableFieldRenderer.d.ts.map +1 -1
- package/dist/react/LoadableFieldRenderer.js +13 -35
- package/dist/react/LoadableFieldRenderer.mjs +14 -0
- package/dist/react/LoadableFieldRenderer.mjs.map +1 -0
- package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts +18 -0
- package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts.map +1 -0
- package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts +11 -3
- package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts.map +1 -1
- package/dist/react/RenderAfterCommit__DO_NOT_USE.js +17 -13
- package/dist/react/RenderAfterCommit__DO_NOT_USE.mjs +18 -0
- package/dist/react/RenderAfterCommit__DO_NOT_USE.mjs.map +1 -0
- package/dist/react/createIsographEnvironment.d.mts +9 -0
- package/dist/react/createIsographEnvironment.d.mts.map +1 -0
- package/dist/react/createIsographEnvironment.d.ts +8 -0
- package/dist/react/createIsographEnvironment.d.ts.map +1 -0
- package/dist/react/createIsographEnvironment.js +10 -0
- package/dist/react/createIsographEnvironment.mjs +11 -0
- package/dist/react/createIsographEnvironment.mjs.map +1 -0
- package/dist/react/maybeUnwrapNetworkRequest.js +11 -0
- package/dist/react/maybeUnwrapNetworkRequest.mjs +12 -0
- package/dist/react/maybeUnwrapNetworkRequest.mjs.map +1 -0
- package/dist/react/useImperativeReference.d.mts +15 -0
- package/dist/react/useImperativeReference.d.mts.map +1 -0
- package/dist/react/useImperativeReference.d.ts +13 -7
- package/dist/react/useImperativeReference.d.ts.map +1 -1
- package/dist/react/useImperativeReference.js +34 -32
- package/dist/react/useImperativeReference.mjs +35 -0
- package/dist/react/useImperativeReference.mjs.map +1 -0
- package/dist/react/useLazyReference.d.mts +13 -0
- package/dist/react/useLazyReference.d.mts.map +1 -0
- package/dist/react/useLazyReference.d.ts +11 -5
- package/dist/react/useLazyReference.d.ts.map +1 -1
- package/dist/react/useLazyReference.js +17 -40
- package/dist/react/useLazyReference.mjs +18 -0
- package/dist/react/useLazyReference.mjs.map +1 -0
- package/dist/react/useReadAndSubscribe.d.mts +20 -0
- package/dist/react/useReadAndSubscribe.d.mts.map +1 -0
- package/dist/react/useReadAndSubscribe.d.ts +14 -9
- package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
- package/dist/react/useReadAndSubscribe.js +57 -39
- package/dist/react/useReadAndSubscribe.mjs +59 -0
- package/dist/react/useReadAndSubscribe.mjs.map +1 -0
- package/dist/react/useRerenderOnChange.d.mts +12 -0
- package/dist/react/useRerenderOnChange.d.mts.map +1 -0
- package/dist/react/useRerenderOnChange.d.ts +10 -6
- package/dist/react/useRerenderOnChange.d.ts.map +1 -1
- package/dist/react/useRerenderOnChange.js +16 -20
- package/dist/react/useRerenderOnChange.mjs +17 -0
- package/dist/react/useRerenderOnChange.mjs.map +1 -0
- package/dist/react/useResult.d.mts +8 -0
- package/dist/react/useResult.d.mts.map +1 -0
- package/dist/react/useResult.d.ts +7 -5
- package/dist/react/useResult.d.ts.map +1 -1
- package/dist/react/useResult.js +27 -39
- package/dist/react/useResult.mjs +30 -0
- package/dist/react/useResult.mjs.map +1 -0
- package/package.json +26 -19
- package/src/core/FragmentReference.ts +13 -7
- package/src/core/IsographEnvironment.ts +80 -21
- package/src/core/PromiseWrapper.ts +14 -7
- package/src/core/areEqualWithDeepComparison.ts +2 -18
- package/src/core/brand.ts +18 -0
- package/src/core/cache.ts +62 -332
- package/src/core/check.ts +30 -26
- package/src/core/componentCache.ts +11 -44
- package/src/core/entrypoint.ts +50 -9
- package/src/core/garbageCollection.ts +81 -28
- package/src/core/getOrCreateCacheForArtifact.ts +86 -0
- package/src/core/logging.ts +25 -13
- package/src/core/makeNetworkRequest.ts +320 -94
- package/src/core/optimisticProxy.ts +544 -0
- package/src/core/read.ts +251 -198
- package/src/core/reader.ts +18 -17
- package/src/core/startUpdate.ts +47 -36
- package/src/core/subscribe.ts +189 -0
- package/src/core/util.ts +26 -0
- package/src/core/writeData.ts +79 -0
- package/src/index.ts +6 -4
- package/src/loadable-hooks/useClientSideDefer.ts +80 -30
- package/src/loadable-hooks/useConnectionSpecPagination.ts +54 -35
- package/src/loadable-hooks/useImperativeLoadableField.ts +5 -5
- package/src/loadable-hooks/useSkipLimitPagination.ts +22 -21
- package/src/react/FragmentReader.tsx +3 -1
- package/src/react/FragmentRenderer.tsx +8 -1
- package/src/react/IsographEnvironmentProvider.tsx +2 -1
- package/src/react/LoadableFieldReader.tsx +125 -16
- package/src/react/LoadableFieldRenderer.tsx +124 -16
- package/src/react/createIsographEnvironment.ts +23 -0
- package/src/react/maybeUnwrapNetworkRequest.ts +17 -0
- package/src/react/useImperativeReference.ts +25 -15
- package/src/react/useLazyReference.ts +20 -10
- package/src/react/useReadAndSubscribe.ts +53 -12
- package/src/react/useRerenderOnChange.ts +3 -3
- package/src/react/useResult.ts +15 -35
- package/src/tests/__isograph/Node/asEconomist/resolver_reader.ts +1 -1
- package/src/tests/__isograph/Query/linkedUpdate/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/linkedUpdate/raw_response_type.ts +13 -0
- package/src/tests/__isograph/Query/linkedUpdate/resolver_reader.ts +1 -1
- package/src/tests/__isograph/Query/meName/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/meName/raw_response_type.ts +7 -0
- package/src/tests/__isograph/Query/meName/resolver_reader.ts +1 -1
- package/src/tests/__isograph/Query/meNameSuccessor/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/meNameSuccessor/raw_response_type.ts +14 -0
- package/src/tests/__isograph/Query/meNameSuccessor/resolver_reader.ts +1 -1
- package/src/tests/__isograph/Query/nodeField/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/nodeField/raw_response_type.ts +7 -0
- package/src/tests/__isograph/Query/nodeField/resolver_reader.ts +1 -1
- package/src/tests/__isograph/Query/normalizeUndefinedField/entrypoint.ts +33 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/normalization_ast.ts +25 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/output_type.ts +3 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/param_type.ts +9 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/query_text.ts +6 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/raw_response_type.ts +7 -0
- package/src/tests/__isograph/Query/normalizeUndefinedField/resolver_reader.ts +38 -0
- package/src/tests/__isograph/Query/startUpdate/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/startUpdate/raw_response_type.ts +8 -0
- package/src/tests/__isograph/Query/startUpdate/resolver_reader.ts +1 -1
- package/src/tests/__isograph/Query/subquery/entrypoint.ts +3 -1
- package/src/tests/__isograph/Query/subquery/raw_response_type.ts +9 -0
- package/src/tests/__isograph/Query/subquery/resolver_reader.ts +1 -1
- package/src/tests/__isograph/iso.ts +11 -1
- package/src/tests/garbageCollection.test.ts +10 -10
- package/src/tests/meNameSuccessor.ts +7 -4
- package/src/tests/nodeQuery.ts +6 -4
- package/src/tests/normalizeData.test.ts +94 -18
- package/src/tests/optimisticProxy.test.ts +862 -0
- package/src/tests/startUpdate.test.ts +11 -11
- package/vitest.config.ts +5 -0
- package/dist/core/areEqualWithDeepComparison.d.ts +0 -3
- package/dist/core/areEqualWithDeepComparison.d.ts.map +0 -1
- package/dist/core/brand.js +0 -2
- package/dist/core/componentCache.d.ts +0 -5
- package/dist/core/componentCache.d.ts.map +0 -1
- package/dist/core/reader.js +0 -2
- package/dist/core/startUpdate.d.ts +0 -8
- package/dist/core/startUpdate.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
|
@@ -1,33 +1,49 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { type FetchOptions } from '../core/check';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
type UnknownTReadFromStore,
|
|
6
|
-
} from '../core/FragmentReference';
|
|
3
|
+
import type { ExtractParameters } from '../core/FragmentReference';
|
|
4
|
+
import { type UnknownTReadFromStore } from '../core/FragmentReference';
|
|
7
5
|
import { type NetworkRequestReaderOptions } from '../core/read';
|
|
8
6
|
import { type LoadableField } from '../core/reader';
|
|
9
7
|
import { useClientSideDefer } from '../loadable-hooks/useClientSideDefer';
|
|
10
8
|
import { useResult } from './useResult';
|
|
11
9
|
|
|
10
|
+
type ArgsWithoutProvidedArgs<
|
|
11
|
+
TReadFromStore extends UnknownTReadFromStore,
|
|
12
|
+
TProvidedArgs extends object,
|
|
13
|
+
> = Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>;
|
|
14
|
+
|
|
15
|
+
type MaybeRequiredArgs<
|
|
16
|
+
TReadFromStore extends UnknownTReadFromStore,
|
|
17
|
+
TProvidedArgs extends object,
|
|
18
|
+
> =
|
|
19
|
+
{} extends ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>
|
|
20
|
+
? {
|
|
21
|
+
args?: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>;
|
|
22
|
+
}
|
|
23
|
+
: {
|
|
24
|
+
args: ArgsWithoutProvidedArgs<TReadFromStore, TProvidedArgs>;
|
|
25
|
+
};
|
|
26
|
+
|
|
12
27
|
export function LoadableFieldRenderer<
|
|
13
28
|
TReadFromStore extends UnknownTReadFromStore,
|
|
14
29
|
TProvidedArgs extends object,
|
|
15
30
|
TChildrenResult,
|
|
16
31
|
TProps,
|
|
17
|
-
>(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
>(
|
|
33
|
+
props: {
|
|
34
|
+
loadableField: LoadableField<
|
|
35
|
+
TReadFromStore,
|
|
36
|
+
React.FC<TProps>,
|
|
37
|
+
Omit<ExtractParameters<TReadFromStore>, keyof TProvidedArgs>
|
|
38
|
+
>;
|
|
39
|
+
fetchOptions?: FetchOptions<React.FC<TProps>, never>;
|
|
40
|
+
networkRequestOptions?: Partial<NetworkRequestReaderOptions>;
|
|
41
|
+
additionalProps: Omit<TProps, keyof JSX.IntrinsicAttributes>;
|
|
42
|
+
} & MaybeRequiredArgs<TReadFromStore, TProvidedArgs>,
|
|
43
|
+
): TChildrenResult {
|
|
29
44
|
const { fragmentReference } = useClientSideDefer(
|
|
30
45
|
props.loadableField,
|
|
46
|
+
// @ts-expect-error
|
|
31
47
|
props.args,
|
|
32
48
|
props.fetchOptions,
|
|
33
49
|
);
|
|
@@ -39,3 +55,95 @@ export function LoadableFieldRenderer<
|
|
|
39
55
|
// @ts-expect-error
|
|
40
56
|
return <Component {...props.additionalProps} />;
|
|
41
57
|
}
|
|
58
|
+
|
|
59
|
+
// @ts-ignore
|
|
60
|
+
function tsTests() {
|
|
61
|
+
let neverArgs!: LoadableField<
|
|
62
|
+
{
|
|
63
|
+
parameters: Record<string, never>;
|
|
64
|
+
data: {};
|
|
65
|
+
},
|
|
66
|
+
() => React.ReactNode
|
|
67
|
+
>;
|
|
68
|
+
|
|
69
|
+
let optionalArgs!: LoadableField<
|
|
70
|
+
{
|
|
71
|
+
parameters: {
|
|
72
|
+
foo?: string;
|
|
73
|
+
};
|
|
74
|
+
data: {};
|
|
75
|
+
},
|
|
76
|
+
() => React.ReactNode
|
|
77
|
+
>;
|
|
78
|
+
|
|
79
|
+
let requiredArgs!: LoadableField<
|
|
80
|
+
{
|
|
81
|
+
parameters: {
|
|
82
|
+
foo: string;
|
|
83
|
+
};
|
|
84
|
+
data: {};
|
|
85
|
+
},
|
|
86
|
+
() => React.ReactNode
|
|
87
|
+
>;
|
|
88
|
+
|
|
89
|
+
<LoadableFieldRenderer loadableField={neverArgs} additionalProps={{}} />;
|
|
90
|
+
<LoadableFieldRenderer
|
|
91
|
+
loadableField={neverArgs}
|
|
92
|
+
additionalProps={{}}
|
|
93
|
+
args={{}}
|
|
94
|
+
/>;
|
|
95
|
+
<LoadableFieldRenderer
|
|
96
|
+
loadableField={neverArgs}
|
|
97
|
+
additionalProps={{}}
|
|
98
|
+
args={{
|
|
99
|
+
// @ts-expect-error
|
|
100
|
+
foo: 'bar',
|
|
101
|
+
}}
|
|
102
|
+
/>;
|
|
103
|
+
|
|
104
|
+
<LoadableFieldRenderer loadableField={optionalArgs} additionalProps={{}} />;
|
|
105
|
+
<LoadableFieldRenderer
|
|
106
|
+
loadableField={optionalArgs}
|
|
107
|
+
additionalProps={{}}
|
|
108
|
+
args={{}}
|
|
109
|
+
/>;
|
|
110
|
+
<LoadableFieldRenderer
|
|
111
|
+
loadableField={optionalArgs}
|
|
112
|
+
additionalProps={{}}
|
|
113
|
+
args={{
|
|
114
|
+
foo: 'bar',
|
|
115
|
+
}}
|
|
116
|
+
/>;
|
|
117
|
+
<LoadableFieldRenderer
|
|
118
|
+
loadableField={optionalArgs}
|
|
119
|
+
additionalProps={{}}
|
|
120
|
+
args={{
|
|
121
|
+
// @ts-expect-error
|
|
122
|
+
foo: 12,
|
|
123
|
+
}}
|
|
124
|
+
/>;
|
|
125
|
+
|
|
126
|
+
// @ts-expect-error
|
|
127
|
+
<LoadableFieldRenderer loadableField={requiredArgs} additionalProps={{}} />;
|
|
128
|
+
<LoadableFieldRenderer
|
|
129
|
+
loadableField={requiredArgs}
|
|
130
|
+
additionalProps={{}}
|
|
131
|
+
// @ts-expect-error
|
|
132
|
+
args={{}}
|
|
133
|
+
/>;
|
|
134
|
+
<LoadableFieldRenderer
|
|
135
|
+
loadableField={requiredArgs}
|
|
136
|
+
additionalProps={{}}
|
|
137
|
+
args={{
|
|
138
|
+
foo: 'bar',
|
|
139
|
+
}}
|
|
140
|
+
/>;
|
|
141
|
+
<LoadableFieldRenderer
|
|
142
|
+
loadableField={requiredArgs}
|
|
143
|
+
additionalProps={{}}
|
|
144
|
+
args={{
|
|
145
|
+
// @ts-expect-error
|
|
146
|
+
foo: 12,
|
|
147
|
+
}}
|
|
148
|
+
/>;
|
|
149
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createIsographEnvironmentCore,
|
|
3
|
+
type BaseStoreLayerData,
|
|
4
|
+
type IsographNetworkFunction,
|
|
5
|
+
type MissingFieldHandler,
|
|
6
|
+
} from '../core/IsographEnvironment';
|
|
7
|
+
import type { LogFunction } from '../core/logging';
|
|
8
|
+
import { componentFunction } from './useReadAndSubscribe';
|
|
9
|
+
|
|
10
|
+
export function createIsographEnvironment(
|
|
11
|
+
baseStoreLayerData: BaseStoreLayerData,
|
|
12
|
+
networkFunction: IsographNetworkFunction,
|
|
13
|
+
missingFieldHandler?: MissingFieldHandler | null,
|
|
14
|
+
logFunction?: LogFunction | null,
|
|
15
|
+
) {
|
|
16
|
+
return createIsographEnvironmentCore(
|
|
17
|
+
baseStoreLayerData,
|
|
18
|
+
networkFunction,
|
|
19
|
+
componentFunction,
|
|
20
|
+
missingFieldHandler,
|
|
21
|
+
logFunction,
|
|
22
|
+
);
|
|
23
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type PromiseWrapper, getPromiseState } from '../core/PromiseWrapper';
|
|
2
|
+
import type { NetworkRequestReaderOptions } from '../core/read';
|
|
3
|
+
|
|
4
|
+
export function maybeUnwrapNetworkRequest(
|
|
5
|
+
networkRequest: PromiseWrapper<void, any>,
|
|
6
|
+
networkRequestOptions: NetworkRequestReaderOptions,
|
|
7
|
+
) {
|
|
8
|
+
const state = getPromiseState(networkRequest);
|
|
9
|
+
if (state.kind === 'Err' && networkRequestOptions.throwOnNetworkError) {
|
|
10
|
+
throw state.error;
|
|
11
|
+
} else if (
|
|
12
|
+
state.kind === 'Pending' &&
|
|
13
|
+
networkRequestOptions.suspendIfInFlight
|
|
14
|
+
) {
|
|
15
|
+
throw state.promise;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -2,26 +2,31 @@ import {
|
|
|
2
2
|
UNASSIGNED_STATE,
|
|
3
3
|
useUpdatableDisposableState,
|
|
4
4
|
} from '@isograph/react-disposable-state';
|
|
5
|
-
import {
|
|
5
|
+
import type { NetworkResponseObject } from '../core/cache';
|
|
6
|
+
import type { FetchOptions } from '../core/check';
|
|
7
|
+
import { type RequiredFetchOptions } from '../core/check';
|
|
8
|
+
import type { IsographEntrypoint } from '../core/entrypoint';
|
|
6
9
|
import {
|
|
7
|
-
IsographEntrypoint,
|
|
8
10
|
type NormalizationAst,
|
|
9
11
|
type NormalizationAstLoader,
|
|
10
12
|
} from '../core/entrypoint';
|
|
11
|
-
import {
|
|
13
|
+
import type {
|
|
12
14
|
ExtractParameters,
|
|
13
15
|
FragmentReference,
|
|
14
|
-
type UnknownTReadFromStore,
|
|
15
16
|
} from '../core/FragmentReference';
|
|
16
|
-
import {
|
|
17
|
+
import { type UnknownTReadFromStore } from '../core/FragmentReference';
|
|
18
|
+
import {
|
|
19
|
+
getOrLoadReaderWithRefetchQueries,
|
|
20
|
+
ROOT_ID,
|
|
21
|
+
} from '../core/IsographEnvironment';
|
|
17
22
|
import { maybeMakeNetworkRequest } from '../core/makeNetworkRequest';
|
|
18
|
-
import { wrapPromise, wrapResolvedValue } from '../core/PromiseWrapper';
|
|
19
23
|
import { useIsographEnvironment } from './IsographEnvironmentProvider';
|
|
20
24
|
|
|
21
25
|
export type UseImperativeReferenceResult<
|
|
22
26
|
TReadFromStore extends UnknownTReadFromStore,
|
|
23
27
|
TClientFieldValue,
|
|
24
28
|
TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
|
|
29
|
+
TRawResponseType,
|
|
25
30
|
> = {
|
|
26
31
|
fragmentReference: FragmentReference<
|
|
27
32
|
TReadFromStore,
|
|
@@ -31,7 +36,7 @@ export type UseImperativeReferenceResult<
|
|
|
31
36
|
variables: ExtractParameters<TReadFromStore>,
|
|
32
37
|
...[fetchOptions]: NormalizationAstLoader extends TNormalizationAst
|
|
33
38
|
? [fetchOptions: RequiredFetchOptions<TClientFieldValue>]
|
|
34
|
-
: [fetchOptions?: FetchOptions<TClientFieldValue>]
|
|
39
|
+
: [fetchOptions?: FetchOptions<TClientFieldValue, TRawResponseType>]
|
|
35
40
|
) => void;
|
|
36
41
|
};
|
|
37
42
|
|
|
@@ -39,16 +44,19 @@ export function useImperativeReference<
|
|
|
39
44
|
TReadFromStore extends UnknownTReadFromStore,
|
|
40
45
|
TClientFieldValue,
|
|
41
46
|
TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
|
|
47
|
+
TRawResponseType extends NetworkResponseObject,
|
|
42
48
|
>(
|
|
43
49
|
entrypoint: IsographEntrypoint<
|
|
44
50
|
TReadFromStore,
|
|
45
51
|
TClientFieldValue,
|
|
46
|
-
TNormalizationAst
|
|
52
|
+
TNormalizationAst,
|
|
53
|
+
TRawResponseType
|
|
47
54
|
>,
|
|
48
55
|
): UseImperativeReferenceResult<
|
|
49
56
|
TReadFromStore,
|
|
50
57
|
TClientFieldValue,
|
|
51
|
-
TNormalizationAst
|
|
58
|
+
TNormalizationAst,
|
|
59
|
+
TRawResponseType
|
|
52
60
|
> {
|
|
53
61
|
const { state, setState } =
|
|
54
62
|
useUpdatableDisposableState<
|
|
@@ -59,13 +67,13 @@ export function useImperativeReference<
|
|
|
59
67
|
fragmentReference: state !== UNASSIGNED_STATE ? state : null,
|
|
60
68
|
loadFragmentReference: (
|
|
61
69
|
variables: ExtractParameters<TReadFromStore>,
|
|
62
|
-
fetchOptions?: FetchOptions<TClientFieldValue>,
|
|
70
|
+
fetchOptions?: FetchOptions<TClientFieldValue, TRawResponseType>,
|
|
63
71
|
) => {
|
|
64
|
-
const readerWithRefetchQueries =
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
72
|
+
const { fieldName, readerArtifactKind, readerWithRefetchQueries } =
|
|
73
|
+
getOrLoadReaderWithRefetchQueries(
|
|
74
|
+
environment,
|
|
75
|
+
entrypoint.readerWithRefetchQueries,
|
|
76
|
+
);
|
|
69
77
|
const [networkRequest, disposeNetworkRequest] = maybeMakeNetworkRequest(
|
|
70
78
|
environment,
|
|
71
79
|
entrypoint,
|
|
@@ -77,6 +85,8 @@ export function useImperativeReference<
|
|
|
77
85
|
{
|
|
78
86
|
kind: 'FragmentReference',
|
|
79
87
|
readerWithRefetchQueries,
|
|
88
|
+
fieldName,
|
|
89
|
+
readerArtifactKind,
|
|
80
90
|
root: { __link: ROOT_ID, __typename: entrypoint.concreteType },
|
|
81
91
|
variables,
|
|
82
92
|
networkRequest,
|
|
@@ -1,33 +1,37 @@
|
|
|
1
1
|
import { useLazyDisposableState } from '@isograph/react-disposable-state';
|
|
2
|
-
import {
|
|
3
|
-
import { FetchOptions
|
|
2
|
+
import { type NetworkResponseObject } from '../core/cache';
|
|
3
|
+
import type { FetchOptions } from '../core/check';
|
|
4
|
+
import { type RequiredFetchOptions } from '../core/check';
|
|
5
|
+
import type { IsographEntrypoint } from '../core/entrypoint';
|
|
4
6
|
import {
|
|
5
|
-
IsographEntrypoint,
|
|
6
7
|
type NormalizationAst,
|
|
7
8
|
type NormalizationAstLoader,
|
|
8
9
|
} from '../core/entrypoint';
|
|
9
|
-
import {
|
|
10
|
+
import type {
|
|
10
11
|
ExtractParameters,
|
|
11
12
|
FragmentReference,
|
|
12
|
-
type UnknownTReadFromStore,
|
|
13
13
|
} from '../core/FragmentReference';
|
|
14
|
+
import { type UnknownTReadFromStore } from '../core/FragmentReference';
|
|
14
15
|
import { logMessage } from '../core/logging';
|
|
15
16
|
import { useIsographEnvironment } from './IsographEnvironmentProvider';
|
|
17
|
+
import { getOrCreateCacheForArtifact } from '../core/getOrCreateCacheForArtifact';
|
|
16
18
|
|
|
17
19
|
export function useLazyReference<
|
|
18
20
|
TReadFromStore extends UnknownTReadFromStore,
|
|
19
21
|
TClientFieldValue,
|
|
20
22
|
TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
|
|
23
|
+
TRawResponseType extends NetworkResponseObject,
|
|
21
24
|
>(
|
|
22
25
|
entrypoint: IsographEntrypoint<
|
|
23
26
|
TReadFromStore,
|
|
24
27
|
TClientFieldValue,
|
|
25
|
-
TNormalizationAst
|
|
28
|
+
TNormalizationAst,
|
|
29
|
+
TRawResponseType
|
|
26
30
|
>,
|
|
27
31
|
variables: ExtractParameters<TReadFromStore>,
|
|
28
32
|
...[fetchOptions]: TNormalizationAst extends NormalizationAstLoader
|
|
29
33
|
? [fetchOptions: RequiredFetchOptions<TClientFieldValue>]
|
|
30
|
-
: [fetchOptions?: FetchOptions<TClientFieldValue>]
|
|
34
|
+
: [fetchOptions?: FetchOptions<TClientFieldValue, TRawResponseType>]
|
|
31
35
|
): NormalizationAst | NormalizationAstLoader extends TNormalizationAst
|
|
32
36
|
? unknown
|
|
33
37
|
: {
|
|
@@ -57,12 +61,18 @@ export function useLazyReference<
|
|
|
57
61
|
|
|
58
62
|
// @ts-ignore
|
|
59
63
|
function tsTests() {
|
|
60
|
-
let withAst!: IsographEntrypoint<any, unknown, NormalizationAst>;
|
|
61
|
-
let withAstLoader!: IsographEntrypoint<
|
|
64
|
+
let withAst!: IsographEntrypoint<any, unknown, NormalizationAst, any>;
|
|
65
|
+
let withAstLoader!: IsographEntrypoint<
|
|
66
|
+
any,
|
|
67
|
+
unknown,
|
|
68
|
+
NormalizationAstLoader,
|
|
69
|
+
{}
|
|
70
|
+
>;
|
|
62
71
|
let withAstOrLoader!: IsographEntrypoint<
|
|
63
72
|
any,
|
|
64
73
|
unknown,
|
|
65
|
-
NormalizationAst | NormalizationAstLoader
|
|
74
|
+
NormalizationAst | NormalizationAstLoader,
|
|
75
|
+
{}
|
|
66
76
|
>;
|
|
67
77
|
|
|
68
78
|
useLazyReference(withAst, {}) satisfies {};
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import { useEffect, useState } from 'react';
|
|
2
|
-
import { subscribe } from '../core/cache';
|
|
3
2
|
import {
|
|
4
|
-
ExtractData,
|
|
5
|
-
FragmentReference,
|
|
3
|
+
type ExtractData,
|
|
4
|
+
type FragmentReference,
|
|
6
5
|
stableIdForFragmentReference,
|
|
7
6
|
type UnknownTReadFromStore,
|
|
8
7
|
} from '../core/FragmentReference';
|
|
8
|
+
import type { IsographComponentFunction } from '../core/IsographEnvironment';
|
|
9
|
+
import { logMessage } from '../core/logging';
|
|
9
10
|
import { readPromise } from '../core/PromiseWrapper';
|
|
10
11
|
import {
|
|
11
|
-
NetworkRequestReaderOptions,
|
|
12
|
+
type NetworkRequestReaderOptions,
|
|
12
13
|
readButDoNotEvaluate,
|
|
13
|
-
WithEncounteredRecords,
|
|
14
|
+
type WithEncounteredRecords,
|
|
14
15
|
} from '../core/read';
|
|
15
16
|
import type { ReaderAst } from '../core/reader';
|
|
17
|
+
import { subscribe } from '../core/subscribe';
|
|
16
18
|
import { useIsographEnvironment } from './IsographEnvironmentProvider';
|
|
19
|
+
import { maybeUnwrapNetworkRequest } from './maybeUnwrapNetworkRequest';
|
|
17
20
|
import { useRerenderOnChange } from './useRerenderOnChange';
|
|
18
21
|
|
|
19
22
|
/**
|
|
@@ -75,15 +78,53 @@ export function useSubscribeToMultiple<
|
|
|
75
78
|
[
|
|
76
79
|
items
|
|
77
80
|
.map(({ fragmentReference }) => {
|
|
78
|
-
|
|
79
|
-
fragmentReference.readerWithRefetchQueries,
|
|
80
|
-
);
|
|
81
|
-
stableIdForFragmentReference(
|
|
82
|
-
fragmentReference,
|
|
83
|
-
readerWithRefetchQueries.readerArtifact.fieldName,
|
|
84
|
-
);
|
|
81
|
+
stableIdForFragmentReference(fragmentReference);
|
|
85
82
|
})
|
|
86
83
|
.join('.'),
|
|
87
84
|
],
|
|
88
85
|
);
|
|
89
86
|
}
|
|
87
|
+
|
|
88
|
+
export const componentFunction: IsographComponentFunction = (
|
|
89
|
+
environment,
|
|
90
|
+
fragmentReference,
|
|
91
|
+
networkRequestOptions,
|
|
92
|
+
startUpdate,
|
|
93
|
+
) => {
|
|
94
|
+
function Component(additionalRuntimeProps: { [key: string]: any }) {
|
|
95
|
+
maybeUnwrapNetworkRequest(
|
|
96
|
+
fragmentReference.networkRequest,
|
|
97
|
+
networkRequestOptions,
|
|
98
|
+
);
|
|
99
|
+
const readerWithRefetchQueries = readPromise(
|
|
100
|
+
fragmentReference.readerWithRefetchQueries,
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
const data = useReadAndSubscribe(
|
|
104
|
+
fragmentReference,
|
|
105
|
+
networkRequestOptions,
|
|
106
|
+
readerWithRefetchQueries.readerArtifact.readerAst,
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
logMessage(environment, () => ({
|
|
110
|
+
kind: 'ComponentRerendered',
|
|
111
|
+
componentName: fragmentReference.fieldName,
|
|
112
|
+
rootLink: fragmentReference.root,
|
|
113
|
+
}));
|
|
114
|
+
|
|
115
|
+
return readerWithRefetchQueries.readerArtifact.resolver(
|
|
116
|
+
// @ts-expect-error
|
|
117
|
+
{
|
|
118
|
+
data,
|
|
119
|
+
parameters: fragmentReference.variables,
|
|
120
|
+
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
|
|
121
|
+
? startUpdate
|
|
122
|
+
: undefined,
|
|
123
|
+
},
|
|
124
|
+
additionalRuntimeProps,
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
const idString = `(type: ${fragmentReference.root.__typename}, id: ${fragmentReference.root.__link})`;
|
|
128
|
+
Component.displayName = `${fragmentReference.fieldName} ${idString} @component`;
|
|
129
|
+
return Component;
|
|
130
|
+
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { WithEncounteredRecords } from '../core/read';
|
|
2
|
+
import type { FragmentReference } from '../core/FragmentReference';
|
|
3
|
+
import type { WithEncounteredRecords } from '../core/read';
|
|
5
4
|
import type { ReaderAst } from '../core/reader';
|
|
5
|
+
import { subscribe } from '../core/subscribe';
|
|
6
6
|
import { useIsographEnvironment } from './IsographEnvironmentProvider';
|
|
7
7
|
|
|
8
8
|
// TODO add unit tests for this. Add integration tests that test
|
package/src/react/useResult.ts
CHANGED
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
import { getOrCreateCachedComponent } from '../core/componentCache';
|
|
2
|
-
import {
|
|
2
|
+
import type {
|
|
3
3
|
FragmentReference,
|
|
4
|
-
|
|
4
|
+
UnknownTReadFromStore,
|
|
5
5
|
} from '../core/FragmentReference';
|
|
6
|
+
import { readPromise } from '../core/PromiseWrapper';
|
|
6
7
|
import {
|
|
7
|
-
|
|
8
|
-
PromiseWrapper,
|
|
9
|
-
readPromise,
|
|
10
|
-
} from '../core/PromiseWrapper';
|
|
11
|
-
import {
|
|
8
|
+
type NetworkRequestReaderOptions,
|
|
12
9
|
getNetworkRequestOptionsWithDefaults,
|
|
13
|
-
NetworkRequestReaderOptions,
|
|
14
10
|
} from '../core/read';
|
|
15
11
|
import { getOrCreateCachedStartUpdate } from '../core/startUpdate';
|
|
16
|
-
import { useIsographEnvironment } from '
|
|
12
|
+
import { useIsographEnvironment } from './IsographEnvironmentProvider';
|
|
13
|
+
import { maybeUnwrapNetworkRequest } from './maybeUnwrapNetworkRequest';
|
|
17
14
|
import { useReadAndSubscribe } from './useReadAndSubscribe';
|
|
18
15
|
|
|
19
16
|
export function useResult<
|
|
@@ -28,25 +25,23 @@ export function useResult<
|
|
|
28
25
|
partialNetworkRequestOptions,
|
|
29
26
|
);
|
|
30
27
|
|
|
31
|
-
|
|
32
|
-
fragmentReference.networkRequest,
|
|
33
|
-
networkRequestOptions,
|
|
34
|
-
);
|
|
35
|
-
const readerWithRefetchQueries = readPromise(
|
|
36
|
-
fragmentReference.readerWithRefetchQueries,
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
switch (readerWithRefetchQueries.readerArtifact.kind) {
|
|
28
|
+
switch (fragmentReference.readerArtifactKind) {
|
|
40
29
|
case 'ComponentReaderArtifact': {
|
|
41
30
|
// @ts-expect-error
|
|
42
31
|
return getOrCreateCachedComponent(
|
|
43
32
|
environment,
|
|
44
|
-
readerWithRefetchQueries.readerArtifact.fieldName,
|
|
45
33
|
fragmentReference,
|
|
46
34
|
networkRequestOptions,
|
|
47
35
|
);
|
|
48
36
|
}
|
|
49
37
|
case 'EagerReaderArtifact': {
|
|
38
|
+
maybeUnwrapNetworkRequest(
|
|
39
|
+
fragmentReference.networkRequest,
|
|
40
|
+
networkRequestOptions,
|
|
41
|
+
);
|
|
42
|
+
const readerWithRefetchQueries = readPromise(
|
|
43
|
+
fragmentReference.readerWithRefetchQueries,
|
|
44
|
+
);
|
|
50
45
|
const data = useReadAndSubscribe(
|
|
51
46
|
fragmentReference,
|
|
52
47
|
networkRequestOptions,
|
|
@@ -60,28 +55,13 @@ export function useResult<
|
|
|
60
55
|
startUpdate: getOrCreateCachedStartUpdate(
|
|
61
56
|
environment,
|
|
62
57
|
fragmentReference,
|
|
63
|
-
readerWithRefetchQueries.readerArtifact.fieldName,
|
|
64
58
|
networkRequestOptions,
|
|
65
59
|
),
|
|
66
60
|
}
|
|
67
61
|
: undefined),
|
|
68
62
|
};
|
|
63
|
+
// @ts-expect-error
|
|
69
64
|
return readerWithRefetchQueries.readerArtifact.resolver(param);
|
|
70
65
|
}
|
|
71
66
|
}
|
|
72
67
|
}
|
|
73
|
-
|
|
74
|
-
export function maybeUnwrapNetworkRequest(
|
|
75
|
-
networkRequest: PromiseWrapper<void, any>,
|
|
76
|
-
networkRequestOptions: NetworkRequestReaderOptions,
|
|
77
|
-
) {
|
|
78
|
-
const state = getPromiseState(networkRequest);
|
|
79
|
-
if (state.kind === 'Err' && networkRequestOptions.throwOnNetworkError) {
|
|
80
|
-
throw state.error;
|
|
81
|
-
} else if (
|
|
82
|
-
state.kind === 'Pending' &&
|
|
83
|
-
networkRequestOptions.suspendIfInFlight
|
|
84
|
-
) {
|
|
85
|
-
throw state.promise;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
@@ -19,7 +19,7 @@ const artifact: EagerReaderArtifact<
|
|
|
19
19
|
Link<"Economist"> | null
|
|
20
20
|
> = {
|
|
21
21
|
kind: "EagerReaderArtifact",
|
|
22
|
-
fieldName: "
|
|
22
|
+
fieldName: "asEconomist",
|
|
23
23
|
resolver: ({ data }) => data.__typename === "Economist" ? data.__link : null,
|
|
24
24
|
readerAst,
|
|
25
25
|
hasUpdatable: false,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
|
|
2
2
|
import {Query__linkedUpdate__param} from './param_type';
|
|
3
3
|
import {Query__linkedUpdate__output_type} from './output_type';
|
|
4
|
+
import type {Query__linkedUpdate__raw_response_type} from './raw_response_type';
|
|
4
5
|
import readerResolver from './resolver_reader';
|
|
5
6
|
import queryText from './query_text';
|
|
6
7
|
import normalizationAst from './normalization_ast';
|
|
@@ -9,7 +10,8 @@ const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
|
|
|
9
10
|
const artifact: IsographEntrypoint<
|
|
10
11
|
Query__linkedUpdate__param,
|
|
11
12
|
Query__linkedUpdate__output_type,
|
|
12
|
-
NormalizationAst
|
|
13
|
+
NormalizationAst,
|
|
14
|
+
Query__linkedUpdate__raw_response_type
|
|
13
15
|
> = {
|
|
14
16
|
kind: "Entrypoint",
|
|
15
17
|
networkRequestInfo: {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
|
|
2
2
|
import {Query__meName__param} from './param_type';
|
|
3
3
|
import {Query__meName__output_type} from './output_type';
|
|
4
|
+
import type {Query__meName__raw_response_type} from './raw_response_type';
|
|
4
5
|
import readerResolver from './resolver_reader';
|
|
5
6
|
import queryText from './query_text';
|
|
6
7
|
import normalizationAst from './normalization_ast';
|
|
@@ -9,7 +10,8 @@ const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
|
|
|
9
10
|
const artifact: IsographEntrypoint<
|
|
10
11
|
Query__meName__param,
|
|
11
12
|
Query__meName__output_type,
|
|
12
|
-
NormalizationAst
|
|
13
|
+
NormalizationAst,
|
|
14
|
+
Query__meName__raw_response_type
|
|
13
15
|
> = {
|
|
14
16
|
kind: "Entrypoint",
|
|
15
17
|
networkRequestInfo: {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
|
|
2
2
|
import {Query__meNameSuccessor__param} from './param_type';
|
|
3
3
|
import {Query__meNameSuccessor__output_type} from './output_type';
|
|
4
|
+
import type {Query__meNameSuccessor__raw_response_type} from './raw_response_type';
|
|
4
5
|
import readerResolver from './resolver_reader';
|
|
5
6
|
import queryText from './query_text';
|
|
6
7
|
import normalizationAst from './normalization_ast';
|
|
@@ -9,7 +10,8 @@ const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
|
|
|
9
10
|
const artifact: IsographEntrypoint<
|
|
10
11
|
Query__meNameSuccessor__param,
|
|
11
12
|
Query__meNameSuccessor__output_type,
|
|
12
|
-
NormalizationAst
|
|
13
|
+
NormalizationAst,
|
|
14
|
+
Query__meNameSuccessor__raw_response_type
|
|
13
15
|
> = {
|
|
14
16
|
kind: "Entrypoint",
|
|
15
17
|
networkRequestInfo: {
|