@isograph/react 0.0.0-main-4089db6d → 0.0.0-main-d564e834

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 (67) hide show
  1. package/dist/{FragmentReference.d.ts → core/FragmentReference.d.ts} +1 -1
  2. package/dist/{cache.d.ts → core/cache.d.ts} +2 -3
  3. package/dist/{cache.js → core/cache.js} +3 -51
  4. package/dist/{componentCache.js → core/componentCache.js} +1 -1
  5. package/dist/core/makeNetworkRequest.d.ts +6 -0
  6. package/dist/core/makeNetworkRequest.js +54 -0
  7. package/dist/{read.js → core/read.js} +2 -1
  8. package/dist/index.d.ts +16 -15
  9. package/dist/index.js +17 -16
  10. package/dist/loadable-hooks/useClientSideDefer.d.ts +2 -2
  11. package/dist/loadable-hooks/useClientSideDefer.js +2 -2
  12. package/dist/react/FragmentReferenceReader.d.ts +10 -0
  13. package/dist/{EntrypointReader.js → react/FragmentReferenceReader.js} +3 -3
  14. package/dist/{IsographEnvironmentProvider.d.ts → react/IsographEnvironmentProvider.d.ts} +1 -1
  15. package/dist/{useImperativeReference.d.ts → react/useImperativeReference.d.ts} +2 -2
  16. package/dist/{useImperativeReference.js → react/useImperativeReference.js} +3 -3
  17. package/dist/{useLazyReference.d.ts → react/useLazyReference.d.ts} +2 -2
  18. package/dist/{useLazyReference.js → react/useLazyReference.js} +2 -2
  19. package/dist/{useReadAndSubscribe.d.ts → react/useReadAndSubscribe.d.ts} +2 -2
  20. package/dist/{useReadAndSubscribe.js → react/useReadAndSubscribe.js} +1 -1
  21. package/dist/{useRerenderOnChange.d.ts → react/useRerenderOnChange.d.ts} +3 -3
  22. package/dist/{useRerenderOnChange.js → react/useRerenderOnChange.js} +1 -1
  23. package/dist/{useResult.d.ts → react/useResult.d.ts} +1 -1
  24. package/dist/{useResult.js → react/useResult.js} +2 -2
  25. package/package.json +5 -4
  26. package/src/{FragmentReference.ts → core/FragmentReference.ts} +1 -1
  27. package/src/{cache.ts → core/cache.ts} +4 -89
  28. package/src/{componentCache.ts → core/componentCache.ts} +1 -1
  29. package/src/core/makeNetworkRequest.ts +90 -0
  30. package/src/{read.ts → core/read.ts} +2 -1
  31. package/src/index.ts +22 -19
  32. package/src/loadable-hooks/useClientSideDefer.ts +4 -4
  33. package/src/{EntrypointReader.tsx → react/FragmentReferenceReader.tsx} +4 -4
  34. package/src/{IsographEnvironmentProvider.tsx → react/IsographEnvironmentProvider.tsx} +1 -1
  35. package/src/{useImperativeReference.ts → react/useImperativeReference.ts} +4 -4
  36. package/src/{useLazyReference.ts → react/useLazyReference.ts} +4 -4
  37. package/src/{useReadAndSubscribe.ts → react/useReadAndSubscribe.ts} +3 -3
  38. package/src/{useRerenderOnChange.ts → react/useRerenderOnChange.ts} +4 -4
  39. package/src/{useResult.ts → react/useResult.ts} +3 -3
  40. package/src/tests/garbageCollection.test.ts +8 -2
  41. package/tsconfig.json +6 -0
  42. package/dist/EntrypointReader.d.ts +0 -10
  43. /package/dist/{FragmentReference.js → core/FragmentReference.js} +0 -0
  44. /package/dist/{IsographEnvironment.d.ts → core/IsographEnvironment.d.ts} +0 -0
  45. /package/dist/{IsographEnvironment.js → core/IsographEnvironment.js} +0 -0
  46. /package/dist/{PromiseWrapper.d.ts → core/PromiseWrapper.d.ts} +0 -0
  47. /package/dist/{PromiseWrapper.js → core/PromiseWrapper.js} +0 -0
  48. /package/dist/{areEqualWithDeepComparison.d.ts → core/areEqualWithDeepComparison.d.ts} +0 -0
  49. /package/dist/{areEqualWithDeepComparison.js → core/areEqualWithDeepComparison.js} +0 -0
  50. /package/dist/{componentCache.d.ts → core/componentCache.d.ts} +0 -0
  51. /package/dist/{entrypoint.d.ts → core/entrypoint.d.ts} +0 -0
  52. /package/dist/{entrypoint.js → core/entrypoint.js} +0 -0
  53. /package/dist/{garbageCollection.d.ts → core/garbageCollection.d.ts} +0 -0
  54. /package/dist/{garbageCollection.js → core/garbageCollection.js} +0 -0
  55. /package/dist/{read.d.ts → core/read.d.ts} +0 -0
  56. /package/dist/{reader.d.ts → core/reader.d.ts} +0 -0
  57. /package/dist/{reader.js → core/reader.js} +0 -0
  58. /package/dist/{util.d.ts → core/util.d.ts} +0 -0
  59. /package/dist/{util.js → core/util.js} +0 -0
  60. /package/dist/{IsographEnvironmentProvider.js → react/IsographEnvironmentProvider.js} +0 -0
  61. /package/src/{IsographEnvironment.tsx → core/IsographEnvironment.ts} +0 -0
  62. /package/src/{PromiseWrapper.ts → core/PromiseWrapper.ts} +0 -0
  63. /package/src/{areEqualWithDeepComparison.ts → core/areEqualWithDeepComparison.ts} +0 -0
  64. /package/src/{entrypoint.ts → core/entrypoint.ts} +0 -0
  65. /package/src/{garbageCollection.ts → core/garbageCollection.ts} +0 -0
  66. /package/src/{reader.ts → core/reader.ts} +0 -0
  67. /package/src/{util.ts → core/util.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { DataId } from './IsographEnvironment';
2
- import { RefetchQueryNormalizationArtifactWrapper } from './entrypoint';
2
+ import { RefetchQueryNormalizationArtifactWrapper } from '../core/entrypoint';
3
3
  import { TopLevelReaderArtifact } from './reader';
4
4
  export type VariableValue = string | number | boolean | null | object;
5
5
  export type Variables = {
@@ -1,7 +1,7 @@
1
- import { Factory, ItemCleanupPair, ParentCache } from '@isograph/react-disposable-state';
1
+ import { Factory, ParentCache } from '@isograph/react-disposable-state';
2
2
  import { PromiseWrapper } from './PromiseWrapper';
3
3
  import { DataId, type IsographEnvironment } from './IsographEnvironment';
4
- import { IsographEntrypoint, NormalizationAst, NormalizationLinkedField, NormalizationScalarField, RefetchQueryNormalizationArtifact, RefetchQueryNormalizationArtifactWrapper } from './entrypoint';
4
+ import { IsographEntrypoint, NormalizationAst, NormalizationLinkedField, NormalizationScalarField, RefetchQueryNormalizationArtifactWrapper } from '../core/entrypoint';
5
5
  import { ReaderLinkedField, ReaderScalarField } from './reader';
6
6
  import { WithEncounteredRecords } from './read';
7
7
  import { FragmentReference, Variables } from './FragmentReference';
@@ -18,7 +18,6 @@ export declare function getOrCreateCache<T>(environment: IsographEnvironment, in
18
18
  */
19
19
  export declare function stableCopy<T>(value: T): T;
20
20
  export declare function getOrCreateCacheForArtifact<TReadFromStore extends Object, TClientFieldValue>(environment: IsographEnvironment, artifact: IsographEntrypoint<TReadFromStore, TClientFieldValue>, variables: Variables): ParentCache<PromiseWrapper<TClientFieldValue>>;
21
- export declare function makeNetworkRequest<T>(environment: IsographEnvironment, artifact: RefetchQueryNormalizationArtifact | IsographEntrypoint<any, any>, variables: Variables): ItemCleanupPair<PromiseWrapper<T>>;
22
21
  type NetworkResponseScalarValue = string | number | boolean;
23
22
  type NetworkResponseValue = NetworkResponseScalarValue | null | NetworkResponseObject | NetworkResponseObject[] | NetworkResponseScalarValue[];
24
23
  type NetworkResponseObject = {
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SECOND_SPLIT_KEY = exports.FIRST_SPLIT_KEY = exports.getParentRecordKey = exports.onNextChange = exports.subscribe = exports.subscribeToAnyChange = exports.normalizeData = exports.makeNetworkRequest = exports.getOrCreateCacheForArtifact = exports.stableCopy = exports.getOrCreateCache = void 0;
3
+ exports.SECOND_SPLIT_KEY = exports.FIRST_SPLIT_KEY = exports.getParentRecordKey = exports.onNextChange = exports.subscribe = exports.subscribeToAnyChange = exports.normalizeData = exports.getOrCreateCacheForArtifact = exports.stableCopy = exports.getOrCreateCache = void 0;
4
4
  const react_disposable_state_1 = require("@isograph/react-disposable-state");
5
- const PromiseWrapper_1 = require("./PromiseWrapper");
6
5
  const IsographEnvironment_1 = require("./IsographEnvironment");
7
- const garbageCollection_1 = require("./garbageCollection");
8
6
  const read_1 = require("./read");
9
7
  const areEqualWithDeepComparison_1 = require("./areEqualWithDeepComparison");
8
+ const makeNetworkRequest_1 = require("./makeNetworkRequest");
10
9
  const TYPENAME_FIELD_NAME = '__typename';
11
10
  function getOrCreateCache(environment, index, factory) {
12
11
  if (typeof window !== 'undefined' && window.__LOG) {
@@ -46,57 +45,10 @@ function stableCopy(value) {
46
45
  exports.stableCopy = stableCopy;
47
46
  function getOrCreateCacheForArtifact(environment, artifact, variables) {
48
47
  const cacheKey = artifact.queryText + JSON.stringify(stableCopy(variables));
49
- const factory = () => makeNetworkRequest(environment, artifact, variables);
48
+ const factory = () => (0, makeNetworkRequest_1.makeNetworkRequest)(environment, artifact, variables);
50
49
  return getOrCreateCache(environment, cacheKey, factory);
51
50
  }
52
51
  exports.getOrCreateCacheForArtifact = getOrCreateCacheForArtifact;
53
- function makeNetworkRequest(environment, artifact, variables) {
54
- if (typeof window !== 'undefined' && window.__LOG) {
55
- console.log('make network request', artifact, variables);
56
- }
57
- let status = {
58
- kind: 'UndisposedIncomplete',
59
- };
60
- // This should be an observable, not a promise
61
- const promise = environment
62
- .networkFunction(artifact.queryText, variables)
63
- .then((networkResponse) => {
64
- if (typeof window !== 'undefined' && window.__LOG) {
65
- console.log('network response', artifact, networkResponse);
66
- }
67
- if (status.kind === 'UndisposedIncomplete') {
68
- normalizeData(environment, artifact.normalizationAst, networkResponse.data, variables, artifact.kind === 'Entrypoint' ? artifact.nestedRefetchQueries : []);
69
- const retainedQuery = {
70
- normalizationAst: artifact.normalizationAst,
71
- variables,
72
- };
73
- status = {
74
- kind: 'UndisposedComplete',
75
- retainedQuery,
76
- };
77
- (0, garbageCollection_1.retainQuery)(environment, retainedQuery);
78
- }
79
- // TODO return null
80
- return networkResponse;
81
- });
82
- const wrapper = (0, PromiseWrapper_1.wrapPromise)(promise);
83
- const response = [
84
- wrapper,
85
- () => {
86
- if (status.kind === 'UndisposedComplete') {
87
- const didUnretainSomeQuery = (0, garbageCollection_1.unretainQuery)(environment, status.retainedQuery);
88
- if (didUnretainSomeQuery) {
89
- (0, garbageCollection_1.garbageCollectEnvironment)(environment);
90
- }
91
- }
92
- status = {
93
- kind: 'Disposed',
94
- };
95
- },
96
- ];
97
- return response;
98
- }
99
- exports.makeNetworkRequest = makeNetworkRequest;
100
52
  function normalizeData(environment, normalizationAst, networkResponse, variables, nestedRefetchQueries) {
101
53
  const encounteredIds = new Set();
102
54
  if (typeof window !== 'undefined' && window.__LOG) {
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getOrCreateCachedComponent = void 0;
4
4
  const cache_1 = require("./cache");
5
- const useReadAndSubscribe_1 = require("./useReadAndSubscribe");
5
+ const useReadAndSubscribe_1 = require("../react/useReadAndSubscribe");
6
6
  function getOrCreateCachedComponent(environment, componentName, fragmentReference) {
7
7
  var _a, _b, _c;
8
8
  // cachedComponentsById is a three layer cache: id, then component name, then
@@ -0,0 +1,6 @@
1
+ import { ItemCleanupPair } from '@isograph/disposable-types';
2
+ import { IsographEntrypoint, RefetchQueryNormalizationArtifact } from './entrypoint';
3
+ import { Variables } from './FragmentReference';
4
+ import { IsographEnvironment } from './IsographEnvironment';
5
+ import { PromiseWrapper } from './PromiseWrapper';
6
+ export declare function makeNetworkRequest<T>(environment: IsographEnvironment, artifact: RefetchQueryNormalizationArtifact | IsographEntrypoint<any, any>, variables: Variables): ItemCleanupPair<PromiseWrapper<T>>;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeNetworkRequest = void 0;
4
+ const garbageCollection_1 = require("./garbageCollection");
5
+ const PromiseWrapper_1 = require("./PromiseWrapper");
6
+ const cache_1 = require("./cache");
7
+ function makeNetworkRequest(environment, artifact, variables) {
8
+ if (typeof window !== 'undefined' && window.__LOG) {
9
+ console.log('make network request', artifact, variables);
10
+ }
11
+ let status = {
12
+ kind: 'UndisposedIncomplete',
13
+ };
14
+ // This should be an observable, not a promise
15
+ const promise = environment
16
+ .networkFunction(artifact.queryText, variables)
17
+ .then((networkResponse) => {
18
+ var _a;
19
+ if (typeof window !== 'undefined' && window.__LOG) {
20
+ console.log('network response', artifact, networkResponse);
21
+ }
22
+ if (status.kind === 'UndisposedIncomplete') {
23
+ (0, cache_1.normalizeData)(environment, artifact.normalizationAst, (_a = networkResponse.data) !== null && _a !== void 0 ? _a : {}, variables, artifact.kind === 'Entrypoint' ? artifact.nestedRefetchQueries : []);
24
+ const retainedQuery = {
25
+ normalizationAst: artifact.normalizationAst,
26
+ variables,
27
+ };
28
+ status = {
29
+ kind: 'UndisposedComplete',
30
+ retainedQuery,
31
+ };
32
+ (0, garbageCollection_1.retainQuery)(environment, retainedQuery);
33
+ }
34
+ // TODO return null
35
+ return networkResponse;
36
+ });
37
+ const wrapper = (0, PromiseWrapper_1.wrapPromise)(promise);
38
+ const response = [
39
+ wrapper,
40
+ () => {
41
+ if (status.kind === 'UndisposedComplete') {
42
+ const didUnretainSomeQuery = (0, garbageCollection_1.unretainQuery)(environment, status.retainedQuery);
43
+ if (didUnretainSomeQuery) {
44
+ (0, garbageCollection_1.garbageCollectEnvironment)(environment);
45
+ }
46
+ }
47
+ status = {
48
+ kind: 'Disposed',
49
+ };
50
+ },
51
+ ];
52
+ return response;
53
+ }
54
+ exports.makeNetworkRequest = makeNetworkRequest;
@@ -4,6 +4,7 @@ exports.readButDoNotEvaluate = void 0;
4
4
  const cache_1 = require("./cache");
5
5
  const componentCache_1 = require("./componentCache");
6
6
  const IsographEnvironment_1 = require("./IsographEnvironment");
7
+ const makeNetworkRequest_1 = require("./makeNetworkRequest");
7
8
  function readButDoNotEvaluate(environment, reference) {
8
9
  var _a;
9
10
  const mutableEncounteredRecords = new Set();
@@ -218,7 +219,7 @@ function readData(environment, ast, root, variables, nestedRefetchQueries, mutab
218
219
  };
219
220
  const localVariables = includeReadOutData(args !== null && args !== void 0 ? args : {}, refetchReaderParams.data);
220
221
  writeQueryArgsToVariables(localVariables, field.queryArguments, variables);
221
- const [_networkRequest, disposeNetworkRequest] = (0, cache_1.makeNetworkRequest)(environment, field.entrypoint, localVariables);
222
+ const [_networkRequest, disposeNetworkRequest] = (0, makeNetworkRequest_1.makeNetworkRequest)(environment, field.entrypoint, localVariables);
222
223
  const fragmentReference = {
223
224
  kind: 'FragmentReference',
224
225
  readerArtifact: field.entrypoint.readerArtifact,
package/dist/index.d.ts CHANGED
@@ -1,16 +1,17 @@
1
- export { retainQuery, unretainQuery, type RetainedQuery, garbageCollectEnvironment, } from './garbageCollection';
2
- export { type PromiseWrapper } from './PromiseWrapper';
3
- export { makeNetworkRequest, subscribe, normalizeData } from './cache';
4
- export { ROOT_ID, type DataId, type DataTypeValue, type IsographEnvironment, type IsographNetworkFunction, type IsographStore, type Link, type StoreRecord, createIsographEnvironment, createIsographStore, defaultMissingFieldHandler, } from './IsographEnvironment';
5
- export { IsographEnvironmentProvider, useIsographEnvironment, type IsographEnvironmentProviderProps, } from './IsographEnvironmentProvider';
6
- export { useImperativeReference } from './useImperativeReference';
7
- export { EntrypointReader } from './EntrypointReader';
8
- export { EagerReaderArtifact, ComponentReaderArtifact, RefetchReaderArtifact, ReaderAst, ReaderAstNode, ReaderLinkedField, ReaderNonLoadableResolverField, ReaderScalarField, TopLevelReaderArtifact, LoadableField, } from './reader';
9
- export { NormalizationAst, NormalizationAstNode, NormalizationLinkedField, NormalizationScalarField, IsographEntrypoint, assertIsEntrypoint, RefetchQueryNormalizationArtifact, RefetchQueryNormalizationArtifactWrapper, } from './entrypoint';
10
- export { readButDoNotEvaluate } from './read';
11
- export { useResult } from './useResult';
12
- export { type FragmentReference } from './FragmentReference';
13
- export { useLazyReference } from './useLazyReference';
14
- export { ExtractSecondParam, Argument, ArgumentName, ArgumentValue, Arguments, } from './util';
15
- export { useRerenderOnChange } from './useRerenderOnChange';
1
+ export { retainQuery, unretainQuery, type RetainedQuery, garbageCollectEnvironment, } from './core/garbageCollection';
2
+ export { type PromiseWrapper } from './core/PromiseWrapper';
3
+ export { subscribe, normalizeData } from './core/cache';
4
+ export { makeNetworkRequest } from './core/makeNetworkRequest';
5
+ export { ROOT_ID, type DataId, type DataTypeValue, type IsographEnvironment, type IsographNetworkFunction, type IsographStore, type Link, type StoreRecord, createIsographEnvironment, createIsographStore, defaultMissingFieldHandler, } from './core/IsographEnvironment';
6
+ export { EagerReaderArtifact, ComponentReaderArtifact, RefetchReaderArtifact, ReaderAst, ReaderAstNode, ReaderLinkedField, ReaderNonLoadableResolverField, ReaderScalarField, TopLevelReaderArtifact, LoadableField, } from './core/reader';
7
+ export { NormalizationAst, NormalizationAstNode, NormalizationLinkedField, NormalizationScalarField, IsographEntrypoint, assertIsEntrypoint, RefetchQueryNormalizationArtifact, RefetchQueryNormalizationArtifactWrapper, } from './core/entrypoint';
8
+ export { readButDoNotEvaluate } from './core/read';
9
+ export { ExtractSecondParam, Argument, ArgumentName, ArgumentValue, Arguments, } from './core/util';
10
+ export { type FragmentReference } from './core/FragmentReference';
11
+ export { IsographEnvironmentProvider, useIsographEnvironment, type IsographEnvironmentProviderProps, } from './react/IsographEnvironmentProvider';
12
+ export { useImperativeReference } from './react/useImperativeReference';
13
+ export { FragmentReferenceReader } from './react/FragmentReferenceReader';
14
+ export { useResult } from './react/useResult';
15
+ export { useLazyReference } from './react/useLazyReference';
16
+ export { useRerenderOnChange } from './react/useRerenderOnChange';
16
17
  export { useClientSideDefer } from './loadable-hooks/useClientSideDefer';
package/dist/index.js CHANGED
@@ -1,35 +1,36 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useClientSideDefer = exports.useRerenderOnChange = exports.useLazyReference = exports.useResult = exports.readButDoNotEvaluate = exports.assertIsEntrypoint = exports.EntrypointReader = exports.useImperativeReference = exports.useIsographEnvironment = exports.IsographEnvironmentProvider = exports.defaultMissingFieldHandler = exports.createIsographStore = exports.createIsographEnvironment = exports.ROOT_ID = exports.normalizeData = exports.subscribe = exports.makeNetworkRequest = exports.garbageCollectEnvironment = exports.unretainQuery = exports.retainQuery = void 0;
4
- var garbageCollection_1 = require("./garbageCollection");
3
+ exports.useClientSideDefer = exports.useRerenderOnChange = exports.useLazyReference = exports.useResult = exports.FragmentReferenceReader = exports.useImperativeReference = exports.useIsographEnvironment = exports.IsographEnvironmentProvider = exports.readButDoNotEvaluate = exports.assertIsEntrypoint = exports.defaultMissingFieldHandler = exports.createIsographStore = exports.createIsographEnvironment = exports.ROOT_ID = exports.makeNetworkRequest = exports.normalizeData = exports.subscribe = exports.garbageCollectEnvironment = exports.unretainQuery = exports.retainQuery = void 0;
4
+ var garbageCollection_1 = require("./core/garbageCollection");
5
5
  Object.defineProperty(exports, "retainQuery", { enumerable: true, get: function () { return garbageCollection_1.retainQuery; } });
6
6
  Object.defineProperty(exports, "unretainQuery", { enumerable: true, get: function () { return garbageCollection_1.unretainQuery; } });
7
7
  Object.defineProperty(exports, "garbageCollectEnvironment", { enumerable: true, get: function () { return garbageCollection_1.garbageCollectEnvironment; } });
8
- var cache_1 = require("./cache");
9
- Object.defineProperty(exports, "makeNetworkRequest", { enumerable: true, get: function () { return cache_1.makeNetworkRequest; } });
8
+ var cache_1 = require("./core/cache");
10
9
  Object.defineProperty(exports, "subscribe", { enumerable: true, get: function () { return cache_1.subscribe; } });
11
10
  Object.defineProperty(exports, "normalizeData", { enumerable: true, get: function () { return cache_1.normalizeData; } });
12
- var IsographEnvironment_1 = require("./IsographEnvironment");
11
+ var makeNetworkRequest_1 = require("./core/makeNetworkRequest");
12
+ Object.defineProperty(exports, "makeNetworkRequest", { enumerable: true, get: function () { return makeNetworkRequest_1.makeNetworkRequest; } });
13
+ var IsographEnvironment_1 = require("./core/IsographEnvironment");
13
14
  Object.defineProperty(exports, "ROOT_ID", { enumerable: true, get: function () { return IsographEnvironment_1.ROOT_ID; } });
14
15
  Object.defineProperty(exports, "createIsographEnvironment", { enumerable: true, get: function () { return IsographEnvironment_1.createIsographEnvironment; } });
15
16
  Object.defineProperty(exports, "createIsographStore", { enumerable: true, get: function () { return IsographEnvironment_1.createIsographStore; } });
16
17
  Object.defineProperty(exports, "defaultMissingFieldHandler", { enumerable: true, get: function () { return IsographEnvironment_1.defaultMissingFieldHandler; } });
17
- var IsographEnvironmentProvider_1 = require("./IsographEnvironmentProvider");
18
+ var entrypoint_1 = require("./core/entrypoint");
19
+ Object.defineProperty(exports, "assertIsEntrypoint", { enumerable: true, get: function () { return entrypoint_1.assertIsEntrypoint; } });
20
+ var read_1 = require("./core/read");
21
+ Object.defineProperty(exports, "readButDoNotEvaluate", { enumerable: true, get: function () { return read_1.readButDoNotEvaluate; } });
22
+ var IsographEnvironmentProvider_1 = require("./react/IsographEnvironmentProvider");
18
23
  Object.defineProperty(exports, "IsographEnvironmentProvider", { enumerable: true, get: function () { return IsographEnvironmentProvider_1.IsographEnvironmentProvider; } });
19
24
  Object.defineProperty(exports, "useIsographEnvironment", { enumerable: true, get: function () { return IsographEnvironmentProvider_1.useIsographEnvironment; } });
20
- var useImperativeReference_1 = require("./useImperativeReference");
25
+ var useImperativeReference_1 = require("./react/useImperativeReference");
21
26
  Object.defineProperty(exports, "useImperativeReference", { enumerable: true, get: function () { return useImperativeReference_1.useImperativeReference; } });
22
- var EntrypointReader_1 = require("./EntrypointReader");
23
- Object.defineProperty(exports, "EntrypointReader", { enumerable: true, get: function () { return EntrypointReader_1.EntrypointReader; } });
24
- var entrypoint_1 = require("./entrypoint");
25
- Object.defineProperty(exports, "assertIsEntrypoint", { enumerable: true, get: function () { return entrypoint_1.assertIsEntrypoint; } });
26
- var read_1 = require("./read");
27
- Object.defineProperty(exports, "readButDoNotEvaluate", { enumerable: true, get: function () { return read_1.readButDoNotEvaluate; } });
28
- var useResult_1 = require("./useResult");
27
+ var FragmentReferenceReader_1 = require("./react/FragmentReferenceReader");
28
+ Object.defineProperty(exports, "FragmentReferenceReader", { enumerable: true, get: function () { return FragmentReferenceReader_1.FragmentReferenceReader; } });
29
+ var useResult_1 = require("./react/useResult");
29
30
  Object.defineProperty(exports, "useResult", { enumerable: true, get: function () { return useResult_1.useResult; } });
30
- var useLazyReference_1 = require("./useLazyReference");
31
+ var useLazyReference_1 = require("./react/useLazyReference");
31
32
  Object.defineProperty(exports, "useLazyReference", { enumerable: true, get: function () { return useLazyReference_1.useLazyReference; } });
32
- var useRerenderOnChange_1 = require("./useRerenderOnChange");
33
+ var useRerenderOnChange_1 = require("./react/useRerenderOnChange");
33
34
  Object.defineProperty(exports, "useRerenderOnChange", { enumerable: true, get: function () { return useRerenderOnChange_1.useRerenderOnChange; } });
34
35
  var useClientSideDefer_1 = require("./loadable-hooks/useClientSideDefer");
35
36
  Object.defineProperty(exports, "useClientSideDefer", { enumerable: true, get: function () { return useClientSideDefer_1.useClientSideDefer; } });
@@ -1,4 +1,4 @@
1
- import { FragmentReference } from '../FragmentReference';
2
- import { LoadableField } from '../reader';
1
+ import { FragmentReference } from '../core/FragmentReference';
2
+ import { LoadableField } from '../core/reader';
3
3
  export declare function useClientSideDefer<TResult>(loadableField: LoadableField<void, TResult>): FragmentReference<any, TResult>;
4
4
  export declare function useClientSideDefer<TArgs, TResult>(loadableField: LoadableField<TArgs, TResult>, args: TArgs): FragmentReference<any, TResult>;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useClientSideDefer = void 0;
4
- const IsographEnvironmentProvider_1 = require("../IsographEnvironmentProvider");
5
- const cache_1 = require("../cache");
4
+ const IsographEnvironmentProvider_1 = require("../react/IsographEnvironmentProvider");
5
+ const cache_1 = require("../core/cache");
6
6
  const react_disposable_state_1 = require("@isograph/react-disposable-state");
7
7
  // TODO allow the user to pass props somehow
8
8
  function useClientSideDefer(loadableField, args) {
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import { ExtractReadFromStore, IsographEntrypoint } from '../core/entrypoint';
3
+ import { FragmentReference } from '../core/FragmentReference';
4
+ export declare function FragmentReferenceReader<TProps extends Record<any, any>, TEntrypoint extends IsographEntrypoint<any, React.FC<TProps>>>(props: TProps extends Record<string, never> ? {
5
+ fragmentReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, React.FC<{}>>;
6
+ additionalProps?: TProps;
7
+ } : {
8
+ fragmentReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, React.FC<TProps>>;
9
+ additionalProps: TProps;
10
+ }): React.ReactNode;
@@ -23,11 +23,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.EntrypointReader = void 0;
26
+ exports.FragmentReferenceReader = void 0;
27
27
  const React = __importStar(require("react"));
28
28
  const useResult_1 = require("./useResult");
29
- function EntrypointReader(props) {
29
+ function FragmentReferenceReader(props) {
30
30
  const Component = (0, useResult_1.useResult)(props.fragmentReference);
31
31
  return React.createElement(Component, Object.assign({}, props.additionalProps));
32
32
  }
33
- exports.EntrypointReader = EntrypointReader;
33
+ exports.FragmentReferenceReader = FragmentReferenceReader;
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { ReactNode } from 'react';
3
- import { type IsographEnvironment } from './IsographEnvironment';
3
+ import { type IsographEnvironment } from '../core/IsographEnvironment';
4
4
  export declare const IsographEnvironmentContext: React.Context<IsographEnvironment | null>;
5
5
  export type IsographEnvironmentProviderProps = {
6
6
  readonly environment: IsographEnvironment;
@@ -1,6 +1,6 @@
1
1
  import { UnassignedState } from '@isograph/react-disposable-state';
2
- import { IsographEntrypoint } from './entrypoint';
3
- import { FragmentReference, Variables } from './FragmentReference';
2
+ import { IsographEntrypoint } from '../core/entrypoint';
3
+ import { FragmentReference, Variables } from '../core/FragmentReference';
4
4
  export declare function useImperativeReference<TReadFromStore extends Object, TClientFieldValue>(entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>): {
5
5
  fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue> | UnassignedState;
6
6
  loadfragmentReference: (variables: Variables) => void;
@@ -3,15 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useImperativeReference = void 0;
4
4
  const react_disposable_state_1 = require("@isograph/react-disposable-state");
5
5
  const IsographEnvironmentProvider_1 = require("./IsographEnvironmentProvider");
6
- const cache_1 = require("./cache");
7
- const IsographEnvironment_1 = require("./IsographEnvironment");
6
+ const IsographEnvironment_1 = require("../core/IsographEnvironment");
7
+ const makeNetworkRequest_1 = require("../core/makeNetworkRequest");
8
8
  function useImperativeReference(entrypoint) {
9
9
  const { state, setState } = (0, react_disposable_state_1.useUpdatableDisposableState)();
10
10
  const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
11
11
  return {
12
12
  fragmentReference: state,
13
13
  loadfragmentReference: (variables) => {
14
- const [_networkRequest, disposeNetworkRequest] = (0, cache_1.makeNetworkRequest)(environment, entrypoint, variables);
14
+ const [_networkRequest, disposeNetworkRequest] = (0, makeNetworkRequest_1.makeNetworkRequest)(environment, entrypoint, variables);
15
15
  setState([
16
16
  {
17
17
  kind: 'FragmentReference',
@@ -1,5 +1,5 @@
1
- import { FragmentReference, Variables } from './FragmentReference';
2
- import { IsographEntrypoint } from './entrypoint';
1
+ import { FragmentReference, Variables } from '../core/FragmentReference';
2
+ import { IsographEntrypoint } from '../core/entrypoint';
3
3
  export declare function useLazyReference<TReadFromStore extends Object, TClientFieldValue>(entrypoint: IsographEntrypoint<TReadFromStore, TClientFieldValue>, variables: Variables): {
4
4
  fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>;
5
5
  };
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useLazyReference = void 0;
4
4
  const IsographEnvironmentProvider_1 = require("./IsographEnvironmentProvider");
5
- const IsographEnvironment_1 = require("./IsographEnvironment");
6
- const cache_1 = require("./cache");
5
+ const IsographEnvironment_1 = require("../core/IsographEnvironment");
6
+ const cache_1 = require("../core/cache");
7
7
  const react_disposable_state_1 = require("@isograph/react-disposable-state");
8
8
  function useLazyReference(entrypoint, variables) {
9
9
  const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
@@ -1,5 +1,5 @@
1
- import { FragmentReference } from './FragmentReference';
2
- import { IsographEnvironment } from './IsographEnvironment';
1
+ import { FragmentReference } from '../core/FragmentReference';
2
+ import { IsographEnvironment } from '../core/IsographEnvironment';
3
3
  /**
4
4
  * Read the data from a fragment reference and subscribe to updates.
5
5
  * Does not pass the data to the fragment reference's resolver function.
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useReadAndSubscribe = void 0;
4
4
  const react_1 = require("react");
5
- const read_1 = require("./read");
5
+ const read_1 = require("../core/read");
6
6
  const useRerenderOnChange_1 = require("./useRerenderOnChange");
7
7
  /**
8
8
  * Read the data from a fragment reference and subscribe to updates.
@@ -1,4 +1,4 @@
1
- import { IsographEnvironment } from './IsographEnvironment';
2
- import { WithEncounteredRecords } from './read';
3
- import { FragmentReference } from './FragmentReference';
1
+ import { IsographEnvironment } from '../core/IsographEnvironment';
2
+ import { WithEncounteredRecords } from '../core/read';
3
+ import { FragmentReference } from '../core/FragmentReference';
4
4
  export declare function useRerenderOnChange<TReadFromStore extends Object>(environment: IsographEnvironment, encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>, fragmentReference: FragmentReference<any, any>, setEncounteredDataAndRecords: (data: WithEncounteredRecords<TReadFromStore>) => void): void;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useRerenderOnChange = void 0;
4
4
  const react_1 = require("react");
5
- const cache_1 = require("./cache");
5
+ const cache_1 = require("../core/cache");
6
6
  // TODO add unit tests for this. Add integration tests that test
7
7
  // behavior when the encounteredRecords underneath a fragment change.
8
8
  function useRerenderOnChange(environment, encounteredDataAndRecords, fragmentReference, setEncounteredDataAndRecords) {
@@ -1,2 +1,2 @@
1
- import { FragmentReference } from './FragmentReference';
1
+ import { FragmentReference } from '../core/FragmentReference';
2
2
  export declare function useResult<TReadFromStore extends Object, TClientFieldValue>(fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>): TClientFieldValue;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useResult = void 0;
4
- const IsographEnvironmentProvider_1 = require("./IsographEnvironmentProvider");
5
- const componentCache_1 = require("./componentCache");
4
+ const IsographEnvironmentProvider_1 = require("../react/IsographEnvironmentProvider");
5
+ const componentCache_1 = require("../core/componentCache");
6
6
  const useReadAndSubscribe_1 = require("./useReadAndSubscribe");
7
7
  function useResult(fragmentReference) {
8
8
  const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isograph/react",
3
- "version": "0.0.0-main-4089db6d",
3
+ "version": "0.0.0-main-d564e834",
4
4
  "description": "Use Isograph with React",
5
5
  "homepage": "https://isograph.dev",
6
6
  "main": "dist/index.js",
@@ -13,11 +13,12 @@
13
13
  "test": "vitest run",
14
14
  "test-watch": "vitest watch",
15
15
  "coverage": "vitest run --coverage",
16
- "prepack": "yarn run test && yarn run compile"
16
+ "prepack": "yarn run test && yarn run compile",
17
+ "tsc": "tsc"
17
18
  },
18
19
  "dependencies": {
19
- "@isograph/disposable-types": "0.0.0-main-4089db6d",
20
- "@isograph/react-disposable-state": "0.0.0-main-4089db6d",
20
+ "@isograph/disposable-types": "0.0.0-main-d564e834",
21
+ "@isograph/react-disposable-state": "0.0.0-main-d564e834",
21
22
  "react": "^18.2.0"
22
23
  },
23
24
  "devDependencies": {
@@ -1,5 +1,5 @@
1
1
  import { DataId } from './IsographEnvironment';
2
- import { RefetchQueryNormalizationArtifactWrapper } from './entrypoint';
2
+ import { RefetchQueryNormalizationArtifactWrapper } from '../core/entrypoint';
3
3
  import { TopLevelReaderArtifact } from './reader';
4
4
 
5
5
  // TODO type this better
@@ -1,9 +1,5 @@
1
- import {
2
- Factory,
3
- ItemCleanupPair,
4
- ParentCache,
5
- } from '@isograph/react-disposable-state';
6
- import { PromiseWrapper, wrapPromise } from './PromiseWrapper';
1
+ import { Factory, ParentCache } from '@isograph/react-disposable-state';
2
+ import { PromiseWrapper } from './PromiseWrapper';
7
3
  import {
8
4
  DataId,
9
5
  ROOT_ID,
@@ -13,26 +9,20 @@ import {
13
9
  DataTypeValue,
14
10
  getLink,
15
11
  } from './IsographEnvironment';
16
- import {
17
- RetainedQuery,
18
- garbageCollectEnvironment,
19
- retainQuery,
20
- unretainQuery,
21
- } from './garbageCollection';
22
12
  import {
23
13
  IsographEntrypoint,
24
14
  NormalizationAst,
25
15
  NormalizationInlineFragment,
26
16
  NormalizationLinkedField,
27
17
  NormalizationScalarField,
28
- RefetchQueryNormalizationArtifact,
29
18
  RefetchQueryNormalizationArtifactWrapper,
30
- } from './entrypoint';
19
+ } from '../core/entrypoint';
31
20
  import { ReaderLinkedField, ReaderScalarField } from './reader';
32
21
  import { Argument, ArgumentValue } from './util';
33
22
  import { WithEncounteredRecords, readButDoNotEvaluate } from './read';
34
23
  import { FragmentReference, Variables } from './FragmentReference';
35
24
  import { areEqualObjectsWithDeepComparison } from './areEqualWithDeepComparison';
25
+ import { makeNetworkRequest } from './makeNetworkRequest';
36
26
 
37
27
  const TYPENAME_FIELD_NAME = '__typename';
38
28
 
@@ -101,81 +91,6 @@ export function getOrCreateCacheForArtifact<
101
91
  );
102
92
  }
103
93
 
104
- type NetworkRequestStatus =
105
- | {
106
- readonly kind: 'UndisposedIncomplete';
107
- }
108
- | {
109
- readonly kind: 'Disposed';
110
- }
111
- | {
112
- readonly kind: 'UndisposedComplete';
113
- readonly retainedQuery: RetainedQuery;
114
- };
115
-
116
- export function makeNetworkRequest<T>(
117
- environment: IsographEnvironment,
118
- artifact: RefetchQueryNormalizationArtifact | IsographEntrypoint<any, any>,
119
- variables: Variables,
120
- ): ItemCleanupPair<PromiseWrapper<T>> {
121
- if (typeof window !== 'undefined' && window.__LOG) {
122
- console.log('make network request', artifact, variables);
123
- }
124
- let status: NetworkRequestStatus = {
125
- kind: 'UndisposedIncomplete',
126
- };
127
- // This should be an observable, not a promise
128
- const promise = environment
129
- .networkFunction(artifact.queryText, variables)
130
- .then((networkResponse) => {
131
- if (typeof window !== 'undefined' && window.__LOG) {
132
- console.log('network response', artifact, networkResponse);
133
- }
134
-
135
- if (status.kind === 'UndisposedIncomplete') {
136
- normalizeData(
137
- environment,
138
- artifact.normalizationAst,
139
- networkResponse.data,
140
- variables,
141
- artifact.kind === 'Entrypoint' ? artifact.nestedRefetchQueries : [],
142
- );
143
- const retainedQuery = {
144
- normalizationAst: artifact.normalizationAst,
145
- variables,
146
- };
147
- status = {
148
- kind: 'UndisposedComplete',
149
- retainedQuery,
150
- };
151
- retainQuery(environment, retainedQuery);
152
- }
153
- // TODO return null
154
- return networkResponse;
155
- });
156
-
157
- const wrapper = wrapPromise(promise);
158
-
159
- const response: ItemCleanupPair<PromiseWrapper<T>> = [
160
- wrapper,
161
- () => {
162
- if (status.kind === 'UndisposedComplete') {
163
- const didUnretainSomeQuery = unretainQuery(
164
- environment,
165
- status.retainedQuery,
166
- );
167
- if (didUnretainSomeQuery) {
168
- garbageCollectEnvironment(environment);
169
- }
170
- }
171
- status = {
172
- kind: 'Disposed',
173
- };
174
- },
175
- ];
176
- return response;
177
- }
178
-
179
94
  type NetworkResponseScalarValue = string | number | boolean;
180
95
  type NetworkResponseValue =
181
96
  | NetworkResponseScalarValue
@@ -1,7 +1,7 @@
1
1
  import { stableCopy } from './cache';
2
2
  import { IsographEnvironment } from './IsographEnvironment';
3
3
  import { FragmentReference } from './FragmentReference';
4
- import { useReadAndSubscribe } from './useReadAndSubscribe';
4
+ import { useReadAndSubscribe } from '../react/useReadAndSubscribe';
5
5
 
6
6
  export function getOrCreateCachedComponent(
7
7
  environment: IsographEnvironment,
@@ -0,0 +1,90 @@
1
+ import { ItemCleanupPair } from '@isograph/disposable-types';
2
+ import {
3
+ IsographEntrypoint,
4
+ RefetchQueryNormalizationArtifact,
5
+ } from './entrypoint';
6
+ import { Variables } from './FragmentReference';
7
+ import {
8
+ garbageCollectEnvironment,
9
+ RetainedQuery,
10
+ retainQuery,
11
+ unretainQuery,
12
+ } from './garbageCollection';
13
+ import { IsographEnvironment } from './IsographEnvironment';
14
+ import { PromiseWrapper, wrapPromise } from './PromiseWrapper';
15
+ import { normalizeData } from './cache';
16
+
17
+ export function makeNetworkRequest<T>(
18
+ environment: IsographEnvironment,
19
+ artifact: RefetchQueryNormalizationArtifact | IsographEntrypoint<any, any>,
20
+ variables: Variables,
21
+ ): ItemCleanupPair<PromiseWrapper<T>> {
22
+ if (typeof window !== 'undefined' && window.__LOG) {
23
+ console.log('make network request', artifact, variables);
24
+ }
25
+ let status: NetworkRequestStatus = {
26
+ kind: 'UndisposedIncomplete',
27
+ };
28
+ // This should be an observable, not a promise
29
+ const promise = environment
30
+ .networkFunction(artifact.queryText, variables)
31
+ .then((networkResponse) => {
32
+ if (typeof window !== 'undefined' && window.__LOG) {
33
+ console.log('network response', artifact, networkResponse);
34
+ }
35
+
36
+ if (status.kind === 'UndisposedIncomplete') {
37
+ normalizeData(
38
+ environment,
39
+ artifact.normalizationAst,
40
+ networkResponse.data ?? {},
41
+ variables,
42
+ artifact.kind === 'Entrypoint' ? artifact.nestedRefetchQueries : [],
43
+ );
44
+ const retainedQuery = {
45
+ normalizationAst: artifact.normalizationAst,
46
+ variables,
47
+ };
48
+ status = {
49
+ kind: 'UndisposedComplete',
50
+ retainedQuery,
51
+ };
52
+ retainQuery(environment, retainedQuery);
53
+ }
54
+ // TODO return null
55
+ return networkResponse;
56
+ });
57
+
58
+ const wrapper = wrapPromise(promise);
59
+
60
+ const response: ItemCleanupPair<PromiseWrapper<T>> = [
61
+ wrapper,
62
+ () => {
63
+ if (status.kind === 'UndisposedComplete') {
64
+ const didUnretainSomeQuery = unretainQuery(
65
+ environment,
66
+ status.retainedQuery,
67
+ );
68
+ if (didUnretainSomeQuery) {
69
+ garbageCollectEnvironment(environment);
70
+ }
71
+ }
72
+ status = {
73
+ kind: 'Disposed',
74
+ };
75
+ },
76
+ ];
77
+ return response;
78
+ }
79
+
80
+ type NetworkRequestStatus =
81
+ | {
82
+ readonly kind: 'UndisposedIncomplete';
83
+ }
84
+ | {
85
+ readonly kind: 'Disposed';
86
+ }
87
+ | {
88
+ readonly kind: 'UndisposedComplete';
89
+ readonly retainedQuery: RetainedQuery;
90
+ };
@@ -1,4 +1,4 @@
1
- import { getParentRecordKey, makeNetworkRequest, onNextChange } from './cache';
1
+ import { getParentRecordKey, onNextChange } from './cache';
2
2
  import { getOrCreateCachedComponent } from './componentCache';
3
3
  import { RefetchQueryNormalizationArtifactWrapper } from './entrypoint';
4
4
  import { FragmentReference, Variables } from './FragmentReference';
@@ -8,6 +8,7 @@ import {
8
8
  defaultMissingFieldHandler,
9
9
  IsographEnvironment,
10
10
  } from './IsographEnvironment';
11
+ import { makeNetworkRequest } from './makeNetworkRequest';
11
12
  import { ReaderAst } from './reader';
12
13
  import { Arguments } from './util';
13
14
 
package/src/index.ts CHANGED
@@ -3,9 +3,10 @@ export {
3
3
  unretainQuery,
4
4
  type RetainedQuery,
5
5
  garbageCollectEnvironment,
6
- } from './garbageCollection';
7
- export { type PromiseWrapper } from './PromiseWrapper';
8
- export { makeNetworkRequest, subscribe, normalizeData } from './cache';
6
+ } from './core/garbageCollection';
7
+ export { type PromiseWrapper } from './core/PromiseWrapper';
8
+ export { subscribe, normalizeData } from './core/cache';
9
+ export { makeNetworkRequest } from './core/makeNetworkRequest';
9
10
  export {
10
11
  ROOT_ID,
11
12
  type DataId,
@@ -18,14 +19,7 @@ export {
18
19
  createIsographEnvironment,
19
20
  createIsographStore,
20
21
  defaultMissingFieldHandler,
21
- } from './IsographEnvironment';
22
- export {
23
- IsographEnvironmentProvider,
24
- useIsographEnvironment,
25
- type IsographEnvironmentProviderProps,
26
- } from './IsographEnvironmentProvider';
27
- export { useImperativeReference } from './useImperativeReference';
28
- export { EntrypointReader } from './EntrypointReader';
22
+ } from './core/IsographEnvironment';
29
23
  export {
30
24
  EagerReaderArtifact,
31
25
  ComponentReaderArtifact,
@@ -37,7 +31,7 @@ export {
37
31
  ReaderScalarField,
38
32
  TopLevelReaderArtifact,
39
33
  LoadableField,
40
- } from './reader';
34
+ } from './core/reader';
41
35
  export {
42
36
  NormalizationAst,
43
37
  NormalizationAstNode,
@@ -47,17 +41,26 @@ export {
47
41
  assertIsEntrypoint,
48
42
  RefetchQueryNormalizationArtifact,
49
43
  RefetchQueryNormalizationArtifactWrapper,
50
- } from './entrypoint';
51
- export { readButDoNotEvaluate } from './read';
52
- export { useResult } from './useResult';
53
- export { type FragmentReference } from './FragmentReference';
54
- export { useLazyReference } from './useLazyReference';
44
+ } from './core/entrypoint';
45
+ export { readButDoNotEvaluate } from './core/read';
55
46
  export {
56
47
  ExtractSecondParam,
57
48
  Argument,
58
49
  ArgumentName,
59
50
  ArgumentValue,
60
51
  Arguments,
61
- } from './util';
62
- export { useRerenderOnChange } from './useRerenderOnChange';
52
+ } from './core/util';
53
+ export { type FragmentReference } from './core/FragmentReference';
54
+
55
+ export {
56
+ IsographEnvironmentProvider,
57
+ useIsographEnvironment,
58
+ type IsographEnvironmentProviderProps,
59
+ } from './react/IsographEnvironmentProvider';
60
+ export { useImperativeReference } from './react/useImperativeReference';
61
+ export { FragmentReferenceReader } from './react/FragmentReferenceReader';
62
+ export { useResult } from './react/useResult';
63
+ export { useLazyReference } from './react/useLazyReference';
64
+ export { useRerenderOnChange } from './react/useRerenderOnChange';
65
+
63
66
  export { useClientSideDefer } from './loadable-hooks/useClientSideDefer';
@@ -1,8 +1,8 @@
1
- import { FragmentReference } from '../FragmentReference';
2
- import { useIsographEnvironment } from '../IsographEnvironmentProvider';
3
- import { getOrCreateCache } from '../cache';
1
+ import { FragmentReference } from '../core/FragmentReference';
2
+ import { useIsographEnvironment } from '../react/IsographEnvironmentProvider';
3
+ import { getOrCreateCache } from '../core/cache';
4
4
  import { useLazyDisposableState } from '@isograph/react-disposable-state';
5
- import { LoadableField } from '../reader';
5
+ import { LoadableField } from '../core/reader';
6
6
 
7
7
  export function useClientSideDefer<TResult>(
8
8
  loadableField: LoadableField<void, TResult>,
@@ -1,9 +1,9 @@
1
1
  import * as React from 'react';
2
- import { ExtractReadFromStore, IsographEntrypoint } from './entrypoint';
3
- import { FragmentReference } from './FragmentReference';
2
+ import { ExtractReadFromStore, IsographEntrypoint } from '../core/entrypoint';
3
+ import { FragmentReference } from '../core/FragmentReference';
4
4
  import { useResult } from './useResult';
5
5
 
6
- export function EntrypointReader<
6
+ export function FragmentReferenceReader<
7
7
  TProps extends Record<any, any>,
8
8
  TEntrypoint extends IsographEntrypoint<any, React.FC<TProps>>,
9
9
  >(
@@ -11,7 +11,7 @@ export function EntrypointReader<
11
11
  ? {
12
12
  fragmentReference: FragmentReference<
13
13
  ExtractReadFromStore<TEntrypoint>,
14
- React.FC<TProps>
14
+ React.FC<{}>
15
15
  >;
16
16
  additionalProps?: TProps;
17
17
  }
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { ReactNode, createContext, useContext } from 'react';
3
- import { type IsographEnvironment } from './IsographEnvironment';
3
+ import { type IsographEnvironment } from '../core/IsographEnvironment';
4
4
 
5
5
  export const IsographEnvironmentContext =
6
6
  createContext<IsographEnvironment | null>(null);
@@ -2,11 +2,11 @@ import {
2
2
  UnassignedState,
3
3
  useUpdatableDisposableState,
4
4
  } from '@isograph/react-disposable-state';
5
- import { IsographEntrypoint } from './entrypoint';
6
- import { FragmentReference, Variables } from './FragmentReference';
5
+ import { IsographEntrypoint } from '../core/entrypoint';
6
+ import { FragmentReference, Variables } from '../core/FragmentReference';
7
7
  import { useIsographEnvironment } from './IsographEnvironmentProvider';
8
- import { makeNetworkRequest } from './cache';
9
- import { ROOT_ID } from './IsographEnvironment';
8
+ import { ROOT_ID } from '../core/IsographEnvironment';
9
+ import { makeNetworkRequest } from '../core/makeNetworkRequest';
10
10
 
11
11
  export function useImperativeReference<
12
12
  TReadFromStore extends Object,
@@ -1,8 +1,8 @@
1
- import { FragmentReference, Variables } from './FragmentReference';
1
+ import { FragmentReference, Variables } from '../core/FragmentReference';
2
2
  import { useIsographEnvironment } from './IsographEnvironmentProvider';
3
- import { ROOT_ID } from './IsographEnvironment';
4
- import { IsographEntrypoint } from './entrypoint';
5
- import { getOrCreateCacheForArtifact } from './cache';
3
+ import { ROOT_ID } from '../core/IsographEnvironment';
4
+ import { IsographEntrypoint } from '../core/entrypoint';
5
+ import { getOrCreateCacheForArtifact } from '../core/cache';
6
6
  import { useLazyDisposableState } from '@isograph/react-disposable-state';
7
7
 
8
8
  export function useLazyReference<
@@ -1,7 +1,7 @@
1
1
  import { useState } from 'react';
2
- import { FragmentReference } from './FragmentReference';
3
- import { IsographEnvironment } from './IsographEnvironment';
4
- import { readButDoNotEvaluate } from './read';
2
+ import { FragmentReference } from '../core/FragmentReference';
3
+ import { IsographEnvironment } from '../core/IsographEnvironment';
4
+ import { readButDoNotEvaluate } from '../core/read';
5
5
  import { useRerenderOnChange } from './useRerenderOnChange';
6
6
 
7
7
  /**
@@ -1,8 +1,8 @@
1
1
  import { useEffect } from 'react';
2
- import { IsographEnvironment } from './IsographEnvironment';
3
- import { subscribe } from './cache';
4
- import { WithEncounteredRecords } from './read';
5
- import { FragmentReference } from './FragmentReference';
2
+ import { IsographEnvironment } from '../core/IsographEnvironment';
3
+ import { subscribe } from '../core/cache';
4
+ import { WithEncounteredRecords } from '../core/read';
5
+ import { FragmentReference } from '../core/FragmentReference';
6
6
 
7
7
  // TODO add unit tests for this. Add integration tests that test
8
8
  // behavior when the encounteredRecords underneath a fragment change.
@@ -1,6 +1,6 @@
1
- import { useIsographEnvironment } from './IsographEnvironmentProvider';
2
- import { FragmentReference } from './FragmentReference';
3
- import { getOrCreateCachedComponent } from './componentCache';
1
+ import { useIsographEnvironment } from '../react/IsographEnvironmentProvider';
2
+ import { FragmentReference } from '../core/FragmentReference';
3
+ import { getOrCreateCachedComponent } from '../core/componentCache';
4
4
  import { useReadAndSubscribe } from './useReadAndSubscribe';
5
5
 
6
6
  export function useResult<TReadFromStore extends Object, TClientFieldValue>(
@@ -1,6 +1,12 @@
1
1
  import { describe, test, expect } from 'vitest';
2
- import { ROOT_ID, createIsographEnvironment } from '../IsographEnvironment';
3
- import { garbageCollectEnvironment, retainQuery } from '../garbageCollection';
2
+ import {
3
+ ROOT_ID,
4
+ createIsographEnvironment,
5
+ } from '../core/IsographEnvironment';
6
+ import {
7
+ garbageCollectEnvironment,
8
+ retainQuery,
9
+ } from '../core/garbageCollection';
4
10
  import { iso } from './__isograph/iso';
5
11
  import { nodeFieldRetainedQuery } from './nodeQuery';
6
12
 
package/tsconfig.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "extends": "./tsconfig.pkg.json",
3
+ "compilerOptions": {
4
+ "noEmit": true,
5
+ },
6
+ }
@@ -1,10 +0,0 @@
1
- import * as React from 'react';
2
- import { ExtractReadFromStore, IsographEntrypoint } from './entrypoint';
3
- import { FragmentReference } from './FragmentReference';
4
- export declare function EntrypointReader<TProps extends Record<any, any>, TEntrypoint extends IsographEntrypoint<any, React.FC<TProps>>>(props: TProps extends Record<string, never> ? {
5
- fragmentReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, React.FC<TProps>>;
6
- additionalProps?: TProps;
7
- } : {
8
- fragmentReference: FragmentReference<ExtractReadFromStore<TEntrypoint>, React.FC<TProps>>;
9
- additionalProps: TProps;
10
- }): React.ReactNode;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes