@isograph/react 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/.turbo/turbo-compile-typescript.log +4 -0
  2. package/dist/core/FragmentReference.d.ts +16 -7
  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 +17 -27
  6. package/dist/core/IsographEnvironment.d.ts.map +1 -1
  7. package/dist/core/IsographEnvironment.js +4 -0
  8. package/dist/core/PromiseWrapper.d.ts +3 -4
  9. package/dist/core/PromiseWrapper.d.ts.map +1 -1
  10. package/dist/core/PromiseWrapper.js +5 -4
  11. package/dist/core/areEqualWithDeepComparison.d.ts.map +1 -1
  12. package/dist/core/areEqualWithDeepComparison.js +16 -0
  13. package/dist/core/cache.d.ts +11 -20
  14. package/dist/core/cache.d.ts.map +1 -1
  15. package/dist/core/cache.js +60 -45
  16. package/dist/core/check.d.ts +9 -5
  17. package/dist/core/check.d.ts.map +1 -1
  18. package/dist/core/check.js +2 -2
  19. package/dist/core/componentCache.d.ts +1 -1
  20. package/dist/core/componentCache.d.ts.map +1 -1
  21. package/dist/core/componentCache.js +27 -31
  22. package/dist/core/entrypoint.d.ts +23 -26
  23. package/dist/core/entrypoint.d.ts.map +1 -1
  24. package/dist/core/garbageCollection.d.ts +3 -4
  25. package/dist/core/garbageCollection.d.ts.map +1 -1
  26. package/dist/core/garbageCollection.js +1 -1
  27. package/dist/core/logging.d.ts +12 -13
  28. package/dist/core/logging.d.ts.map +1 -1
  29. package/dist/core/logging.js +8 -5
  30. package/dist/core/makeNetworkRequest.d.ts +5 -5
  31. package/dist/core/makeNetworkRequest.d.ts.map +1 -1
  32. package/dist/core/makeNetworkRequest.js +107 -22
  33. package/dist/core/read.d.ts +15 -10
  34. package/dist/core/read.d.ts.map +1 -1
  35. package/dist/core/read.js +398 -304
  36. package/dist/core/reader.d.ts +24 -32
  37. package/dist/core/reader.d.ts.map +1 -1
  38. package/dist/core/startUpdate.d.ts +5 -0
  39. package/dist/core/startUpdate.d.ts.map +1 -0
  40. package/dist/core/startUpdate.js +15 -0
  41. package/dist/core/util.d.ts +3 -0
  42. package/dist/core/util.d.ts.map +1 -1
  43. package/dist/index.d.ts +16 -16
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +2 -1
  46. package/dist/loadable-hooks/useClientSideDefer.d.ts +4 -10
  47. package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
  48. package/dist/loadable-hooks/useClientSideDefer.js +2 -2
  49. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +8 -15
  50. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
  51. package/dist/loadable-hooks/useConnectionSpecPagination.js +6 -4
  52. package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts +1 -2
  53. package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts.map +1 -1
  54. package/dist/loadable-hooks/useImperativeLoadableField.d.ts +4 -6
  55. package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +1 -1
  56. package/dist/loadable-hooks/useImperativeLoadableField.js +1 -1
  57. package/dist/loadable-hooks/useSkipLimitPagination.d.ts +6 -13
  58. package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
  59. package/dist/loadable-hooks/useSkipLimitPagination.js +11 -9
  60. package/dist/react/FragmentReader.d.ts +2 -3
  61. package/dist/react/FragmentReader.d.ts.map +1 -1
  62. package/dist/react/IsographEnvironmentProvider.d.ts.map +1 -1
  63. package/dist/react/useImperativeReference.d.ts +7 -10
  64. package/dist/react/useImperativeReference.d.ts.map +1 -1
  65. package/dist/react/useImperativeReference.js +2 -3
  66. package/dist/react/useLazyReference.d.ts +4 -7
  67. package/dist/react/useLazyReference.d.ts.map +1 -1
  68. package/dist/react/useLazyReference.js +26 -5
  69. package/dist/react/useReadAndSubscribe.d.ts +3 -9
  70. package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
  71. package/dist/react/useReadAndSubscribe.js +7 -3
  72. package/dist/react/useRerenderOnChange.d.ts +1 -1
  73. package/dist/react/useRerenderOnChange.d.ts.map +1 -1
  74. package/dist/react/useResult.d.ts +3 -6
  75. package/dist/react/useResult.d.ts.map +1 -1
  76. package/dist/react/useResult.js +10 -8
  77. package/isograph.config.json +1 -0
  78. package/package.json +7 -6
  79. package/src/core/FragmentReference.ts +30 -15
  80. package/src/core/IsographEnvironment.ts +39 -31
  81. package/src/core/PromiseWrapper.ts +3 -3
  82. package/src/core/areEqualWithDeepComparison.ts +20 -0
  83. package/src/core/cache.ts +105 -72
  84. package/src/core/check.ts +13 -8
  85. package/src/core/componentCache.ts +45 -52
  86. package/src/core/entrypoint.ts +34 -16
  87. package/src/core/garbageCollection.ts +6 -6
  88. package/src/core/logging.ts +24 -22
  89. package/src/core/makeNetworkRequest.ts +183 -30
  90. package/src/core/read.ts +618 -435
  91. package/src/core/reader.ts +37 -24
  92. package/src/core/startUpdate.ts +28 -0
  93. package/src/core/util.ts +4 -0
  94. package/src/index.ts +82 -9
  95. package/src/loadable-hooks/useClientSideDefer.ts +11 -10
  96. package/src/loadable-hooks/useConnectionSpecPagination.ts +26 -13
  97. package/src/loadable-hooks/useImperativeExposedMutationField.ts +1 -1
  98. package/src/loadable-hooks/useImperativeLoadableField.ts +10 -12
  99. package/src/loadable-hooks/useSkipLimitPagination.ts +37 -19
  100. package/src/react/FragmentReader.tsx +3 -3
  101. package/src/react/IsographEnvironmentProvider.tsx +1 -1
  102. package/src/react/useImperativeReference.ts +40 -19
  103. package/src/react/useLazyReference.ts +62 -14
  104. package/src/react/useReadAndSubscribe.ts +17 -9
  105. package/src/react/useRerenderOnChange.ts +2 -2
  106. package/src/react/useResult.ts +21 -8
  107. package/src/tests/__isograph/Query/meName/entrypoint.ts +4 -28
  108. package/src/tests/__isograph/Query/meName/normalization_ast.ts +25 -0
  109. package/src/tests/__isograph/Query/meName/query_text.ts +6 -0
  110. package/src/tests/__isograph/Query/meName/resolver_reader.ts +4 -0
  111. package/src/tests/__isograph/Query/meNameSuccessor/entrypoint.ts +4 -66
  112. package/src/tests/__isograph/Query/meNameSuccessor/normalization_ast.ts +56 -0
  113. package/src/tests/__isograph/Query/meNameSuccessor/query_text.ts +13 -0
  114. package/src/tests/__isograph/Query/meNameSuccessor/resolver_reader.ts +7 -0
  115. package/src/tests/__isograph/Query/nodeField/entrypoint.ts +4 -33
  116. package/src/tests/__isograph/Query/nodeField/normalization_ast.ts +30 -0
  117. package/src/tests/__isograph/Query/nodeField/query_text.ts +6 -0
  118. package/src/tests/__isograph/Query/nodeField/resolver_reader.ts +4 -0
  119. package/src/tests/__isograph/Query/subquery/entrypoint.ts +4 -43
  120. package/src/tests/__isograph/Query/subquery/normalization_ast.ts +38 -0
  121. package/src/tests/__isograph/Query/subquery/query_text.ts +8 -0
  122. package/src/tests/__isograph/Query/subquery/resolver_reader.ts +5 -0
  123. package/src/tests/__isograph/iso.ts +3 -2
  124. package/src/tests/garbageCollection.test.ts +10 -8
  125. package/src/tests/meNameSuccessor.ts +1 -1
  126. package/src/tests/nodeQuery.ts +2 -1
  127. package/src/tests/normalizeData.test.ts +1 -1
  128. package/tsconfig.pkg.json +1 -2
