@isograph/react 0.5.0 → 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 +9 -2
- 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 -29
- package/dist/core/FragmentReference.d.ts.map +1 -1
- package/dist/core/FragmentReference.js +7 -5
- 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 +76 -79
- package/dist/core/IsographEnvironment.d.ts.map +1 -1
- package/dist/core/IsographEnvironment.js +60 -82
- 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 +26 -23
- 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 +6 -6
- 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 -37
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/cache.js +203 -537
- 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 +21 -19
- package/dist/core/check.d.ts.map +1 -1
- package/dist/core/check.js +80 -127
- package/dist/core/check.mjs +84 -0
- package/dist/core/check.mjs.map +1 -0
- package/dist/core/componentCache.js +9 -35
- 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 -78
- 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 -16
- package/dist/core/garbageCollection.d.ts.map +1 -1
- package/dist/core/garbageCollection.js +76 -115
- 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 +66 -61
- 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 -10
- package/dist/core/makeNetworkRequest.d.ts.map +1 -1
- package/dist/core/makeNetworkRequest.js +180 -264
- 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 +37 -53
- package/dist/core/optimisticProxy.d.ts.map +1 -1
- package/dist/core/optimisticProxy.js +245 -371
- 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 -28
- package/dist/core/read.d.ts.map +1 -1
- package/dist/core/read.js +435 -650
- 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 -77
- package/dist/core/reader.d.ts.map +1 -1
- package/dist/core/startUpdate.js +115 -152
- 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 -69
- 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 +9 -12
- package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
- package/dist/loadable-hooks/useClientSideDefer.js +13 -44
- 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 +26 -22
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useConnectionSpecPagination.js +133 -172
- 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 -8
- 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 -14
- 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 +15 -12
- package/dist/react/LoadableFieldReader.d.ts.map +1 -1
- package/dist/react/LoadableFieldReader.js +13 -47
- 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 +16 -13
- package/dist/react/LoadableFieldRenderer.d.ts.map +1 -1
- package/dist/react/LoadableFieldRenderer.js +13 -70
- 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 -8
- package/dist/react/useImperativeReference.d.ts.map +1 -1
- package/dist/react/useImperativeReference.js +34 -30
- 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 -6
- 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 -37
- 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 -40
- package/dist/react/useResult.mjs +30 -0
- package/dist/react/useResult.mjs.map +1 -0
- package/package.json +17 -9
- package/src/core/FragmentReference.ts +3 -3
- package/src/core/IsographEnvironment.ts +29 -16
- package/src/core/areEqualWithDeepComparison.ts +2 -18
- package/src/core/cache.ts +18 -383
- package/src/core/check.ts +9 -16
- package/src/core/componentCache.ts +10 -47
- package/src/core/entrypoint.ts +15 -3
- package/src/core/garbageCollection.ts +21 -10
- package/src/core/getOrCreateCacheForArtifact.ts +86 -0
- package/src/core/logging.ts +10 -10
- package/src/core/makeNetworkRequest.ts +16 -23
- package/src/core/optimisticProxy.ts +28 -47
- package/src/core/read.ts +21 -38
- package/src/core/reader.ts +8 -11
- package/src/core/startUpdate.ts +2 -6
- 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 +5 -4
- package/src/loadable-hooks/useClientSideDefer.ts +4 -4
- package/src/loadable-hooks/useConnectionSpecPagination.ts +20 -18
- package/src/loadable-hooks/useImperativeLoadableField.ts +3 -3
- package/src/loadable-hooks/useSkipLimitPagination.ts +20 -18
- package/src/react/IsographEnvironmentProvider.tsx +2 -1
- package/src/react/LoadableFieldReader.tsx +2 -4
- package/src/react/LoadableFieldRenderer.tsx +2 -4
- package/src/react/createIsographEnvironment.ts +23 -0
- package/src/react/maybeUnwrapNetworkRequest.ts +17 -0
- package/src/react/useImperativeReference.ts +5 -4
- package/src/react/useLazyReference.ts +7 -8
- package/src/react/useReadAndSubscribe.ts +53 -5
- package/src/react/useRerenderOnChange.ts +3 -3
- package/src/react/useResult.ts +6 -24
- package/src/tests/__isograph/Economist/__link/output_type.ts +2 -0
- package/src/tests/garbageCollection.test.ts +3 -6
- package/src/tests/meNameSuccessor.ts +1 -1
- package/src/tests/nodeQuery.ts +2 -2
- package/src/tests/normalizeData.test.ts +5 -3
- package/src/tests/optimisticProxy.test.ts +7 -5
- package/src/tests/startUpdate.test.ts +5 -7
- 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 -9
- package/dist/core/startUpdate.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
package/dist/core/reader.d.ts
CHANGED
|
@@ -1,88 +1,89 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { ExtractParameters, FragmentReference,
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import { FetchOptions } from "./check.js";
|
|
2
|
+
import { Arguments } from "./util.js";
|
|
3
|
+
import { ComponentOrFieldName, IsographEnvironment, StoreLink } from "./IsographEnvironment.js";
|
|
4
|
+
import { ExtractParameters, FragmentReference, UnknownTReadFromStore } from "./FragmentReference.js";
|
|
5
|
+
import { IsographEntrypoint, IsographEntrypointLoader, RefetchQueryNormalizationArtifact, RefetchQueryNormalizationArtifactWrapper } from "./entrypoint.js";
|
|
6
|
+
import { Factory } from "@isograph/disposable-types";
|
|
7
|
+
|
|
8
|
+
//#region src/core/reader.d.ts
|
|
9
|
+
type TopLevelReaderArtifact<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue, TComponentProps extends Record<PropertyKey, never>> = EagerReaderArtifact<TReadFromStore, TClientFieldValue> | ComponentReaderArtifact<TReadFromStore, TComponentProps>;
|
|
10
|
+
type EagerReaderArtifact<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue> = {
|
|
11
|
+
readonly kind: 'EagerReaderArtifact';
|
|
12
|
+
readonly fieldName: ComponentOrFieldName;
|
|
13
|
+
readonly readerAst: ReaderAst<TReadFromStore>;
|
|
14
|
+
readonly resolver: (data: ResolverFirstParameter<TReadFromStore>) => TClientFieldValue;
|
|
15
|
+
readonly hasUpdatable: boolean;
|
|
14
16
|
};
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
type ComponentReaderArtifact<TReadFromStore extends UnknownTReadFromStore, TComponentProps extends Record<string, unknown> = Record<PropertyKey, never>> = {
|
|
18
|
+
readonly kind: 'ComponentReaderArtifact';
|
|
19
|
+
readonly fieldName: ComponentOrFieldName;
|
|
20
|
+
readonly readerAst: ReaderAst<TReadFromStore>;
|
|
21
|
+
readonly resolver: (data: ResolverFirstParameter<TReadFromStore>, runtimeProps: TComponentProps) => React.ReactNode;
|
|
22
|
+
readonly hasUpdatable: boolean;
|
|
21
23
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
type ResolverFirstParameter<TReadFromStore extends UnknownTReadFromStore> = Pick<TReadFromStore, 'data' | 'parameters' | 'startUpdate'>;
|
|
25
|
+
type StartUpdate<UpdatableData> = (updater: (startUpdateParams: {
|
|
26
|
+
updatableData: UpdatableData;
|
|
25
27
|
}) => void) => void;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
type RefetchReaderArtifact = {
|
|
29
|
+
readonly kind: 'RefetchReaderArtifact';
|
|
30
|
+
readonly readerAst: ReaderAst<unknown>;
|
|
31
|
+
readonly resolver: (environment: IsographEnvironment, artifact: RefetchQueryNormalizationArtifact, variables: any, filteredVariables: any, rootLink: StoreLink, readerArtifact: TopLevelReaderArtifact<any, any, any> | null, nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[]) => () => void;
|
|
30
32
|
};
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
type ReaderAstNode = ReaderScalarField | ReaderLinkedField | ReaderNonLoadableResolverField | ReaderImperativelyLoadedField | LoadablySelectedField | ReaderLinkField;
|
|
34
|
+
type ReaderAst<TReadFromStore> = ReadonlyArray<ReaderAstNode>;
|
|
35
|
+
type ReaderScalarField = {
|
|
36
|
+
readonly kind: 'Scalar';
|
|
37
|
+
readonly fieldName: string;
|
|
38
|
+
readonly alias: string | null;
|
|
39
|
+
readonly arguments: Arguments | null;
|
|
40
|
+
readonly isUpdatable: boolean;
|
|
39
41
|
};
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
type ReaderLinkField = {
|
|
43
|
+
readonly kind: 'Link';
|
|
44
|
+
readonly alias: string;
|
|
43
45
|
};
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
46
|
+
type ReaderLinkedField = {
|
|
47
|
+
readonly kind: 'Linked';
|
|
48
|
+
readonly fieldName: string;
|
|
49
|
+
readonly alias: string | null;
|
|
50
|
+
readonly selections: ReaderAst<unknown>;
|
|
51
|
+
readonly arguments: Arguments | null;
|
|
52
|
+
readonly condition: EagerReaderArtifact<{
|
|
53
|
+
data: any;
|
|
54
|
+
parameters: any;
|
|
55
|
+
startUpdate?: StartUpdate<any>;
|
|
56
|
+
}, StoreLink | null | (StoreLink | null)[] | StoreLink[]> | null;
|
|
57
|
+
readonly isUpdatable: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* If refetchQueryIndex != null, then the linked field is a client pointer.
|
|
60
|
+
*/
|
|
61
|
+
readonly refetchQueryIndex: number | null;
|
|
60
62
|
};
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
readonly readerArtifact: TopLevelReaderArtifact<any, any, any>;
|
|
68
|
-
readonly arguments: Arguments | null;
|
|
69
|
-
readonly usedRefetchQueries: number[];
|
|
63
|
+
type ReaderNonLoadableResolverField = {
|
|
64
|
+
readonly kind: 'Resolver';
|
|
65
|
+
readonly alias: string;
|
|
66
|
+
readonly readerArtifact: TopLevelReaderArtifact<any, any, any>;
|
|
67
|
+
readonly arguments: Arguments | null;
|
|
68
|
+
readonly usedRefetchQueries: number[];
|
|
70
69
|
};
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
70
|
+
type ReaderImperativelyLoadedField = {
|
|
71
|
+
readonly kind: 'ImperativelyLoadedField';
|
|
72
|
+
readonly alias: string;
|
|
73
|
+
readonly refetchReaderArtifact: RefetchReaderArtifact;
|
|
74
|
+
readonly refetchQueryIndex: number;
|
|
75
|
+
readonly name: string;
|
|
77
76
|
};
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
77
|
+
type LoadablySelectedField = {
|
|
78
|
+
readonly kind: 'LoadablySelectedField';
|
|
79
|
+
readonly alias: string;
|
|
80
|
+
readonly name: string;
|
|
81
|
+
readonly queryArguments: Arguments | null;
|
|
82
|
+
readonly refetchReaderAst: ReaderAst<any>;
|
|
83
|
+
readonly entrypoint: IsographEntrypoint<any, any, any, any> | IsographEntrypointLoader<any, any, any>;
|
|
85
84
|
};
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
type StableId = string;
|
|
86
|
+
type LoadableField<TReadFromStore extends UnknownTReadFromStore, TResult, TArgs = ExtractParameters<TReadFromStore>> = (args: TArgs | void, fetchOptions: FetchOptions<TResult, never>) => [StableId, Factory<FragmentReference<TReadFromStore, TResult>>];
|
|
87
|
+
//#endregion
|
|
88
|
+
export { ComponentReaderArtifact, EagerReaderArtifact, LoadableField, LoadablySelectedField, ReaderAst, ReaderAstNode, ReaderImperativelyLoadedField, ReaderLinkField, ReaderLinkedField, ReaderNonLoadableResolverField, ReaderScalarField, RefetchReaderArtifact, ResolverFirstParameter, StableId, StartUpdate, TopLevelReaderArtifact };
|
|
88
89
|
//# sourceMappingURL=reader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.d.ts","
|
|
1
|
+
{"version":3,"file":"reader.d.ts","names":[],"sources":["../../src/core/reader.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/core/startUpdate.js
CHANGED
|
@@ -1,162 +1,125 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const PromiseWrapper_1 = require("./PromiseWrapper");
|
|
12
|
-
const read_1 = require("./read");
|
|
1
|
+
const require_PromiseWrapper = require('./PromiseWrapper.js');
|
|
2
|
+
const require_IsographEnvironment = require('./IsographEnvironment.js');
|
|
3
|
+
const require_logging = require('./logging.js');
|
|
4
|
+
const require_FragmentReference = require('./FragmentReference.js');
|
|
5
|
+
const require_read = require('./read.js');
|
|
6
|
+
const require_subscribe = require('./subscribe.js');
|
|
7
|
+
const require_optimisticProxy = require('./optimisticProxy.js');
|
|
8
|
+
const require_cache = require('./cache.js');
|
|
9
|
+
|
|
10
|
+
//#region src/core/startUpdate.ts
|
|
13
11
|
function getOrCreateCachedStartUpdate(environment, fragmentReference, networkRequestOptions) {
|
|
14
|
-
|
|
15
|
-
var _b, _c;
|
|
16
|
-
return ((_a = (_b = environment.eagerReaderCache)[_c = (0, FragmentReference_1.stableIdForFragmentReference)(fragmentReference)]) !== null && _a !== void 0 ? _a : (_b[_c] = createStartUpdate(environment, fragmentReference, networkRequestOptions)));
|
|
12
|
+
return environment.eagerReaderCache[require_FragmentReference.stableIdForFragmentReference(fragmentReference)] ??= createStartUpdate(environment, fragmentReference, networkRequestOptions);
|
|
17
13
|
}
|
|
18
14
|
function createStartUpdate(environment, fragmentReference, networkRequestOptions) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
};
|
|
15
|
+
return (updater) => {
|
|
16
|
+
let mutableUpdatedIds = /* @__PURE__ */ new Map();
|
|
17
|
+
const startUpdate = (storeLayer) => {
|
|
18
|
+
mutableUpdatedIds.clear();
|
|
19
|
+
let updatableData = createUpdatableProxy(environment, storeLayer, fragmentReference, networkRequestOptions, mutableUpdatedIds);
|
|
20
|
+
try {
|
|
21
|
+
updater({ updatableData });
|
|
22
|
+
} catch (e) {
|
|
23
|
+
require_logging.logMessage(environment, () => ({
|
|
24
|
+
kind: "StartUpdateError",
|
|
25
|
+
error: e
|
|
26
|
+
}));
|
|
27
|
+
throw e;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
environment.store = require_optimisticProxy.addStartUpdateStoreLayer(environment.store, startUpdate);
|
|
31
|
+
require_logging.logMessage(environment, () => ({
|
|
32
|
+
kind: "StartUpdateComplete",
|
|
33
|
+
updatedIds: mutableUpdatedIds
|
|
34
|
+
}));
|
|
35
|
+
require_subscribe.callSubscriptions(environment, mutableUpdatedIds);
|
|
36
|
+
};
|
|
42
37
|
}
|
|
43
38
|
function createUpdatableProxy(environment, storeLayer, fragmentReference, networkRequestOptions, mutableUpdatedIds) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return readUpdatableData(environment, storeLayer, readerWithRefetchQueries.readerArtifact.readerAst, fragmentReference.root, (_a = fragmentReference.variables) !== null && _a !== void 0 ? _a : {}, readerWithRefetchQueries.nestedRefetchQueries, fragmentReference.networkRequest, networkRequestOptions, {
|
|
47
|
-
lastInvalidated: 0,
|
|
48
|
-
}, mutableUpdatedIds).data;
|
|
39
|
+
const readerWithRefetchQueries = require_PromiseWrapper.readPromise(fragmentReference.readerWithRefetchQueries);
|
|
40
|
+
return readUpdatableData(environment, storeLayer, readerWithRefetchQueries.readerArtifact.readerAst, fragmentReference.root, fragmentReference.variables ?? {}, readerWithRefetchQueries.nestedRefetchQueries, fragmentReference.networkRequest, networkRequestOptions, { lastInvalidated: 0 }, mutableUpdatedIds).data;
|
|
49
41
|
}
|
|
50
42
|
function defineCachedProperty(target, property, mutableState, get, set) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
},
|
|
69
|
-
})));
|
|
43
|
+
let value = { kind: "NotSet" };
|
|
44
|
+
Object.defineProperty(target, property, {
|
|
45
|
+
configurable: false,
|
|
46
|
+
enumerable: true,
|
|
47
|
+
get: () => {
|
|
48
|
+
if (value.kind === "NotSet" || value.validatedAt < mutableState.lastInvalidated) value = {
|
|
49
|
+
kind: "Set",
|
|
50
|
+
value: get(),
|
|
51
|
+
validatedAt: mutableState.lastInvalidated
|
|
52
|
+
};
|
|
53
|
+
return value.value;
|
|
54
|
+
},
|
|
55
|
+
...set != null && { set: (newValue) => {
|
|
56
|
+
set(newValue);
|
|
57
|
+
mutableState.lastInvalidated++;
|
|
58
|
+
} }
|
|
59
|
+
});
|
|
70
60
|
}
|
|
71
61
|
function readUpdatableData(environment, storeLayer, ast, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableState, mutableUpdatedIds) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if (data.kind === 'MissingData') {
|
|
132
|
-
throw new Error(data.reason);
|
|
133
|
-
}
|
|
134
|
-
return data.data;
|
|
135
|
-
});
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
case 'LoadablySelectedField': {
|
|
139
|
-
defineCachedProperty(target, field.alias, mutableState, () => {
|
|
140
|
-
const data = (0, read_1.readLoadablySelectedFieldData)(environment, field, root, variables, networkRequest, networkRequestOptions, new Map());
|
|
141
|
-
if (data.kind === 'MissingData') {
|
|
142
|
-
throw new Error(data.reason);
|
|
143
|
-
}
|
|
144
|
-
return data.data;
|
|
145
|
-
});
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
case 'Link': {
|
|
149
|
-
target[field.alias] = root;
|
|
150
|
-
break;
|
|
151
|
-
}
|
|
152
|
-
default: {
|
|
153
|
-
field;
|
|
154
|
-
throw new Error('Unexpected case.');
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return {
|
|
159
|
-
kind: 'Success',
|
|
160
|
-
data: target,
|
|
161
|
-
};
|
|
62
|
+
const storeRecord = require_optimisticProxy.getMutableStoreRecordProxy(storeLayer, root);
|
|
63
|
+
let target = {};
|
|
64
|
+
for (const field of ast) switch (field.kind) {
|
|
65
|
+
case "Scalar": {
|
|
66
|
+
const storeRecordName = require_cache.getParentRecordKey(field, variables);
|
|
67
|
+
defineCachedProperty(target, field.alias ?? field.fieldName, mutableState, () => {
|
|
68
|
+
const data = require_read.readScalarFieldData(field, storeRecord, root, variables);
|
|
69
|
+
if (data.kind === "MissingData") throw new Error(data.reason);
|
|
70
|
+
return data.data;
|
|
71
|
+
}, field.isUpdatable ? (newValue) => {
|
|
72
|
+
const storeRecord$1 = require_optimisticProxy.getOrInsertRecord(storeLayer.data, root);
|
|
73
|
+
storeRecord$1[storeRecordName] = newValue;
|
|
74
|
+
require_cache.insertEmptySetIfMissing(mutableUpdatedIds, root.__typename).add(root.__link);
|
|
75
|
+
} : void 0);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
case "Linked": {
|
|
79
|
+
const storeRecordName = require_cache.getParentRecordKey(field, variables);
|
|
80
|
+
defineCachedProperty(target, field.alias ?? field.fieldName, mutableState, () => {
|
|
81
|
+
const data = require_read.readLinkedFieldData(environment, field, storeRecord, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, (ast$1, root$1) => readUpdatableData(environment, storeLayer, ast$1, root$1, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableState, mutableUpdatedIds));
|
|
82
|
+
if (data.kind === "MissingData") throw new Error(data.reason);
|
|
83
|
+
return data.data;
|
|
84
|
+
}, "isUpdatable" in field && field.isUpdatable ? (newValue) => {
|
|
85
|
+
const storeRecord$1 = require_optimisticProxy.getOrInsertRecord(storeLayer.data, root);
|
|
86
|
+
if (Array.isArray(newValue)) storeRecord$1[storeRecordName] = newValue.map((node) => require_IsographEnvironment.assertLink(node?.__link));
|
|
87
|
+
else storeRecord$1[storeRecordName] = require_IsographEnvironment.assertLink(newValue?.__link);
|
|
88
|
+
require_cache.insertEmptySetIfMissing(mutableUpdatedIds, root.__typename).add(root.__link);
|
|
89
|
+
} : void 0);
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
case "ImperativelyLoadedField":
|
|
93
|
+
defineCachedProperty(target, field.alias, mutableState, () => {
|
|
94
|
+
const data = require_read.readImperativelyLoadedField(environment, field, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, /* @__PURE__ */ new Map());
|
|
95
|
+
if (data.kind === "MissingData") throw new Error(data.reason);
|
|
96
|
+
return data.data;
|
|
97
|
+
});
|
|
98
|
+
break;
|
|
99
|
+
case "Resolver":
|
|
100
|
+
defineCachedProperty(target, field.alias, mutableState, () => {
|
|
101
|
+
const data = require_read.readResolverFieldData(environment, field, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, /* @__PURE__ */ new Map());
|
|
102
|
+
if (data.kind === "MissingData") throw new Error(data.reason);
|
|
103
|
+
return data.data;
|
|
104
|
+
});
|
|
105
|
+
break;
|
|
106
|
+
case "LoadablySelectedField":
|
|
107
|
+
defineCachedProperty(target, field.alias, mutableState, () => {
|
|
108
|
+
const data = require_read.readLoadablySelectedFieldData(environment, field, root, variables, networkRequest, networkRequestOptions, /* @__PURE__ */ new Map());
|
|
109
|
+
if (data.kind === "MissingData") throw new Error(data.reason);
|
|
110
|
+
return data.data;
|
|
111
|
+
});
|
|
112
|
+
break;
|
|
113
|
+
case "Link":
|
|
114
|
+
target[field.alias] = root;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
kind: "Success",
|
|
119
|
+
data: target
|
|
120
|
+
};
|
|
162
121
|
}
|
|
122
|
+
|
|
123
|
+
//#endregion
|
|
124
|
+
exports.createStartUpdate = createStartUpdate;
|
|
125
|
+
exports.getOrCreateCachedStartUpdate = getOrCreateCachedStartUpdate;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { readPromise } from "./PromiseWrapper.mjs";
|
|
2
|
+
import { assertLink } from "./IsographEnvironment.mjs";
|
|
3
|
+
import { logMessage } from "./logging.mjs";
|
|
4
|
+
import { stableIdForFragmentReference } from "./FragmentReference.mjs";
|
|
5
|
+
import { readImperativelyLoadedField, readLinkedFieldData, readLoadablySelectedFieldData, readResolverFieldData, readScalarFieldData } from "./read.mjs";
|
|
6
|
+
import { callSubscriptions } from "./subscribe.mjs";
|
|
7
|
+
import { addStartUpdateStoreLayer, getMutableStoreRecordProxy, getOrInsertRecord } from "./optimisticProxy.mjs";
|
|
8
|
+
import { getParentRecordKey, insertEmptySetIfMissing } from "./cache.mjs";
|
|
9
|
+
|
|
10
|
+
//#region src/core/startUpdate.ts
|
|
11
|
+
function getOrCreateCachedStartUpdate(environment, fragmentReference, networkRequestOptions) {
|
|
12
|
+
return environment.eagerReaderCache[stableIdForFragmentReference(fragmentReference)] ??= createStartUpdate(environment, fragmentReference, networkRequestOptions);
|
|
13
|
+
}
|
|
14
|
+
function createStartUpdate(environment, fragmentReference, networkRequestOptions) {
|
|
15
|
+
return (updater) => {
|
|
16
|
+
let mutableUpdatedIds = /* @__PURE__ */ new Map();
|
|
17
|
+
const startUpdate = (storeLayer) => {
|
|
18
|
+
mutableUpdatedIds.clear();
|
|
19
|
+
let updatableData = createUpdatableProxy(environment, storeLayer, fragmentReference, networkRequestOptions, mutableUpdatedIds);
|
|
20
|
+
try {
|
|
21
|
+
updater({ updatableData });
|
|
22
|
+
} catch (e) {
|
|
23
|
+
logMessage(environment, () => ({
|
|
24
|
+
kind: "StartUpdateError",
|
|
25
|
+
error: e
|
|
26
|
+
}));
|
|
27
|
+
throw e;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
environment.store = addStartUpdateStoreLayer(environment.store, startUpdate);
|
|
31
|
+
logMessage(environment, () => ({
|
|
32
|
+
kind: "StartUpdateComplete",
|
|
33
|
+
updatedIds: mutableUpdatedIds
|
|
34
|
+
}));
|
|
35
|
+
callSubscriptions(environment, mutableUpdatedIds);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function createUpdatableProxy(environment, storeLayer, fragmentReference, networkRequestOptions, mutableUpdatedIds) {
|
|
39
|
+
const readerWithRefetchQueries = readPromise(fragmentReference.readerWithRefetchQueries);
|
|
40
|
+
return readUpdatableData(environment, storeLayer, readerWithRefetchQueries.readerArtifact.readerAst, fragmentReference.root, fragmentReference.variables ?? {}, readerWithRefetchQueries.nestedRefetchQueries, fragmentReference.networkRequest, networkRequestOptions, { lastInvalidated: 0 }, mutableUpdatedIds).data;
|
|
41
|
+
}
|
|
42
|
+
function defineCachedProperty(target, property, mutableState, get, set) {
|
|
43
|
+
let value = { kind: "NotSet" };
|
|
44
|
+
Object.defineProperty(target, property, {
|
|
45
|
+
configurable: false,
|
|
46
|
+
enumerable: true,
|
|
47
|
+
get: () => {
|
|
48
|
+
if (value.kind === "NotSet" || value.validatedAt < mutableState.lastInvalidated) value = {
|
|
49
|
+
kind: "Set",
|
|
50
|
+
value: get(),
|
|
51
|
+
validatedAt: mutableState.lastInvalidated
|
|
52
|
+
};
|
|
53
|
+
return value.value;
|
|
54
|
+
},
|
|
55
|
+
...set != null && { set: (newValue) => {
|
|
56
|
+
set(newValue);
|
|
57
|
+
mutableState.lastInvalidated++;
|
|
58
|
+
} }
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
function readUpdatableData(environment, storeLayer, ast, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableState, mutableUpdatedIds) {
|
|
62
|
+
const storeRecord = getMutableStoreRecordProxy(storeLayer, root);
|
|
63
|
+
let target = {};
|
|
64
|
+
for (const field of ast) switch (field.kind) {
|
|
65
|
+
case "Scalar": {
|
|
66
|
+
const storeRecordName = getParentRecordKey(field, variables);
|
|
67
|
+
defineCachedProperty(target, field.alias ?? field.fieldName, mutableState, () => {
|
|
68
|
+
const data = readScalarFieldData(field, storeRecord, root, variables);
|
|
69
|
+
if (data.kind === "MissingData") throw new Error(data.reason);
|
|
70
|
+
return data.data;
|
|
71
|
+
}, field.isUpdatable ? (newValue) => {
|
|
72
|
+
const storeRecord$1 = getOrInsertRecord(storeLayer.data, root);
|
|
73
|
+
storeRecord$1[storeRecordName] = newValue;
|
|
74
|
+
insertEmptySetIfMissing(mutableUpdatedIds, root.__typename).add(root.__link);
|
|
75
|
+
} : void 0);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
case "Linked": {
|
|
79
|
+
const storeRecordName = getParentRecordKey(field, variables);
|
|
80
|
+
defineCachedProperty(target, field.alias ?? field.fieldName, mutableState, () => {
|
|
81
|
+
const data = readLinkedFieldData(environment, field, storeRecord, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, (ast$1, root$1) => readUpdatableData(environment, storeLayer, ast$1, root$1, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableState, mutableUpdatedIds));
|
|
82
|
+
if (data.kind === "MissingData") throw new Error(data.reason);
|
|
83
|
+
return data.data;
|
|
84
|
+
}, "isUpdatable" in field && field.isUpdatable ? (newValue) => {
|
|
85
|
+
const storeRecord$1 = getOrInsertRecord(storeLayer.data, root);
|
|
86
|
+
if (Array.isArray(newValue)) storeRecord$1[storeRecordName] = newValue.map((node) => assertLink(node?.__link));
|
|
87
|
+
else storeRecord$1[storeRecordName] = assertLink(newValue?.__link);
|
|
88
|
+
insertEmptySetIfMissing(mutableUpdatedIds, root.__typename).add(root.__link);
|
|
89
|
+
} : void 0);
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
case "ImperativelyLoadedField":
|
|
93
|
+
defineCachedProperty(target, field.alias, mutableState, () => {
|
|
94
|
+
const data = readImperativelyLoadedField(environment, field, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, /* @__PURE__ */ new Map());
|
|
95
|
+
if (data.kind === "MissingData") throw new Error(data.reason);
|
|
96
|
+
return data.data;
|
|
97
|
+
});
|
|
98
|
+
break;
|
|
99
|
+
case "Resolver":
|
|
100
|
+
defineCachedProperty(target, field.alias, mutableState, () => {
|
|
101
|
+
const data = readResolverFieldData(environment, field, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, /* @__PURE__ */ new Map());
|
|
102
|
+
if (data.kind === "MissingData") throw new Error(data.reason);
|
|
103
|
+
return data.data;
|
|
104
|
+
});
|
|
105
|
+
break;
|
|
106
|
+
case "LoadablySelectedField":
|
|
107
|
+
defineCachedProperty(target, field.alias, mutableState, () => {
|
|
108
|
+
const data = readLoadablySelectedFieldData(environment, field, root, variables, networkRequest, networkRequestOptions, /* @__PURE__ */ new Map());
|
|
109
|
+
if (data.kind === "MissingData") throw new Error(data.reason);
|
|
110
|
+
return data.data;
|
|
111
|
+
});
|
|
112
|
+
break;
|
|
113
|
+
case "Link":
|
|
114
|
+
target[field.alias] = root;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
kind: "Success",
|
|
119
|
+
data: target
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
//#endregion
|
|
124
|
+
export { createStartUpdate, getOrCreateCachedStartUpdate };
|
|
125
|
+
//# sourceMappingURL=startUpdate.mjs.map
|