@isograph/react 0.0.0-main-4adb5045 → 0.0.0-main-82400fb8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-compile-libs.log +1 -1
- package/dist/core/FragmentReference.d.ts +1 -1
- package/dist/core/FragmentReference.d.ts.map +1 -1
- package/dist/core/FragmentReference.js +2 -2
- package/dist/core/IsographEnvironment.d.ts +7 -5
- package/dist/core/IsographEnvironment.d.ts.map +1 -1
- package/dist/core/IsographEnvironment.js +5 -4
- package/dist/core/cache.d.ts +5 -18
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/cache.js +6 -218
- package/dist/core/componentCache.d.ts +2 -2
- package/dist/core/componentCache.d.ts.map +1 -1
- package/dist/core/componentCache.js +1 -26
- package/dist/core/entrypoint.d.ts +2 -2
- package/dist/core/entrypoint.d.ts.map +1 -1
- package/dist/core/garbageCollection.d.ts +2 -2
- package/dist/core/garbageCollection.d.ts.map +1 -1
- package/dist/core/getOrCreateCacheForArtifact.d.ts +8 -0
- package/dist/core/getOrCreateCacheForArtifact.d.ts.map +1 -0
- package/dist/core/getOrCreateCacheForArtifact.js +40 -0
- package/dist/core/logging.d.ts +8 -8
- package/dist/core/logging.d.ts.map +1 -1
- package/dist/core/makeNetworkRequest.d.ts +3 -3
- package/dist/core/makeNetworkRequest.d.ts.map +1 -1
- package/dist/core/makeNetworkRequest.js +3 -2
- package/dist/core/optimisticProxy.d.ts.map +1 -1
- package/dist/core/optimisticProxy.js +2 -1
- package/dist/core/read.d.ts +3 -3
- package/dist/core/read.d.ts.map +1 -1
- package/dist/core/startUpdate.d.ts.map +1 -1
- package/dist/core/startUpdate.js +2 -1
- package/dist/core/subscribe.d.ts +8 -0
- package/dist/core/subscribe.d.ts.map +1 -0
- package/dist/core/subscribe.js +127 -0
- package/dist/core/util.d.ts +7 -0
- package/dist/core/util.d.ts.map +1 -1
- package/dist/core/util.js +26 -0
- package/dist/core/writeData.d.ts +7 -0
- package/dist/core/writeData.d.ts.map +1 -0
- package/dist/core/writeData.js +36 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -5
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +3 -3
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useConnectionSpecPagination.js +2 -2
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts +3 -3
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.js +2 -2
- package/dist/react/createIsographEnvironment.d.ts +4 -0
- package/dist/react/createIsographEnvironment.d.ts.map +1 -0
- package/dist/react/createIsographEnvironment.js +8 -0
- package/dist/react/maybeUnwrapNetworkRequest.d.ts +4 -0
- package/dist/react/maybeUnwrapNetworkRequest.d.ts.map +1 -0
- package/dist/react/maybeUnwrapNetworkRequest.js +14 -0
- package/dist/react/useLazyReference.d.ts.map +1 -1
- package/dist/react/useLazyReference.js +2 -2
- package/dist/react/useReadAndSubscribe.d.ts +4 -2
- package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
- package/dist/react/useReadAndSubscribe.js +31 -2
- package/dist/react/useRerenderOnChange.d.ts +2 -2
- package/dist/react/useRerenderOnChange.d.ts.map +1 -1
- package/dist/react/useRerenderOnChange.js +2 -2
- package/dist/react/useResult.d.ts +2 -4
- package/dist/react/useResult.d.ts.map +1 -1
- package/dist/react/useResult.js +3 -13
- package/package.json +4 -4
- package/src/core/FragmentReference.ts +2 -2
- package/src/core/IsographEnvironment.ts +26 -10
- package/src/core/cache.ts +14 -360
- package/src/core/componentCache.ts +8 -43
- package/src/core/entrypoint.ts +2 -2
- package/src/core/garbageCollection.ts +5 -5
- package/src/core/getOrCreateCacheForArtifact.ts +86 -0
- package/src/core/logging.ts +10 -10
- package/src/core/makeNetworkRequest.ts +8 -8
- package/src/core/optimisticProxy.ts +2 -5
- package/src/core/read.ts +13 -13
- package/src/core/startUpdate.ts +1 -1
- package/src/core/subscribe.ts +195 -0
- package/src/core/util.ts +26 -0
- package/src/core/writeData.ts +79 -0
- package/src/index.ts +3 -4
- package/src/loadable-hooks/useConnectionSpecPagination.ts +5 -5
- package/src/loadable-hooks/useSkipLimitPagination.ts +5 -5
- package/src/react/createIsographEnvironment.ts +23 -0
- package/src/react/maybeUnwrapNetworkRequest.ts +17 -0
- package/src/react/useLazyReference.ts +2 -4
- package/src/react/useReadAndSubscribe.ts +53 -5
- package/src/react/useRerenderOnChange.ts +3 -3
- package/src/react/useResult.ts +6 -24
- package/src/tests/garbageCollection.test.ts +3 -6
- package/src/tests/meNameSuccessor.ts +1 -1
- package/src/tests/nodeQuery.ts +1 -1
- package/src/tests/normalizeData.test.ts +5 -3
- package/src/tests/optimisticProxy.test.ts +5 -3
- package/src/tests/startUpdate.test.ts +5 -7
- package/vitest.config.ts +5 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSkipLimitPagination.d.ts","sourceRoot":"","sources":["../../src/loadable-hooks/useSkipLimitPagination.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"useSkipLimitPagination.d.ts","sourceRoot":"","sources":["../../src/loadable-hooks/useSkipLimitPagination.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,gBAAgB,CAAC;AAM/D,MAAM,MAAM,uBAAuB,CACjC,cAAc,SAAS,qBAAqB,EAC5C,KAAK,IAEH;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,CAClB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KACrD,IAAI,CAAC;IACV,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;CACxC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,iBAAiB,CACzC,cAAc,EACd,aAAa,CAAC,KAAK,CAAC,CACrB,CAAC;CACH,CAAC;AA6BN,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,KAAK,EACL,cAAc,SAAS,qBAAqB,EAE5C,aAAa,EAAE,aAAa,CAC1B,cAAc,EACd,aAAa,CAAC,KAAK,CAAC,EACpB,0BAA0B,CAC3B,EACD,YAAY,CAAC,EAAE;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;CAC7B,GACA,uBAAuB,CAAC,cAAc,EAAE,KAAK,CAAC,CA+OhD"}
|
|
@@ -9,8 +9,8 @@ const PromiseWrapper_1 = require("../core/PromiseWrapper");
|
|
|
9
9
|
const read_1 = require("../core/read");
|
|
10
10
|
const startUpdate_1 = require("../core/startUpdate");
|
|
11
11
|
const IsographEnvironmentProvider_1 = require("../react/IsographEnvironmentProvider");
|
|
12
|
+
const maybeUnwrapNetworkRequest_1 = require("../react/maybeUnwrapNetworkRequest");
|
|
12
13
|
const useReadAndSubscribe_1 = require("../react/useReadAndSubscribe");
|
|
13
|
-
const useResult_1 = require("../react/useResult");
|
|
14
14
|
function flatten(arr) {
|
|
15
15
|
let outArray = [];
|
|
16
16
|
for (const subarr of arr) {
|
|
@@ -54,7 +54,7 @@ function useSkipLimitPagination(loadableField, initialState) {
|
|
|
54
54
|
}
|
|
55
55
|
function subscribeCompletedFragmentReferences(completedReferences) {
|
|
56
56
|
return completedReferences.map((fragmentReference, i) => {
|
|
57
|
-
(0,
|
|
57
|
+
(0, maybeUnwrapNetworkRequest_1.maybeUnwrapNetworkRequest)(fragmentReference.networkRequest, networkRequestOptions);
|
|
58
58
|
const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
|
|
59
59
|
const records = readOutDataAndRecords[i];
|
|
60
60
|
if (records == null) {
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type BaseStoreLayerData, type IsographNetworkFunction, type MissingFieldHandler } from '../core/IsographEnvironment';
|
|
2
|
+
import type { LogFunction } from '../core/logging';
|
|
3
|
+
export declare function createIsographEnvironment(baseStoreLayerData: BaseStoreLayerData, networkFunction: IsographNetworkFunction, missingFieldHandler?: MissingFieldHandler | null, logFunction?: LogFunction | null): import("../core/IsographEnvironment").IsographEnvironment;
|
|
4
|
+
//# sourceMappingURL=createIsographEnvironment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createIsographEnvironment.d.ts","sourceRoot":"","sources":["../../src/react/createIsographEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,wBAAgB,yBAAyB,CACvC,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,uBAAuB,EACxC,mBAAmB,CAAC,EAAE,mBAAmB,GAAG,IAAI,EAChD,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,6DASjC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createIsographEnvironment = createIsographEnvironment;
|
|
4
|
+
const IsographEnvironment_1 = require("../core/IsographEnvironment");
|
|
5
|
+
const useReadAndSubscribe_1 = require("./useReadAndSubscribe");
|
|
6
|
+
function createIsographEnvironment(baseStoreLayerData, networkFunction, missingFieldHandler, logFunction) {
|
|
7
|
+
return (0, IsographEnvironment_1.createIsographEnvironmentCore)(baseStoreLayerData, networkFunction, useReadAndSubscribe_1.componentFunction, missingFieldHandler, logFunction);
|
|
8
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type PromiseWrapper } from '../core/PromiseWrapper';
|
|
2
|
+
import type { NetworkRequestReaderOptions } from '../core/read';
|
|
3
|
+
export declare function maybeUnwrapNetworkRequest(networkRequest: PromiseWrapper<void, any>, networkRequestOptions: NetworkRequestReaderOptions): void;
|
|
4
|
+
//# sourceMappingURL=maybeUnwrapNetworkRequest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maybeUnwrapNetworkRequest.d.ts","sourceRoot":"","sources":["../../src/react/maybeUnwrapNetworkRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAEhE,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,EACzC,qBAAqB,EAAE,2BAA2B,QAWnD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.maybeUnwrapNetworkRequest = maybeUnwrapNetworkRequest;
|
|
4
|
+
const PromiseWrapper_1 = require("../core/PromiseWrapper");
|
|
5
|
+
function maybeUnwrapNetworkRequest(networkRequest, networkRequestOptions) {
|
|
6
|
+
const state = (0, PromiseWrapper_1.getPromiseState)(networkRequest);
|
|
7
|
+
if (state.kind === 'Err' && networkRequestOptions.throwOnNetworkError) {
|
|
8
|
+
throw state.error;
|
|
9
|
+
}
|
|
10
|
+
else if (state.kind === 'Pending' &&
|
|
11
|
+
networkRequestOptions.suspendIfInFlight) {
|
|
12
|
+
throw state.promise;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLazyReference.d.ts","sourceRoot":"","sources":["../../src/react/useLazyReference.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"useLazyReference.d.ts","sourceRoot":"","sources":["../../src/react/useLazyReference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AAKnC,wBAAgB,gBAAgB,CAC9B,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,EACjB,iBAAiB,SAAS,gBAAgB,GAAG,sBAAsB,EACnE,gBAAgB,SAAS,qBAAqB,EAE9C,UAAU,EAAE,kBAAkB,CAC5B,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,CACjB,EACD,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,GAAG,CAAC,YAAY,CAAC,EAAE,iBAAiB,SAAS,sBAAsB,GAC/D,CAAC,YAAY,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,GACvD,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,GACrE,gBAAgB,GAAG,sBAAsB,SAAS,iBAAiB,GAClE,OAAO,GACP;IACE,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;CACzE,CAqBJ"}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useLazyReference = useLazyReference;
|
|
4
4
|
const react_disposable_state_1 = require("@isograph/react-disposable-state");
|
|
5
|
-
const cache_1 = require("../core/cache");
|
|
6
5
|
const logging_1 = require("../core/logging");
|
|
7
6
|
const IsographEnvironmentProvider_1 = require("./IsographEnvironmentProvider");
|
|
7
|
+
const getOrCreateCacheForArtifact_1 = require("../core/getOrCreateCacheForArtifact");
|
|
8
8
|
function useLazyReference(entrypoint, variables, ...[fetchOptions]) {
|
|
9
9
|
const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
|
|
10
10
|
if ((entrypoint === null || entrypoint === void 0 ? void 0 : entrypoint.kind) !== 'Entrypoint') {
|
|
@@ -14,7 +14,7 @@ function useLazyReference(entrypoint, variables, ...[fetchOptions]) {
|
|
|
14
14
|
entrypoint,
|
|
15
15
|
}));
|
|
16
16
|
}
|
|
17
|
-
const cache = (0,
|
|
17
|
+
const cache = (0, getOrCreateCacheForArtifact_1.getOrCreateCacheForArtifact)(environment, entrypoint, variables, fetchOptions);
|
|
18
18
|
return {
|
|
19
19
|
fragmentReference: (0, react_disposable_state_1.useLazyDisposableState)(cache).state,
|
|
20
20
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { ExtractData, FragmentReference, type UnknownTReadFromStore } from '../core/FragmentReference';
|
|
2
|
-
import {
|
|
1
|
+
import { type ExtractData, type FragmentReference, type UnknownTReadFromStore } from '../core/FragmentReference';
|
|
2
|
+
import type { IsographComponentFunction } from '../core/IsographEnvironment';
|
|
3
|
+
import { type NetworkRequestReaderOptions, type WithEncounteredRecords } from '../core/read';
|
|
3
4
|
import type { ReaderAst } from '../core/reader';
|
|
4
5
|
/**
|
|
5
6
|
* Read the data from a fragment reference and subscribe to updates.
|
|
@@ -11,4 +12,5 @@ export declare function useSubscribeToMultiple<TReadFromStore extends UnknownTRe
|
|
|
11
12
|
fragmentReference: FragmentReference<TReadFromStore, any>;
|
|
12
13
|
readerAst: ReaderAst<TReadFromStore>;
|
|
13
14
|
}>): void;
|
|
15
|
+
export declare const componentFunction: IsographComponentFunction;
|
|
14
16
|
//# sourceMappingURL=useReadAndSubscribe.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReadAndSubscribe.d.ts","sourceRoot":"","sources":["../../src/react/useReadAndSubscribe.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useReadAndSubscribe.d.ts","sourceRoot":"","sources":["../../src/react/useReadAndSubscribe.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EAEtB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAG7E,OAAO,EACL,KAAK,2BAA2B,EAEhC,KAAK,sBAAsB,EAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMhD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,SAAS,qBAAqB,EAE5C,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,EACzD,qBAAqB,EAAE,2BAA2B,EAClD,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,GACnC,WAAW,CAAC,cAAc,CAAC,CAY7B;AAED,wBAAgB,sBAAsB,CACpC,cAAc,SAAS,qBAAqB,EAE5C,KAAK,EAAE,aAAa,CAAC;IACnB,OAAO,EAAE,sBAAsB,CAAC,cAAc,CAAC,CAAC;IAChD,QAAQ,EAAE,CAAC,cAAc,EAAE,sBAAsB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAC3E,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC1D,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;CACtC,CAAC,QAiCH;AAED,eAAO,MAAM,iBAAiB,EAAE,yBA0C/B,CAAC"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.componentFunction = void 0;
|
|
3
4
|
exports.useReadAndSubscribe = useReadAndSubscribe;
|
|
4
5
|
exports.useSubscribeToMultiple = useSubscribeToMultiple;
|
|
5
6
|
const react_1 = require("react");
|
|
6
|
-
const cache_1 = require("../core/cache");
|
|
7
7
|
const FragmentReference_1 = require("../core/FragmentReference");
|
|
8
|
+
const logging_1 = require("../core/logging");
|
|
9
|
+
const PromiseWrapper_1 = require("../core/PromiseWrapper");
|
|
8
10
|
const read_1 = require("../core/read");
|
|
11
|
+
const subscribe_1 = require("../core/subscribe");
|
|
9
12
|
const IsographEnvironmentProvider_1 = require("./IsographEnvironmentProvider");
|
|
13
|
+
const maybeUnwrapNetworkRequest_1 = require("./maybeUnwrapNetworkRequest");
|
|
10
14
|
const useRerenderOnChange_1 = require("./useRerenderOnChange");
|
|
11
15
|
/**
|
|
12
16
|
* Read the data from a fragment reference and subscribe to updates.
|
|
@@ -21,7 +25,7 @@ function useSubscribeToMultiple(items) {
|
|
|
21
25
|
const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
|
|
22
26
|
(0, react_1.useEffect)(() => {
|
|
23
27
|
const cleanupFns = items.map(({ records, callback, fragmentReference, readerAst }) => {
|
|
24
|
-
return (0,
|
|
28
|
+
return (0, subscribe_1.subscribe)(environment, records, fragmentReference, callback, readerAst);
|
|
25
29
|
});
|
|
26
30
|
return () => {
|
|
27
31
|
cleanupFns.forEach((loader) => {
|
|
@@ -40,3 +44,28 @@ function useSubscribeToMultiple(items) {
|
|
|
40
44
|
.join('.'),
|
|
41
45
|
]);
|
|
42
46
|
}
|
|
47
|
+
const componentFunction = (environment, fragmentReference, networkRequestOptions, startUpdate) => {
|
|
48
|
+
function Component(additionalRuntimeProps) {
|
|
49
|
+
(0, maybeUnwrapNetworkRequest_1.maybeUnwrapNetworkRequest)(fragmentReference.networkRequest, networkRequestOptions);
|
|
50
|
+
const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
|
|
51
|
+
const data = useReadAndSubscribe(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst);
|
|
52
|
+
(0, logging_1.logMessage)(environment, () => ({
|
|
53
|
+
kind: 'ComponentRerendered',
|
|
54
|
+
componentName: fragmentReference.fieldName,
|
|
55
|
+
rootLink: fragmentReference.root,
|
|
56
|
+
}));
|
|
57
|
+
return readerWithRefetchQueries.readerArtifact.resolver(
|
|
58
|
+
// @ts-expect-error
|
|
59
|
+
{
|
|
60
|
+
data,
|
|
61
|
+
parameters: fragmentReference.variables,
|
|
62
|
+
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
|
|
63
|
+
? startUpdate
|
|
64
|
+
: undefined,
|
|
65
|
+
}, additionalRuntimeProps);
|
|
66
|
+
}
|
|
67
|
+
const idString = `(type: ${fragmentReference.root.__typename}, id: ${fragmentReference.root.__link})`;
|
|
68
|
+
Component.displayName = `${fragmentReference.fieldName} ${idString} @component`;
|
|
69
|
+
return Component;
|
|
70
|
+
};
|
|
71
|
+
exports.componentFunction = componentFunction;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FragmentReference } from '../core/FragmentReference';
|
|
2
|
-
import { WithEncounteredRecords } from '../core/read';
|
|
1
|
+
import type { FragmentReference } from '../core/FragmentReference';
|
|
2
|
+
import type { WithEncounteredRecords } from '../core/read';
|
|
3
3
|
import type { ReaderAst } from '../core/reader';
|
|
4
4
|
export declare function useRerenderOnChange<TReadFromStore extends {
|
|
5
5
|
parameters: object;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRerenderOnChange.d.ts","sourceRoot":"","sources":["../../src/react/useRerenderOnChange.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useRerenderOnChange.d.ts","sourceRoot":"","sources":["../../src/react/useRerenderOnChange.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMhD,wBAAgB,mBAAmB,CACjC,cAAc,SAAS;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAE3D,yBAAyB,EAAE,sBAAsB,CAAC,cAAc,CAAC,EACjE,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,EAC9C,4BAA4B,EAAE,CAC5B,IAAI,EAAE,sBAAsB,CAAC,cAAc,CAAC,KACzC,IAAI,EACT,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,QAoBrC"}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useRerenderOnChange = useRerenderOnChange;
|
|
4
4
|
const react_1 = require("react");
|
|
5
|
-
const
|
|
5
|
+
const subscribe_1 = require("../core/subscribe");
|
|
6
6
|
const IsographEnvironmentProvider_1 = require("./IsographEnvironmentProvider");
|
|
7
7
|
// TODO add unit tests for this. Add integration tests that test
|
|
8
8
|
// behavior when the encounteredRecords underneath a fragment change.
|
|
9
9
|
function useRerenderOnChange(encounteredDataAndRecords, fragmentReference, setEncounteredDataAndRecords, readerAst) {
|
|
10
10
|
const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
|
|
11
11
|
(0, react_1.useEffect)(() => {
|
|
12
|
-
return (0,
|
|
12
|
+
return (0, subscribe_1.subscribe)(environment, encounteredDataAndRecords, fragmentReference, (newEncounteredDataAndRecords) => {
|
|
13
13
|
setEncounteredDataAndRecords(newEncounteredDataAndRecords);
|
|
14
14
|
}, readerAst);
|
|
15
15
|
// Note: this is an empty array on purpose:
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { FragmentReference,
|
|
2
|
-
import {
|
|
3
|
-
import { NetworkRequestReaderOptions } from '../core/read';
|
|
1
|
+
import type { FragmentReference, UnknownTReadFromStore } from '../core/FragmentReference';
|
|
2
|
+
import { type NetworkRequestReaderOptions } from '../core/read';
|
|
4
3
|
export declare function useResult<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue>(fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>, partialNetworkRequestOptions?: Partial<NetworkRequestReaderOptions> | void): TClientFieldValue;
|
|
5
|
-
export declare function maybeUnwrapNetworkRequest(networkRequest: PromiseWrapper<void, any>, networkRequestOptions: NetworkRequestReaderOptions): void;
|
|
6
4
|
//# sourceMappingURL=useResult.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResult.d.ts","sourceRoot":"","sources":["../../src/react/useResult.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"useResult.d.ts","sourceRoot":"","sources":["../../src/react/useResult.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,KAAK,2BAA2B,EAEjC,MAAM,cAAc,CAAC;AAMtB,wBAAgB,SAAS,CACvB,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,EAEjB,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,iBAAiB,CAAC,EACvE,4BAA4B,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAAG,IAAI,GACzE,iBAAiB,CA6CnB"}
|
package/dist/react/useResult.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useResult = useResult;
|
|
4
|
-
exports.maybeUnwrapNetworkRequest = maybeUnwrapNetworkRequest;
|
|
5
4
|
const componentCache_1 = require("../core/componentCache");
|
|
6
5
|
const PromiseWrapper_1 = require("../core/PromiseWrapper");
|
|
7
6
|
const read_1 = require("../core/read");
|
|
8
7
|
const startUpdate_1 = require("../core/startUpdate");
|
|
9
|
-
const IsographEnvironmentProvider_1 = require("
|
|
8
|
+
const IsographEnvironmentProvider_1 = require("./IsographEnvironmentProvider");
|
|
9
|
+
const maybeUnwrapNetworkRequest_1 = require("./maybeUnwrapNetworkRequest");
|
|
10
10
|
const useReadAndSubscribe_1 = require("./useReadAndSubscribe");
|
|
11
11
|
function useResult(fragmentReference, partialNetworkRequestOptions) {
|
|
12
12
|
const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
|
|
@@ -17,7 +17,7 @@ function useResult(fragmentReference, partialNetworkRequestOptions) {
|
|
|
17
17
|
return (0, componentCache_1.getOrCreateCachedComponent)(environment, fragmentReference, networkRequestOptions);
|
|
18
18
|
}
|
|
19
19
|
case 'EagerReaderArtifact': {
|
|
20
|
-
maybeUnwrapNetworkRequest(fragmentReference.networkRequest, networkRequestOptions);
|
|
20
|
+
(0, maybeUnwrapNetworkRequest_1.maybeUnwrapNetworkRequest)(fragmentReference.networkRequest, networkRequestOptions);
|
|
21
21
|
const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
|
|
22
22
|
const data = (0, useReadAndSubscribe_1.useReadAndSubscribe)(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst);
|
|
23
23
|
const param = Object.assign({ data: data, parameters: fragmentReference.variables }, (readerWithRefetchQueries.readerArtifact.hasUpdatable
|
|
@@ -30,13 +30,3 @@ function useResult(fragmentReference, partialNetworkRequestOptions) {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
function maybeUnwrapNetworkRequest(networkRequest, networkRequestOptions) {
|
|
34
|
-
const state = (0, PromiseWrapper_1.getPromiseState)(networkRequest);
|
|
35
|
-
if (state.kind === 'Err' && networkRequestOptions.throwOnNetworkError) {
|
|
36
|
-
throw state.error;
|
|
37
|
-
}
|
|
38
|
-
else if (state.kind === 'Pending' &&
|
|
39
|
-
networkRequestOptions.suspendIfInFlight) {
|
|
40
|
-
throw state.promise;
|
|
41
|
-
}
|
|
42
|
-
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@isograph/react",
|
|
3
|
-
"version": "0.0.0-main-
|
|
3
|
+
"version": "0.0.0-main-82400fb8",
|
|
4
4
|
"description": "Use Isograph with React",
|
|
5
5
|
"homepage": "https://isograph.dev",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
"author": "Isograph Labs",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@isograph/disposable-types": "0.0.0-main-
|
|
12
|
-
"@isograph/
|
|
13
|
-
"@isograph/
|
|
11
|
+
"@isograph/disposable-types": "0.0.0-main-82400fb8",
|
|
12
|
+
"@isograph/react-disposable-state": "0.0.0-main-82400fb8",
|
|
13
|
+
"@isograph/reference-counted-pointer": "0.0.0-main-82400fb8"
|
|
14
14
|
},
|
|
15
15
|
"peerDependencies": {
|
|
16
16
|
"react": "^18.0.0 || ^19.0.0"
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ReaderWithRefetchQueries } from '
|
|
2
|
-
import { stableCopy } from './cache';
|
|
1
|
+
import { ReaderWithRefetchQueries } from './entrypoint';
|
|
3
2
|
import {
|
|
4
3
|
type ComponentOrFieldName,
|
|
5
4
|
type StoreLink,
|
|
6
5
|
} from './IsographEnvironment';
|
|
7
6
|
import { PromiseWrapper } from './PromiseWrapper';
|
|
8
7
|
import type { StartUpdate } from './reader';
|
|
8
|
+
import { stableCopy } from './util';
|
|
9
9
|
|
|
10
10
|
// TODO type this better
|
|
11
11
|
export type VariableValue =
|
|
@@ -1,29 +1,33 @@
|
|
|
1
1
|
import { ParentCache } from '@isograph/react-disposable-state';
|
|
2
2
|
import type { Brand } from './brand';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import type {
|
|
5
4
|
IsographEntrypoint,
|
|
6
5
|
IsographOperation,
|
|
7
6
|
IsographPersistedOperation,
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
ReaderWithRefetchQueries,
|
|
8
|
+
ReaderWithRefetchQueriesLoader,
|
|
10
9
|
} from './entrypoint';
|
|
11
|
-
import {
|
|
10
|
+
import type {
|
|
11
|
+
ExtractStartUpdate,
|
|
12
12
|
FragmentReference,
|
|
13
|
+
StableIdForFragmentReference,
|
|
14
|
+
UnknownTReadFromStore,
|
|
13
15
|
Variables,
|
|
14
|
-
type StableIdForFragmentReference,
|
|
15
|
-
type UnknownTReadFromStore,
|
|
16
16
|
} from './FragmentReference';
|
|
17
17
|
import type { RetainedQuery } from './garbageCollection';
|
|
18
|
-
import { LogFunction, WrappedLogFunction } from './logging';
|
|
18
|
+
import type { LogFunction, WrappedLogFunction } from './logging';
|
|
19
19
|
import { type StoreLayer } from './optimisticProxy';
|
|
20
20
|
import {
|
|
21
21
|
PromiseWrapper,
|
|
22
22
|
wrapPromise,
|
|
23
23
|
wrapResolvedValue,
|
|
24
24
|
} from './PromiseWrapper';
|
|
25
|
-
import {
|
|
25
|
+
import type {
|
|
26
|
+
NetworkRequestReaderOptions,
|
|
27
|
+
WithEncounteredRecords,
|
|
28
|
+
} from './read';
|
|
26
29
|
import type { ReaderAst, StartUpdate } from './reader';
|
|
30
|
+
import { isArray } from './util';
|
|
27
31
|
|
|
28
32
|
export type ComponentOrFieldName = string;
|
|
29
33
|
export type StringifiedArgs = string;
|
|
@@ -66,6 +70,7 @@ export type CacheMap<T> = { [index: string]: ParentCache<T> };
|
|
|
66
70
|
export type IsographEnvironment = {
|
|
67
71
|
store: StoreLayer;
|
|
68
72
|
readonly networkFunction: IsographNetworkFunction;
|
|
73
|
+
readonly componentFunction: IsographComponentFunction;
|
|
69
74
|
readonly missingFieldHandler: MissingFieldHandler | null;
|
|
70
75
|
readonly componentCache: FieldCache<React.FC<any>>;
|
|
71
76
|
readonly eagerReaderCache: FieldCache<StartUpdate<any> | undefined>;
|
|
@@ -97,6 +102,15 @@ export type IsographNetworkFunction = (
|
|
|
97
102
|
variables: Variables,
|
|
98
103
|
) => Promise<any>;
|
|
99
104
|
|
|
105
|
+
export type IsographComponentFunction = <
|
|
106
|
+
TReadFromStore extends UnknownTReadFromStore = any,
|
|
107
|
+
>(
|
|
108
|
+
environment: IsographEnvironment,
|
|
109
|
+
fragmentReference: FragmentReference<TReadFromStore, any>,
|
|
110
|
+
networkRequestOptions: NetworkRequestReaderOptions,
|
|
111
|
+
startUpdate: ExtractStartUpdate<TReadFromStore>,
|
|
112
|
+
) => React.FC<any>;
|
|
113
|
+
|
|
100
114
|
export interface Link<T extends TypeName> extends StoreLink {
|
|
101
115
|
readonly __link: Brand<DataId, T>;
|
|
102
116
|
readonly __typename: T;
|
|
@@ -146,9 +160,10 @@ export interface BaseStoreLayerData extends StoreLayerData {
|
|
|
146
160
|
}
|
|
147
161
|
|
|
148
162
|
const DEFAULT_GC_BUFFER_SIZE = 10;
|
|
149
|
-
export function
|
|
163
|
+
export function createIsographEnvironmentCore(
|
|
150
164
|
baseStoreLayerData: BaseStoreLayerData,
|
|
151
165
|
networkFunction: IsographNetworkFunction,
|
|
166
|
+
componentFunction: IsographComponentFunction,
|
|
152
167
|
missingFieldHandler?: MissingFieldHandler | null,
|
|
153
168
|
logFunction?: LogFunction | null,
|
|
154
169
|
): IsographEnvironment {
|
|
@@ -164,6 +179,7 @@ export function createIsographEnvironment(
|
|
|
164
179
|
return {
|
|
165
180
|
store,
|
|
166
181
|
networkFunction,
|
|
182
|
+
componentFunction,
|
|
167
183
|
missingFieldHandler: missingFieldHandler ?? null,
|
|
168
184
|
componentCache: {},
|
|
169
185
|
eagerReaderCache: {},
|