@isograph/react 0.0.0-main-1ae3a60f → 0.0.0-main-16d04ff2
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-typescript.log +1 -1
- package/dist/core/FragmentReference.d.ts +2 -1
- package/dist/core/FragmentReference.d.ts.map +1 -1
- package/dist/core/FragmentReference.js +3 -12
- package/dist/core/IsographEnvironment.d.ts +6 -9
- package/dist/core/IsographEnvironment.d.ts.map +1 -1
- package/dist/core/IsographEnvironment.js +1 -0
- package/dist/core/componentCache.d.ts.map +1 -1
- package/dist/core/componentCache.js +7 -12
- package/dist/core/makeNetworkRequest.js +2 -2
- package/dist/core/read.d.ts.map +1 -1
- package/dist/core/read.js +36 -13
- package/dist/core/reader.d.ts +2 -1
- package/dist/core/reader.d.ts.map +1 -1
- package/dist/core/startUpdate.d.ts +3 -2
- package/dist/core/startUpdate.d.ts.map +1 -1
- package/dist/core/startUpdate.js +12 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useConnectionSpecPagination.js +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.js +1 -1
- package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
- package/dist/react/useReadAndSubscribe.js +5 -1
- package/dist/react/useResult.d.ts.map +1 -1
- package/dist/react/useResult.js +2 -2
- package/package.json +4 -4
- package/src/core/FragmentReference.ts +6 -12
- package/src/core/IsographEnvironment.ts +8 -6
- package/src/core/componentCache.ts +11 -18
- package/src/core/makeNetworkRequest.ts +7 -3
- package/src/core/read.ts +56 -15
- package/src/core/reader.ts +2 -1
- package/src/core/startUpdate.ts +22 -7
- package/src/index.ts +2 -1
- package/src/loadable-hooks/useConnectionSpecPagination.ts +6 -2
- package/src/loadable-hooks/useSkipLimitPagination.ts +6 -2
- package/src/react/useReadAndSubscribe.ts +10 -3
- package/src/react/useResult.ts +7 -3
- package/src/tests/__isograph/Query/meName/resolver_reader.ts +1 -0
- package/src/tests/__isograph/Query/meNameSuccessor/resolver_reader.ts +1 -0
- package/src/tests/__isograph/Query/nodeField/resolver_reader.ts +1 -0
- package/src/tests/__isograph/Query/subquery/resolver_reader.ts +1 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @isograph/react@0.0.0-main-
|
|
2
|
+
> @isograph/react@0.0.0-main-16d04ff2 compile-typescript /Users/runner/work/isograph/isograph/libs/isograph-react
|
|
3
3
|
> rm -rf dist/* && tsc -p tsconfig.pkg.json
|
|
4
4
|
|
|
@@ -27,5 +27,6 @@ export type FragmentReference<TReadFromStore extends UnknownTReadFromStore, TCli
|
|
|
27
27
|
readonly variables: ExtractParameters<TReadFromStore>;
|
|
28
28
|
readonly networkRequest: PromiseWrapper<void, any>;
|
|
29
29
|
};
|
|
30
|
-
export
|
|
30
|
+
export type StableIdForFragmentReference = string;
|
|
31
|
+
export declare function stableIdForFragmentReference(fragmentReference: FragmentReference<any, any>, fieldName: string): StableIdForFragmentReference;
|
|
31
32
|
//# sourceMappingURL=FragmentReference.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FragmentReference.d.ts","sourceRoot":"","sources":["../../src/core/FragmentReference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"FragmentReference.d.ts","sourceRoot":"","sources":["../../src/core/FragmentReference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC;AAEtE,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS;IACrC,IAAI,EAAE,MAAM,CAAC,SAAS,MAAM,CAAC;CAC9B,GACG,CAAC,GACD,KAAK,CAAC;AAEV,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS;IAC3C,UAAU,EAAE,MAAM,CAAC,SAAS,SAAS,CAAC;CACvC,GACG,CAAC,GACD,SAAS,CAAC;AAEd,MAAM,MAAM,kBAAkB,CAC5B,CAAC,SAAS;IACR,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnC,IACC,CAAC,CAAC,aAAa,CAAC,CAAC;AAErB,MAAM,MAAM,iBAAiB,CAC3B,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,IACf;IACF,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,wBAAwB,EAAE,cAAc,CAC/C,wBAAwB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAC5D,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACtD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAElD,wBAAgB,4BAA4B,CAC1C,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,EAC9C,SAAS,EAAE,MAAM,GAChB,4BAA4B,CAE9B"}
|
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.stableIdForFragmentReference = stableIdForFragmentReference;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return `${fragmentReference.root.__typename}/${fragmentReference.root.__link}
|
|
7
|
-
}
|
|
8
|
-
function serializeVariables(variables) {
|
|
9
|
-
let s = '';
|
|
10
|
-
const keys = Object.keys(variables);
|
|
11
|
-
keys.sort();
|
|
12
|
-
for (const key of keys) {
|
|
13
|
-
s += `${key}:${variables[key]},`;
|
|
14
|
-
}
|
|
15
|
-
return s;
|
|
4
|
+
const cache_1 = require("./cache");
|
|
5
|
+
function stableIdForFragmentReference(fragmentReference, fieldName) {
|
|
6
|
+
return `${fragmentReference.root.__typename}/${fragmentReference.root.__link}/${fieldName}/${JSON.stringify((0, cache_1.stableCopy)(fragmentReference.variables))}`;
|
|
16
7
|
}
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
import { ParentCache } from '@isograph/react-disposable-state';
|
|
2
2
|
import { IsographEntrypoint } from './entrypoint';
|
|
3
|
-
import { FragmentReference, Variables, type UnknownTReadFromStore } from './FragmentReference';
|
|
3
|
+
import { FragmentReference, Variables, type StableIdForFragmentReference, type UnknownTReadFromStore } from './FragmentReference';
|
|
4
4
|
import { RetainedQuery } from './garbageCollection';
|
|
5
5
|
import { LogFunction, WrappedLogFunction } from './logging';
|
|
6
6
|
import { PromiseWrapper } from './PromiseWrapper';
|
|
7
7
|
import { WithEncounteredRecords } from './read';
|
|
8
|
-
import type { ReaderAst } from './reader';
|
|
8
|
+
import type { ReaderAst, StartUpdate } from './reader';
|
|
9
9
|
export type ComponentOrFieldName = string;
|
|
10
10
|
export type StringifiedArgs = string;
|
|
11
|
-
export type
|
|
12
|
-
[key:
|
|
13
|
-
[key: ComponentOrFieldName]: {
|
|
14
|
-
[key: StringifiedArgs]: React.FC<any>;
|
|
15
|
-
};
|
|
16
|
-
};
|
|
11
|
+
export type FieldCache<T> = {
|
|
12
|
+
[key: StableIdForFragmentReference]: T;
|
|
17
13
|
};
|
|
18
14
|
export type FragmentSubscription<TReadFromStore extends UnknownTReadFromStore> = {
|
|
19
15
|
readonly kind: 'FragmentSubscription';
|
|
@@ -41,7 +37,8 @@ export type IsographEnvironment = {
|
|
|
41
37
|
readonly store: IsographStore;
|
|
42
38
|
readonly networkFunction: IsographNetworkFunction;
|
|
43
39
|
readonly missingFieldHandler: MissingFieldHandler | null;
|
|
44
|
-
readonly componentCache:
|
|
40
|
+
readonly componentCache: FieldCache<React.FC<any>>;
|
|
41
|
+
readonly eagerReaderCache: FieldCache<StartUpdate<any> | undefined>;
|
|
45
42
|
readonly subscriptions: Subscriptions;
|
|
46
43
|
readonly fragmentCache: CacheMap<FragmentReference<any, any>>;
|
|
47
44
|
readonly entrypointArtifactCache: Map<string, PromiseWrapper<IsographEntrypoint<any, any, any>>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IsographEnvironment.d.ts","sourceRoot":"","sources":["../../src/core/IsographEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAe,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"IsographEnvironment.d.ts","sourceRoot":"","sources":["../../src/core/IsographEnvironment.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ function createIsographEnvironment(store, networkFunction, missingFieldHandler,
|
|
|
18
18
|
networkFunction,
|
|
19
19
|
missingFieldHandler: missingFieldHandler !== null && missingFieldHandler !== void 0 ? missingFieldHandler : null,
|
|
20
20
|
componentCache: {},
|
|
21
|
+
eagerReaderCache: {},
|
|
21
22
|
subscriptions: new Set(),
|
|
22
23
|
fragmentCache: {},
|
|
23
24
|
entrypointArtifactCache: new Map(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentCache.d.ts","sourceRoot":"","sources":["../../src/core/componentCache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"componentCache.d.ts","sourceRoot":"","sources":["../../src/core/componentCache.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAGrD,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,EAC9C,qBAAqB,EAAE,2BAA2B,GACjD,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAsCf"}
|
|
@@ -2,21 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getOrCreateCachedComponent = getOrCreateCachedComponent;
|
|
4
4
|
const useReadAndSubscribe_1 = require("../react/useReadAndSubscribe");
|
|
5
|
-
const
|
|
5
|
+
const FragmentReference_1 = require("./FragmentReference");
|
|
6
6
|
const logging_1 = require("./logging");
|
|
7
7
|
const PromiseWrapper_1 = require("./PromiseWrapper");
|
|
8
8
|
const startUpdate_1 = require("./startUpdate");
|
|
9
9
|
function getOrCreateCachedComponent(environment, componentName, fragmentReference, networkRequestOptions) {
|
|
10
|
-
var _a
|
|
11
|
-
|
|
12
|
-
//
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const recordLink = fragmentReference.root.__link;
|
|
16
|
-
const componentsByName = ((_a = cachedComponentsById[recordLink]) !== null && _a !== void 0 ? _a : (cachedComponentsById[recordLink] = {}));
|
|
17
|
-
const byArgs = ((_b = componentsByName[componentName]) !== null && _b !== void 0 ? _b : (componentsByName[componentName] = {}));
|
|
18
|
-
const stringifiedArgs = JSON.stringify((0, cache_1.stableCopy)(fragmentReference.variables));
|
|
19
|
-
return ((_c = byArgs[stringifiedArgs]) !== null && _c !== void 0 ? _c : (byArgs[stringifiedArgs] = (() => {
|
|
10
|
+
var _a;
|
|
11
|
+
var _b, _c;
|
|
12
|
+
// We create startUpdate outside of component to make it stable
|
|
13
|
+
const startUpdate = (0, startUpdate_1.createStartUpdate)(environment, fragmentReference);
|
|
14
|
+
return ((_a = (_b = environment.componentCache)[_c = (0, FragmentReference_1.stableIdForFragmentReference)(fragmentReference, componentName)]) !== null && _a !== void 0 ? _a : (_b[_c] = (() => {
|
|
20
15
|
function Component(additionalRuntimeProps) {
|
|
21
16
|
const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
|
|
22
17
|
const data = (0, useReadAndSubscribe_1.useReadAndSubscribe)(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst);
|
|
@@ -29,7 +24,7 @@ function getOrCreateCachedComponent(environment, componentName, fragmentReferenc
|
|
|
29
24
|
data,
|
|
30
25
|
parameters: fragmentReference.variables,
|
|
31
26
|
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
|
|
32
|
-
?
|
|
27
|
+
? startUpdate
|
|
33
28
|
: undefined,
|
|
34
29
|
}, additionalRuntimeProps);
|
|
35
30
|
}
|
|
@@ -173,7 +173,7 @@ function readDataForOnComplete(artifact, environment, root, variables) {
|
|
|
173
173
|
// @ts-expect-error We should find a way to encode this in the type system:
|
|
174
174
|
// if we have a ComponentReaderArtifact, we will necessarily have a
|
|
175
175
|
// TClientFieldValue which is a React.FC<...>
|
|
176
|
-
return (0, componentCache_1.getOrCreateCachedComponent)(environment, readerArtifact.
|
|
176
|
+
return (0, componentCache_1.getOrCreateCachedComponent)(environment, readerArtifact.fieldName, {
|
|
177
177
|
kind: 'FragmentReference',
|
|
178
178
|
readerWithRefetchQueries: (0, PromiseWrapper_1.wrapResolvedValue)({
|
|
179
179
|
kind: 'ReaderWithRefetchQueries',
|
|
@@ -190,7 +190,7 @@ function readDataForOnComplete(artifact, environment, root, variables) {
|
|
|
190
190
|
data: fragmentResult,
|
|
191
191
|
parameters: variables,
|
|
192
192
|
startUpdate: readerArtifact.hasUpdatable
|
|
193
|
-
? (0, startUpdate_1.
|
|
193
|
+
? (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragment, artifact.readerWithRefetchQueries.readerArtifact.fieldName)
|
|
194
194
|
: undefined,
|
|
195
195
|
});
|
|
196
196
|
}
|
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;
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/core/read.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAQjB,OAAO,EACL,WAAW,EAEX,iBAAiB,EAEjB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGL,mBAAmB,EACnB,KAAK,IAAI,EACV,MAAM,uBAAuB,CAAC;AAe/B,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,CAiExC;AAED,MAAM,MAAM,cAAc,CAAC,cAAc,IACrC;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,CAAC,kBAAkB,EAAE,cAAc,CAAC;CAC7C,GACD;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,IAAI,CAAC;CAC3B,CAAC;AA4nBN,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"}
|
package/dist/core/read.js
CHANGED
|
@@ -152,11 +152,30 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
|
152
152
|
recordLink: data.recordLink,
|
|
153
153
|
};
|
|
154
154
|
}
|
|
155
|
+
const readerWithRefetchQueries = {
|
|
156
|
+
kind: 'ReaderWithRefetchQueries',
|
|
157
|
+
readerArtifact: field.condition,
|
|
158
|
+
// TODO this is wrong
|
|
159
|
+
// should map field.condition.usedRefetchQueries
|
|
160
|
+
// but it doesn't exist
|
|
161
|
+
nestedRefetchQueries: [],
|
|
162
|
+
};
|
|
163
|
+
const fragment = {
|
|
164
|
+
kind: 'FragmentReference',
|
|
165
|
+
readerWithRefetchQueries: (0, PromiseWrapper_1.wrapResolvedValue)(readerWithRefetchQueries),
|
|
166
|
+
root,
|
|
167
|
+
variables: generateChildVariableMap(variables,
|
|
168
|
+
// TODO this is wrong
|
|
169
|
+
// should use field.condition.variables
|
|
170
|
+
// but it doesn't exist
|
|
171
|
+
[]),
|
|
172
|
+
networkRequest,
|
|
173
|
+
};
|
|
155
174
|
const condition = field.condition.resolver({
|
|
156
175
|
data: data.data,
|
|
157
176
|
parameters: {},
|
|
158
177
|
startUpdate: field.condition.hasUpdatable
|
|
159
|
-
? (0, startUpdate_1.
|
|
178
|
+
? (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragment, readerWithRefetchQueries.readerArtifact.fieldName)
|
|
160
179
|
: undefined,
|
|
161
180
|
});
|
|
162
181
|
if (condition === true) {
|
|
@@ -261,6 +280,18 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
|
261
280
|
}
|
|
262
281
|
return resolverRefetchQuery;
|
|
263
282
|
});
|
|
283
|
+
const readerWithRefetchQueries = {
|
|
284
|
+
kind: 'ReaderWithRefetchQueries',
|
|
285
|
+
readerArtifact: field.readerArtifact,
|
|
286
|
+
nestedRefetchQueries: resolverRefetchQueries,
|
|
287
|
+
};
|
|
288
|
+
const fragment = {
|
|
289
|
+
kind: 'FragmentReference',
|
|
290
|
+
readerWithRefetchQueries: (0, PromiseWrapper_1.wrapResolvedValue)(readerWithRefetchQueries),
|
|
291
|
+
root,
|
|
292
|
+
variables: generateChildVariableMap(variables, field.arguments),
|
|
293
|
+
networkRequest,
|
|
294
|
+
};
|
|
264
295
|
switch (field.readerArtifact.kind) {
|
|
265
296
|
case 'EagerReaderArtifact': {
|
|
266
297
|
const data = readData(environment, field.readerArtifact.readerAst, root, generateChildVariableMap(variables, field.arguments), resolverRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
|
|
@@ -276,7 +307,9 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
|
276
307
|
const firstParameter = {
|
|
277
308
|
data: data.data,
|
|
278
309
|
parameters: variables,
|
|
279
|
-
startUpdate:
|
|
310
|
+
startUpdate: field.readerArtifact.hasUpdatable
|
|
311
|
+
? (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragment, readerWithRefetchQueries.readerArtifact.fieldName)
|
|
312
|
+
: undefined,
|
|
280
313
|
};
|
|
281
314
|
target[field.alias] =
|
|
282
315
|
field.readerArtifact.resolver(firstParameter);
|
|
@@ -284,17 +317,7 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, netwo
|
|
|
284
317
|
break;
|
|
285
318
|
}
|
|
286
319
|
case 'ComponentReaderArtifact': {
|
|
287
|
-
target[field.alias] = (0, componentCache_1.getOrCreateCachedComponent)(environment, field.readerArtifact.
|
|
288
|
-
kind: 'FragmentReference',
|
|
289
|
-
readerWithRefetchQueries: (0, PromiseWrapper_1.wrapResolvedValue)({
|
|
290
|
-
kind: 'ReaderWithRefetchQueries',
|
|
291
|
-
readerArtifact: field.readerArtifact,
|
|
292
|
-
nestedRefetchQueries: resolverRefetchQueries,
|
|
293
|
-
}),
|
|
294
|
-
root,
|
|
295
|
-
variables: generateChildVariableMap(variables, field.arguments),
|
|
296
|
-
networkRequest,
|
|
297
|
-
}, networkRequestOptions);
|
|
320
|
+
target[field.alias] = (0, componentCache_1.getOrCreateCachedComponent)(environment, field.readerArtifact.fieldName, fragment, networkRequestOptions);
|
|
298
321
|
break;
|
|
299
322
|
}
|
|
300
323
|
default: {
|
package/dist/core/reader.d.ts
CHANGED
|
@@ -7,13 +7,14 @@ import { Arguments } from './util';
|
|
|
7
7
|
export type TopLevelReaderArtifact<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue, TComponentProps extends Record<PropertyKey, never>> = EagerReaderArtifact<TReadFromStore, TClientFieldValue> | ComponentReaderArtifact<TReadFromStore, TComponentProps>;
|
|
8
8
|
export type EagerReaderArtifact<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue> = {
|
|
9
9
|
readonly kind: 'EagerReaderArtifact';
|
|
10
|
+
readonly fieldName: string;
|
|
10
11
|
readonly readerAst: ReaderAst<TReadFromStore>;
|
|
11
12
|
readonly resolver: (data: ResolverFirstParameter<TReadFromStore>) => TClientFieldValue;
|
|
12
13
|
readonly hasUpdatable: boolean;
|
|
13
14
|
};
|
|
14
15
|
export type ComponentReaderArtifact<TReadFromStore extends UnknownTReadFromStore, TComponentProps extends Record<string, unknown> = Record<PropertyKey, never>> = {
|
|
15
16
|
readonly kind: 'ComponentReaderArtifact';
|
|
16
|
-
readonly
|
|
17
|
+
readonly fieldName: ComponentOrFieldName;
|
|
17
18
|
readonly readerAst: ReaderAst<TReadFromStore>;
|
|
18
19
|
readonly resolver: (data: ResolverFirstParameter<TReadFromStore>, runtimeProps: TComponentProps) => React.ReactNode;
|
|
19
20
|
readonly hasUpdatable: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/core/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,iCAAiC,EACjC,wCAAwC,EACzC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,IAAI,EACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,MAAM,sBAAsB,CAChC,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,EACjB,eAAe,SAAS,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,IAEhD,mBAAmB,CAAC,cAAc,EAAE,iBAAiB,CAAC,GACtD,uBAAuB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAE7D,MAAM,MAAM,mBAAmB,CAC7B,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,IACf;IACF,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,CACjB,IAAI,EAAE,sBAAsB,CAAC,cAAc,CAAC,KACzC,iBAAiB,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,uBAAuB,CACjC,cAAc,SAAS,qBAAqB,EAC5C,eAAe,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,IAC1E;IACF,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/core/reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { type ExtractStartUpdate, type FragmentReference, type UnknownTReadFromStore } from './FragmentReference';
|
|
2
2
|
import type { IsographEnvironment } from './IsographEnvironment';
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function getOrCreateCachedStartUpdate<TReadFromStore extends UnknownTReadFromStore>(environment: IsographEnvironment, fragmentReference: FragmentReference<TReadFromStore, any>, eagerResolverName: string): ExtractStartUpdate<TReadFromStore>;
|
|
4
|
+
export declare function createStartUpdate<TReadFromStore extends UnknownTReadFromStore>(_environment: IsographEnvironment, _fragmentReference: FragmentReference<TReadFromStore, any>): ExtractStartUpdate<TReadFromStore>;
|
|
4
5
|
//# sourceMappingURL=startUpdate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startUpdate.d.ts","sourceRoot":"","sources":["../../src/core/startUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"startUpdate.d.ts","sourceRoot":"","sources":["../../src/core/startUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,wBAAgB,4BAA4B,CAC1C,cAAc,SAAS,qBAAqB,EAE5C,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,EACzD,iBAAiB,EAAE,MAAM,GACxB,kBAAkB,CAAC,cAAc,CAAC,CAIpC;AAED,wBAAgB,iBAAiB,CAAC,cAAc,SAAS,qBAAqB,EAC5E,YAAY,EAAE,mBAAmB,EACjC,kBAAkB,EAAE,iBAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,GACzD,kBAAkB,CAAC,cAAc,CAAC,CAIpC"}
|
package/dist/core/startUpdate.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
exports.getOrCreateCachedStartUpdate = getOrCreateCachedStartUpdate;
|
|
4
|
+
exports.createStartUpdate = createStartUpdate;
|
|
5
|
+
const FragmentReference_1 = require("./FragmentReference");
|
|
6
|
+
function getOrCreateCachedStartUpdate(environment, fragmentReference, eagerResolverName) {
|
|
7
|
+
var _a;
|
|
8
|
+
var _b, _c;
|
|
9
|
+
return ((_a = (_b = environment.eagerReaderCache)[_c = (0, FragmentReference_1.stableIdForFragmentReference)(fragmentReference, eagerResolverName)]) !== null && _a !== void 0 ? _a : (_b[_c] = createStartUpdate(environment, fragmentReference)));
|
|
10
|
+
}
|
|
11
|
+
function createStartUpdate(_environment, _fragmentReference) {
|
|
12
|
+
return (_updater) => {
|
|
13
|
+
// TODO start update
|
|
14
|
+
};
|
|
6
15
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,12 +2,12 @@ export { retainQuery, unretainQuery, type RetainedQuery, garbageCollectEnvironme
|
|
|
2
2
|
export { type PromiseWrapper, readPromise, getPromiseState, wrapResolvedValue, wrapPromise, type PromiseState, type Result, type AnyError, type NotSet, NOT_SET, } from './core/PromiseWrapper';
|
|
3
3
|
export { subscribe, normalizeData, type NetworkResponseObject, type NetworkResponseValue, type NetworkResponseScalarValue, type EncounteredIds, } from './core/cache';
|
|
4
4
|
export { makeNetworkRequest } from './core/makeNetworkRequest';
|
|
5
|
-
export { ROOT_ID, type DataId, type DataTypeValue, type IsographEnvironment, type IsographNetworkFunction, type IsographStore, type MissingFieldHandler, type Link, type StoreRecord, type CacheMap, createIsographEnvironment, createIsographStore, type
|
|
5
|
+
export { ROOT_ID, type DataId, type DataTypeValue, type IsographEnvironment, type IsographNetworkFunction, type IsographStore, type MissingFieldHandler, type Link, type StoreRecord, type CacheMap, createIsographEnvironment, createIsographStore, type FieldCache, type Subscriptions, type Subscription, type TypeName, type FragmentSubscription, type AnyChangesToRecordSubscription, type AnyRecordSubscription, type ComponentOrFieldName, type StringifiedArgs, } from './core/IsographEnvironment';
|
|
6
6
|
export { type EagerReaderArtifact, type ComponentReaderArtifact, type RefetchReaderArtifact, type ReaderAst, type ReaderAstNode, type ReaderLinkedField, type ReaderNonLoadableResolverField, type ReaderScalarField, type TopLevelReaderArtifact, type LoadableField, type StableId, type ResolverFirstParameter, type ReaderImperativelyLoadedField, type ReaderLoadableField, type ReaderLinkField, type StartUpdate, } from './core/reader';
|
|
7
7
|
export { type NormalizationAst, type NormalizationAstNode, type NormalizationAstNodes, type NormalizationAstLoader, type NormalizationLinkedField, type NormalizationScalarField, type IsographEntrypoint, assertIsEntrypoint, type RefetchQueryNormalizationArtifact, type RefetchQueryNormalizationArtifactWrapper, type ExtractProps, type ExtractReadFromStore, type ExtractResolverResult, type NetworkRequestInfo, type NormalizationInlineFragment, type ReaderWithRefetchQueries, type IsographEntrypointLoader, } from './core/entrypoint';
|
|
8
8
|
export { readButDoNotEvaluate, type WithEncounteredRecords, type NetworkRequestReaderOptions, type ReadDataResult, } from './core/read';
|
|
9
9
|
export { type ExtractSecondParam, type CombineWithIntrinsicAttributes, type Argument, type ArgumentName, type ArgumentValue, type Arguments, } from './core/util';
|
|
10
|
-
export { type FragmentReference, type Variables, type ExtractParameters, type ExtractData, type UnknownTReadFromStore, stableIdForFragmentReference, type ExtractStartUpdate, type VariableValue, } from './core/FragmentReference';
|
|
10
|
+
export { type FragmentReference, type Variables, type ExtractParameters, type ExtractData, type UnknownTReadFromStore, stableIdForFragmentReference, type ExtractStartUpdate, type VariableValue, type StableIdForFragmentReference, } from './core/FragmentReference';
|
|
11
11
|
export { type LogMessage, type LogFunction, type WrappedLogFunction, logMessage, registerLogger, } from './core/logging';
|
|
12
12
|
export { check, type CheckResult, type FetchOptions, type RequiredFetchOptions, type ShouldFetch, type RequiredShouldFetch, } from './core/check';
|
|
13
13
|
export { IsographEnvironmentProvider, useIsographEnvironment, type IsographEnvironmentProviderProps, } from './react/IsographEnvironmentProvider';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,aAAa,EACb,KAAK,aAAa,EAClB,yBAAyB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,cAAc,EACnB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,OAAO,GACR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,SAAS,EACT,aAAa,EACb,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,OAAO,EACP,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,yBAAyB,EACzB,mBAAmB,EACnB,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,aAAa,EACb,KAAK,aAAa,EAClB,yBAAyB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,cAAc,EACnB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,OAAO,GACR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,SAAS,EACT,aAAa,EACb,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,OAAO,EACP,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,yBAAyB,EACzB,mBAAmB,EACnB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,8BAA8B,EACnC,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,WAAW,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,KAAK,iCAAiC,EACtC,KAAK,wCAAwC,EAC7C,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,oBAAoB,EACpB,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,8BAA8B,EACnC,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,4BAA4B,EAC5B,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,4BAA4B,GAClC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,UAAU,EACV,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,KAAK,gCAAgC,GACtC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,sBAAsB,EACtB,KAAK,4BAA4B,GAClC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,cAAc,EACd,KAAK,4BAA4B,GAClC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAEtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EACL,iCAAiC,EACjC,KAAK,gCAAgC,IAAI,uCAAuC,GACjF,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EACL,sBAAsB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,GAC7B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,2BAA2B,EAC3B,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,+BAA+B,EACpC,KAAK,wBAAwB,GAC9B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,0BAA0B,EAC1B,KAAK,gCAAgC,GACtC,MAAM,6CAA6C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useConnectionSpecPagination.d.ts","sourceRoot":"","sources":["../../src/loadable-hooks/useConnectionSpecPagination.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AAMnC,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAM/D,MAAM,MAAM,wBAAwB,CAClC,cAAc,SAAS,qBAAqB,EAC5C,KAAK,IAEH;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,EAAE,iBAAiB,CAAC,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;CAC/B,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,CACT,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAC3C,IAAI,CAAC;IACV,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAwBN,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAOF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,cAAc,SAAS,qBAAqB,EAC5C,KAAK,EAEL,aAAa,EAAE,aAAa,CAC1B,cAAc,EACd,UAAU,CAAC,KAAK,CAAC,EACjB,+BAA+B,CAChC,EACD,YAAY,CAAC,EAAE,QAAQ,GACtB,wBAAwB,CAAC,cAAc,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"useConnectionSpecPagination.d.ts","sourceRoot":"","sources":["../../src/loadable-hooks/useConnectionSpecPagination.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AAMnC,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAM/D,MAAM,MAAM,wBAAwB,CAClC,cAAc,SAAS,qBAAqB,EAC5C,KAAK,IAEH;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,EAAE,iBAAiB,CAAC,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;CAC/B,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,CACT,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAC3C,IAAI,CAAC;IACV,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAwBN,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAOF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,cAAc,SAAS,qBAAqB,EAC5C,KAAK,EAEL,aAAa,EAAE,aAAa,CAC1B,cAAc,EACd,UAAU,CAAC,KAAK,CAAC,EACjB,+BAA+B,CAChC,EACD,YAAY,CAAC,EAAE,QAAQ,GACtB,wBAAwB,CAAC,cAAc,EAAE,KAAK,CAAC,CAmPjD"}
|
|
@@ -44,7 +44,7 @@ function useConnectionSpecPagination(loadableField, initialState) {
|
|
|
44
44
|
data,
|
|
45
45
|
parameters: fragmentReference.variables,
|
|
46
46
|
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
|
|
47
|
-
? (0, startUpdate_1.
|
|
47
|
+
? (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragmentReference, readerWithRefetchQueries.readerArtifact.fieldName)
|
|
48
48
|
: undefined,
|
|
49
49
|
};
|
|
50
50
|
if (readerWithRefetchQueries.readerArtifact.kind !== 'EagerReaderArtifact') {
|
|
@@ -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;AAC7C,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AAMnC,OAAO,EAAE,aAAa,EAAkB,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,CAAC,KAC9C,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,
|
|
1
|
+
{"version":3,"file":"useSkipLimitPagination.d.ts","sourceRoot":"","sources":["../../src/loadable-hooks/useSkipLimitPagination.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AAMnC,OAAO,EAAE,aAAa,EAAkB,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,CAAC,KAC9C,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,CAyOhD"}
|
|
@@ -43,7 +43,7 @@ function useSkipLimitPagination(loadableField, initialState) {
|
|
|
43
43
|
data,
|
|
44
44
|
parameters: fragmentReference.variables,
|
|
45
45
|
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
|
|
46
|
-
? (0, startUpdate_1.
|
|
46
|
+
? (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragmentReference, readerWithRefetchQueries.readerArtifact.kind)
|
|
47
47
|
: undefined,
|
|
48
48
|
};
|
|
49
49
|
if (readerWithRefetchQueries.readerArtifact.kind !== 'EagerReaderArtifact') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReadAndSubscribe.d.ts","sourceRoot":"","sources":["../../src/react/useReadAndSubscribe.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,iBAAiB,EAEjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"useReadAndSubscribe.d.ts","sourceRoot":"","sources":["../../src/react/useReadAndSubscribe.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,iBAAiB,EAEjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,2BAA2B,EAE3B,sBAAsB,EACvB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD;;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,QAuCH"}
|
|
@@ -5,6 +5,7 @@ exports.useSubscribeToMultiple = useSubscribeToMultiple;
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const cache_1 = require("../core/cache");
|
|
7
7
|
const FragmentReference_1 = require("../core/FragmentReference");
|
|
8
|
+
const PromiseWrapper_1 = require("../core/PromiseWrapper");
|
|
8
9
|
const read_1 = require("../core/read");
|
|
9
10
|
const IsographEnvironmentProvider_1 = require("./IsographEnvironmentProvider");
|
|
10
11
|
const useRerenderOnChange_1 = require("./useRerenderOnChange");
|
|
@@ -34,7 +35,10 @@ function useSubscribeToMultiple(items) {
|
|
|
34
35
|
// TODO find out
|
|
35
36
|
[
|
|
36
37
|
items
|
|
37
|
-
.map(({ fragmentReference }) =>
|
|
38
|
+
.map(({ fragmentReference }) => {
|
|
39
|
+
const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
|
|
40
|
+
(0, FragmentReference_1.stableIdForFragmentReference)(fragmentReference, readerWithRefetchQueries.readerArtifact.fieldName);
|
|
41
|
+
})
|
|
38
42
|
.join('.'),
|
|
39
43
|
]);
|
|
40
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResult.d.ts","sourceRoot":"","sources":["../../src/react/useResult.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,cAAc,EAEf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AAKtB,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,
|
|
1
|
+
{"version":3,"file":"useResult.d.ts","sourceRoot":"","sources":["../../src/react/useResult.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,cAAc,EAEf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AAKtB,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,CA4CnB;AAED,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,EACzC,qBAAqB,EAAE,2BAA2B,QAWnD"}
|
package/dist/react/useResult.js
CHANGED
|
@@ -16,7 +16,7 @@ function useResult(fragmentReference, partialNetworkRequestOptions) {
|
|
|
16
16
|
switch (readerWithRefetchQueries.readerArtifact.kind) {
|
|
17
17
|
case 'ComponentReaderArtifact': {
|
|
18
18
|
// @ts-expect-error
|
|
19
|
-
return (0, componentCache_1.getOrCreateCachedComponent)(environment, readerWithRefetchQueries.readerArtifact.
|
|
19
|
+
return (0, componentCache_1.getOrCreateCachedComponent)(environment, readerWithRefetchQueries.readerArtifact.fieldName, fragmentReference, networkRequestOptions);
|
|
20
20
|
}
|
|
21
21
|
case 'EagerReaderArtifact': {
|
|
22
22
|
const data = (0, useReadAndSubscribe_1.useReadAndSubscribe)(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst);
|
|
@@ -24,7 +24,7 @@ function useResult(fragmentReference, partialNetworkRequestOptions) {
|
|
|
24
24
|
data: data,
|
|
25
25
|
parameters: fragmentReference.variables,
|
|
26
26
|
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
|
|
27
|
-
? (0, startUpdate_1.
|
|
27
|
+
? (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragmentReference, readerWithRefetchQueries.readerArtifact.fieldName)
|
|
28
28
|
: undefined,
|
|
29
29
|
};
|
|
30
30
|
return readerWithRefetchQueries.readerArtifact.resolver(param);
|
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-16d04ff2",
|
|
4
4
|
"description": "Use Isograph with React",
|
|
5
5
|
"homepage": "https://isograph.dev",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"iso-watch": "cross-env ../../target/debug/isograph_cli --config ./isograph.config.json --watch"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@isograph/disposable-types": "0.0.0-main-
|
|
24
|
-
"@isograph/react-disposable-state": "0.0.0-main-
|
|
25
|
-
"@isograph/reference-counted-pointer": "0.0.0-main-
|
|
23
|
+
"@isograph/disposable-types": "0.0.0-main-16d04ff2",
|
|
24
|
+
"@isograph/react-disposable-state": "0.0.0-main-16d04ff2",
|
|
25
|
+
"@isograph/reference-counted-pointer": "0.0.0-main-16d04ff2"
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
28
|
"react": "^18.0.0 || ^19.0.0"
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ReaderWithRefetchQueries } from '../core/entrypoint';
|
|
2
|
+
import { stableCopy } from './cache';
|
|
2
3
|
import { type Link } from './IsographEnvironment';
|
|
3
4
|
import { PromiseWrapper } from './PromiseWrapper';
|
|
4
5
|
import type { StartUpdate } from './reader';
|
|
@@ -45,18 +46,11 @@ export type FragmentReference<
|
|
|
45
46
|
readonly networkRequest: PromiseWrapper<void, any>;
|
|
46
47
|
};
|
|
47
48
|
|
|
49
|
+
export type StableIdForFragmentReference = string;
|
|
50
|
+
|
|
48
51
|
export function stableIdForFragmentReference(
|
|
49
52
|
fragmentReference: FragmentReference<any, any>,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function serializeVariables(variables: Variables) {
|
|
55
|
-
let s = '';
|
|
56
|
-
const keys = Object.keys(variables);
|
|
57
|
-
keys.sort();
|
|
58
|
-
for (const key of keys) {
|
|
59
|
-
s += `${key}:${variables[key]},`;
|
|
60
|
-
}
|
|
61
|
-
return s;
|
|
53
|
+
fieldName: string,
|
|
54
|
+
): StableIdForFragmentReference {
|
|
55
|
+
return `${fragmentReference.root.__typename}/${fragmentReference.root.__link}/${fieldName}/${JSON.stringify(stableCopy(fragmentReference.variables))}`;
|
|
62
56
|
}
|
|
@@ -3,20 +3,20 @@ import { IsographEntrypoint } from './entrypoint';
|
|
|
3
3
|
import {
|
|
4
4
|
FragmentReference,
|
|
5
5
|
Variables,
|
|
6
|
+
type StableIdForFragmentReference,
|
|
6
7
|
type UnknownTReadFromStore,
|
|
7
8
|
} from './FragmentReference';
|
|
8
9
|
import { RetainedQuery } from './garbageCollection';
|
|
9
10
|
import { LogFunction, WrappedLogFunction } from './logging';
|
|
10
11
|
import { PromiseWrapper, wrapPromise } from './PromiseWrapper';
|
|
11
12
|
import { WithEncounteredRecords } from './read';
|
|
12
|
-
import type { ReaderAst } from './reader';
|
|
13
|
+
import type { ReaderAst, StartUpdate } from './reader';
|
|
13
14
|
|
|
14
15
|
export type ComponentOrFieldName = string;
|
|
15
16
|
export type StringifiedArgs = string;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
};
|
|
17
|
+
|
|
18
|
+
export type FieldCache<T> = {
|
|
19
|
+
[key: StableIdForFragmentReference]: T;
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
export type FragmentSubscription<TReadFromStore extends UnknownTReadFromStore> =
|
|
@@ -54,7 +54,8 @@ export type IsographEnvironment = {
|
|
|
54
54
|
readonly store: IsographStore;
|
|
55
55
|
readonly networkFunction: IsographNetworkFunction;
|
|
56
56
|
readonly missingFieldHandler: MissingFieldHandler | null;
|
|
57
|
-
readonly componentCache:
|
|
57
|
+
readonly componentCache: FieldCache<React.FC<any>>;
|
|
58
|
+
readonly eagerReaderCache: FieldCache<StartUpdate<any> | undefined>;
|
|
58
59
|
readonly subscriptions: Subscriptions;
|
|
59
60
|
// N.B. this must be <any, any>, but all *usages* of this should go through
|
|
60
61
|
// a function that adds type parameters.
|
|
@@ -138,6 +139,7 @@ export function createIsographEnvironment(
|
|
|
138
139
|
networkFunction,
|
|
139
140
|
missingFieldHandler: missingFieldHandler ?? null,
|
|
140
141
|
componentCache: {},
|
|
142
|
+
eagerReaderCache: {},
|
|
141
143
|
subscriptions: new Set(),
|
|
142
144
|
fragmentCache: {},
|
|
143
145
|
entrypointArtifactCache: new Map(),
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { useReadAndSubscribe } from '../react/useReadAndSubscribe';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
FragmentReference,
|
|
4
|
+
stableIdForFragmentReference,
|
|
5
|
+
} from './FragmentReference';
|
|
4
6
|
import { IsographEnvironment } from './IsographEnvironment';
|
|
5
7
|
import { logMessage } from './logging';
|
|
6
8
|
import { readPromise } from './PromiseWrapper';
|
|
7
9
|
import { NetworkRequestReaderOptions } from './read';
|
|
8
|
-
import {
|
|
10
|
+
import { createStartUpdate } from './startUpdate';
|
|
9
11
|
|
|
10
12
|
export function getOrCreateCachedComponent(
|
|
11
13
|
environment: IsographEnvironment,
|
|
@@ -13,21 +15,12 @@ export function getOrCreateCachedComponent(
|
|
|
13
15
|
fragmentReference: FragmentReference<any, any>,
|
|
14
16
|
networkRequestOptions: NetworkRequestReaderOptions,
|
|
15
17
|
): React.FC<any> {
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
// time.
|
|
19
|
-
const cachedComponentsById = environment.componentCache;
|
|
18
|
+
// We create startUpdate outside of component to make it stable
|
|
19
|
+
const startUpdate = createStartUpdate(environment, fragmentReference);
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const byArgs = (componentsByName[componentName] ??= {});
|
|
26
|
-
|
|
27
|
-
const stringifiedArgs = JSON.stringify(
|
|
28
|
-
stableCopy(fragmentReference.variables),
|
|
29
|
-
);
|
|
30
|
-
return (byArgs[stringifiedArgs] ??= (() => {
|
|
21
|
+
return (environment.componentCache[
|
|
22
|
+
stableIdForFragmentReference(fragmentReference, componentName)
|
|
23
|
+
] ??= (() => {
|
|
31
24
|
function Component(additionalRuntimeProps: { [key: string]: any }) {
|
|
32
25
|
const readerWithRefetchQueries = readPromise(
|
|
33
26
|
fragmentReference.readerWithRefetchQueries,
|
|
@@ -50,7 +43,7 @@ export function getOrCreateCachedComponent(
|
|
|
50
43
|
data,
|
|
51
44
|
parameters: fragmentReference.variables,
|
|
52
45
|
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
|
|
53
|
-
? startUpdate
|
|
46
|
+
? startUpdate
|
|
54
47
|
: undefined,
|
|
55
48
|
},
|
|
56
49
|
additionalRuntimeProps,
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
wrapResolvedValue,
|
|
29
29
|
} from './PromiseWrapper';
|
|
30
30
|
import { readButDoNotEvaluate } from './read';
|
|
31
|
-
import {
|
|
31
|
+
import { getOrCreateCachedStartUpdate } from './startUpdate';
|
|
32
32
|
|
|
33
33
|
let networkRequestId = 0;
|
|
34
34
|
|
|
@@ -286,7 +286,7 @@ function readDataForOnComplete<
|
|
|
286
286
|
// TClientFieldValue which is a React.FC<...>
|
|
287
287
|
return getOrCreateCachedComponent(
|
|
288
288
|
environment,
|
|
289
|
-
readerArtifact.
|
|
289
|
+
readerArtifact.fieldName,
|
|
290
290
|
{
|
|
291
291
|
kind: 'FragmentReference',
|
|
292
292
|
readerWithRefetchQueries: wrapResolvedValue({
|
|
@@ -307,7 +307,11 @@ function readDataForOnComplete<
|
|
|
307
307
|
data: fragmentResult,
|
|
308
308
|
parameters: variables,
|
|
309
309
|
startUpdate: readerArtifact.hasUpdatable
|
|
310
|
-
?
|
|
310
|
+
? getOrCreateCachedStartUpdate(
|
|
311
|
+
environment,
|
|
312
|
+
fragment,
|
|
313
|
+
artifact.readerWithRefetchQueries.readerArtifact.fieldName,
|
|
314
|
+
)
|
|
311
315
|
: undefined,
|
|
312
316
|
});
|
|
313
317
|
}
|
package/src/core/read.ts
CHANGED
|
@@ -10,6 +10,7 @@ import { getOrCreateCachedComponent } from './componentCache';
|
|
|
10
10
|
import {
|
|
11
11
|
IsographEntrypoint,
|
|
12
12
|
RefetchQueryNormalizationArtifactWrapper,
|
|
13
|
+
type ReaderWithRefetchQueries,
|
|
13
14
|
} from './entrypoint';
|
|
14
15
|
import {
|
|
15
16
|
ExtractData,
|
|
@@ -35,7 +36,7 @@ import {
|
|
|
35
36
|
wrapResolvedValue,
|
|
36
37
|
} from './PromiseWrapper';
|
|
37
38
|
import { ReaderAst } from './reader';
|
|
38
|
-
import {
|
|
39
|
+
import { getOrCreateCachedStartUpdate } from './startUpdate';
|
|
39
40
|
import { Arguments } from './util';
|
|
40
41
|
|
|
41
42
|
export type WithEncounteredRecords<T> = {
|
|
@@ -263,11 +264,41 @@ function readData<TReadFromStore>(
|
|
|
263
264
|
recordLink: data.recordLink,
|
|
264
265
|
};
|
|
265
266
|
}
|
|
267
|
+
|
|
268
|
+
const readerWithRefetchQueries = {
|
|
269
|
+
kind: 'ReaderWithRefetchQueries',
|
|
270
|
+
readerArtifact: field.condition,
|
|
271
|
+
// TODO this is wrong
|
|
272
|
+
// should map field.condition.usedRefetchQueries
|
|
273
|
+
// but it doesn't exist
|
|
274
|
+
nestedRefetchQueries: [],
|
|
275
|
+
} satisfies ReaderWithRefetchQueries<any, any>;
|
|
276
|
+
|
|
277
|
+
const fragment = {
|
|
278
|
+
kind: 'FragmentReference',
|
|
279
|
+
readerWithRefetchQueries: wrapResolvedValue(
|
|
280
|
+
readerWithRefetchQueries,
|
|
281
|
+
),
|
|
282
|
+
root,
|
|
283
|
+
variables: generateChildVariableMap(
|
|
284
|
+
variables,
|
|
285
|
+
// TODO this is wrong
|
|
286
|
+
// should use field.condition.variables
|
|
287
|
+
// but it doesn't exist
|
|
288
|
+
[],
|
|
289
|
+
),
|
|
290
|
+
networkRequest,
|
|
291
|
+
} satisfies FragmentReference<any, any>;
|
|
292
|
+
|
|
266
293
|
const condition = field.condition.resolver({
|
|
267
294
|
data: data.data,
|
|
268
295
|
parameters: {},
|
|
269
296
|
startUpdate: field.condition.hasUpdatable
|
|
270
|
-
?
|
|
297
|
+
? getOrCreateCachedStartUpdate(
|
|
298
|
+
environment,
|
|
299
|
+
fragment,
|
|
300
|
+
readerWithRefetchQueries.readerArtifact.fieldName,
|
|
301
|
+
)
|
|
271
302
|
: undefined,
|
|
272
303
|
});
|
|
273
304
|
if (condition === true) {
|
|
@@ -408,6 +439,20 @@ function readData<TReadFromStore>(
|
|
|
408
439
|
return resolverRefetchQuery;
|
|
409
440
|
});
|
|
410
441
|
|
|
442
|
+
const readerWithRefetchQueries = {
|
|
443
|
+
kind: 'ReaderWithRefetchQueries',
|
|
444
|
+
readerArtifact: field.readerArtifact,
|
|
445
|
+
nestedRefetchQueries: resolverRefetchQueries,
|
|
446
|
+
} satisfies ReaderWithRefetchQueries<any, any>;
|
|
447
|
+
|
|
448
|
+
const fragment = {
|
|
449
|
+
kind: 'FragmentReference',
|
|
450
|
+
readerWithRefetchQueries: wrapResolvedValue(readerWithRefetchQueries),
|
|
451
|
+
root,
|
|
452
|
+
variables: generateChildVariableMap(variables, field.arguments),
|
|
453
|
+
networkRequest,
|
|
454
|
+
} satisfies FragmentReference<any, any>;
|
|
455
|
+
|
|
411
456
|
switch (field.readerArtifact.kind) {
|
|
412
457
|
case 'EagerReaderArtifact': {
|
|
413
458
|
const data = readData(
|
|
@@ -432,7 +477,13 @@ function readData<TReadFromStore>(
|
|
|
432
477
|
const firstParameter = {
|
|
433
478
|
data: data.data,
|
|
434
479
|
parameters: variables,
|
|
435
|
-
startUpdate:
|
|
480
|
+
startUpdate: field.readerArtifact.hasUpdatable
|
|
481
|
+
? getOrCreateCachedStartUpdate(
|
|
482
|
+
environment,
|
|
483
|
+
fragment,
|
|
484
|
+
readerWithRefetchQueries.readerArtifact.fieldName,
|
|
485
|
+
)
|
|
486
|
+
: undefined,
|
|
436
487
|
};
|
|
437
488
|
target[field.alias] =
|
|
438
489
|
field.readerArtifact.resolver(firstParameter);
|
|
@@ -442,18 +493,8 @@ function readData<TReadFromStore>(
|
|
|
442
493
|
case 'ComponentReaderArtifact': {
|
|
443
494
|
target[field.alias] = getOrCreateCachedComponent(
|
|
444
495
|
environment,
|
|
445
|
-
field.readerArtifact.
|
|
446
|
-
|
|
447
|
-
kind: 'FragmentReference',
|
|
448
|
-
readerWithRefetchQueries: wrapResolvedValue({
|
|
449
|
-
kind: 'ReaderWithRefetchQueries',
|
|
450
|
-
readerArtifact: field.readerArtifact,
|
|
451
|
-
nestedRefetchQueries: resolverRefetchQueries,
|
|
452
|
-
}),
|
|
453
|
-
root,
|
|
454
|
-
variables: generateChildVariableMap(variables, field.arguments),
|
|
455
|
-
networkRequest,
|
|
456
|
-
} as const,
|
|
496
|
+
field.readerArtifact.fieldName,
|
|
497
|
+
fragment,
|
|
457
498
|
networkRequestOptions,
|
|
458
499
|
);
|
|
459
500
|
break;
|
package/src/core/reader.ts
CHANGED
|
@@ -33,6 +33,7 @@ export type EagerReaderArtifact<
|
|
|
33
33
|
TClientFieldValue,
|
|
34
34
|
> = {
|
|
35
35
|
readonly kind: 'EagerReaderArtifact';
|
|
36
|
+
readonly fieldName: string;
|
|
36
37
|
readonly readerAst: ReaderAst<TReadFromStore>;
|
|
37
38
|
readonly resolver: (
|
|
38
39
|
data: ResolverFirstParameter<TReadFromStore>,
|
|
@@ -45,7 +46,7 @@ export type ComponentReaderArtifact<
|
|
|
45
46
|
TComponentProps extends Record<string, unknown> = Record<PropertyKey, never>,
|
|
46
47
|
> = {
|
|
47
48
|
readonly kind: 'ComponentReaderArtifact';
|
|
48
|
-
readonly
|
|
49
|
+
readonly fieldName: ComponentOrFieldName;
|
|
49
50
|
readonly readerAst: ReaderAst<TReadFromStore>;
|
|
50
51
|
readonly resolver: (
|
|
51
52
|
data: ResolverFirstParameter<TReadFromStore>,
|
package/src/core/startUpdate.ts
CHANGED
|
@@ -1,13 +1,28 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
ExtractStartUpdate,
|
|
4
|
-
|
|
1
|
+
import {
|
|
2
|
+
stableIdForFragmentReference,
|
|
3
|
+
type ExtractStartUpdate,
|
|
4
|
+
type FragmentReference,
|
|
5
|
+
type UnknownTReadFromStore,
|
|
5
6
|
} from './FragmentReference';
|
|
6
7
|
import type { IsographEnvironment } from './IsographEnvironment';
|
|
7
8
|
|
|
8
|
-
export function
|
|
9
|
+
export function getOrCreateCachedStartUpdate<
|
|
10
|
+
TReadFromStore extends UnknownTReadFromStore,
|
|
11
|
+
>(
|
|
12
|
+
environment: IsographEnvironment,
|
|
13
|
+
fragmentReference: FragmentReference<TReadFromStore, any>,
|
|
14
|
+
eagerResolverName: string,
|
|
15
|
+
): ExtractStartUpdate<TReadFromStore> {
|
|
16
|
+
return (environment.eagerReaderCache[
|
|
17
|
+
stableIdForFragmentReference(fragmentReference, eagerResolverName)
|
|
18
|
+
] ??= createStartUpdate(environment, fragmentReference));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function createStartUpdate<TReadFromStore extends UnknownTReadFromStore>(
|
|
9
22
|
_environment: IsographEnvironment,
|
|
10
|
-
|
|
23
|
+
_fragmentReference: FragmentReference<TReadFromStore, any>,
|
|
11
24
|
): ExtractStartUpdate<TReadFromStore> {
|
|
12
|
-
return (_updater) => {
|
|
25
|
+
return (_updater) => {
|
|
26
|
+
// TODO start update
|
|
27
|
+
};
|
|
13
28
|
}
|
package/src/index.ts
CHANGED
|
@@ -39,7 +39,7 @@ export {
|
|
|
39
39
|
type CacheMap,
|
|
40
40
|
createIsographEnvironment,
|
|
41
41
|
createIsographStore,
|
|
42
|
-
type
|
|
42
|
+
type FieldCache,
|
|
43
43
|
type Subscriptions,
|
|
44
44
|
type Subscription,
|
|
45
45
|
type TypeName,
|
|
@@ -109,6 +109,7 @@ export {
|
|
|
109
109
|
stableIdForFragmentReference,
|
|
110
110
|
type ExtractStartUpdate,
|
|
111
111
|
type VariableValue,
|
|
112
|
+
type StableIdForFragmentReference,
|
|
112
113
|
} from './core/FragmentReference';
|
|
113
114
|
export {
|
|
114
115
|
type LogMessage,
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
type WithEncounteredRecords,
|
|
21
21
|
} from '../core/read';
|
|
22
22
|
import { LoadableField, type ReaderAst } from '../core/reader';
|
|
23
|
-
import {
|
|
23
|
+
import { getOrCreateCachedStartUpdate } from '../core/startUpdate';
|
|
24
24
|
import { useIsographEnvironment } from '../react/IsographEnvironmentProvider';
|
|
25
25
|
import { useSubscribeToMultiple } from '../react/useReadAndSubscribe';
|
|
26
26
|
import { maybeUnwrapNetworkRequest } from '../react/useResult';
|
|
@@ -130,7 +130,11 @@ export function useConnectionSpecPagination<
|
|
|
130
130
|
data,
|
|
131
131
|
parameters: fragmentReference.variables,
|
|
132
132
|
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
|
|
133
|
-
?
|
|
133
|
+
? getOrCreateCachedStartUpdate(
|
|
134
|
+
environment,
|
|
135
|
+
fragmentReference,
|
|
136
|
+
readerWithRefetchQueries.readerArtifact.fieldName,
|
|
137
|
+
)
|
|
134
138
|
: undefined,
|
|
135
139
|
};
|
|
136
140
|
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
type WithEncounteredRecords,
|
|
21
21
|
} from '../core/read';
|
|
22
22
|
import { LoadableField, type ReaderAst } from '../core/reader';
|
|
23
|
-
import {
|
|
23
|
+
import { getOrCreateCachedStartUpdate } from '../core/startUpdate';
|
|
24
24
|
import { useIsographEnvironment } from '../react/IsographEnvironmentProvider';
|
|
25
25
|
import { useSubscribeToMultiple } from '../react/useReadAndSubscribe';
|
|
26
26
|
import { maybeUnwrapNetworkRequest } from '../react/useResult';
|
|
@@ -124,7 +124,11 @@ export function useSkipLimitPagination<
|
|
|
124
124
|
data,
|
|
125
125
|
parameters: fragmentReference.variables,
|
|
126
126
|
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
|
|
127
|
-
?
|
|
127
|
+
? getOrCreateCachedStartUpdate(
|
|
128
|
+
environment,
|
|
129
|
+
fragmentReference,
|
|
130
|
+
readerWithRefetchQueries.readerArtifact.kind,
|
|
131
|
+
)
|
|
128
132
|
: undefined,
|
|
129
133
|
};
|
|
130
134
|
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
stableIdForFragmentReference,
|
|
7
7
|
type UnknownTReadFromStore,
|
|
8
8
|
} from '../core/FragmentReference';
|
|
9
|
+
import { readPromise } from '../core/PromiseWrapper';
|
|
9
10
|
import {
|
|
10
11
|
NetworkRequestReaderOptions,
|
|
11
12
|
readButDoNotEvaluate,
|
|
@@ -73,9 +74,15 @@ export function useSubscribeToMultiple<
|
|
|
73
74
|
// TODO find out
|
|
74
75
|
[
|
|
75
76
|
items
|
|
76
|
-
.map(({ fragmentReference }) =>
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
.map(({ fragmentReference }) => {
|
|
78
|
+
const readerWithRefetchQueries = readPromise(
|
|
79
|
+
fragmentReference.readerWithRefetchQueries,
|
|
80
|
+
);
|
|
81
|
+
stableIdForFragmentReference(
|
|
82
|
+
fragmentReference,
|
|
83
|
+
readerWithRefetchQueries.readerArtifact.fieldName,
|
|
84
|
+
);
|
|
85
|
+
})
|
|
79
86
|
.join('.'),
|
|
80
87
|
],
|
|
81
88
|
);
|
package/src/react/useResult.ts
CHANGED
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
getNetworkRequestOptionsWithDefaults,
|
|
13
13
|
NetworkRequestReaderOptions,
|
|
14
14
|
} from '../core/read';
|
|
15
|
-
import {
|
|
15
|
+
import { getOrCreateCachedStartUpdate } from '../core/startUpdate';
|
|
16
16
|
import { useIsographEnvironment } from '../react/IsographEnvironmentProvider';
|
|
17
17
|
import { useReadAndSubscribe } from './useReadAndSubscribe';
|
|
18
18
|
|
|
@@ -41,7 +41,7 @@ export function useResult<
|
|
|
41
41
|
// @ts-expect-error
|
|
42
42
|
return getOrCreateCachedComponent(
|
|
43
43
|
environment,
|
|
44
|
-
readerWithRefetchQueries.readerArtifact.
|
|
44
|
+
readerWithRefetchQueries.readerArtifact.fieldName,
|
|
45
45
|
fragmentReference,
|
|
46
46
|
networkRequestOptions,
|
|
47
47
|
);
|
|
@@ -56,7 +56,11 @@ export function useResult<
|
|
|
56
56
|
data: data,
|
|
57
57
|
parameters: fragmentReference.variables,
|
|
58
58
|
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
|
|
59
|
-
?
|
|
59
|
+
? getOrCreateCachedStartUpdate(
|
|
60
|
+
environment,
|
|
61
|
+
fragmentReference,
|
|
62
|
+
readerWithRefetchQueries.readerArtifact.fieldName,
|
|
63
|
+
)
|
|
60
64
|
: undefined,
|
|
61
65
|
};
|
|
62
66
|
return readerWithRefetchQueries.readerArtifact.resolver(param);
|