@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.
Files changed (44) hide show
  1. package/.turbo/turbo-compile-typescript.log +1 -1
  2. package/dist/core/FragmentReference.d.ts +2 -1
  3. package/dist/core/FragmentReference.d.ts.map +1 -1
  4. package/dist/core/FragmentReference.js +3 -12
  5. package/dist/core/IsographEnvironment.d.ts +6 -9
  6. package/dist/core/IsographEnvironment.d.ts.map +1 -1
  7. package/dist/core/IsographEnvironment.js +1 -0
  8. package/dist/core/componentCache.d.ts.map +1 -1
  9. package/dist/core/componentCache.js +7 -12
  10. package/dist/core/makeNetworkRequest.js +2 -2
  11. package/dist/core/read.d.ts.map +1 -1
  12. package/dist/core/read.js +36 -13
  13. package/dist/core/reader.d.ts +2 -1
  14. package/dist/core/reader.d.ts.map +1 -1
  15. package/dist/core/startUpdate.d.ts +3 -2
  16. package/dist/core/startUpdate.d.ts.map +1 -1
  17. package/dist/core/startUpdate.js +12 -3
  18. package/dist/index.d.ts +2 -2
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
  21. package/dist/loadable-hooks/useConnectionSpecPagination.js +1 -1
  22. package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
  23. package/dist/loadable-hooks/useSkipLimitPagination.js +1 -1
  24. package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
  25. package/dist/react/useReadAndSubscribe.js +5 -1
  26. package/dist/react/useResult.d.ts.map +1 -1
  27. package/dist/react/useResult.js +2 -2
  28. package/package.json +4 -4
  29. package/src/core/FragmentReference.ts +6 -12
  30. package/src/core/IsographEnvironment.ts +8 -6
  31. package/src/core/componentCache.ts +11 -18
  32. package/src/core/makeNetworkRequest.ts +7 -3
  33. package/src/core/read.ts +56 -15
  34. package/src/core/reader.ts +2 -1
  35. package/src/core/startUpdate.ts +22 -7
  36. package/src/index.ts +2 -1
  37. package/src/loadable-hooks/useConnectionSpecPagination.ts +6 -2
  38. package/src/loadable-hooks/useSkipLimitPagination.ts +6 -2
  39. package/src/react/useReadAndSubscribe.ts +10 -3
  40. package/src/react/useResult.ts +7 -3
  41. package/src/tests/__isograph/Query/meName/resolver_reader.ts +1 -0
  42. package/src/tests/__isograph/Query/meNameSuccessor/resolver_reader.ts +1 -0
  43. package/src/tests/__isograph/Query/nodeField/resolver_reader.ts +1 -0
  44. package/src/tests/__isograph/Query/subquery/resolver_reader.ts +1 -0
@@ -1,4 +1,4 @@
1
1
 
2
- > @isograph/react@0.0.0-main-1ae3a60f compile-typescript /Users/runner/work/isograph/isograph/libs/isograph-react
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 declare function stableIdForFragmentReference(fragmentReference: FragmentReference<any, any>): string;
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;AAC9D,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,wBAAgB,4BAA4B,CAC1C,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,GAC7C,MAAM,CAER"}
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
- function stableIdForFragmentReference(fragmentReference) {
5
- var _a;
6
- return `${fragmentReference.root.__typename}/${fragmentReference.root.__link}/TODO_FRAGMENT_NAME/${serializeVariables((_a = fragmentReference.variables) !== null && _a !== void 0 ? _a : {})}`;
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 ComponentCache = {
12
- [key: DataId]: {
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: 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":"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"}
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":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,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,CA+Cf"}
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 cache_1 = require("./cache");
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, _b, _c;
11
- // cachedComponentsById is a three layer cache: id, then component name, then
12
- // stringified args. These three, together, uniquely identify a read at a given
13
- // time.
14
- const cachedComponentsById = environment.componentCache;
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
- ? (0, startUpdate_1.startUpdate)(environment, data)
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.componentName, {
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.startUpdate)(environment, fragmentResult)
193
+ ? (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragment, artifact.readerWithRefetchQueries.readerArtifact.fieldName)
194
194
  : undefined,
195
195
  });
196
196
  }