@@ -0,0 +1,4 @@
1
+
2
+ > @isograph/react@0.3.1 compile-typescript /Users/runner/work/isograph/isograph/libs/isograph-react
3
+ > rm -rf dist/* && tsc -p tsconfig.pkg.json
4
+
@@ -1,25 +1,34 @@
1
- import { type Link } from './IsographEnvironment';
2
1
  import { ReaderWithRefetchQueries } from '../core/entrypoint';
2
+ import { type Link } from './IsographEnvironment';
3
3
  import { PromiseWrapper } from './PromiseWrapper';
4
- export type VariableValue = string | number | boolean | null | object;
4
+ import type { StartUpdate } from './reader';
5
+ export type VariableValue = string | number | boolean | null | {
6
+ readonly [index: string]: VariableValue;
7
+ } | VariableValue[];
5
8
  export type Variables = {
6
9
  readonly [index: string]: VariableValue;
7
10
  };
11
+ export type UnknownTReadFromStore = {
12
+ parameters: object;
13
+ data: object;
14
+ startUpdate?: StartUpdate<object>;
15
+ };
8
16
  export type ExtractData<T> = T extends {
9
17
  data: infer D extends object;
10
18
  } ? D : never;
11
19
  export type ExtractParameters<T> = T extends {
12
20
  parameters: infer P extends Variables;
13
21
  } ? P : Variables;
14
- export type FragmentReference<TReadFromStore extends {
15
- parameters: object;
16
- data: object;
17
- }, TClientFieldValue> = {
22
+ export type ExtractStartUpdate<T extends {
23
+ startUpdate?: StartUpdate<object>;
24
+ }> = T['startUpdate'];
25
+ export type FragmentReference<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue> = {
18
26
  readonly kind: 'FragmentReference';
19
27
  readonly readerWithRefetchQueries: PromiseWrapper<ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>>;
20
28
  readonly root: Link;
21
29
  readonly variables: ExtractParameters<TReadFromStore>;
22
30
  readonly networkRequest: PromiseWrapper<void, any>;
23
31
  };
24
- export declare function stableIdForFragmentReference(fragmentReference: FragmentReference<any, any>): string;
32
+ export type StableIdForFragmentReference = string;
33
+ export declare function stableIdForFragmentReference(fragmentReference: FragmentReference<any, any>, fieldName: string): StableIdForFragmentReference;
25
34
  //# 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,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,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,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,iBAAiB,CAC3B,cAAc,SAAS;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC3D,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,GACrB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ;IACE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;CACzC,GACD,aAAa,EAAE,CAAC;AAEpB,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,24 +1,17 @@
1
1
  import { ParentCache } from '@isograph/react-disposable-state';
2
- import { RetainedQuery } from './garbageCollection';
3
- import { WithEncounteredRecords } from './read';
4
- import { FragmentReference, Variables } from './FragmentReference';
5
- import { PromiseWrapper } from './PromiseWrapper';
6
2
  import { IsographEntrypoint } from './entrypoint';
7
- import type { ReaderAst } from './reader';
3
+ import { FragmentReference, Variables, type StableIdForFragmentReference, type UnknownTReadFromStore } from './FragmentReference';
4
+ import { RetainedQuery } from './garbageCollection';
8
5
  import { LogFunction, WrappedLogFunction } from './logging';
6
+ import { PromiseWrapper } from './PromiseWrapper';
7
+ import { WithEncounteredRecords } from './read';
8
+ import type { ReaderAst, StartUpdate } from './reader';
9
9
  export type ComponentOrFieldName = string;
10
10
  export type StringifiedArgs = string;
11
- 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
- export type FragmentSubscription<TReadFromStore extends {
19
- parameters: object;
20
- data: object;
21
- }> = {
14
+ export type FragmentSubscription<TReadFromStore extends UnknownTReadFromStore> = {
22
15
  readonly kind: 'FragmentSubscription';
23
16
  readonly callback: (newEncounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>) => void;
24
17
  /** The value read out from the previous call to readButDoNotEvaluate */
