@isograph/react 0.0.0-main-e403ba82 → 0.0.0-main-82cbc3c0
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/areEqualWithDeepComparison.d.ts.map +1 -1
- package/dist/core/areEqualWithDeepComparison.js +2 -5
- package/dist/core/cache.d.ts +5 -18
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/cache.js +10 -222
- package/dist/core/check.js +5 -5
- 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/garbageCollection.js +3 -3
- 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 +24 -22
- package/dist/core/read.d.ts +3 -3
- package/dist/core/read.d.ts.map +1 -1
- package/dist/core/read.js +4 -4
- 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 +3 -3
- 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 +3 -3
- 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/areEqualWithDeepComparison.ts +2 -6
- package/src/core/cache.ts +18 -364
- package/src/core/check.ts +5 -5
- package/src/core/componentCache.ts +8 -43
- package/src/core/entrypoint.ts +2 -2
- package/src/core/garbageCollection.ts +8 -8
- 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 +27 -26
- package/src/core/read.ts +17 -17
- 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 +6 -6
- package/src/loadable-hooks/useSkipLimitPagination.ts +6 -6
- 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 +7 -5
- package/src/tests/startUpdate.test.ts +5 -7
- package/vitest.config.ts +5 -0
|
@@ -1,37 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getOrCreateCachedComponent = getOrCreateCachedComponent;
|
|
4
|
-
const useReadAndSubscribe_1 = require("../react/useReadAndSubscribe");
|
|
5
|
-
const useResult_1 = require("../react/useResult");
|
|
6
4
|
const FragmentReference_1 = require("./FragmentReference");
|
|
7
|
-
const logging_1 = require("./logging");
|
|
8
|
-
const PromiseWrapper_1 = require("./PromiseWrapper");
|
|
9
5
|
const startUpdate_1 = require("./startUpdate");
|
|
10
6
|
function getOrCreateCachedComponent(environment, fragmentReference, networkRequestOptions) {
|
|
11
7
|
var _a;
|
|
12
8
|
var _b, _c;
|
|
13
9
|
// We create startUpdate outside of component to make it stable
|
|
14
10
|
const startUpdate = (0, startUpdate_1.createStartUpdate)(environment, fragmentReference, networkRequestOptions);
|
|
15
|
-
return ((_a = (_b = environment.componentCache)[_c = (0, FragmentReference_1.stableIdForFragmentReference)(fragmentReference)]) !== null && _a !== void 0 ? _a : (_b[_c] = (
|
|
16
|
-
function Component(additionalRuntimeProps) {
|
|
17
|
-
(0, useResult_1.maybeUnwrapNetworkRequest)(fragmentReference.networkRequest, networkRequestOptions);
|
|
18
|
-
const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
|
|
19
|
-
const data = (0, useReadAndSubscribe_1.useReadAndSubscribe)(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst);
|
|
20
|
-
(0, logging_1.logMessage)(environment, () => ({
|
|
21
|
-
kind: 'ComponentRerendered',
|
|
22
|
-
componentName: fragmentReference.fieldName,
|
|
23
|
-
rootLink: fragmentReference.root,
|
|
24
|
-
}));
|
|
25
|
-
return readerWithRefetchQueries.readerArtifact.resolver({
|
|
26
|
-
data,
|
|
27
|
-
parameters: fragmentReference.variables,
|
|
28
|
-
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
|
|
29
|
-
? startUpdate
|
|
30
|
-
: undefined,
|
|
31
|
-
}, additionalRuntimeProps);
|
|
32
|
-
}
|
|
33
|
-
const idString = `(type: ${fragmentReference.root.__typename}, id: ${fragmentReference.root.__link})`;
|
|
34
|
-
Component.displayName = `${fragmentReference.fieldName} ${idString} @component`;
|
|
35
|
-
return Component;
|
|
36
|
-
})()));
|
|
11
|
+
return ((_a = (_b = environment.componentCache)[_c = (0, FragmentReference_1.stableIdForFragmentReference)(fragmentReference)]) !== null && _a !== void 0 ? _a : (_b[_c] = environment.componentFunction(environment, fragmentReference, networkRequestOptions, startUpdate)));
|
|
37
12
|
}
|
|
@@ -2,8 +2,8 @@ import type { Contravariant, PhantomData } from './brand';
|
|
|
2
2
|
import type { NetworkResponseObject } from './cache';
|
|
3
3
|
import type { FragmentReference, UnknownTReadFromStore } from './FragmentReference';
|
|
4
4
|
import type { ComponentOrFieldName, TypeName } from './IsographEnvironment';
|
|
5
|
-
import { TopLevelReaderArtifact } from './reader';
|
|
6
|
-
import { Arguments } from './util';
|
|
5
|
+
import type { TopLevelReaderArtifact } from './reader';
|
|
6
|
+
import type { Arguments } from './util';
|
|
7
7
|
export type ReaderWithRefetchQueries<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue> = {
|
|
8
8
|
readonly kind: 'ReaderWithRefetchQueries';
|
|
9
9
|
readonly readerArtifact: TopLevelReaderArtifact<TReadFromStore, TClientFieldValue, any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrypoint.d.ts","sourceRoot":"","sources":["../../src/core/entrypoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"entrypoint.d.ts","sourceRoot":"","sources":["../../src/core/entrypoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { IsographEnvironment, type StoreLink } from './IsographEnvironment';
|
|
1
|
+
import type { NormalizationAst } from './entrypoint';
|
|
2
|
+
import { type IsographEnvironment, type StoreLink } from './IsographEnvironment';
|
|
3
3
|
import type { BaseStoreLayer } from './optimisticProxy';
|
|
4
4
|
import { type PromiseWrapper, type PromiseWrapperOk } from './PromiseWrapper';
|
|
5
5
|
export type RetainedQuery = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"garbageCollection.d.ts","sourceRoot":"","sources":["../../src/core/garbageCollection.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,
|
|
1
|
+
{"version":3,"file":"garbageCollection.d.ts","sourceRoot":"","sources":["../../src/core/garbageCollection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAGL,KAAK,mBAAmB,EAGxB,KAAK,SAAS,EAEf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC5D,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,iCAAkC,SAAQ,aAAa;IACtE,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;CAC/D;AAWD,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAC3C,wBAAgB,aAAa,CAC3B,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,aAAa,GAC3B,oBAAoB,CAUtB;AAED,wBAAgB,WAAW,CACzB,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,aAAa,QAM7B;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,mBAAmB,QAqBzE;AAED,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,iCAAiC,EAAE,EACpD,cAAc,EAAE,cAAc,QA6B/B"}
|
|
@@ -56,7 +56,7 @@ function garbageCollectBaseStoreLayer(retainedQueries, baseStoreLayer) {
|
|
|
56
56
|
continue;
|
|
57
57
|
const retainedTypeIds = retainedIds[typeName];
|
|
58
58
|
// delete all objects
|
|
59
|
-
if (retainedTypeIds
|
|
59
|
+
if (retainedTypeIds === undefined || retainedTypeIds.size === 0) {
|
|
60
60
|
delete baseStoreLayer.data[typeName];
|
|
61
61
|
continue;
|
|
62
62
|
}
|
|
@@ -102,10 +102,10 @@ function recordReachableIdsFromRecord(dataLayer, currentRecord, mutableRetainedI
|
|
|
102
102
|
links.push(link);
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
|
-
let typeStore = selection.concreteType
|
|
105
|
+
let typeStore = selection.concreteType != null
|
|
106
106
|
? dataLayer[selection.concreteType]
|
|
107
107
|
: null;
|
|
108
|
-
if (typeStore == null && selection.concreteType
|
|
108
|
+
if (typeStore == null && selection.concreteType != null) {
|
|
109
109
|
continue;
|
|
110
110
|
}
|
|
111
111
|
for (const nextRecordLink of links) {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ParentCache } from '@isograph/isograph-react-disposable-state/dist';
|
|
2
|
+
import { type NetworkResponseObject } from './cache';
|
|
3
|
+
import type { FetchOptions } from './check';
|
|
4
|
+
import type { IsographEntrypoint, NormalizationAst, NormalizationAstLoader } from './entrypoint';
|
|
5
|
+
import type { ExtractParameters, FragmentReference, UnknownTReadFromStore } from './FragmentReference';
|
|
6
|
+
import { type IsographEnvironment } from './IsographEnvironment';
|
|
7
|
+
export declare function getOrCreateCacheForArtifact<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue, TNormalizationAst extends NormalizationAst | NormalizationAstLoader, TRawResponseType extends NetworkResponseObject>(environment: IsographEnvironment, entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue, TNormalizationAst, TRawResponseType>, variables: ExtractParameters<TReadFromStore>, fetchOptions?: FetchOptions<TClientFieldValue, TRawResponseType>): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>>;
|
|
8
|
+
//# sourceMappingURL=getOrCreateCacheForArtifact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrCreateCacheForArtifact.d.ts","sourceRoot":"","sources":["../../src/core/getOrCreateCacheForArtifact.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gDAAgD,CAAC;AAClF,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,mBAAmB,EAGzB,MAAM,uBAAuB,CAAC;AAI/B,wBAAgB,2BAA2B,CACzC,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,EACjB,iBAAiB,SAAS,gBAAgB,GAAG,sBAAsB,EACnE,gBAAgB,SAAS,qBAAqB,EAE9C,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,kBAAkB,CAC5B,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,CACjB,EACD,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,YAAY,CAAC,EAAE,YAAY,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAC/D,WAAW,CAAC,iBAAiB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CA6CnE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOrCreateCacheForArtifact = getOrCreateCacheForArtifact;
|
|
4
|
+
const cache_1 = require("./cache");
|
|
5
|
+
const IsographEnvironment_1 = require("./IsographEnvironment");
|
|
6
|
+
const makeNetworkRequest_1 = require("./makeNetworkRequest");
|
|
7
|
+
const util_1 = require("./util");
|
|
8
|
+
function getOrCreateCacheForArtifact(environment, entrypoint, variables, fetchOptions) {
|
|
9
|
+
let cacheKey = '';
|
|
10
|
+
switch (entrypoint.networkRequestInfo.operation.kind) {
|
|
11
|
+
case 'Operation':
|
|
12
|
+
cacheKey =
|
|
13
|
+
entrypoint.networkRequestInfo.operation.text +
|
|
14
|
+
JSON.stringify((0, util_1.stableCopy)(variables));
|
|
15
|
+
break;
|
|
16
|
+
case 'PersistedOperation':
|
|
17
|
+
cacheKey =
|
|
18
|
+
entrypoint.networkRequestInfo.operation.operationId +
|
|
19
|
+
JSON.stringify((0, util_1.stableCopy)(variables));
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
const factory = () => {
|
|
23
|
+
const { fieldName, readerArtifactKind, readerWithRefetchQueries } = (0, IsographEnvironment_1.getOrLoadReaderWithRefetchQueries)(environment, entrypoint.readerWithRefetchQueries);
|
|
24
|
+
const [networkRequest, disposeNetworkRequest] = (0, makeNetworkRequest_1.maybeMakeNetworkRequest)(environment, entrypoint, variables, readerWithRefetchQueries, fetchOptions !== null && fetchOptions !== void 0 ? fetchOptions : null);
|
|
25
|
+
const itemCleanupPair = [
|
|
26
|
+
{
|
|
27
|
+
kind: 'FragmentReference',
|
|
28
|
+
readerWithRefetchQueries,
|
|
29
|
+
fieldName,
|
|
30
|
+
readerArtifactKind,
|
|
31
|
+
root: { __link: IsographEnvironment_1.ROOT_ID, __typename: entrypoint.concreteType },
|
|
32
|
+
variables,
|
|
33
|
+
networkRequest: networkRequest,
|
|
34
|
+
},
|
|
35
|
+
disposeNetworkRequest,
|
|
36
|
+
];
|
|
37
|
+
return itemCleanupPair;
|
|
38
|
+
};
|
|
39
|
+
return (0, cache_1.getOrCreateItemInSuspenseCache)(environment, cacheKey, factory);
|
|
40
|
+
}
|
package/dist/core/logging.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { CleanupFn } from '@isograph/disposable-types';
|
|
2
|
-
import { NetworkResponseObject,
|
|
3
|
-
import { CheckResult } from './check';
|
|
4
|
-
import { IsographEntrypoint, RefetchQueryNormalizationArtifact,
|
|
5
|
-
import { FragmentReference, Variables } from './FragmentReference';
|
|
6
|
-
import { IsographEnvironment, StoreRecord,
|
|
7
|
-
import { ReadDataResult } from './read';
|
|
8
|
-
import { Arguments } from './util';
|
|
1
|
+
import type { CleanupFn } from '@isograph/disposable-types';
|
|
2
|
+
import type { NetworkResponseObject, EncounteredIds } from './cache';
|
|
3
|
+
import type { CheckResult } from './check';
|
|
4
|
+
import type { IsographEntrypoint, RefetchQueryNormalizationArtifact, NormalizationAstNodes } from './entrypoint';
|
|
5
|
+
import type { FragmentReference, Variables } from './FragmentReference';
|
|
6
|
+
import type { IsographEnvironment, StoreRecord, StoreLink } from './IsographEnvironment';
|
|
7
|
+
import type { ReadDataResult } from './read';
|
|
8
|
+
import type { Arguments } from './util';
|
|
9
9
|
import type { StoreLayer } from './optimisticProxy';
|
|
10
10
|
/**
|
|
11
11
|
* Note: these types are unstable. We will add and remove items from this enum
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/core/logging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/core/logging.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ItemCleanupPair } from '@isograph/disposable-types';
|
|
1
|
+
import type { ItemCleanupPair } from '@isograph/disposable-types';
|
|
2
2
|
import { type NetworkResponseObject } from './cache';
|
|
3
3
|
import { FetchOptions } from './check';
|
|
4
|
-
import { IsographEntrypoint,
|
|
5
|
-
import { ExtractParameters,
|
|
4
|
+
import type { IsographEntrypoint, NormalizationAst, NormalizationAstLoader, ReaderWithRefetchQueries, RefetchQueryNormalizationArtifact } from './entrypoint';
|
|
5
|
+
import type { ExtractParameters, UnknownTReadFromStore } from './FragmentReference';
|
|
6
6
|
import { IsographEnvironment } from './IsographEnvironment';
|
|
7
7
|
import { AnyError, PromiseWrapper } from './PromiseWrapper';
|
|
8
8
|
export declare function maybeMakeNetworkRequest<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue, TNormalizationAst extends NormalizationAst | NormalizationAstLoader, TRawResponseType extends NetworkResponseObject>(environment: IsographEnvironment, artifact: RefetchQueryNormalizationArtifact | IsographEntrypoint<TReadFromStore, TClientFieldValue, TNormalizationAst, TRawResponseType>, variables: ExtractParameters<TReadFromStore>, readerWithRefetchQueries: PromiseWrapper<ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>> | null, fetchOptions: FetchOptions<TClientFieldValue, TRawResponseType> | null): ItemCleanupPair<PromiseWrapper<void, AnyError>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeNetworkRequest.d.ts","sourceRoot":"","sources":["../../src/core/makeNetworkRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"makeNetworkRequest.d.ts","sourceRoot":"","sources":["../../src/core/makeNetworkRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAqC,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1E,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,iCAAiC,EAClC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,iBAAiB,EAEjB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAE,mBAAmB,EAAsB,MAAM,uBAAuB,CAAC;AAShF,OAAO,EACL,QAAQ,EACR,cAAc,EAGf,MAAM,kBAAkB,CAAC;AAO1B,wBAAgB,uBAAuB,CACrC,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,EACjB,iBAAiB,SAAS,gBAAgB,GAAG,sBAAsB,EACnE,gBAAgB,SAAS,qBAAqB,EAE9C,WAAW,EAAE,mBAAmB,EAChC,QAAQ,EACJ,iCAAiC,GACjC,kBAAkB,CAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,CACjB,EACL,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,wBAAwB,EAAE,cAAc,CACtC,wBAAwB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAC5D,GAAG,IAAI,EACR,YAAY,EAAE,YAAY,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,IAAI,GACrE,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAuDjD;AAED,wBAAgB,sCAAsC,CACpD,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,EACjB,gBAAgB,SAAS,qBAAqB,EAE9C,WAAW,EAAE,mBAAmB,EAChC,QAAQ,EACJ,iCAAiC,GACjC,kBAAkB,CAChB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,GAAG,sBAAsB,EACzC,gBAAgB,CACjB,EACL,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAC3C,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAmBjD;AAED,wBAAgB,kBAAkB,CAChC,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,EACjB,iBAAiB,SAAS,gBAAgB,GAAG,sBAAsB,EACnE,gBAAgB,SAAS,qBAAqB,EAE9C,WAAW,EAAE,mBAAmB,EAChC,QAAQ,EACJ,iCAAiC,GACjC,kBAAkB,CAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,CACjB,EACL,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,wBAAwB,EAAE,cAAc,CACtC,wBAAwB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAC5D,GAAG,IAAI,EACR,YAAY,EAAE,YAAY,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,IAAI,GACrE,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAiKjD"}
|
|
@@ -13,6 +13,7 @@ const optimisticProxy_1 = require("./optimisticProxy");
|
|
|
13
13
|
const PromiseWrapper_1 = require("./PromiseWrapper");
|
|
14
14
|
const read_1 = require("./read");
|
|
15
15
|
const startUpdate_1 = require("./startUpdate");
|
|
16
|
+
const subscribe_1 = require("./subscribe");
|
|
16
17
|
let networkRequestId = 0;
|
|
17
18
|
function maybeMakeNetworkRequest(environment, artifact, variables, readerWithRefetchQueries, fetchOptions) {
|
|
18
19
|
var _a;
|
|
@@ -113,7 +114,7 @@ function makeNetworkRequest(environment, artifact, variables, readerWithRefetchQ
|
|
|
113
114
|
store: environment.store,
|
|
114
115
|
encounteredIds: encounteredIds,
|
|
115
116
|
}));
|
|
116
|
-
(0,
|
|
117
|
+
(0, subscribe_1.callSubscriptions)(environment, encounteredIds);
|
|
117
118
|
status = {
|
|
118
119
|
kind: 'UndisposedComplete',
|
|
119
120
|
retainedQuery: status.retainedQuery,
|
|
@@ -257,7 +258,7 @@ function makeOptimisticUpdate(environment, artifact, variables, optimisticNetwor
|
|
|
257
258
|
store: environment.store,
|
|
258
259
|
encounteredIds: encounteredIds,
|
|
259
260
|
}));
|
|
260
|
-
(0,
|
|
261
|
+
(0, subscribe_1.callSubscriptions)(environment, encounteredIds);
|
|
261
262
|
return optimistic;
|
|
262
263
|
}
|
|
263
264
|
function revertOptimisticStoreLayerAndMaybeReplaceIfUndisposedIncomplete(environment, status, normalizeData) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimisticProxy.d.ts","sourceRoot":"","sources":["../../src/core/optimisticProxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"optimisticProxy.d.ts","sourceRoot":"","sources":["../../src/core/optimisticProxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ exports.addOptimisticUpdaterStoreLayer = addOptimisticUpdaterStoreLayer;
|
|
|
9
9
|
exports.addOptimisticNetworkResponseStoreLayer = addOptimisticNetworkResponseStoreLayer;
|
|
10
10
|
exports.revertOptimisticStoreLayerAndMaybeReplace = revertOptimisticStoreLayerAndMaybeReplace;
|
|
11
11
|
const cache_1 = require("./cache");
|
|
12
|
+
const subscribe_1 = require("./subscribe");
|
|
12
13
|
function getOrInsertRecord(dataLayer, link) {
|
|
13
14
|
var _a, _b;
|
|
14
15
|
var _c, _d;
|
|
@@ -23,15 +24,16 @@ function getOrInsertRecord(dataLayer, link) {
|
|
|
23
24
|
function getStoreRecordProxy(storeLayer, link) {
|
|
24
25
|
var _a;
|
|
25
26
|
let startNode = storeLayer;
|
|
26
|
-
while (startNode
|
|
27
|
+
while (startNode != null) {
|
|
27
28
|
const storeRecord = (_a = startNode.data[link.__typename]) === null || _a === void 0 ? void 0 : _a[link.__link];
|
|
28
|
-
if (storeRecord ===
|
|
29
|
-
|
|
29
|
+
if (storeRecord === undefined) {
|
|
30
|
+
startNode = startNode.parentStoreLayer;
|
|
31
|
+
continue;
|
|
30
32
|
}
|
|
31
|
-
if (storeRecord
|
|
32
|
-
return
|
|
33
|
+
if (storeRecord == null) {
|
|
34
|
+
return null;
|
|
33
35
|
}
|
|
34
|
-
startNode
|
|
36
|
+
return getMutableStoreRecordProxy(startNode, link);
|
|
35
37
|
}
|
|
36
38
|
return undefined;
|
|
37
39
|
}
|
|
@@ -40,12 +42,12 @@ function getMutableStoreRecordProxy(childMostStoreLayer, link) {
|
|
|
40
42
|
get(_, propertyName) {
|
|
41
43
|
var _a;
|
|
42
44
|
let currentStoreLayer = childMostStoreLayer;
|
|
43
|
-
while (currentStoreLayer
|
|
45
|
+
while (currentStoreLayer != null) {
|
|
44
46
|
const storeRecord = (_a = currentStoreLayer.data[link.__typename]) === null || _a === void 0 ? void 0 : _a[link.__link];
|
|
45
|
-
if (storeRecord
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
if (storeRecord !== undefined) {
|
|
48
|
+
if (storeRecord == null) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
49
51
|
const value = Reflect.get(storeRecord, propertyName);
|
|
50
52
|
if (value !== undefined) {
|
|
51
53
|
return value;
|
|
@@ -57,14 +59,14 @@ function getMutableStoreRecordProxy(childMostStoreLayer, link) {
|
|
|
57
59
|
has(_, propertyName) {
|
|
58
60
|
var _a;
|
|
59
61
|
let currentStoreLayer = childMostStoreLayer;
|
|
60
|
-
while (currentStoreLayer
|
|
62
|
+
while (currentStoreLayer != null) {
|
|
61
63
|
const storeRecord = (_a = currentStoreLayer.data[link.__typename]) === null || _a === void 0 ? void 0 : _a[link.__link];
|
|
62
|
-
if (storeRecord
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
if (storeRecord !== undefined) {
|
|
65
|
+
if (storeRecord == null) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
66
68
|
const value = Reflect.has(storeRecord, propertyName);
|
|
67
|
-
if (value
|
|
69
|
+
if (value) {
|
|
68
70
|
return true;
|
|
69
71
|
}
|
|
70
72
|
}
|
|
@@ -110,7 +112,7 @@ function mergeDataLayer(target, source) {
|
|
|
110
112
|
}
|
|
111
113
|
const targetRecordById = ((_a = target[typeName]) !== null && _a !== void 0 ? _a : (target[typeName] = {}));
|
|
112
114
|
for (const [id, sourceRecord] of Object.entries(sourceById)) {
|
|
113
|
-
if (sourceRecord
|
|
115
|
+
if (sourceRecord == null) {
|
|
114
116
|
targetRecordById[id] = null;
|
|
115
117
|
continue;
|
|
116
118
|
}
|
|
@@ -240,7 +242,7 @@ function reexecuteUpdatesAndMergeData(storeLayer,
|
|
|
240
242
|
oldMergedData,
|
|
241
243
|
// reflects whatever replaced the optimistic layer
|
|
242
244
|
newMergedData) {
|
|
243
|
-
while (storeLayer
|
|
245
|
+
while (storeLayer != null) {
|
|
244
246
|
mergeDataLayer(oldMergedData, storeLayer.data);
|
|
245
247
|
switch (storeLayer.kind) {
|
|
246
248
|
case 'OptimisticNetworkResponseStoreLayer':
|
|
@@ -273,7 +275,7 @@ newMergedData) {
|
|
|
273
275
|
*/
|
|
274
276
|
function setChildOfNode(environment, storeLayerToModify, newChildStoreLayer) {
|
|
275
277
|
storeLayerToModify.childStoreLayer = newChildStoreLayer;
|
|
276
|
-
if (newChildStoreLayer
|
|
278
|
+
if (newChildStoreLayer != null) {
|
|
277
279
|
newChildStoreLayer.parentStoreLayer = storeLayerToModify;
|
|
278
280
|
}
|
|
279
281
|
else {
|
|
@@ -302,7 +304,7 @@ function revertOptimisticStoreLayerAndMaybeReplace(environment, optimisticNode,
|
|
|
302
304
|
optimisticNode.data = {};
|
|
303
305
|
let newMergedData = {};
|
|
304
306
|
let childNode = optimisticNode.childStoreLayer;
|
|
305
|
-
if (normalizeData
|
|
307
|
+
if (normalizeData != null) {
|
|
306
308
|
const networkResponseStoreLayer = {
|
|
307
309
|
kind: 'NetworkResponseStoreLayer',
|
|
308
310
|
data: {},
|
|
@@ -363,7 +365,7 @@ function revertOptimisticStoreLayerAndMaybeReplace(environment, optimisticNode,
|
|
|
363
365
|
// the modified IDs, and re-execute subscriptions.
|
|
364
366
|
let encounteredIds = new Map();
|
|
365
367
|
compareData(oldMergedData, newMergedData, encounteredIds);
|
|
366
|
-
(0,
|
|
368
|
+
(0, subscribe_1.callSubscriptions)(environment, encounteredIds);
|
|
367
369
|
}
|
|
368
370
|
function compareData(oldData, newData, encounteredIds) {
|
|
369
371
|
var _a;
|
package/dist/core/read.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type EncounteredIds } from './cache';
|
|
2
|
-
import { RefetchQueryNormalizationArtifactWrapper } from './entrypoint';
|
|
3
|
-
import { ExtractData, FragmentReference,
|
|
2
|
+
import type { RefetchQueryNormalizationArtifactWrapper } from './entrypoint';
|
|
3
|
+
import type { ExtractData, FragmentReference, UnknownTReadFromStore, Variables } from './FragmentReference';
|
|
4
4
|
import { IsographEnvironment, type DataTypeValue, type StoreLink, type StoreRecord } from './IsographEnvironment';
|
|
5
5
|
import { PromiseWrapper } from './PromiseWrapper';
|
|
6
|
-
import {
|
|
6
|
+
import type { LoadablySelectedField, ReaderAst, ReaderClientPointer, ReaderImperativelyLoadedField, ReaderLinkedField, ReaderNonLoadableResolverField, ReaderScalarField } from './reader';
|
|
7
7
|
export type WithEncounteredRecords<T> = {
|
|
8
8
|
readonly encounteredRecords: EncounteredIds;
|
|
9
9
|
readonly item: ExtractData<T>;
|
package/dist/core/read.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/core/read.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/core/read.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,KAAK,EAGV,wCAAwC,EACzC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,SAAS,EACV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAIL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAGL,cAAc,EAIf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,qBAAqB,EACrB,SAAS,EACT,mBAAmB,EACnB,6BAA6B,EAC7B,iBAAiB,EACjB,8BAA8B,EAC9B,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;IACtC,QAAQ,CAAC,kBAAkB,EAAE,cAAc,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CAC/B,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,cAAc,SAAS,qBAAqB,EAE5C,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,GACjD,sBAAsB,CAAC,cAAc,CAAC,CA+DxC;AAED,MAAM,MAAM,qBAAqB,CAAC,IAAI,IAAI;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,IAAI,IAC3B,qBAAqB,CAAC,IAAI,CAAC,GAC3B;IACE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;CAChC,CAAC;AA+IN,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,mBAAmB,EAChC,KAAK,EAAE,qBAAqB,EAC5B,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,EACzC,qBAAqB,EAAE,2BAA2B,EAClD,yBAAyB,EAAE,cAAc,GACxC,cAAc,CAAC,OAAO,CAAC,CAoKzB;AAoFD,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,mBAAmB,EAChC,KAAK,EAAE,8BAA8B,EACrC,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,wCAAwC,EAAE,EAChE,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,EACzC,qBAAqB,EAAE,2BAA2B,EAClD,yBAAyB,EAAE,cAAc,GACxC,cAAc,CAAC,OAAO,CAAC,CAgFzB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,GACnB,cAAc,CACf,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,aAAa,EAAE,GAAG,IAAI,CACxE,CAaA;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,mBAAmB,EAChC,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,wCAAwC,EAAE,EAChE,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,EACzC,qBAAqB,EAAE,2BAA2B,EAClD,QAAQ,EAAE,CAAC,cAAc,EACvB,GAAG,EAAE,SAAS,CAAC,cAAc,CAAC,EAC9B,IAAI,EAAE,SAAS,KACZ,cAAc,CAAC,MAAM,CAAC,GAC1B,cAAc,CAAC,OAAO,CAAC,CAyMzB;AAQD,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,mBAAmB,EAChC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,wCAAwC,EAAE,EAChE,QAAQ,EAAE,CAAC,cAAc,EACvB,GAAG,EAAE,SAAS,CAAC,cAAc,CAAC,EAC9B,IAAI,EAAE,SAAS,KACZ,cAAc,CAAC,MAAM,CAAC,GAC1B,cAAc,CAAC,OAAO,CAAC,CAoGzB;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,wBAAgB,oCAAoC,CAClD,qBAAqB,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAAG,IAAI,GAClE,2BAA2B,CAK7B;AAiBD,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,mBAAmB,EAChC,KAAK,EAAE,6BAA6B,EACpC,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,wCAAwC,EAAE,EAChE,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,EACzC,qBAAqB,EAAE,2BAA2B,EAClD,yBAAyB,EAAE,cAAc,GACxC,cAAc,CAAC,OAAO,CAAC,CAuDzB"}
|
package/dist/core/read.js
CHANGED
|
@@ -75,7 +75,7 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
|
75
75
|
recordLink: root,
|
|
76
76
|
};
|
|
77
77
|
}
|
|
78
|
-
if (storeRecord
|
|
78
|
+
if (storeRecord == null) {
|
|
79
79
|
return {
|
|
80
80
|
kind: 'Success',
|
|
81
81
|
data: null,
|
|
@@ -435,7 +435,7 @@ function readLinkedFieldData(environment, field, storeRecord, root, variables, n
|
|
|
435
435
|
recordLink: root,
|
|
436
436
|
};
|
|
437
437
|
}
|
|
438
|
-
else if (link
|
|
438
|
+
else if (link == null) {
|
|
439
439
|
results.push(null);
|
|
440
440
|
continue;
|
|
441
441
|
}
|
|
@@ -507,7 +507,7 @@ function readLinkedFieldData(environment, field, storeRecord, root, variables, n
|
|
|
507
507
|
link = altLink;
|
|
508
508
|
}
|
|
509
509
|
}
|
|
510
|
-
else if (link
|
|
510
|
+
else if (link == null) {
|
|
511
511
|
return {
|
|
512
512
|
kind: 'Success',
|
|
513
513
|
data: null,
|
|
@@ -537,7 +537,7 @@ function readLinkedFieldData(environment, field, storeRecord, root, variables, n
|
|
|
537
537
|
return data;
|
|
538
538
|
}
|
|
539
539
|
function isClientPointer(field) {
|
|
540
|
-
return field.refetchQueryIndex
|
|
540
|
+
return field.refetchQueryIndex != null;
|
|
541
541
|
}
|
|
542
542
|
function readClientPointerData(environment, field, root, variables, nestedRefetchQueries, readData) {
|
|
543
543
|
const refetchReaderParams = readData([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startUpdate.d.ts","sourceRoot":"","sources":["../../src/core/startUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"startUpdate.d.ts","sourceRoot":"","sources":["../../src/core/startUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAML,KAAK,2BAA2B,EAEjC,MAAM,QAAQ,CAAC;AAIhB,wBAAgB,4BAA4B,CAC1C,cAAc,SAAS,qBAAqB,EAE5C,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,GACjD,kBAAkB,CAAC,cAAc,CAAC,CAQpC;AAED,wBAAgB,iBAAiB,CAAC,cAAc,SAAS,qBAAqB,EAC5E,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,GACjD,kBAAkB,CAAC,cAAc,CAAC,CAqCpC;AAED,wBAAgB,oBAAoB,CAClC,cAAc,SAAS,qBAAqB,EAE5C,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,EAClD,iBAAiB,EAAE,cAAc,GAChC,oBAAoB,CAAC,cAAc,CAAC,CAmBtC"}
|
package/dist/core/startUpdate.js
CHANGED
|
@@ -10,6 +10,7 @@ const logging_1 = require("./logging");
|
|
|
10
10
|
const optimisticProxy_1 = require("./optimisticProxy");
|
|
11
11
|
const PromiseWrapper_1 = require("./PromiseWrapper");
|
|
12
12
|
const read_1 = require("./read");
|
|
13
|
+
const subscribe_1 = require("./subscribe");
|
|
13
14
|
function getOrCreateCachedStartUpdate(environment, fragmentReference, networkRequestOptions) {
|
|
14
15
|
var _a;
|
|
15
16
|
var _b, _c;
|
|
@@ -37,7 +38,7 @@ function createStartUpdate(environment, fragmentReference, networkRequestOptions
|
|
|
37
38
|
kind: 'StartUpdateComplete',
|
|
38
39
|
updatedIds: mutableUpdatedIds,
|
|
39
40
|
}));
|
|
40
|
-
(0,
|
|
41
|
+
(0, subscribe_1.callSubscriptions)(environment, mutableUpdatedIds);
|
|
41
42
|
};
|
|
42
43
|
}
|
|
43
44
|
function createUpdatableProxy(environment, storeLayer, fragmentReference, networkRequestOptions, mutableUpdatedIds) {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { EncounteredIds } from './cache';
|
|
2
|
+
import type { FragmentReference, UnknownTReadFromStore } from './FragmentReference';
|
|
3
|
+
import type { IsographEnvironment } from './IsographEnvironment';
|
|
4
|
+
import { type WithEncounteredRecords } from './read';
|
|
5
|
+
import type { ReaderAst } from './reader';
|
|
6
|
+
export declare function subscribe<TReadFromStore extends UnknownTReadFromStore>(environment: IsographEnvironment, encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>, fragmentReference: FragmentReference<TReadFromStore, any>, callback: (newEncounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>) => void, readerAst: ReaderAst<TReadFromStore>): () => void;
|
|
7
|
+
export declare function callSubscriptions(environment: IsographEnvironment, recordsEncounteredWhenNormalizing: EncounteredIds): void;
|
|
8
|
+
//# sourceMappingURL=subscribe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../src/core/subscribe.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,KAAK,sBAAsB,EAAwB,MAAM,QAAQ,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,wBAAgB,SAAS,CAAC,cAAc,SAAS,qBAAqB,EACpE,WAAW,EAAE,mBAAmB,EAChC,yBAAyB,EAAE,sBAAsB,CAAC,cAAc,CAAC,EACjE,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,EACzD,QAAQ,EAAE,CACR,4BAA4B,EAAE,sBAAsB,CAAC,cAAc,CAAC,KACjE,IAAI,EACT,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,GACnC,MAAM,IAAI,CAiBZ;AAuBD,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,mBAAmB,EAChC,iCAAiC,EAAE,cAAc,QAkDlD"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.subscribe = subscribe;
|
|
4
|
+
exports.callSubscriptions = callSubscriptions;
|
|
5
|
+
const areEqualWithDeepComparison_1 = require("./areEqualWithDeepComparison");
|
|
6
|
+
const logging_1 = require("./logging");
|
|
7
|
+
const read_1 = require("./read");
|
|
8
|
+
function subscribe(environment, encounteredDataAndRecords, fragmentReference, callback, readerAst) {
|
|
9
|
+
const fragmentSubscription = {
|
|
10
|
+
kind: 'FragmentSubscription',
|
|
11
|
+
callback,
|
|
12
|
+
encounteredDataAndRecords,
|
|
13
|
+
fragmentReference,
|
|
14
|
+
readerAst,
|
|
15
|
+
};
|
|
16
|
+
// subscribe is called in an effect. (We should actually subscribe during the
|
|
17
|
+
// initial render.) Because it's called in an effect, we might have missed some
|
|
18
|
+
// changes since the initial render! So, at this point, we re-read and call the
|
|
19
|
+
// subscription (i.e. re-render) if the fragment data has changed.
|
|
20
|
+
callSubscriptionIfDataChanged(environment, fragmentSubscription);
|
|
21
|
+
environment.subscriptions.add(fragmentSubscription);
|
|
22
|
+
return () => environment.subscriptions.delete(fragmentSubscription);
|
|
23
|
+
}
|
|
24
|
+
// Calls to readButDoNotEvaluate can suspend (i.e. throw a promise).
|
|
25
|
+
// Maybe in the future, they will be able to throw errors.
|
|
26
|
+
//
|
|
27
|
+
// That's probably okay to ignore. We don't, however, want to prevent
|
|
28
|
+
// updating other subscriptions if one subscription had missing data.
|
|
29
|
+
function logAnyError(environment, context, f) {
|
|
30
|
+
try {
|
|
31
|
+
f();
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
(0, logging_1.logMessage)(environment, () => ({
|
|
35
|
+
kind: 'ErrorEncounteredInWithErrorHandling',
|
|
36
|
+
error: e,
|
|
37
|
+
context,
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function callSubscriptions(environment, recordsEncounteredWhenNormalizing) {
|
|
42
|
+
environment.subscriptions.forEach((subscription) => logAnyError(environment, { situation: 'calling subscriptions' }, () => {
|
|
43
|
+
var _a;
|
|
44
|
+
switch (subscription.kind) {
|
|
45
|
+
case 'FragmentSubscription': {
|
|
46
|
+
// TODO if there are multiple components subscribed to the same
|
|
47
|
+
// fragment, we will call readButNotEvaluate multiple times. We
|
|
48
|
+
// should fix that.
|
|
49
|
+
if (hasOverlappingIds(recordsEncounteredWhenNormalizing, subscription.encounteredDataAndRecords.encounteredRecords)) {
|
|
50
|
+
callSubscriptionIfDataChanged(environment, subscription);
|
|
51
|
+
}
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
case 'AnyRecords': {
|
|
55
|
+
logAnyError(environment, { situation: 'calling AnyRecords callback' }, () => subscription.callback());
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
case 'AnyChangesToRecord': {
|
|
59
|
+
if (((_a = recordsEncounteredWhenNormalizing
|
|
60
|
+
.get(subscription.recordLink.__typename)) === null || _a === void 0 ? void 0 : _a.has(subscription.recordLink.__link)) != null) {
|
|
61
|
+
logAnyError(environment, { situation: 'calling AnyChangesToRecord callback' }, () => subscription.callback());
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
default: {
|
|
66
|
+
// Ensure we have covered all variants
|
|
67
|
+
const _ = subscription;
|
|
68
|
+
_;
|
|
69
|
+
throw new Error('Unexpected case');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
function callSubscriptionIfDataChanged(environment, subscription) {
|
|
75
|
+
const newEncounteredDataAndRecords = (0, read_1.readButDoNotEvaluate)(environment, subscription.fragmentReference,
|
|
76
|
+
// Is this wrong?
|
|
77
|
+
// Reasons to think no:
|
|
78
|
+
// - we are only updating the read-out value, and the network
|
|
79
|
+
// options only affect whether we throw.
|
|
80
|
+
// - the component will re-render, and re-throw on its own, anyway.
|
|
81
|
+
//
|
|
82
|
+
// Reasons to think not:
|
|
83
|
+
// - it seems more efficient to suspend here and not update state,
|
|
84
|
+
// if we expect that the component will just throw anyway
|
|
85
|
+
// - consistency
|
|
86
|
+
// - it's also weird, this is called from makeNetworkRequest, where
|
|
87
|
+
// we don't currently pass network request options
|
|
88
|
+
{
|
|
89
|
+
suspendIfInFlight: false,
|
|
90
|
+
throwOnNetworkError: false,
|
|
91
|
+
});
|
|
92
|
+
const mergedItem = (0, areEqualWithDeepComparison_1.mergeObjectsUsingReaderAst)(subscription.readerAst, subscription.encounteredDataAndRecords.item, newEncounteredDataAndRecords.item);
|
|
93
|
+
(0, logging_1.logMessage)(environment, () => ({
|
|
94
|
+
kind: 'DeepEqualityCheck',
|
|
95
|
+
fragmentReference: subscription.fragmentReference,
|
|
96
|
+
old: subscription.encounteredDataAndRecords.item,
|
|
97
|
+
new: newEncounteredDataAndRecords.item,
|
|
98
|
+
deeplyEqual: mergedItem === subscription.encounteredDataAndRecords.item,
|
|
99
|
+
}));
|
|
100
|
+
if (mergedItem !== subscription.encounteredDataAndRecords.item) {
|
|
101
|
+
logAnyError(environment, { situation: 'calling FragmentSubscription callback' }, () => {
|
|
102
|
+
subscription.callback(newEncounteredDataAndRecords);
|
|
103
|
+
});
|
|
104
|
+
subscription.encounteredDataAndRecords = newEncounteredDataAndRecords;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function hasOverlappingIds(ids1, ids2) {
|
|
108
|
+
for (const [typeName, set1] of ids1.entries()) {
|
|
109
|
+
const set2 = ids2.get(typeName);
|
|
110
|
+
if (set2 === undefined) {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
if (isNotDisjointFrom(set1, set2)) {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
// TODO use a polyfill library
|
|
120
|
+
function isNotDisjointFrom(set1, set2) {
|
|
121
|
+
for (const id of set1) {
|
|
122
|
+
if (set2.has(id)) {
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return false;
|
|
127
|
+
}
|