@@ -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;AAOjB,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;AAolBN,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"}
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.startUpdate)(environment, data)
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.componentName, {
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: {
@@ -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 componentName: ComponentOrFieldName;
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":"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"}
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 type { ExtractData, ExtractStartUpdate, UnknownTReadFromStore } from './FragmentReference';
1
+ import { type ExtractStartUpdate, type FragmentReference, type UnknownTReadFromStore } from './FragmentReference';
2
2
  import type { IsographEnvironment } from './IsographEnvironment';
3
- export declare function startUpdate<TReadFromStore extends UnknownTReadFromStore>(_environment: IsographEnvironment, _data: ExtractData<TReadFromStore>): ExtractStartUpdate<TReadFromStore>;
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,EACV,WAAW,EACX,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,wBAAgB,WAAW,CAAC,cAAc,SAAS,qBAAqB,EACtE,YAAY,EAAE,mBAAmB,EACjC,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,GACjC,kBAAkB,CAAC,cAAc,CAAC,CAEpC"}
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"}
@@ -1,6 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.startUpdate = startUpdate;
4
- function startUpdate(_environment, _data) {
5
- return (_updater) => { };
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 ComponentCache, type Subscriptions, type Subscription, type TypeName, type FragmentSubscription, type AnyChangesToRecordSubscription, type AnyRecordSubscription, type ComponentOrFieldName, type StringifiedArgs, } from './core/IsographEnvironment';
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';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -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,CA+OjD"}
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.startUpdate)(environment, data)
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,CAqOhD"}
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.startUpdate)(environment, data)
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;AACnC,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,QAiCH"}
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 }) => (0, FragmentReference_1.stableIdForFragmentReference)(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,CAwCnB;AAED,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,EACzC,qBAAqB,EAAE,2BAA2B,QAWnD"}
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"}
@@ -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.componentName, fragmentReference, networkRequestOptions);
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.startUpdate)(environment, data)
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-1ae3a60f",
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-1ae3a60f",
24
- "@isograph/react-disposable-state": "0.0.0-main-1ae3a60f",
25
- "@isograph/reference-counted-pointer": "0.0.0-main-1ae3a60f"
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
- ): string {
51
- return `${fragmentReference.root.__typename}/${fragmentReference.root.__link}/TODO_FRAGMENT_NAME/${serializeVariables(fragmentReference.variables ?? {})}`;
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
- export type ComponentCache = {
17
- [key: DataId]: {
18
- [key: ComponentOrFieldName]: { [key: StringifiedArgs]: React.FC<any> };
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: 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 { stableCopy } from './cache';
3
- import { FragmentReference } from './FragmentReference';
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 { startUpdate } from './startUpdate';
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
- // cachedComponentsById is a three layer cache: id, then component name, then
17
- // stringified args. These three, together, uniquely identify a read at a given
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
- const recordLink = fragmentReference.root.__link;
22
-
23
- const componentsByName = (cachedComponentsById[recordLink] ??= {});
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(environment, data)
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 { startUpdate } from './startUpdate';
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.componentName,
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
- ? startUpdate(environment, fragmentResult)
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 { startUpdate } from './startUpdate';
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
- ? startUpdate(environment, data)
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.componentName,
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;
@@ -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 componentName: ComponentOrFieldName;
49
+ readonly fieldName: ComponentOrFieldName;
49
50
  readonly readerAst: ReaderAst<TReadFromStore>;
50
51
  readonly resolver: (
51
52
  data: ResolverFirstParameter<TReadFromStore>,
@@ -1,13 +1,28 @@
1
- import type {
2
- ExtractData,
3
- ExtractStartUpdate,
4
- UnknownTReadFromStore,
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 startUpdate<TReadFromStore extends UnknownTReadFromStore>(
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
- _data: ExtractData<TReadFromStore>,
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 ComponentCache,
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 { startUpdate } from '../core/startUpdate';
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
- ? startUpdate(environment, data)
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 { startUpdate } from '../core/startUpdate';
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
- ? startUpdate(environment, data)
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
- stableIdForFragmentReference(fragmentReference),
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
  );
@@ -12,7 +12,7 @@ import {
12
12
  getNetworkRequestOptionsWithDefaults,
13
13
  NetworkRequestReaderOptions,
14
14
  } from '../core/read';
15
- import { startUpdate } from '../core/startUpdate';
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.componentName,
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
- ? startUpdate(environment, data)
59
+ ? getOrCreateCachedStartUpdate(
60
+ environment,
61
+ fragmentReference,
62
+ readerWithRefetchQueries.readerArtifact.fieldName,
63
+ )
60
64
  : undefined,
61
65
  };
62
66
  return readerWithRefetchQueries.readerArtifact.resolver(param);
@@ -26,6 +26,7 @@ const artifact: EagerReaderArtifact<
26
26
  Query__meName__output_type
27
27
  > = {
28
28
  kind: "EagerReaderArtifact",
29
+ fieldName: "Query.meName",
29
30
  resolver,
30
31
  readerAst,
31
32
  hasUpdatable: false,
@@ -50,6 +50,7 @@ const artifact: EagerReaderArtifact<
50
50
  Query__meNameSuccessor__output_type
51
51
  > = {
52
52
  kind: "EagerReaderArtifact",
53
+ fieldName: "Query.meNameSuccessor",
53
54
  resolver,
54
55
  readerAst,
55
56
  hasUpdatable: false,
@@ -31,6 +31,7 @@ const artifact: EagerReaderArtifact<
31
31
  Query__nodeField__output_type
32
32
  > = {
33
33
  kind: "EagerReaderArtifact",
34
+ fieldName: "Query.nodeField",
34
35
  resolver,
35
36
  readerAst,
36
37
  hasUpdatable: false,
@@ -40,6 +40,7 @@ const artifact: EagerReaderArtifact<
40
40
  Query__subquery__output_type
41
41
  > = {
42
42
  kind: "EagerReaderArtifact",
43
+ fieldName: "Query.subquery",
43
44
  resolver,
44
45
  readerAst,
45
46
  hasUpdatable: false,