@@ -26,31 +19,29 @@ export type FragmentSubscription<TReadFromStore extends {
26
19
  readonly fragmentReference: FragmentReference<TReadFromStore, any>;
27
20
  readonly readerAst: ReaderAst<TReadFromStore>;
28
21
  };
29
- type AnyChangesToRecordSubscription = {
22
+ export type AnyChangesToRecordSubscription = {
30
23
  readonly kind: 'AnyChangesToRecord';
31
24
  readonly callback: () => void;
32
25
  readonly recordLink: Link;
33
26
  };
34
- type AnyRecordSubscription = {
27
+ export type AnyRecordSubscription = {
35
28
  readonly kind: 'AnyRecords';
36
29
  readonly callback: () => void;
37
30
  };
38
- type Subscription = FragmentSubscription<{
39
- parameters: object;
40
- data: object;
41
- }> | AnyChangesToRecordSubscription | AnyRecordSubscription;
42
- type Subscriptions = Set<Subscription>;
43
- type CacheMap<T> = {
31
+ export type Subscription = FragmentSubscription<any> | AnyChangesToRecordSubscription | AnyRecordSubscription;
32
+ export type Subscriptions = Set<Subscription>;
33
+ export type CacheMap<T> = {
44
34
  [index: string]: ParentCache<T>;
45
35
  };
46
36
  export type IsographEnvironment = {
47
37
  readonly store: IsographStore;
48
38
  readonly networkFunction: IsographNetworkFunction;
49
39
  readonly missingFieldHandler: MissingFieldHandler | null;
50
- readonly componentCache: ComponentCache;
40
+ readonly componentCache: FieldCache<React.FC<any>>;
41
+ readonly eagerReaderCache: FieldCache<StartUpdate<any> | undefined>;
51
42
  readonly subscriptions: Subscriptions;
52
43
  readonly fragmentCache: CacheMap<FragmentReference<any, any>>;
53
- readonly entrypointArtifactCache: Map<string, PromiseWrapper<IsographEntrypoint<any, any>>>;
44
+ readonly entrypointArtifactCache: Map<string, PromiseWrapper<IsographEntrypoint<any, any, any>>>;
54
45
  readonly retainedQueries: Set<RetainedQuery>;
55
46
  readonly gcBuffer: Array<RetainedQuery>;
56
47
  readonly gcBufferSize: number;
@@ -84,6 +75,5 @@ export declare function createIsographEnvironment(store: IsographStore, networkF
84
75
  export declare function createIsographStore(): IsographStore;
85
76
  export declare function assertLink(link: DataTypeValue): Link | null | undefined;
86
77
  export declare function getLink(maybeLink: DataTypeValue): Link | null;
87
- export declare function getOrLoadIsographArtifact(environment: IsographEnvironment, key: string, loader: () => Promise<IsographEntrypoint<any, any>>): PromiseWrapper<IsographEntrypoint<any, any>>;
88
- export {};
78
+ export declare function getOrLoadIsographArtifact(environment: IsographEnvironment, key: string, loader: () => Promise<IsographEntrypoint<any, any, any>>): PromiseWrapper<IsographEntrypoint<any, any, any>>;
89
79
  //# sourceMappingURL=IsographEnvironment.d.ts.map
@@ -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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"}
@@ -10,11 +10,15 @@ const PromiseWrapper_1 = require("./PromiseWrapper");
10
10
  exports.ROOT_ID = '__ROOT';
11
11
  const DEFAULT_GC_BUFFER_SIZE = 10;
12
12
  function createIsographEnvironment(store, networkFunction, missingFieldHandler, logFunction) {
13
+ logFunction === null || logFunction === void 0 ? void 0 : logFunction({
14
+ kind: 'EnvironmentCreated',
15
+ });
13
16
  return {
14
17
  store,
15
18
  networkFunction,
16
19
  missingFieldHandler: missingFieldHandler !== null && missingFieldHandler !== void 0 ? missingFieldHandler : null,
17
20
  componentCache: {},
21
+ eagerReaderCache: {},
18
22
  subscriptions: new Set(),
19
23
  fragmentCache: {},
20
24
  entrypointArtifactCache: new Map(),
@@ -1,7 +1,7 @@
1
1
  export type AnyError = any;
2
- declare const NOT_SET: Symbol;
3
- type NotSet = typeof NOT_SET;
4
- type Result<T, E> = {
2
+ export declare const NOT_SET: Symbol;
3
+ export type NotSet = typeof NOT_SET;
4
+ export type Result<T, E> = {
5
5
  kind: 'Ok';
6
6
  value: T;
7
7
  } | {
@@ -24,5 +24,4 @@ export type PromiseState<T, E> = {
24
24
  promise: Promise<T>;
25
25
  } | Result<T, E>;
26
26
  export declare function getPromiseState<T, E>(p: PromiseWrapper<T, E>): PromiseState<T, E>;
27
- export {};
28
27
  //# sourceMappingURL=PromiseWrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PromiseWrapper.d.ts","sourceRoot":"","sources":["../../src/core/PromiseWrapper.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC;AAE3B,QAAA,MAAM,OAAO,EAAE,MAA0B,CAAC;AAC1C,KAAK,MAAM,GAAG,OAAO,OAAO,CAAC;AAE7B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,IACZ;IACE,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,CAAC,CAAC;CACV,GACD;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,CAAC,CAAC;CACV,CAAC;AAEN;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;CAChD,CAAC;AAEF,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAa1E;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,CASvE;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAa5D;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,IACzB;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CACrB,GACD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEjB,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAClC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GACtB,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAWpB"}
1
+ {"version":3,"file":"PromiseWrapper.d.ts","sourceRoot":"","sources":["../../src/core/PromiseWrapper.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC;AAE3B,eAAO,MAAM,OAAO,EAAE,MAA0B,CAAC;AACjD,MAAM,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC;AAEpC,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IACnB;IACE,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,CAAC,CAAC;CACV,GACD;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,CAAC,CAAC;CACV,CAAC;AAEN;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;CAChD,CAAC;AAEF,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAa1E;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,CASvE;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAa5D;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,IACzB;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CACrB,GACD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEjB,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAClC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GACtB,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAWpB"}
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NOT_SET = void 0;
3
4
  exports.wrapPromise = wrapPromise;
4
5
  exports.wrapResolvedValue = wrapResolvedValue;
5
6
  exports.readPromise = readPromise;
6
7
  exports.getPromiseState = getPromiseState;
7
- const NOT_SET = Symbol('NOT_SET');
8
+ exports.NOT_SET = Symbol('NOT_SET');
8
9
  function wrapPromise(promise) {
9
10
  // TODO confirm suspense works if the promise is already resolved.
10
- const wrapper = { promise, result: NOT_SET };
11
+ const wrapper = { promise, result: exports.NOT_SET };
11
12
  promise
12
13
  .then((v) => {
13
14
  // v is assignable to Exclude<T, Symbol> | Symbol
@@ -31,7 +32,7 @@ function wrapResolvedValue(value) {
31
32
  }
32
33
  function readPromise(p) {
33
34
  const { result } = p;
34
- if (result !== NOT_SET) {
35
+ if (result !== exports.NOT_SET) {
35
36
  // Safety: p.result is either NOT_SET or an actual value.
36
37
  const resultKind = result;
37
38
  if (resultKind.kind === 'Ok') {
@@ -45,7 +46,7 @@ function readPromise(p) {
45
46
  }
46
47
  function getPromiseState(p) {
47
48
  const { result } = p;
48
- if (result !== NOT_SET) {
49
+ if (result !== exports.NOT_SET) {
49
50
  // Safety: p.result is either NOT_SET or an actual value.
50
51
  const resultKind = result;
51
52
  return resultKind;
@@ -1 +1 @@
1
- {"version":3,"file":"areEqualWithDeepComparison.d.ts","sourceRoot":"","sources":["../../src/core/areEqualWithDeepComparison.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAChF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,EAC5C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAiCT;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,EAC5C,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,GACvB,aAAa,CAAC,OAAO,CAAC,CAgBxB;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,EACtB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,MAAM,CA6CR"}
1
+ {"version":3,"file":"areEqualWithDeepComparison.d.ts","sourceRoot":"","sources":["../../src/core/areEqualWithDeepComparison.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEhF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,EAC5C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAiCT;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,EAC5C,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,GACvB,aAAa,CAAC,OAAO,CAAC,CAgBxB;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,EACtB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,MAAM,CA+DR"}
@@ -80,6 +80,22 @@ function mergeObjectsUsingReaderAst(ast, oldItemObject, newItemObject) {
80
80
  }
81
81
  break;
82
82
  }
83
+ case 'Link': {
84
+ const key = field.alias;
85
+ // @ts-expect-error
86
+ const oldValue = oldItemObject[key];
87
+ // @ts-expect-error
88
+ const newValue = newItemObject[key];
89
+ if (oldValue.__link !== newValue.__link ||
90
+ oldValue.__typename !== newValue.__typename) {
91
+ canRecycle = false;
92
+ }
93
+ else {
94
+ // @ts-expect-error
95
+ newItemObject[key] = oldValue;
96
+ }
97
+ break;
98
+ }
83
99
  case 'ImperativelyLoadedField':
84
100
  case 'LoadablySelectedField':
85
101
  break;
@@ -1,44 +1,35 @@
1
1
  import { Factory, ParentCache } from '@isograph/react-disposable-state';
2
+ import { IsographEntrypoint, NormalizationLinkedField, NormalizationScalarField, RefetchQueryNormalizationArtifactWrapper, type NormalizationAst, type NormalizationAstLoader, type NormalizationAstNodes } from '../core/entrypoint';
3
+ import { FetchOptions } from './check';
4
+ import { ExtractParameters, FragmentReference, Variables, type UnknownTReadFromStore } from './FragmentReference';
2
5
  import { DataId, Link, type IsographEnvironment, type TypeName } from './IsographEnvironment';
3
- import { IsographEntrypoint, NormalizationAst, NormalizationLinkedField, NormalizationScalarField, RefetchQueryNormalizationArtifactWrapper } from '../core/entrypoint';
4
- import { ReaderLinkedField, ReaderScalarField, type ReaderAst } from './reader';
5
6
  import { WithEncounteredRecords } from './read';
6
- import { FragmentReference, Variables, ExtractParameters } from './FragmentReference';
7
- import { FetchOptions } from './check';
7
+ import { ReaderLinkedField, ReaderScalarField, type ReaderAst } from './reader';
8
8
  export declare const TYPENAME_FIELD_NAME = "__typename";
9
- export declare function getOrCreateItemInSuspenseCache<TReadFromStore extends {
10
- parameters: object;
11
- data: object;
12
- }, TClientFieldValue>(environment: IsographEnvironment, index: string, factory: Factory<FragmentReference<TReadFromStore, TClientFieldValue>>): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>>;
9
+ export declare function getOrCreateItemInSuspenseCache<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue>(environment: IsographEnvironment, index: string, factory: Factory<FragmentReference<TReadFromStore, TClientFieldValue>>): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>>;
13
10
  /**
14
11
  * Creates a copy of the provided value, ensuring any nested objects have their
15
12
  * keys sorted such that equivalent values would have identical JSON.stringify
16
13
  * results.
17
14
  */
18
15
  export declare function stableCopy<T>(value: T): T;
19
- export declare function getOrCreateCacheForArtifact<TReadFromStore extends {
20
- parameters: object;
21
- data: object;
22
- }, TClientFieldValue>(environment: IsographEnvironment, entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>, variables: ExtractParameters<TReadFromStore>, fetchOptions?: FetchOptions): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>>;
23
- type NetworkResponseScalarValue = string | number | boolean;
24
- type NetworkResponseValue = NetworkResponseScalarValue | null | NetworkResponseObject | (NetworkResponseObject | null)[] | (NetworkResponseScalarValue | null)[];
16
+ export declare function getOrCreateCacheForArtifact<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue, TNormalizationAst extends NormalizationAst | NormalizationAstLoader>(environment: IsographEnvironment, entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue, TNormalizationAst>, variables: ExtractParameters<TReadFromStore>, fetchOptions?: FetchOptions<TClientFieldValue>): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>>;
17
+ export type NetworkResponseScalarValue = string | number | boolean;
18
+ export type NetworkResponseValue = NetworkResponseScalarValue | null | NetworkResponseObject | (NetworkResponseObject | null)[] | (NetworkResponseScalarValue | null)[];
25
19
  export type NetworkResponseObject = {
26
20
  [index: string]: undefined | NetworkResponseValue;
27
21
  id?: DataId;
28
22
  __typename?: TypeName;
29
23
  };
30
- export declare function normalizeData(environment: IsographEnvironment, normalizationAst: NormalizationAst, networkResponse: NetworkResponseObject, variables: Variables, nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[], root: Link): EncounteredIds;
24
+ export declare function normalizeData(environment: IsographEnvironment, normalizationAst: NormalizationAstNodes, networkResponse: NetworkResponseObject, variables: Variables, nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[], root: Link): EncounteredIds;
31
25
  export declare function subscribeToAnyChange(environment: IsographEnvironment, callback: () => void): () => void;
32
26
  export declare function subscribeToAnyChangesToRecord(environment: IsographEnvironment, recordLink: Link, callback: () => void): () => void;
33
- export declare function subscribe<TReadFromStore extends {
34
- parameters: object;
35
- data: object;
36
- }>(environment: IsographEnvironment, encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>, fragmentReference: FragmentReference<TReadFromStore, any>, callback: (newEncounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>) => void, readerAst: ReaderAst<TReadFromStore>): () => void;
27
+ export declare function subscribe<TReadFromStore extends UnknownTReadFromStore>(environment: IsographEnvironment, encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>, fragmentReference: FragmentReference<TReadFromStore, any>, callback: (newEncounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>) => void, readerAst: ReaderAst<TReadFromStore>): () => void;
37
28
  export declare function onNextChangeToRecord(environment: IsographEnvironment, recordLink: Link): Promise<void>;
38
29
  export type EncounteredIds = Map<TypeName, Set<DataId>>;
39
30
  export declare function insertIfNotExists<K, V>(map: Map<K, Set<V>>, key: K): Set<V>;
40
31
  export declare function getParentRecordKey(astNode: NormalizationLinkedField | NormalizationScalarField | ReaderLinkedField | ReaderScalarField, variables: Variables): string;
41
32
  export declare const FIRST_SPLIT_KEY = "____";
42
33
  export declare const SECOND_SPLIT_KEY = "___";
43
- export {};
34
+ export declare const THIRD_SPLIT_KEY = "__";
44
35
  //# sourceMappingURL=cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/core/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/core/cache.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SECOND_SPLIT_KEY = exports.FIRST_SPLIT_KEY = exports.TYPENAME_FIELD_NAME = void 0;
3
+ exports.THIRD_SPLIT_KEY = exports.SECOND_SPLIT_KEY = exports.FIRST_SPLIT_KEY = exports.TYPENAME_FIELD_NAME = void 0;
4
4
  exports.getOrCreateItemInSuspenseCache = getOrCreateItemInSuspenseCache;
5
5
  exports.stableCopy = stableCopy;
6
6
  exports.getOrCreateCacheForArtifact = getOrCreateCacheForArtifact;
@@ -12,21 +12,14 @@ exports.onNextChangeToRecord = onNextChangeToRecord;
12
12
  exports.insertIfNotExists = insertIfNotExists;
13
13
  exports.getParentRecordKey = getParentRecordKey;
14
14
  const react_disposable_state_1 = require("@isograph/react-disposable-state");
15
- const IsographEnvironment_1 = require("./IsographEnvironment");
16
- const read_1 = require("./read");
17
15
  const areEqualWithDeepComparison_1 = require("./areEqualWithDeepComparison");
16
+ const IsographEnvironment_1 = require("./IsographEnvironment");
17
+ const logging_1 = require("./logging");
18
18
  const makeNetworkRequest_1 = require("./makeNetworkRequest");
19
19
  const PromiseWrapper_1 = require("./PromiseWrapper");
20
- const logging_1 = require("./logging");
20
+ const read_1 = require("./read");
21
21
  exports.TYPENAME_FIELD_NAME = '__typename';
22
22
  function getOrCreateItemInSuspenseCache(environment, index, factory) {
23
- // TODO this is probably a useless message, we should remove it
24
- (0, logging_1.logMessage)(environment, {
25
- kind: 'GettingSuspenseCacheItem',
26
- index,
27
- availableCacheItems: Object.keys(environment.fragmentCache),
28
- found: !!environment.fragmentCache[index],
29
- });
30
23
  if (environment.fragmentCache[index] == null) {
31
24
  environment.fragmentCache[index] = new react_disposable_state_1.ParentCache(factory);
32
25
  }
@@ -80,20 +73,20 @@ function normalizeData(environment, normalizationAst, networkResponse, variables
80
73
  var _a, _b;
81
74
  var _c, _d, _e;
82
75
  const encounteredIds = new Map();
83
- (0, logging_1.logMessage)(environment, {
76
+ (0, logging_1.logMessage)(environment, () => ({
84
77
  kind: 'AboutToNormalize',
85
78
  normalizationAst,
86
79
  networkResponse,
87
80
  variables,
88
- });
81
+ }));
89
82
  const recordsById = ((_a = (_c = environment.store)[_d = root.__typename]) !== null && _a !== void 0 ? _a : (_c[_d] = {}));
90
83
  const newStoreRecord = ((_b = recordsById[_e = root.__link]) !== null && _b !== void 0 ? _b : (recordsById[_e] = {}));
91
84
  normalizeDataIntoRecord(environment, normalizationAst, networkResponse, newStoreRecord, root, variables, nestedRefetchQueries, encounteredIds);
92
- (0, logging_1.logMessage)(environment, {
85
+ (0, logging_1.logMessage)(environment, () => ({
93
86
  kind: 'AfterNormalization',
94
87
  store: environment.store,
95
88
  encounteredIds,
96
- });
89
+ }));
97
90
  callSubscriptions(environment, encounteredIds);
98
91
  return encounteredIds;
99
92
  }
@@ -174,13 +167,13 @@ function callSubscriptions(environment, recordsEncounteredWhenNormalizing) {
174
167
  throwOnNetworkError: false,
175
168
  });
176
169
  const mergedItem = (0, areEqualWithDeepComparison_1.mergeObjectsUsingReaderAst)(subscription.readerAst, subscription.encounteredDataAndRecords.item, newEncounteredDataAndRecords.item);
177
- (0, logging_1.logMessage)(environment, {
170
+ (0, logging_1.logMessage)(environment, () => ({
178
171
  kind: 'DeepEqualityCheck',
179
172
  fragmentReference: subscription.fragmentReference,
180
173
  old: subscription.encounteredDataAndRecords.item,
181
174
  new: newEncounteredDataAndRecords.item,
182
175
  deeplyEqual: mergedItem === subscription.encounteredDataAndRecords.item,
183
- });
176
+ }));
184
177
  if (mergedItem !== subscription.encounteredDataAndRecords.item) {
185
178
  subscription.callback(newEncounteredDataAndRecords);
186
179
  }
@@ -422,6 +415,15 @@ function getParentRecordKey(astNode, variables) {
422
415
  function getStoreKeyChunkForArgumentValue(argumentValue, variables) {
423
416
  var _a;
424
417
  switch (argumentValue.kind) {
418
+ case 'Object': {
419
+ return Object.fromEntries(argumentValue.value.map(([argumentName, argumentValue]) => {
420
+ return [
421
+ argumentName,
422
+ // substitute variables
423
+ getStoreKeyChunkForArgumentValue(argumentValue, variables),
424
+ ];
425
+ }));
426
+ }
425
427
  case 'Literal': {
426
428
  return argumentValue.value;
427
429
  }
@@ -444,48 +446,61 @@ function getStoreKeyChunkForArgumentValue(argumentValue, variables) {
444
446
  }
445
447
  }
446
448
  function getStoreKeyChunkForArgument(argument, variables) {
447
- const chunk = getStoreKeyChunkForArgumentValue(argument[1], variables);
449
+ let chunk = getStoreKeyChunkForArgumentValue(argument[1], variables);
450
+ if (typeof chunk === 'object') {
451
+ chunk = JSON.stringify(stableCopy(chunk));
452
+ }
448
453
  return `${exports.FIRST_SPLIT_KEY}${argument[0]}${exports.SECOND_SPLIT_KEY}${chunk}`;
449
454
  }
450
455
  function getNetworkResponseKey(astNode) {
451
456
  let networkResponseKey = astNode.fieldName;
452
457
  const fieldParameters = astNode.arguments;
453
458
  if (fieldParameters != null) {
454
- for (const fieldParameter of fieldParameters) {
455
- const [argumentName, argumentValue] = fieldParameter;
456
- let argumentValueChunk;
457
- switch (argumentValue.kind) {
458
- case 'Literal': {
459
- argumentValueChunk = 'l_' + argumentValue.value;
460
- break;
461
- }
462
- case 'Variable': {
463
- argumentValueChunk = 'v_' + argumentValue.name;
464
- break;
465
- }
466
- case 'String': {
467
- argumentValueChunk = 's_' + argumentValue.value;
468
- break;
469
- }
470
- case 'Enum': {
471
- argumentValueChunk = 'e_' + argumentValue.value;
472
- break;
473
- }
474
- default: {
475
- // Ensure we have covered all variants
476
- let _ = argumentValue;
477
- _;
478
- throw new Error('Unexpected case');
479
- }
480
- }
459
+ for (const [argumentName, argumentValue] of fieldParameters) {
460
+ let argumentValueChunk = getArgumentValueChunk(argumentValue);
481
461
  networkResponseKey += `${exports.FIRST_SPLIT_KEY}${argumentName}${exports.SECOND_SPLIT_KEY}${argumentValueChunk}`;
482
462
  }
483
463
  }
484
464
  return networkResponseKey;
485
465
  }
466
+ function getArgumentValueChunk(argumentValue) {
467
+ switch (argumentValue.kind) {
468
+ case 'Object': {
469
+ return ('o_' +
470
+ argumentValue.value
471
+ .map(([argumentName, argumentValue]) => {
472
+ return (argumentName +
473
+ exports.THIRD_SPLIT_KEY +
474
+ getArgumentValueChunk(argumentValue));
475
+ })
476
+ .join('_') +
477
+ '_c');
478
+ }
479
+ case 'Literal': {
480
+ return 'l_' + argumentValue.value;
481
+ }
482
+ case 'Variable': {
483
+ return 'v_' + argumentValue.name;
484
+ }
485
+ case 'String': {
486
+ // replace all non-word characters (alphanumeric & underscore) with underscores
487
+ return 's_' + argumentValue.value.replaceAll(/\W/g, '_');
488
+ }
489
+ case 'Enum': {
490
+ return 'e_' + argumentValue.value;
491
+ }
492
+ default: {
493
+ // Ensure we have covered all variants
494
+ let _ = argumentValue;
495
+ _;
496
+ throw new Error('Unexpected case');
497
+ }
498
+ }
499
+ }
486
500
  // an alias might be pullRequests____first___first____after___cursor
487
501
  exports.FIRST_SPLIT_KEY = '____';
488
502
  exports.SECOND_SPLIT_KEY = '___';
503
+ exports.THIRD_SPLIT_KEY = '__';
489
504
  // Returns a key to look up an item in the store
490
505
  function getDataIdOfNetworkResponse(parentRecordLink, dataToNormalize, astNode, variables, index) {
491
506
  // If we are dealing with nested Query, use __ROOT as id
@@ -1,18 +1,22 @@
1
- import { NormalizationAst } from './entrypoint';
1
+ import { NormalizationAstNodes } from './entrypoint';
2
2
  import { Variables } from './FragmentReference';
3
3
  import { IsographEnvironment, Link } from './IsographEnvironment';
4
- export type ShouldFetch = 'Yes' | 'No' | 'IfNecessary';
4
+ export type ShouldFetch = RequiredShouldFetch | 'IfNecessary';
5
+ export type RequiredShouldFetch = 'Yes' | 'No';
5
6
  export declare const DEFAULT_SHOULD_FETCH_VALUE: ShouldFetch;
6
- export type FetchOptions = {
7
+ export type FetchOptions<TReadOutData> = {
7
8
  shouldFetch?: ShouldFetch;
8
- onComplete?: () => void;
9
+ onComplete?: (data: TReadOutData) => void;
9
10
  onError?: () => void;
10
11
  };
12
+ export type RequiredFetchOptions<TReadOutData> = {
13
+ shouldFetch: RequiredShouldFetch;
14
+ } & FetchOptions<TReadOutData>;
11
15
  export type CheckResult = {
12
16
  kind: 'EnoughData';
13
17
  } | {
14
18
  kind: 'MissingData';
15
19
  record: Link;
16
20
  };
17
- export declare function check(environment: IsographEnvironment, normalizationAst: NormalizationAst, variables: Variables, root: Link): CheckResult;
21
+ export declare function check(environment: IsographEnvironment, normalizationAst: NormalizationAstNodes, variables: Variables, root: Link): CheckResult;
18
22
  //# sourceMappingURL=check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/core/check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAEL,mBAAmB,EACnB,IAAI,EAEL,MAAM,uBAAuB,CAAC;AAG/B,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,GAAG,aAAa,CAAC;AAEvD,eAAO,MAAM,0BAA0B,EAAE,WAA2B,CAAC;AAErE,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB;IACE,IAAI,EAAE,YAAY,CAAC;CACpB,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,IAAI,CAAC;CACd,CAAC;AAEN,wBAAgB,KAAK,CACnB,WAAW,EAAE,mBAAmB,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,GACT,WAAW,CAgBb"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/core/check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAEL,mBAAmB,EACnB,IAAI,EAEL,MAAM,uBAAuB,CAAC;AAG/B,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,aAAa,CAAC;AAC9D,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,IAAI,CAAC;AAE/C,eAAO,MAAM,0BAA0B,EAAE,WAA2B,CAAC;AAErE,MAAM,MAAM,YAAY,CAAC,YAAY,IAAI;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,YAAY,IAAI;IAC/C,WAAW,EAAE,mBAAmB,CAAC;CAClC,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;AAE/B,MAAM,MAAM,WAAW,GACnB;IACE,IAAI,EAAE,YAAY,CAAC;CACpB,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,IAAI,CAAC;CACd,CAAC;AAEN,wBAAgB,KAAK,CACnB,WAAW,EAAE,mBAAmB,EAChC,gBAAgB,EAAE,qBAAqB,EACvC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,GACT,WAAW,CAgBb"}
@@ -12,10 +12,10 @@ function check(environment, normalizationAst, variables, root) {
12
12
  const recordsById = ((_a = (_c = environment.store)[_d = root.__typename]) !== null && _a !== void 0 ? _a : (_c[_d] = {}));
13
13
  const newStoreRecord = ((_b = recordsById[_e = root.__link]) !== null && _b !== void 0 ? _b : (recordsById[_e] = {}));
14
14
  const checkResult = checkFromRecord(environment, normalizationAst, variables, newStoreRecord, root);
15
- (0, logging_1.logMessage)(environment, {
15
+ (0, logging_1.logMessage)(environment, () => ({
16
16
  kind: 'EnvironmentCheck',
17
17
  result: checkResult,
18
- });
18
+ }));
19
19
  return checkResult;
20
20
  }
21
21
  function checkFromRecord(environment, normalizationAst, variables, record, recordLink) {
@@ -1,5 +1,5 @@
1
- import { IsographEnvironment } from './IsographEnvironment';
2
1
  import { FragmentReference } from './FragmentReference';
2
+ import { IsographEnvironment } from './IsographEnvironment';
3
3
  import { NetworkRequestReaderOptions } from './read';
4
4
  export declare function getOrCreateCachedComponent(environment: IsographEnvironment, componentName: string, fragmentReference: FragmentReference<any, any>, networkRequestOptions: NetworkRequestReaderOptions): React.FC<any>;
5
5
  //# sourceMappingURL=componentCache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"componentCache.d.ts","sourceRoot":"","sources":["../../src/core/componentCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAIrD,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,CAgDf"}
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"}