@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
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ReaderAst } from "../core/reader.mjs";
|
|
2
|
+
import { NetworkRequestReaderOptions, WithEncounteredRecords } from "../core/read.mjs";
|
|
3
|
+
import "../core/IsographEnvironment.mjs";
|
|
4
|
+
import { ExtractData, FragmentReference, UnknownTReadFromStore } from "../core/FragmentReference.mjs";
|
|
5
|
+
|
|
6
|
+
//#region src/react/useReadAndSubscribe.d.ts
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Read the data from a fragment reference and subscribe to updates.
|
|
10
|
+
*/
|
|
11
|
+
declare function useReadAndSubscribe<TReadFromStore extends UnknownTReadFromStore>(fragmentReference: FragmentReference<TReadFromStore, any>, networkRequestOptions: NetworkRequestReaderOptions, readerAst: ReaderAst<TReadFromStore>): ExtractData<TReadFromStore>;
|
|
12
|
+
declare function useSubscribeToMultiple<TReadFromStore extends UnknownTReadFromStore>(items: ReadonlyArray<{
|
|
13
|
+
records: WithEncounteredRecords<TReadFromStore>;
|
|
14
|
+
callback: (updatedRecords: WithEncounteredRecords<TReadFromStore>) => void;
|
|
15
|
+
fragmentReference: FragmentReference<TReadFromStore, any>;
|
|
16
|
+
readerAst: ReaderAst<TReadFromStore>;
|
|
17
|
+
}>): void;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { useReadAndSubscribe, useSubscribeToMultiple };
|
|
20
|
+
//# sourceMappingURL=useReadAndSubscribe.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReadAndSubscribe.d.mts","names":[],"sources":["../../src/react/useReadAndSubscribe.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAwBA;AACyB,iBADT,mBACS,CAAA,uBAAA,qBAAA,CAAA,CAAA,iBAAA,EAEJ,iBAFI,CAEc,cAFd,EAAA,GAAA,CAAA,EAAA,qBAAA,EAGA,2BAHA,EAAA,SAAA,EAIZ,SAJY,CAIF,cAJE,CAAA,CAAA,EAKtB,WALsB,CAKV,cALU,CAAA;AAEc,iBAiBvB,sBAjBuB,CAAA,uBAkBd,qBAlBc,CAAA,CAAA,KAAA,EAoB9B,aApB8B,CAAA;EAAlB,OAAA,EAqBR,sBArBQ,CAqBe,cArBf,CAAA;EACI,QAAA,EAAA,CAAA,cAAA,EAqBM,sBArBN,CAqB6B,cArB7B,CAAA,EAAA,GAAA,IAAA;EACF,iBAAA,EAqBA,iBArBA,CAqBkB,cArBlB,EAAA,GAAA,CAAA;EAAV,SAAA,EAsBE,SAtBF,CAsBY,cAtBZ,CAAA;CACE,CAAA,CAAA,EAAA,IAAA"}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { NetworkRequestReaderOptions, WithEncounteredRecords } from
|
|
3
|
-
import
|
|
1
|
+
import { ReaderAst } from "../core/reader.js";
|
|
2
|
+
import { NetworkRequestReaderOptions, WithEncounteredRecords } from "../core/read.js";
|
|
3
|
+
import { ExtractData, FragmentReference, UnknownTReadFromStore } from "../core/FragmentReference.js";
|
|
4
|
+
|
|
5
|
+
//#region src/react/useReadAndSubscribe.d.ts
|
|
6
|
+
|
|
4
7
|
/**
|
|
5
8
|
* Read the data from a fragment reference and subscribe to updates.
|
|
6
9
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
declare function useReadAndSubscribe<TReadFromStore extends UnknownTReadFromStore>(fragmentReference: FragmentReference<TReadFromStore, any>, networkRequestOptions: NetworkRequestReaderOptions, readerAst: ReaderAst<TReadFromStore>): ExtractData<TReadFromStore>;
|
|
11
|
+
declare function useSubscribeToMultiple<TReadFromStore extends UnknownTReadFromStore>(items: ReadonlyArray<{
|
|
12
|
+
records: WithEncounteredRecords<TReadFromStore>;
|
|
13
|
+
callback: (updatedRecords: WithEncounteredRecords<TReadFromStore>) => void;
|
|
14
|
+
fragmentReference: FragmentReference<TReadFromStore, any>;
|
|
15
|
+
readerAst: ReaderAst<TReadFromStore>;
|
|
13
16
|
}>): void;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { useReadAndSubscribe, useSubscribeToMultiple };
|
|
14
19
|
//# sourceMappingURL=useReadAndSubscribe.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReadAndSubscribe.d.ts","
|
|
1
|
+
{"version":3,"file":"useReadAndSubscribe.d.ts","names":[],"sources":["../../src/react/useReadAndSubscribe.ts"],"sourcesContent":[],"mappings":";;;;;;;AAwBA;;AAGuC,iBAHvB,mBAGuB,CAAA,uBAFd,qBAEc,CAAA,CAAA,iBAAA,EAAlB,iBAAkB,CAAA,cAAA,EAAA,GAAA,CAAA,EAAA,qBAAA,EACd,2BADc,EAAA,SAAA,EAE1B,SAF0B,CAEhB,cAFgB,CAAA,CAAA,EAGpC,WAHoC,CAGxB,cAHwB,CAAA;AAAlB,iBAiBL,sBAjBK,CAAA,uBAkBI,qBAlBJ,CAAA,CAAA,KAAA,EAoBZ,aApBY,CAAA;EACI,OAAA,EAoBZ,sBApBY,CAoBW,cApBX,CAAA;EACF,QAAA,EAAA,CAAA,cAAA,EAoBQ,sBApBR,CAoB+B,cApB/B,CAAA,EAAA,GAAA,IAAA;EAAV,iBAAA,EAqBU,iBArBV,CAqB4B,cArB5B,EAAA,GAAA,CAAA;EACE,SAAA,EAqBA,SArBA,CAqBU,cArBV,CAAA;CAAZ,CAAA,CAAA,EAAA,IAAA"}
|
|
@@ -1,44 +1,62 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.js');
|
|
2
|
+
const require_PromiseWrapper = require('../core/PromiseWrapper.js');
|
|
3
|
+
const require_logging = require('../core/logging.js');
|
|
4
|
+
const require_FragmentReference = require('../core/FragmentReference.js');
|
|
5
|
+
const require_read = require('../core/read.js');
|
|
6
|
+
const require_subscribe = require('../core/subscribe.js');
|
|
7
|
+
const require_IsographEnvironmentProvider = require('./IsographEnvironmentProvider.js');
|
|
8
|
+
const require_maybeUnwrapNetworkRequest = require('./maybeUnwrapNetworkRequest.js');
|
|
9
|
+
const require_useRerenderOnChange = require('./useRerenderOnChange.js');
|
|
10
|
+
let react = require("react");
|
|
11
|
+
react = require_rolldown_runtime.__toESM(react);
|
|
12
|
+
|
|
13
|
+
//#region src/react/useReadAndSubscribe.ts
|
|
12
14
|
/**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
* Read the data from a fragment reference and subscribe to updates.
|
|
16
|
+
*/
|
|
15
17
|
function useReadAndSubscribe(fragmentReference, networkRequestOptions, readerAst) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const environment = require_IsographEnvironmentProvider.useIsographEnvironment();
|
|
19
|
+
const [readOutDataAndRecords, setReadOutDataAndRecords] = (0, react.useState)(() => require_read.readButDoNotEvaluate(environment, fragmentReference, networkRequestOptions));
|
|
20
|
+
require_useRerenderOnChange.useRerenderOnChange(readOutDataAndRecords, fragmentReference, setReadOutDataAndRecords, readerAst);
|
|
21
|
+
return readOutDataAndRecords.item;
|
|
20
22
|
}
|
|
21
23
|
function useSubscribeToMultiple(items) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
// TODO find out
|
|
36
|
-
[
|
|
37
|
-
items
|
|
38
|
-
.map(({ fragmentReference }) => {
|
|
39
|
-
const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
|
|
40
|
-
(0, FragmentReference_1.stableIdForFragmentReference)(fragmentReference, readerWithRefetchQueries.readerArtifact.fieldName);
|
|
41
|
-
})
|
|
42
|
-
.join('.'),
|
|
43
|
-
]);
|
|
24
|
+
const environment = require_IsographEnvironmentProvider.useIsographEnvironment();
|
|
25
|
+
(0, react.useEffect)(() => {
|
|
26
|
+
const cleanupFns = items.map(({ records, callback, fragmentReference, readerAst }) => {
|
|
27
|
+
return require_subscribe.subscribe(environment, records, fragmentReference, callback, readerAst);
|
|
28
|
+
});
|
|
29
|
+
return () => {
|
|
30
|
+
cleanupFns.forEach((loader) => {
|
|
31
|
+
loader();
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
}, [items.map(({ fragmentReference }) => {
|
|
35
|
+
require_FragmentReference.stableIdForFragmentReference(fragmentReference);
|
|
36
|
+
}).join(".")]);
|
|
44
37
|
}
|
|
38
|
+
const componentFunction = (environment, fragmentReference, networkRequestOptions, startUpdate) => {
|
|
39
|
+
function Component(additionalRuntimeProps) {
|
|
40
|
+
require_maybeUnwrapNetworkRequest.maybeUnwrapNetworkRequest(fragmentReference.networkRequest, networkRequestOptions);
|
|
41
|
+
const readerWithRefetchQueries = require_PromiseWrapper.readPromise(fragmentReference.readerWithRefetchQueries);
|
|
42
|
+
const data = useReadAndSubscribe(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst);
|
|
43
|
+
require_logging.logMessage(environment, () => ({
|
|
44
|
+
kind: "ComponentRerendered",
|
|
45
|
+
componentName: fragmentReference.fieldName,
|
|
46
|
+
rootLink: fragmentReference.root
|
|
47
|
+
}));
|
|
48
|
+
return readerWithRefetchQueries.readerArtifact.resolver({
|
|
49
|
+
data,
|
|
50
|
+
parameters: fragmentReference.variables,
|
|
51
|
+
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable ? startUpdate : void 0
|
|
52
|
+
}, additionalRuntimeProps);
|
|
53
|
+
}
|
|
54
|
+
const idString = `(type: ${fragmentReference.root.__typename}, id: ${fragmentReference.root.__link})`;
|
|
55
|
+
Component.displayName = `${fragmentReference.fieldName} ${idString} @component`;
|
|
56
|
+
return Component;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
//#endregion
|
|
60
|
+
exports.componentFunction = componentFunction;
|
|
61
|
+
exports.useReadAndSubscribe = useReadAndSubscribe;
|
|
62
|
+
exports.useSubscribeToMultiple = useSubscribeToMultiple;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { readPromise } from "../core/PromiseWrapper.mjs";
|
|
2
|
+
import { logMessage } from "../core/logging.mjs";
|
|
3
|
+
import { stableIdForFragmentReference } from "../core/FragmentReference.mjs";
|
|
4
|
+
import { readButDoNotEvaluate } from "../core/read.mjs";
|
|
5
|
+
import { subscribe } from "../core/subscribe.mjs";
|
|
6
|
+
import { useIsographEnvironment } from "./IsographEnvironmentProvider.mjs";
|
|
7
|
+
import { maybeUnwrapNetworkRequest } from "./maybeUnwrapNetworkRequest.mjs";
|
|
8
|
+
import { useRerenderOnChange } from "./useRerenderOnChange.mjs";
|
|
9
|
+
import { useEffect, useState } from "react";
|
|
10
|
+
|
|
11
|
+
//#region src/react/useReadAndSubscribe.ts
|
|
12
|
+
/**
|
|
13
|
+
* Read the data from a fragment reference and subscribe to updates.
|
|
14
|
+
*/
|
|
15
|
+
function useReadAndSubscribe(fragmentReference, networkRequestOptions, readerAst) {
|
|
16
|
+
const environment = useIsographEnvironment();
|
|
17
|
+
const [readOutDataAndRecords, setReadOutDataAndRecords] = useState(() => readButDoNotEvaluate(environment, fragmentReference, networkRequestOptions));
|
|
18
|
+
useRerenderOnChange(readOutDataAndRecords, fragmentReference, setReadOutDataAndRecords, readerAst);
|
|
19
|
+
return readOutDataAndRecords.item;
|
|
20
|
+
}
|
|
21
|
+
function useSubscribeToMultiple(items) {
|
|
22
|
+
const environment = useIsographEnvironment();
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
const cleanupFns = items.map(({ records, callback, fragmentReference, readerAst }) => {
|
|
25
|
+
return subscribe(environment, records, fragmentReference, callback, readerAst);
|
|
26
|
+
});
|
|
27
|
+
return () => {
|
|
28
|
+
cleanupFns.forEach((loader) => {
|
|
29
|
+
loader();
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
}, [items.map(({ fragmentReference }) => {
|
|
33
|
+
stableIdForFragmentReference(fragmentReference);
|
|
34
|
+
}).join(".")]);
|
|
35
|
+
}
|
|
36
|
+
const componentFunction = (environment, fragmentReference, networkRequestOptions, startUpdate) => {
|
|
37
|
+
function Component(additionalRuntimeProps) {
|
|
38
|
+
maybeUnwrapNetworkRequest(fragmentReference.networkRequest, networkRequestOptions);
|
|
39
|
+
const readerWithRefetchQueries = readPromise(fragmentReference.readerWithRefetchQueries);
|
|
40
|
+
const data = useReadAndSubscribe(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst);
|
|
41
|
+
logMessage(environment, () => ({
|
|
42
|
+
kind: "ComponentRerendered",
|
|
43
|
+
componentName: fragmentReference.fieldName,
|
|
44
|
+
rootLink: fragmentReference.root
|
|
45
|
+
}));
|
|
46
|
+
return readerWithRefetchQueries.readerArtifact.resolver({
|
|
47
|
+
data,
|
|
48
|
+
parameters: fragmentReference.variables,
|
|
49
|
+
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable ? startUpdate : void 0
|
|
50
|
+
}, additionalRuntimeProps);
|
|
51
|
+
}
|
|
52
|
+
const idString = `(type: ${fragmentReference.root.__typename}, id: ${fragmentReference.root.__link})`;
|
|
53
|
+
Component.displayName = `${fragmentReference.fieldName} ${idString} @component`;
|
|
54
|
+
return Component;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
//#endregion
|
|
58
|
+
export { componentFunction, useReadAndSubscribe, useSubscribeToMultiple };
|
|
59
|
+
//# sourceMappingURL=useReadAndSubscribe.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReadAndSubscribe.mjs","names":["componentFunction: IsographComponentFunction"],"sources":["../../src/react/useReadAndSubscribe.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport {\n type ExtractData,\n type FragmentReference,\n stableIdForFragmentReference,\n type UnknownTReadFromStore,\n} from '../core/FragmentReference';\nimport type { IsographComponentFunction } from '../core/IsographEnvironment';\nimport { logMessage } from '../core/logging';\nimport { readPromise } from '../core/PromiseWrapper';\nimport {\n type NetworkRequestReaderOptions,\n readButDoNotEvaluate,\n type WithEncounteredRecords,\n} from '../core/read';\nimport type { ReaderAst } from '../core/reader';\nimport { subscribe } from '../core/subscribe';\nimport { useIsographEnvironment } from './IsographEnvironmentProvider';\nimport { maybeUnwrapNetworkRequest } from './maybeUnwrapNetworkRequest';\nimport { useRerenderOnChange } from './useRerenderOnChange';\n\n/**\n * Read the data from a fragment reference and subscribe to updates.\n */\nexport function useReadAndSubscribe<\n TReadFromStore extends UnknownTReadFromStore,\n>(\n fragmentReference: FragmentReference<TReadFromStore, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n readerAst: ReaderAst<TReadFromStore>,\n): ExtractData<TReadFromStore> {\n const environment = useIsographEnvironment();\n const [readOutDataAndRecords, setReadOutDataAndRecords] = useState(() =>\n readButDoNotEvaluate(environment, fragmentReference, networkRequestOptions),\n );\n useRerenderOnChange(\n readOutDataAndRecords,\n fragmentReference,\n setReadOutDataAndRecords,\n readerAst,\n );\n return readOutDataAndRecords.item;\n}\n\nexport function useSubscribeToMultiple<\n TReadFromStore extends UnknownTReadFromStore,\n>(\n items: ReadonlyArray<{\n records: WithEncounteredRecords<TReadFromStore>;\n callback: (updatedRecords: WithEncounteredRecords<TReadFromStore>) => void;\n fragmentReference: FragmentReference<TReadFromStore, any>;\n readerAst: ReaderAst<TReadFromStore>;\n }>,\n) {\n const environment = useIsographEnvironment();\n useEffect(\n () => {\n const cleanupFns = items.map(\n ({ records, callback, fragmentReference, readerAst }) => {\n return subscribe(\n environment,\n records,\n fragmentReference,\n callback,\n readerAst,\n );\n },\n );\n return () => {\n cleanupFns.forEach((loader) => {\n loader();\n });\n };\n },\n // By analogy to useReadAndSubscribe, we can have an empty dependency array?\n // Maybe callback has to be depended on. I don't know!\n // TODO find out\n [\n items\n .map(({ fragmentReference }) => {\n stableIdForFragmentReference(fragmentReference);\n })\n .join('.'),\n ],\n );\n}\n\nexport const componentFunction: IsographComponentFunction = (\n environment,\n fragmentReference,\n networkRequestOptions,\n startUpdate,\n) => {\n function Component(additionalRuntimeProps: { [key: string]: any }) {\n maybeUnwrapNetworkRequest(\n fragmentReference.networkRequest,\n networkRequestOptions,\n );\n const readerWithRefetchQueries = readPromise(\n fragmentReference.readerWithRefetchQueries,\n );\n\n const data = useReadAndSubscribe(\n fragmentReference,\n networkRequestOptions,\n readerWithRefetchQueries.readerArtifact.readerAst,\n );\n\n logMessage(environment, () => ({\n kind: 'ComponentRerendered',\n componentName: fragmentReference.fieldName,\n rootLink: fragmentReference.root,\n }));\n\n return readerWithRefetchQueries.readerArtifact.resolver(\n // @ts-expect-error\n {\n data,\n parameters: fragmentReference.variables,\n startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable\n ? startUpdate\n : undefined,\n },\n additionalRuntimeProps,\n );\n }\n const idString = `(type: ${fragmentReference.root.__typename}, id: ${fragmentReference.root.__link})`;\n Component.displayName = `${fragmentReference.fieldName} ${idString} @component`;\n return Component;\n};\n"],"mappings":";;;;;;;;;;;;;;AAwBA,SAAgB,oBAGd,mBACA,uBACA,WAC6B;CAC7B,MAAM,cAAc,wBAAwB;CAC5C,MAAM,CAAC,uBAAuB,4BAA4B,eACxD,qBAAqB,aAAa,mBAAmB,sBAAsB,CAC5E;AACD,qBACE,uBACA,mBACA,0BACA,UACD;AACD,QAAO,sBAAsB;;AAG/B,SAAgB,uBAGd,OAMA;CACA,MAAM,cAAc,wBAAwB;AAC5C,iBACQ;EACJ,MAAM,aAAa,MAAM,KACtB,EAAE,SAAS,UAAU,mBAAmB,gBAAgB;AACvD,UAAO,UACL,aACA,SACA,mBACA,UACA,UACD;IAEJ;AACD,eAAa;AACX,cAAW,SAAS,WAAW;AAC7B,YAAQ;KACR;;IAMN,CACE,MACG,KAAK,EAAE,wBAAwB;AAC9B,+BAA6B,kBAAkB;GAC/C,CACD,KAAK,IAAI,CACb,CACF;;AAGH,MAAaA,qBACX,aACA,mBACA,uBACA,gBACG;CACH,SAAS,UAAU,wBAAgD;AACjE,4BACE,kBAAkB,gBAClB,sBACD;EACD,MAAM,2BAA2B,YAC/B,kBAAkB,yBACnB;EAED,MAAM,OAAO,oBACX,mBACA,uBACA,yBAAyB,eAAe,UACzC;AAED,aAAW,oBAAoB;GAC7B,MAAM;GACN,eAAe,kBAAkB;GACjC,UAAU,kBAAkB;GAC7B,EAAE;AAEH,SAAO,yBAAyB,eAAe,SAE7C;GACE;GACA,YAAY,kBAAkB;GAC9B,aAAa,yBAAyB,eAAe,eACjD,cACA;GACL,EACD,uBACD;;CAEH,MAAM,WAAW,UAAU,kBAAkB,KAAK,WAAW,QAAQ,kBAAkB,KAAK,OAAO;AACnG,WAAU,cAAc,GAAG,kBAAkB,UAAU,GAAG,SAAS;AACnE,QAAO"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ReaderAst } from "../core/reader.mjs";
|
|
2
|
+
import { WithEncounteredRecords } from "../core/read.mjs";
|
|
3
|
+
import { FragmentReference } from "../core/FragmentReference.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/react/useRerenderOnChange.d.ts
|
|
6
|
+
declare function useRerenderOnChange<TReadFromStore extends {
|
|
7
|
+
parameters: object;
|
|
8
|
+
data: object;
|
|
9
|
+
}>(encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>, fragmentReference: FragmentReference<any, any>, setEncounteredDataAndRecords: (data: WithEncounteredRecords<TReadFromStore>) => void, readerAst: ReaderAst<TReadFromStore>): void;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { useRerenderOnChange };
|
|
12
|
+
//# sourceMappingURL=useRerenderOnChange.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRerenderOnChange.d.mts","names":[],"sources":["../../src/react/useRerenderOnChange.ts"],"sourcesContent":[],"mappings":";;;;;iBASgB;;EAAA,IAAA,EAAA,MAAA;CAGoC,CAAA,CAAA,yBAAA,EAAvB,sBAAuB,CAAA,cAAA,CAAA,EAAA,iBAAA,EAC/B,iBAD+B,CAAA,GAAA,EAAA,GAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,IAAA,EAG1C,sBAH0C,CAGnB,cAHmB,CAAA,EAAA,GAAA,IAAA,EAAA,SAAA,EAKvC,SALuC,CAK7B,cAL6B,CAAA,CAAA,EAAA,IAAA"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { WithEncounteredRecords } from
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { ReaderAst } from "../core/reader.js";
|
|
2
|
+
import { WithEncounteredRecords } from "../core/read.js";
|
|
3
|
+
import { FragmentReference } from "../core/FragmentReference.js";
|
|
4
|
+
|
|
5
|
+
//#region src/react/useRerenderOnChange.d.ts
|
|
6
|
+
declare function useRerenderOnChange<TReadFromStore extends {
|
|
7
|
+
parameters: object;
|
|
8
|
+
data: object;
|
|
7
9
|
}>(encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>, fragmentReference: FragmentReference<any, any>, setEncounteredDataAndRecords: (data: WithEncounteredRecords<TReadFromStore>) => void, readerAst: ReaderAst<TReadFromStore>): void;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { useRerenderOnChange };
|
|
8
12
|
//# sourceMappingURL=useRerenderOnChange.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRerenderOnChange.d.ts","
|
|
1
|
+
{"version":3,"file":"useRerenderOnChange.d.ts","names":[],"sources":["../../src/react/useRerenderOnChange.ts"],"sourcesContent":[],"mappings":";;;;;iBASgB;;EAAA,IAAA,EAAA,MAAA;CAGoC,CAAA,CAAA,yBAAA,EAAvB,sBAAuB,CAAA,cAAA,CAAA,EAAA,iBAAA,EAC/B,iBAD+B,CAAA,GAAA,EAAA,GAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,IAAA,EAG1C,sBAH0C,CAGnB,cAHmB,CAAA,EAAA,GAAA,IAAA,EAAA,SAAA,EAKvC,SALuC,CAK7B,cAL6B,CAAA,CAAA,EAAA,IAAA"}
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// behavior when the encounteredRecords underneath a fragment change.
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.js');
|
|
2
|
+
const require_subscribe = require('../core/subscribe.js');
|
|
3
|
+
const require_IsographEnvironmentProvider = require('./IsographEnvironmentProvider.js');
|
|
4
|
+
let react = require("react");
|
|
5
|
+
react = require_rolldown_runtime.__toESM(react);
|
|
6
|
+
|
|
7
|
+
//#region src/react/useRerenderOnChange.ts
|
|
9
8
|
function useRerenderOnChange(encounteredDataAndRecords, fragmentReference, setEncounteredDataAndRecords, readerAst) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
// - the fragment reference is stable for the life of the component
|
|
17
|
-
// - ownership of encounteredDataAndRecords is transferred into the
|
|
18
|
-
// environment
|
|
19
|
-
// - though maybe we need to include setEncounteredDataAndRecords in
|
|
20
|
-
// the dependency array
|
|
21
|
-
}, []);
|
|
9
|
+
const environment = require_IsographEnvironmentProvider.useIsographEnvironment();
|
|
10
|
+
(0, react.useEffect)(() => {
|
|
11
|
+
return require_subscribe.subscribe(environment, encounteredDataAndRecords, fragmentReference, (newEncounteredDataAndRecords) => {
|
|
12
|
+
setEncounteredDataAndRecords(newEncounteredDataAndRecords);
|
|
13
|
+
}, readerAst);
|
|
14
|
+
}, []);
|
|
22
15
|
}
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
exports.useRerenderOnChange = useRerenderOnChange;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { subscribe } from "../core/subscribe.mjs";
|
|
2
|
+
import { useIsographEnvironment } from "./IsographEnvironmentProvider.mjs";
|
|
3
|
+
import { useEffect } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/react/useRerenderOnChange.ts
|
|
6
|
+
function useRerenderOnChange(encounteredDataAndRecords, fragmentReference, setEncounteredDataAndRecords, readerAst) {
|
|
7
|
+
const environment = useIsographEnvironment();
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
return subscribe(environment, encounteredDataAndRecords, fragmentReference, (newEncounteredDataAndRecords) => {
|
|
10
|
+
setEncounteredDataAndRecords(newEncounteredDataAndRecords);
|
|
11
|
+
}, readerAst);
|
|
12
|
+
}, []);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { useRerenderOnChange };
|
|
17
|
+
//# sourceMappingURL=useRerenderOnChange.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRerenderOnChange.mjs","names":[],"sources":["../../src/react/useRerenderOnChange.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport type { FragmentReference } from '../core/FragmentReference';\nimport type { WithEncounteredRecords } from '../core/read';\nimport type { ReaderAst } from '../core/reader';\nimport { subscribe } from '../core/subscribe';\nimport { useIsographEnvironment } from './IsographEnvironmentProvider';\n\n// TODO add unit tests for this. Add integration tests that test\n// behavior when the encounteredRecords underneath a fragment change.\nexport function useRerenderOnChange<\n TReadFromStore extends { parameters: object; data: object },\n>(\n encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>,\n fragmentReference: FragmentReference<any, any>,\n setEncounteredDataAndRecords: (\n data: WithEncounteredRecords<TReadFromStore>,\n ) => void,\n readerAst: ReaderAst<TReadFromStore>,\n) {\n const environment = useIsographEnvironment();\n useEffect(() => {\n return subscribe(\n environment,\n encounteredDataAndRecords,\n fragmentReference,\n (newEncounteredDataAndRecords) => {\n setEncounteredDataAndRecords(newEncounteredDataAndRecords);\n },\n readerAst,\n );\n // Note: this is an empty array on purpose:\n // - the fragment reference is stable for the life of the component\n // - ownership of encounteredDataAndRecords is transferred into the\n // environment\n // - though maybe we need to include setEncounteredDataAndRecords in\n // the dependency array\n }, []);\n}\n"],"mappings":";;;;;AASA,SAAgB,oBAGd,2BACA,mBACA,8BAGA,WACA;CACA,MAAM,cAAc,wBAAwB;AAC5C,iBAAgB;AACd,SAAO,UACL,aACA,2BACA,oBACC,iCAAiC;AAChC,gCAA6B,6BAA6B;KAE5D,UACD;IAOA,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { NetworkRequestReaderOptions } from "../core/read.mjs";
|
|
2
|
+
import { FragmentReference, UnknownTReadFromStore } from "../core/FragmentReference.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/react/useResult.d.ts
|
|
5
|
+
declare function useResult<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue>(fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>, partialNetworkRequestOptions?: Partial<NetworkRequestReaderOptions> | void): TClientFieldValue;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { useResult };
|
|
8
|
+
//# sourceMappingURL=useResult.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResult.d.mts","names":[],"sources":["../../src/react/useResult.ts"],"sourcesContent":[],"mappings":";;;;iBAegB,iCACS,6DAGJ,kBAAkB,gBAAgB,mDACtB,QAAQ,sCACtC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { NetworkRequestReaderOptions } from "../core/read.js";
|
|
2
|
+
import { FragmentReference, UnknownTReadFromStore } from "../core/FragmentReference.js";
|
|
3
|
+
|
|
4
|
+
//#region src/react/useResult.d.ts
|
|
5
|
+
declare function useResult<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue>(fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>, partialNetworkRequestOptions?: Partial<NetworkRequestReaderOptions> | void): TClientFieldValue;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { useResult };
|
|
6
8
|
//# sourceMappingURL=useResult.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResult.d.ts","
|
|
1
|
+
{"version":3,"file":"useResult.d.ts","names":[],"sources":["../../src/react/useResult.ts"],"sourcesContent":[],"mappings":";;;;iBAegB,iCACS,6DAGJ,kBAAkB,gBAAgB,mDACtB,QAAQ,sCACtC"}
|
package/dist/react/useResult.js
CHANGED
|
@@ -1,41 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const useReadAndSubscribe_1 = require("./useReadAndSubscribe");
|
|
1
|
+
const require_PromiseWrapper = require('../core/PromiseWrapper.js');
|
|
2
|
+
const require_startUpdate = require('../core/startUpdate.js');
|
|
3
|
+
const require_componentCache = require('../core/componentCache.js');
|
|
4
|
+
const require_read = require('../core/read.js');
|
|
5
|
+
const require_IsographEnvironmentProvider = require('./IsographEnvironmentProvider.js');
|
|
6
|
+
const require_maybeUnwrapNetworkRequest = require('./maybeUnwrapNetworkRequest.js');
|
|
7
|
+
const require_useReadAndSubscribe = require('./useReadAndSubscribe.js');
|
|
8
|
+
|
|
9
|
+
//#region src/react/useResult.ts
|
|
11
10
|
function useResult(fragmentReference, partialNetworkRequestOptions) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
: undefined));
|
|
28
|
-
return readerWithRefetchQueries.readerArtifact.resolver(param);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
function maybeUnwrapNetworkRequest(networkRequest, networkRequestOptions) {
|
|
33
|
-
const state = (0, PromiseWrapper_1.getPromiseState)(networkRequest);
|
|
34
|
-
if (state.kind === 'Err' && networkRequestOptions.throwOnNetworkError) {
|
|
35
|
-
throw state.error;
|
|
36
|
-
}
|
|
37
|
-
else if (state.kind === 'Pending' &&
|
|
38
|
-
networkRequestOptions.suspendIfInFlight) {
|
|
39
|
-
throw state.promise;
|
|
40
|
-
}
|
|
11
|
+
const environment = require_IsographEnvironmentProvider.useIsographEnvironment();
|
|
12
|
+
const networkRequestOptions = require_read.getNetworkRequestOptionsWithDefaults(partialNetworkRequestOptions);
|
|
13
|
+
switch (fragmentReference.readerArtifactKind) {
|
|
14
|
+
case "ComponentReaderArtifact": return require_componentCache.getOrCreateCachedComponent(environment, fragmentReference, networkRequestOptions);
|
|
15
|
+
case "EagerReaderArtifact": {
|
|
16
|
+
require_maybeUnwrapNetworkRequest.maybeUnwrapNetworkRequest(fragmentReference.networkRequest, networkRequestOptions);
|
|
17
|
+
const readerWithRefetchQueries = require_PromiseWrapper.readPromise(fragmentReference.readerWithRefetchQueries);
|
|
18
|
+
const param = {
|
|
19
|
+
data: require_useReadAndSubscribe.useReadAndSubscribe(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst),
|
|
20
|
+
parameters: fragmentReference.variables,
|
|
21
|
+
...readerWithRefetchQueries.readerArtifact.hasUpdatable ? { startUpdate: require_startUpdate.getOrCreateCachedStartUpdate(environment, fragmentReference, networkRequestOptions) } : void 0
|
|
22
|
+
};
|
|
23
|
+
return readerWithRefetchQueries.readerArtifact.resolver(param);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
41
26
|
}
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
exports.useResult = useResult;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { readPromise } from "../core/PromiseWrapper.mjs";
|
|
2
|
+
import { getOrCreateCachedStartUpdate } from "../core/startUpdate.mjs";
|
|
3
|
+
import { getOrCreateCachedComponent } from "../core/componentCache.mjs";
|
|
4
|
+
import { getNetworkRequestOptionsWithDefaults } from "../core/read.mjs";
|
|
5
|
+
import { useIsographEnvironment } from "./IsographEnvironmentProvider.mjs";
|
|
6
|
+
import { maybeUnwrapNetworkRequest } from "./maybeUnwrapNetworkRequest.mjs";
|
|
7
|
+
import { useReadAndSubscribe } from "./useReadAndSubscribe.mjs";
|
|
8
|
+
|
|
9
|
+
//#region src/react/useResult.ts
|
|
10
|
+
function useResult(fragmentReference, partialNetworkRequestOptions) {
|
|
11
|
+
const environment = useIsographEnvironment();
|
|
12
|
+
const networkRequestOptions = getNetworkRequestOptionsWithDefaults(partialNetworkRequestOptions);
|
|
13
|
+
switch (fragmentReference.readerArtifactKind) {
|
|
14
|
+
case "ComponentReaderArtifact": return getOrCreateCachedComponent(environment, fragmentReference, networkRequestOptions);
|
|
15
|
+
case "EagerReaderArtifact": {
|
|
16
|
+
maybeUnwrapNetworkRequest(fragmentReference.networkRequest, networkRequestOptions);
|
|
17
|
+
const readerWithRefetchQueries = readPromise(fragmentReference.readerWithRefetchQueries);
|
|
18
|
+
const param = {
|
|
19
|
+
data: useReadAndSubscribe(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst),
|
|
20
|
+
parameters: fragmentReference.variables,
|
|
21
|
+
...readerWithRefetchQueries.readerArtifact.hasUpdatable ? { startUpdate: getOrCreateCachedStartUpdate(environment, fragmentReference, networkRequestOptions) } : void 0
|
|
22
|
+
};
|
|
23
|
+
return readerWithRefetchQueries.readerArtifact.resolver(param);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
export { useResult };
|
|
30
|
+
//# sourceMappingURL=useResult.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResult.mjs","names":[],"sources":["../../src/react/useResult.ts"],"sourcesContent":["import { getOrCreateCachedComponent } from '../core/componentCache';\nimport type {\n FragmentReference,\n UnknownTReadFromStore,\n} from '../core/FragmentReference';\nimport { readPromise } from '../core/PromiseWrapper';\nimport {\n type NetworkRequestReaderOptions,\n getNetworkRequestOptionsWithDefaults,\n} from '../core/read';\nimport { getOrCreateCachedStartUpdate } from '../core/startUpdate';\nimport { useIsographEnvironment } from './IsographEnvironmentProvider';\nimport { maybeUnwrapNetworkRequest } from './maybeUnwrapNetworkRequest';\nimport { useReadAndSubscribe } from './useReadAndSubscribe';\n\nexport function useResult<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n>(\n fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>,\n partialNetworkRequestOptions?: Partial<NetworkRequestReaderOptions> | void,\n): TClientFieldValue {\n const environment = useIsographEnvironment();\n const networkRequestOptions = getNetworkRequestOptionsWithDefaults(\n partialNetworkRequestOptions,\n );\n\n switch (fragmentReference.readerArtifactKind) {\n case 'ComponentReaderArtifact': {\n // @ts-expect-error\n return getOrCreateCachedComponent(\n environment,\n fragmentReference,\n networkRequestOptions,\n );\n }\n case 'EagerReaderArtifact': {\n maybeUnwrapNetworkRequest(\n fragmentReference.networkRequest,\n networkRequestOptions,\n );\n const readerWithRefetchQueries = readPromise(\n fragmentReference.readerWithRefetchQueries,\n );\n const data = useReadAndSubscribe(\n fragmentReference,\n networkRequestOptions,\n readerWithRefetchQueries.readerArtifact.readerAst,\n );\n const param = {\n data: data,\n parameters: fragmentReference.variables,\n ...(readerWithRefetchQueries.readerArtifact.hasUpdatable\n ? {\n startUpdate: getOrCreateCachedStartUpdate(\n environment,\n fragmentReference,\n networkRequestOptions,\n ),\n }\n : undefined),\n };\n // @ts-expect-error\n return readerWithRefetchQueries.readerArtifact.resolver(param);\n }\n }\n}\n"],"mappings":";;;;;;;;;AAeA,SAAgB,UAId,mBACA,8BACmB;CACnB,MAAM,cAAc,wBAAwB;CAC5C,MAAM,wBAAwB,qCAC5B,6BACD;AAED,SAAQ,kBAAkB,oBAA1B;EACE,KAAK,0BAEH,QAAO,2BACL,aACA,mBACA,sBACD;EAEH,KAAK,uBAAuB;AAC1B,6BACE,kBAAkB,gBAClB,sBACD;GACD,MAAM,2BAA2B,YAC/B,kBAAkB,yBACnB;GAMD,MAAM,QAAQ;IACZ,MANW,oBACX,mBACA,uBACA,yBAAyB,eAAe,UACzC;IAGC,YAAY,kBAAkB;IAC9B,GAAI,yBAAyB,eAAe,eACxC,EACE,aAAa,6BACX,aACA,mBACA,sBACD,EACF,GACD;IACL;AAED,UAAO,yBAAyB,eAAe,SAAS,MAAM"}
|
package/package.json
CHANGED
|
@@ -1,27 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@isograph/react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Use Isograph with React",
|
|
5
5
|
"homepage": "https://isograph.dev",
|
|
6
|
-
"main": "dist/index.js",
|
|
7
|
-
"types": "dist/index.d.ts",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
8
|
"author": "Isograph Labs",
|
|
9
9
|
"license": "MIT",
|
|
10
|
-
"scripts": {
|
|
11
|
-
"compile-libs": "rimraf dist && tsc -p tsconfig.pkg.json",
|
|
12
|
-
"compile-watch": "tsc -p tsconfig.pkg.json --watch",
|
|
13
|
-
"test": "vitest run",
|
|
14
|
-
"test-watch": "vitest watch",
|
|
15
|
-
"coverage": "vitest run --coverage",
|
|
16
|
-
"prepack": "pnpm run test && pnpm run compile-libs",
|
|
17
|
-
"tsc": "tsc",
|
|
18
|
-
"tsc-force": "tsc --build --clean && tsc --build --force",
|
|
19
|
-
"iso": "cross-env ISO_PRINT_ABSOLUTE_FILEPATH=1 ../../target/debug/isograph_cli --config ./isograph.config.json"
|
|
20
|
-
},
|
|
21
10
|
"dependencies": {
|
|
22
|
-
"@isograph/disposable-types": "
|
|
23
|
-
"@isograph/
|
|
24
|
-
"@isograph/
|
|
11
|
+
"@isograph/disposable-types": "0.5.1",
|
|
12
|
+
"@isograph/reference-counted-pointer": "0.5.1",
|
|
13
|
+
"@isograph/react-disposable-state": "0.5.1"
|
|
25
14
|
},
|
|
26
15
|
"peerDependencies": {
|
|
27
16
|
"react": "^18.0.0 || ^19.0.0"
|
|
@@ -39,5 +28,23 @@
|
|
|
39
28
|
"url": "git+https://github.com/isographlabs/isograph.git",
|
|
40
29
|
"directory": "libs/isograph-react"
|
|
41
30
|
},
|
|
42
|
-
"sideEffects": false
|
|
43
|
-
|
|
31
|
+
"sideEffects": false,
|
|
32
|
+
"module": "./dist/index.mjs",
|
|
33
|
+
"exports": {
|
|
34
|
+
".": {
|
|
35
|
+
"import": "./dist/index.mjs",
|
|
36
|
+
"require": "./dist/index.js"
|
|
37
|
+
},
|
|
38
|
+
"./package.json": "./package.json"
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"compile-libs": "tsdown",
|
|
42
|
+
"watch-libs": "tsdown --watch",
|
|
43
|
+
"test": "vitest run",
|
|
44
|
+
"test-watch": "vitest watch",
|
|
45
|
+
"coverage": "vitest run --coverage",
|
|
46
|
+
"tsc": "tsc",
|
|
47
|
+
"tsc-force": "tsc --build --clean && tsc --build --force",
|
|
48
|
+
"iso": "../../target/debug/isograph_cli --config ./isograph.config.json"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { ReaderWithRefetchQueries } from '
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import type { ReaderWithRefetchQueries } from './entrypoint';
|
|
2
|
+
import {
|
|
3
|
+
type ComponentOrFieldName,
|
|
4
|
+
type StoreLink,
|
|
5
|
+
} from './IsographEnvironment';
|
|
6
|
+
import type { PromiseWrapper } from './PromiseWrapper';
|
|
5
7
|
import type { StartUpdate } from './reader';
|
|
8
|
+
import { stableCopy } from './util';
|
|
6
9
|
|
|
7
10
|
// TODO type this better
|
|
8
11
|
export type VariableValue =
|
|
@@ -53,8 +56,12 @@ export type FragmentReference<
|
|
|
53
56
|
ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>
|
|
54
57
|
>;
|
|
55
58
|
readonly root: StoreLink;
|
|
59
|
+
readonly fieldName: ComponentOrFieldName;
|
|
60
|
+
readonly readerArtifactKind:
|
|
61
|
+
| 'EagerReaderArtifact'
|
|
62
|
+
| 'ComponentReaderArtifact';
|
|
56
63
|
// TODO we potentially stably copy and stringify variables a lot!
|
|
57
|
-
// So, we should employ interior mutability: pretend that
|
|
64
|
+
// So, we should employ interior mutability: pretend that fragment reference
|
|
58
65
|
// is immutable, but actually store something like
|
|
59
66
|
// `Map<Variable, StablyCopiedStringifiedOutput>`
|
|
60
67
|
// and read or update that map when we would otherwise stably copy and
|
|
@@ -67,7 +74,6 @@ export type StableIdForFragmentReference = string;
|
|
|
67
74
|
|
|
68
75
|
export function stableIdForFragmentReference(
|
|
69
76
|
fragmentReference: FragmentReference<any, any>,
|
|
70
|
-
fieldName: string,
|
|
71
77
|
): StableIdForFragmentReference {
|
|
72
|
-
return `${fragmentReference.root.__typename}/${fragmentReference.root.__link}/${fieldName}/${JSON.stringify(stableCopy(fragmentReference.variables))}`;
|
|
78
|
+
return `${fragmentReference.root.__typename}/${fragmentReference.root.__link}/${fragmentReference.fieldName}/${JSON.stringify(stableCopy(fragmentReference.variables))}`;
|
|
73
79
|
}
|