@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.
- package/.turbo/turbo-compile-typescript.log +4 -0
- package/dist/core/FragmentReference.d.ts +16 -7
- package/dist/core/FragmentReference.d.ts.map +1 -1
- package/dist/core/FragmentReference.js +3 -12
- package/dist/core/IsographEnvironment.d.ts +17 -27
- package/dist/core/IsographEnvironment.d.ts.map +1 -1
- package/dist/core/IsographEnvironment.js +4 -0
- package/dist/core/PromiseWrapper.d.ts +3 -4
- package/dist/core/PromiseWrapper.d.ts.map +1 -1
- package/dist/core/PromiseWrapper.js +5 -4
- package/dist/core/areEqualWithDeepComparison.d.ts.map +1 -1
- package/dist/core/areEqualWithDeepComparison.js +16 -0
- package/dist/core/cache.d.ts +11 -20
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/cache.js +60 -45
- package/dist/core/check.d.ts +9 -5
- package/dist/core/check.d.ts.map +1 -1
- package/dist/core/check.js +2 -2
- package/dist/core/componentCache.d.ts +1 -1
- package/dist/core/componentCache.d.ts.map +1 -1
- package/dist/core/componentCache.js +27 -31
- package/dist/core/entrypoint.d.ts +23 -26
- package/dist/core/entrypoint.d.ts.map +1 -1
- package/dist/core/garbageCollection.d.ts +3 -4
- package/dist/core/garbageCollection.d.ts.map +1 -1
- package/dist/core/garbageCollection.js +1 -1
- package/dist/core/logging.d.ts +12 -13
- package/dist/core/logging.d.ts.map +1 -1
- package/dist/core/logging.js +8 -5
- package/dist/core/makeNetworkRequest.d.ts +5 -5
- package/dist/core/makeNetworkRequest.d.ts.map +1 -1
- package/dist/core/makeNetworkRequest.js +107 -22
- package/dist/core/read.d.ts +15 -10
- package/dist/core/read.d.ts.map +1 -1
- package/dist/core/read.js +398 -304
- package/dist/core/reader.d.ts +24 -32
- package/dist/core/reader.d.ts.map +1 -1
- package/dist/core/startUpdate.d.ts +5 -0
- package/dist/core/startUpdate.d.ts.map +1 -0
- package/dist/core/startUpdate.js +15 -0
- package/dist/core/util.d.ts +3 -0
- package/dist/core/util.d.ts.map +1 -1
- package/dist/index.d.ts +16 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/loadable-hooks/useClientSideDefer.d.ts +4 -10
- package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
- package/dist/loadable-hooks/useClientSideDefer.js +2 -2
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +8 -15
- package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useConnectionSpecPagination.js +6 -4
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts +1 -2
- package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts.map +1 -1
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts +4 -6
- package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +1 -1
- package/dist/loadable-hooks/useImperativeLoadableField.js +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts +6 -13
- package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
- package/dist/loadable-hooks/useSkipLimitPagination.js +11 -9
- package/dist/react/FragmentReader.d.ts +2 -3
- package/dist/react/FragmentReader.d.ts.map +1 -1
- package/dist/react/IsographEnvironmentProvider.d.ts.map +1 -1
- package/dist/react/useImperativeReference.d.ts +7 -10
- package/dist/react/useImperativeReference.d.ts.map +1 -1
- package/dist/react/useImperativeReference.js +2 -3
- package/dist/react/useLazyReference.d.ts +4 -7
- package/dist/react/useLazyReference.d.ts.map +1 -1
- package/dist/react/useLazyReference.js +26 -5
- package/dist/react/useReadAndSubscribe.d.ts +3 -9
- package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
- package/dist/react/useReadAndSubscribe.js +7 -3
- package/dist/react/useRerenderOnChange.d.ts +1 -1
- package/dist/react/useRerenderOnChange.d.ts.map +1 -1
- package/dist/react/useResult.d.ts +3 -6
- package/dist/react/useResult.d.ts.map +1 -1
- package/dist/react/useResult.js +10 -8
- package/isograph.config.json +1 -0
- package/package.json +7 -6
- package/src/core/FragmentReference.ts +30 -15
- package/src/core/IsographEnvironment.ts +39 -31
- package/src/core/PromiseWrapper.ts +3 -3
- package/src/core/areEqualWithDeepComparison.ts +20 -0
- package/src/core/cache.ts +105 -72
- package/src/core/check.ts +13 -8
- package/src/core/componentCache.ts +45 -52
- package/src/core/entrypoint.ts +34 -16
- package/src/core/garbageCollection.ts +6 -6
- package/src/core/logging.ts +24 -22
- package/src/core/makeNetworkRequest.ts +183 -30
- package/src/core/read.ts +618 -435
- package/src/core/reader.ts +37 -24
- package/src/core/startUpdate.ts +28 -0
- package/src/core/util.ts +4 -0
- package/src/index.ts +82 -9
- package/src/loadable-hooks/useClientSideDefer.ts +11 -10
- package/src/loadable-hooks/useConnectionSpecPagination.ts +26 -13
- package/src/loadable-hooks/useImperativeExposedMutationField.ts +1 -1
- package/src/loadable-hooks/useImperativeLoadableField.ts +10 -12
- package/src/loadable-hooks/useSkipLimitPagination.ts +37 -19
- package/src/react/FragmentReader.tsx +3 -3
- package/src/react/IsographEnvironmentProvider.tsx +1 -1
- package/src/react/useImperativeReference.ts +40 -19
- package/src/react/useLazyReference.ts +62 -14
- package/src/react/useReadAndSubscribe.ts +17 -9
- package/src/react/useRerenderOnChange.ts +2 -2
- package/src/react/useResult.ts +21 -8
- package/src/tests/__isograph/Query/meName/entrypoint.ts +4 -28
- package/src/tests/__isograph/Query/meName/normalization_ast.ts +25 -0
- package/src/tests/__isograph/Query/meName/query_text.ts +6 -0
- package/src/tests/__isograph/Query/meName/resolver_reader.ts +4 -0
- package/src/tests/__isograph/Query/meNameSuccessor/entrypoint.ts +4 -66
- package/src/tests/__isograph/Query/meNameSuccessor/normalization_ast.ts +56 -0
- package/src/tests/__isograph/Query/meNameSuccessor/query_text.ts +13 -0
- package/src/tests/__isograph/Query/meNameSuccessor/resolver_reader.ts +7 -0
- package/src/tests/__isograph/Query/nodeField/entrypoint.ts +4 -33
- package/src/tests/__isograph/Query/nodeField/normalization_ast.ts +30 -0
- package/src/tests/__isograph/Query/nodeField/query_text.ts +6 -0
- package/src/tests/__isograph/Query/nodeField/resolver_reader.ts +4 -0
- package/src/tests/__isograph/Query/subquery/entrypoint.ts +4 -43
- package/src/tests/__isograph/Query/subquery/normalization_ast.ts +38 -0
- package/src/tests/__isograph/Query/subquery/query_text.ts +8 -0
- package/src/tests/__isograph/Query/subquery/resolver_reader.ts +5 -0
- package/src/tests/__isograph/iso.ts +3 -2
- package/src/tests/garbageCollection.test.ts +10 -8
- package/src/tests/meNameSuccessor.ts +1 -1
- package/src/tests/nodeQuery.ts +2 -1
- package/src/tests/normalizeData.test.ts +1 -1
- package/tsconfig.pkg.json +1 -2
@@ -1,38 +1,34 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.getOrCreateCachedComponent = getOrCreateCachedComponent;
|
4
|
-
const cache_1 = require("./cache");
|
5
4
|
const useReadAndSubscribe_1 = require("../react/useReadAndSubscribe");
|
6
|
-
const
|
5
|
+
const FragmentReference_1 = require("./FragmentReference");
|
7
6
|
const logging_1 = require("./logging");
|
7
|
+
const PromiseWrapper_1 = require("./PromiseWrapper");
|
8
|
+
const startUpdate_1 = require("./startUpdate");
|
8
9
|
function getOrCreateCachedComponent(environment, componentName, fragmentReference, networkRequestOptions) {
|
9
|
-
var _a
|
10
|
-
|
11
|
-
//
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
}
|
34
|
-
Component.displayName = `${componentName} (id: ${fragmentReference.root}) @component`;
|
35
|
-
return Component;
|
36
|
-
})();
|
37
|
-
return byArgs[stringifiedArgs];
|
10
|
+
var _a;
|
11
|
+
var _b, _c;
|
12
|
+
// We create startUpdate outside of component to make it stable
|
13
|
+
const startUpdate = (0, startUpdate_1.createStartUpdate)(environment, fragmentReference);
|
14
|
+
return ((_a = (_b = environment.componentCache)[_c = (0, FragmentReference_1.stableIdForFragmentReference)(fragmentReference, componentName)]) !== null && _a !== void 0 ? _a : (_b[_c] = (() => {
|
15
|
+
function Component(additionalRuntimeProps) {
|
16
|
+
const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
|
17
|
+
const data = (0, useReadAndSubscribe_1.useReadAndSubscribe)(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst);
|
18
|
+
(0, logging_1.logMessage)(environment, () => ({
|
19
|
+
kind: 'ComponentRerendered',
|
20
|
+
componentName,
|
21
|
+
rootLink: fragmentReference.root,
|
22
|
+
}));
|
23
|
+
return readerWithRefetchQueries.readerArtifact.resolver({
|
24
|
+
data,
|
25
|
+
parameters: fragmentReference.variables,
|
26
|
+
startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
|
27
|
+
? startUpdate
|
28
|
+
: undefined,
|
29
|
+
}, additionalRuntimeProps);
|
30
|
+
}
|
31
|
+
Component.displayName = `${componentName} (id: ${fragmentReference.root}) @component`;
|
32
|
+
return Component;
|
33
|
+
})()));
|
38
34
|
}
|
@@ -1,38 +1,38 @@
|
|
1
|
+
import type { UnknownTReadFromStore } from './FragmentReference';
|
1
2
|
import type { TypeName } from './IsographEnvironment';
|
2
3
|
import { TopLevelReaderArtifact } from './reader';
|
3
4
|
import { Arguments } from './util';
|
4
|
-
export type ReaderWithRefetchQueries<TReadFromStore extends {
|
5
|
-
parameters: object;
|
6
|
-
data: object;
|
7
|
-
}, TClientFieldValue> = {
|
5
|
+
export type ReaderWithRefetchQueries<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue> = {
|
8
6
|
readonly kind: 'ReaderWithRefetchQueries';
|
9
7
|
readonly readerArtifact: TopLevelReaderArtifact<TReadFromStore, TClientFieldValue, any>;
|
10
8
|
readonly nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[];
|
11
9
|
};
|
12
|
-
export type NetworkRequestInfo = {
|
10
|
+
export type NetworkRequestInfo<TNormalizationAst> = {
|
13
11
|
readonly kind: 'NetworkRequestInfo';
|
14
12
|
readonly queryText: string;
|
15
|
-
readonly normalizationAst:
|
13
|
+
readonly normalizationAst: TNormalizationAst;
|
16
14
|
};
|
17
|
-
export type IsographEntrypoint<TReadFromStore extends {
|
18
|
-
parameters: object;
|
19
|
-
data: object;
|
20
|
-
}, TClientFieldValue> = {
|
15
|
+
export type IsographEntrypoint<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue, TNormalizationAst extends NormalizationAst | NormalizationAstLoader> = {
|
21
16
|
readonly kind: 'Entrypoint';
|
22
|
-
readonly networkRequestInfo: NetworkRequestInfo
|
17
|
+
readonly networkRequestInfo: NetworkRequestInfo<TNormalizationAst>;
|
23
18
|
readonly readerWithRefetchQueries: ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>;
|
24
19
|
readonly concreteType: TypeName;
|
25
20
|
};
|
26
|
-
export type IsographEntrypointLoader<TReadFromStore extends {
|
27
|
-
parameters: object;
|
28
|
-
data: object;
|
29
|
-
}, TClientFieldValue> = {
|
21
|
+
export type IsographEntrypointLoader<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue> = {
|
30
22
|
readonly kind: 'EntrypointLoader';
|
31
23
|
readonly typeAndField: string;
|
32
|
-
readonly loader: () => Promise<IsographEntrypoint<TReadFromStore, TClientFieldValue>>;
|
24
|
+
readonly loader: () => Promise<IsographEntrypoint<TReadFromStore, TClientFieldValue, NormalizationAst>>;
|
33
25
|
};
|
34
26
|
export type NormalizationAstNode = NormalizationScalarField | NormalizationLinkedField | NormalizationInlineFragment;
|
35
|
-
export type
|
27
|
+
export type NormalizationAstNodes = ReadonlyArray<NormalizationAstNode>;
|
28
|
+
export type NormalizationAst = {
|
29
|
+
readonly kind: 'NormalizationAst';
|
30
|
+
readonly selections: NormalizationAstNodes;
|
31
|
+
};
|
32
|
+
export type NormalizationAstLoader = {
|
33
|
+
readonly kind: 'NormalizationAstLoader';
|
34
|
+
readonly loader: () => Promise<NormalizationAst>;
|
35
|
+
};
|
36
36
|
export type NormalizationScalarField = {
|
37
37
|
readonly kind: 'Scalar';
|
38
38
|
readonly fieldName: string;
|
@@ -42,28 +42,25 @@ export type NormalizationLinkedField = {
|
|
42
42
|
readonly kind: 'Linked';
|
43
43
|
readonly fieldName: string;
|
44
44
|
readonly arguments: Arguments | null;
|
45
|
-
readonly selections:
|
45
|
+
readonly selections: NormalizationAstNodes;
|
46
46
|
readonly concreteType: TypeName | null;
|
47
47
|
};
|
48
48
|
export type NormalizationInlineFragment = {
|
49
49
|
readonly kind: 'InlineFragment';
|
50
50
|
readonly type: string;
|
51
|
-
readonly selections:
|
51
|
+
readonly selections: NormalizationAstNodes;
|
52
52
|
};
|
53
53
|
export type RefetchQueryNormalizationArtifact = {
|
54
54
|
readonly kind: 'RefetchQuery';
|
55
|
-
readonly networkRequestInfo: NetworkRequestInfo
|
55
|
+
readonly networkRequestInfo: NetworkRequestInfo<NormalizationAst>;
|
56
56
|
readonly concreteType: TypeName;
|
57
57
|
};
|
58
58
|
export type RefetchQueryNormalizationArtifactWrapper = {
|
59
59
|
readonly artifact: RefetchQueryNormalizationArtifact;
|
60
60
|
readonly allowedVariables: string[];
|
61
61
|
};
|
62
|
-
export declare function assertIsEntrypoint<TReadFromStore extends
|
63
|
-
|
64
|
-
|
65
|
-
}, TClientFieldValue>(value: IsographEntrypoint<TReadFromStore, TClientFieldValue> | ((_: any) => any) | any): asserts value is IsographEntrypoint<TReadFromStore, TClientFieldValue>;
|
66
|
-
export type ExtractReadFromStore<Type> = Type extends IsographEntrypoint<infer X, any> ? X : never;
|
67
|
-
export type ExtractResolverResult<Type> = Type extends IsographEntrypoint<any, infer X> ? X : never;
|
62
|
+
export declare function assertIsEntrypoint<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue, TNormalizationAst extends NormalizationAst | NormalizationAstLoader>(value: IsographEntrypoint<TReadFromStore, TClientFieldValue, TNormalizationAst> | ((_: any) => any) | any): asserts value is IsographEntrypoint<TReadFromStore, TClientFieldValue, TNormalizationAst>;
|
63
|
+
export type ExtractReadFromStore<Type> = Type extends IsographEntrypoint<infer X, any, any> ? X : never;
|
64
|
+
export type ExtractResolverResult<Type> = Type extends IsographEntrypoint<any, infer X, any> ? X : never;
|
68
65
|
export type ExtractProps<Type> = Type extends React.FC<infer X> ? X : never;
|
69
66
|
//# sourceMappingURL=entrypoint.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"entrypoint.d.ts","sourceRoot":"","sources":["../../src/core/entrypoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,MAAM,wBAAwB,CAClC,cAAc,SAAS
|
1
|
+
{"version":3,"file":"entrypoint.d.ts","sourceRoot":"","sources":["../../src/core/entrypoint.ts"],"names":[],"mappings":"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"}
|
@@ -1,13 +1,12 @@
|
|
1
|
+
import { NormalizationAstNodes } from './entrypoint';
|
1
2
|
import { IsographEnvironment, type Link } from './IsographEnvironment';
|
2
|
-
import { NormalizationAst } from './entrypoint';
|
3
3
|
export type RetainedQuery = {
|
4
|
-
readonly normalizationAst:
|
4
|
+
readonly normalizationAst: NormalizationAstNodes;
|
5
5
|
readonly variables: {};
|
6
6
|
readonly root: Link;
|
7
7
|
};
|
8
|
-
type DidUnretainSomeQuery = boolean;
|
8
|
+
export type DidUnretainSomeQuery = boolean;
|
9
9
|
export declare function unretainQuery(environment: IsographEnvironment, retainedQuery: RetainedQuery): DidUnretainSomeQuery;
|
10
10
|
export declare function retainQuery(environment: IsographEnvironment, queryToRetain: RetainedQuery): void;
|
11
11
|
export declare function garbageCollectEnvironment(environment: IsographEnvironment): void;
|
12
|
-
export {};
|
13
12
|
//# sourceMappingURL=garbageCollection.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"garbageCollection.d.ts","sourceRoot":"","sources":["../../src/core/garbageCollection.ts"],"names":[],"mappings":"AACA,OAAO,
|
1
|
+
{"version":3,"file":"garbageCollection.d.ts","sourceRoot":"","sources":["../../src/core/garbageCollection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAGL,mBAAmB,EAGnB,KAAK,IAAI,EAEV,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAC3C,wBAAgB,aAAa,CAC3B,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,aAAa,GAC3B,oBAAoB,CAUtB;AAED,wBAAgB,WAAW,CACzB,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,aAAa,QAM7B;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,mBAAmB,QA+BzE"}
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.unretainQuery = unretainQuery;
|
4
4
|
exports.retainQuery = retainQuery;
|
5
5
|
exports.garbageCollectEnvironment = garbageCollectEnvironment;
|
6
|
-
const IsographEnvironment_1 = require("./IsographEnvironment");
|
7
6
|
const cache_1 = require("./cache");
|
7
|
+
const IsographEnvironment_1 = require("./IsographEnvironment");
|
8
8
|
function unretainQuery(environment, retainedQuery) {
|
9
9
|
environment.retainedQueries.delete(retainedQuery);
|
10
10
|
environment.gcBuffer.push(retainedQuery);
|
package/dist/core/logging.d.ts
CHANGED
@@ -1,19 +1,14 @@
|
|
1
1
|
import { CleanupFn } from '@isograph/disposable-types';
|
2
|
-
import { IsographEnvironment, IsographStore, StoreRecord, type Link } from './IsographEnvironment';
|
3
|
-
import { IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifact } from './entrypoint';
|
4
|
-
import { FragmentReference, Variables } from './FragmentReference';
|
5
2
|
import { NetworkResponseObject, type EncounteredIds } from './cache';
|
6
|
-
import { Arguments } from './util';
|
7
|
-
import { ReadDataResult } from './read';
|
8
3
|
import { CheckResult } from './check';
|
4
|
+
import { IsographEntrypoint, RefetchQueryNormalizationArtifact, type NormalizationAstNodes } from './entrypoint';
|
5
|
+
import { FragmentReference, Variables } from './FragmentReference';
|
6
|
+
import { IsographEnvironment, IsographStore, StoreRecord, type Link } from './IsographEnvironment';
|
7
|
+
import { ReadDataResult } from './read';
|
8
|
+
import { Arguments } from './util';
|
9
9
|
export type LogMessage = {
|
10
|
-
kind: 'GettingSuspenseCacheItem';
|
11
|
-
index: string;
|
12
|
-
availableCacheItems: ReadonlyArray<string>;
|
13
|
-
found: boolean;
|
14
|
-
} | {
|
15
10
|
kind: 'AboutToNormalize';
|
16
|
-
normalizationAst:
|
11
|
+
normalizationAst: NormalizationAstNodes;
|
17
12
|
networkResponse: NetworkResponseObject;
|
18
13
|
variables: Variables;
|
19
14
|
} | {
|
@@ -32,7 +27,7 @@ export type LogMessage = {
|
|
32
27
|
rootLink: Link;
|
33
28
|
} | {
|
34
29
|
kind: 'MakeNetworkRequest';
|
35
|
-
artifact: RefetchQueryNormalizationArtifact | IsographEntrypoint<any, any>;
|
30
|
+
artifact: RefetchQueryNormalizationArtifact | IsographEntrypoint<any, any, any>;
|
36
31
|
variables: Variables;
|
37
32
|
networkRequestId: string;
|
38
33
|
} | {
|
@@ -53,17 +48,21 @@ export type LogMessage = {
|
|
53
48
|
} | {
|
54
49
|
kind: 'DoneReading';
|
55
50
|
response: ReadDataResult<any>;
|
51
|
+
fieldName: string;
|
52
|
+
root: Link;
|
56
53
|
} | {
|
57
54
|
kind: 'NonEntrypointReceived';
|
58
55
|
entrypoint: any;
|
59
56
|
} | {
|
60
57
|
kind: 'EnvironmentCheck';
|
61
58
|
result: CheckResult;
|
59
|
+
} | {
|
60
|
+
kind: 'EnvironmentCreated';
|
62
61
|
};
|
63
62
|
export type LogFunction = (logMessage: LogMessage) => void;
|
64
63
|
export type WrappedLogFunction = {
|
65
64
|
log: LogFunction;
|
66
65
|
};
|
67
|
-
export declare function logMessage(environment: IsographEnvironment,
|
66
|
+
export declare function logMessage(environment: IsographEnvironment, getMessage: () => LogMessage): void;
|
68
67
|
export declare function registerLogger(environment: IsographEnvironment, log: LogFunction): CleanupFn;
|
69
68
|
//# sourceMappingURL=logging.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/core/logging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/core/logging.ts"],"names":[],"mappings":"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"}
|
package/dist/core/logging.js
CHANGED
@@ -2,12 +2,15 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.logMessage = logMessage;
|
4
4
|
exports.registerLogger = registerLogger;
|
5
|
-
function logMessage(environment,
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
function logMessage(environment, getMessage) {
|
6
|
+
if (environment.loggers.size > 0) {
|
7
|
+
const message = getMessage();
|
8
|
+
for (const logger of environment.loggers) {
|
9
|
+
try {
|
10
|
+
logger.log(message);
|
11
|
+
}
|
12
|
+
catch (_a) { }
|
9
13
|
}
|
10
|
-
catch (_a) { }
|
11
14
|
}
|
12
15
|
}
|
13
16
|
function registerLogger(environment, log) {
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { ItemCleanupPair } from '@isograph/disposable-types';
|
2
|
-
import {
|
3
|
-
import {
|
2
|
+
import { FetchOptions } from './check';
|
3
|
+
import { IsographEntrypoint, RefetchQueryNormalizationArtifact, type NormalizationAst, type NormalizationAstLoader } from './entrypoint';
|
4
|
+
import { ExtractParameters, type UnknownTReadFromStore } from './FragmentReference';
|
4
5
|
import { IsographEnvironment } from './IsographEnvironment';
|
5
6
|
import { AnyError, PromiseWrapper } from './PromiseWrapper';
|
6
|
-
|
7
|
-
export declare function
|
8
|
-
export declare function makeNetworkRequest(environment: IsographEnvironment, artifact: RefetchQueryNormalizationArtifact | IsographEntrypoint<any, any>, variables: Variables, fetchOptions?: FetchOptions): ItemCleanupPair<PromiseWrapper<void, AnyError>>;
|
7
|
+
export declare function maybeMakeNetworkRequest<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue, TNormalizationAst extends NormalizationAst | NormalizationAstLoader>(environment: IsographEnvironment, artifact: RefetchQueryNormalizationArtifact | IsographEntrypoint<TReadFromStore, TClientFieldValue, TNormalizationAst>, variables: ExtractParameters<TReadFromStore>, fetchOptions?: FetchOptions<TClientFieldValue>): ItemCleanupPair<PromiseWrapper<void, AnyError>>;
|
8
|
+
export declare function makeNetworkRequest<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue, TNormalizationAst extends NormalizationAst | NormalizationAstLoader>(environment: IsographEnvironment, artifact: RefetchQueryNormalizationArtifact | IsographEntrypoint<TReadFromStore, TClientFieldValue, TNormalizationAst>, variables: ExtractParameters<TReadFromStore>, fetchOptions?: FetchOptions<TClientFieldValue>): ItemCleanupPair<PromiseWrapper<void, AnyError>>;
|
9
9
|
//# sourceMappingURL=makeNetworkRequest.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"makeNetworkRequest.d.ts","sourceRoot":"","sources":["../../src/core/makeNetworkRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
1
|
+
{"version":3,"file":"makeNetworkRequest.d.ts","sourceRoot":"","sources":["../../src/core/makeNetworkRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAqC,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1E,OAAO,EACL,kBAAkB,EAClB,iCAAiC,EACjC,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EAEjB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAE,mBAAmB,EAAiB,MAAM,uBAAuB,CAAC;AAE3E,OAAO,EACL,QAAQ,EACR,cAAc,EAGf,MAAM,kBAAkB,CAAC;AAM1B,wBAAgB,uBAAuB,CACrC,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,EACjB,iBAAiB,SAAS,gBAAgB,GAAG,sBAAsB,EAEnE,WAAW,EAAE,mBAAmB,EAChC,QAAQ,EACJ,iCAAiC,GACjC,kBAAkB,CAAC,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EAC5E,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,YAAY,CAAC,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAC7C,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAuCjD;AAeD,wBAAgB,kBAAkB,CAChC,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,EACjB,iBAAiB,SAAS,gBAAgB,GAAG,sBAAsB,EAEnE,WAAW,EAAE,mBAAmB,EAChC,QAAQ,EACJ,iCAAiC,GACjC,kBAAkB,CAAC,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EAC5E,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,YAAY,CAAC,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAC7C,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAiHjD"}
|
@@ -2,12 +2,15 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.maybeMakeNetworkRequest = maybeMakeNetworkRequest;
|
4
4
|
exports.makeNetworkRequest = makeNetworkRequest;
|
5
|
+
const cache_1 = require("./cache");
|
6
|
+
const check_1 = require("./check");
|
7
|
+
const componentCache_1 = require("./componentCache");
|
5
8
|
const garbageCollection_1 = require("./garbageCollection");
|
6
9
|
const IsographEnvironment_1 = require("./IsographEnvironment");
|
7
|
-
const PromiseWrapper_1 = require("./PromiseWrapper");
|
8
|
-
const cache_1 = require("./cache");
|
9
10
|
const logging_1 = require("./logging");
|
10
|
-
const
|
11
|
+
const PromiseWrapper_1 = require("./PromiseWrapper");
|
12
|
+
const read_1 = require("./read");
|
13
|
+
const startUpdate_1 = require("./startUpdate");
|
11
14
|
let networkRequestId = 0;
|
12
15
|
function maybeMakeNetworkRequest(environment, artifact, variables, fetchOptions) {
|
13
16
|
var _a;
|
@@ -19,7 +22,11 @@ function maybeMakeNetworkRequest(environment, artifact, variables, fetchOptions)
|
|
19
22
|
return [(0, PromiseWrapper_1.wrapResolvedValue)(undefined), () => { }];
|
20
23
|
}
|
21
24
|
case 'IfNecessary': {
|
22
|
-
|
25
|
+
if (artifact.networkRequestInfo.normalizationAst.kind ===
|
26
|
+
'NormalizationAstLoader') {
|
27
|
+
throw new Error('Using lazy loaded normalizationAst with shouldFetch: "IfNecessary" is not supported as it will lead to slower initial load time.');
|
28
|
+
}
|
29
|
+
const result = (0, check_1.check)(environment, artifact.networkRequestInfo.normalizationAst.selections, variables, {
|
23
30
|
__link: IsographEnvironment_1.ROOT_ID,
|
24
31
|
__typename: artifact.concreteType,
|
25
32
|
});
|
@@ -32,46 +39,57 @@ function maybeMakeNetworkRequest(environment, artifact, variables, fetchOptions)
|
|
32
39
|
}
|
33
40
|
}
|
34
41
|
}
|
42
|
+
function loadNormalizationAst(normalizationAst) {
|
43
|
+
switch (normalizationAst.kind) {
|
44
|
+
case 'NormalizationAst': {
|
45
|
+
return normalizationAst;
|
46
|
+
}
|
47
|
+
case 'NormalizationAstLoader': {
|
48
|
+
return normalizationAst.loader();
|
49
|
+
}
|
50
|
+
}
|
51
|
+
}
|
35
52
|
function makeNetworkRequest(environment, artifact, variables, fetchOptions) {
|
36
53
|
// TODO this should be a DataId and stored in the store
|
37
54
|
const myNetworkRequestId = networkRequestId + '';
|
38
55
|
networkRequestId++;
|
39
|
-
(0, logging_1.logMessage)(environment, {
|
56
|
+
(0, logging_1.logMessage)(environment, () => ({
|
40
57
|
kind: 'MakeNetworkRequest',
|
41
58
|
artifact,
|
42
59
|
variables,
|
43
60
|
networkRequestId: myNetworkRequestId,
|
44
|
-
});
|
61
|
+
}));
|
45
62
|
let status = {
|
46
63
|
kind: 'UndisposedIncomplete',
|
47
64
|
};
|
48
65
|
// This should be an observable, not a promise
|
49
|
-
const promise =
|
50
|
-
.networkFunction(artifact.networkRequestInfo.queryText, variables)
|
51
|
-
.
|
52
|
-
|
53
|
-
(
|
66
|
+
const promise = Promise.all([
|
67
|
+
environment.networkFunction(artifact.networkRequestInfo.queryText, variables),
|
68
|
+
loadNormalizationAst(artifact.networkRequestInfo.normalizationAst),
|
69
|
+
])
|
70
|
+
.then(([networkResponse, normalizationAst]) => {
|
71
|
+
var _a, _b;
|
72
|
+
(0, logging_1.logMessage)(environment, () => ({
|
54
73
|
kind: 'ReceivedNetworkResponse',
|
55
74
|
networkResponse,
|
56
75
|
networkRequestId: myNetworkRequestId,
|
57
|
-
});
|
76
|
+
}));
|
58
77
|
if (networkResponse.errors != null) {
|
59
78
|
try {
|
60
79
|
(_a = fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.onError) === null || _a === void 0 ? void 0 : _a.call(fetchOptions);
|
61
80
|
}
|
62
|
-
catch (
|
63
|
-
// @ts-expect-error Why are we getting the wrong constructor here?
|
81
|
+
catch (_c) { }
|
64
82
|
throw new Error('GraphQL network response had errors', {
|
65
83
|
cause: networkResponse,
|
66
84
|
});
|
67
85
|
}
|
86
|
+
const root = { __link: IsographEnvironment_1.ROOT_ID, __typename: artifact.concreteType };
|
68
87
|
if (status.kind === 'UndisposedIncomplete') {
|
69
|
-
|
70
|
-
(0, cache_1.normalizeData)(environment, artifact.networkRequestInfo.normalizationAst, (_b = networkResponse.data) !== null && _b !== void 0 ? _b : {}, variables, artifact.kind === 'Entrypoint'
|
88
|
+
(0, cache_1.normalizeData)(environment, normalizationAst.selections, (_b = networkResponse.data) !== null && _b !== void 0 ? _b : {}, variables, artifact.kind === 'Entrypoint'
|
71
89
|
? artifact.readerWithRefetchQueries.nestedRefetchQueries
|
72
90
|
: [], root);
|
73
91
|
const retainedQuery = {
|
74
|
-
normalizationAst:
|
92
|
+
normalizationAst: normalizationAst.selections,
|
75
93
|
variables,
|
76
94
|
root,
|
77
95
|
};
|
@@ -81,18 +99,26 @@ function makeNetworkRequest(environment, artifact, variables, fetchOptions) {
|
|
81
99
|
};
|
82
100
|
(0, garbageCollection_1.retainQuery)(environment, retainedQuery);
|
83
101
|
}
|
84
|
-
|
85
|
-
|
102
|
+
const onComplete = fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.onComplete;
|
103
|
+
if (onComplete != null) {
|
104
|
+
let data = readDataForOnComplete(artifact, environment, root, variables);
|
105
|
+
try {
|
106
|
+
// @ts-expect-error this problem will be fixed when we remove RefetchQueryNormalizationArtifact
|
107
|
+
// (or we can fix this by having a single param of type { kind: 'Entrypoint', entrypoint,
|
108
|
+
// fetchOptions: FetchOptions<TReadFromStore> } | { kind: 'RefetchQuery', refetchQuery,
|
109
|
+
// fetchOptions: FetchOptions<void> }).
|
110
|
+
onComplete(data);
|
111
|
+
}
|
112
|
+
catch (_d) { }
|
86
113
|
}
|
87
|
-
catch (_e) { }
|
88
114
|
})
|
89
115
|
.catch((e) => {
|
90
116
|
var _a;
|
91
|
-
(0, logging_1.logMessage)(environment, {
|
117
|
+
(0, logging_1.logMessage)(environment, () => ({
|
92
118
|
kind: 'ReceivedNetworkError',
|
93
119
|
networkRequestId: myNetworkRequestId,
|
94
120
|
error: e,
|
95
|
-
});
|
121
|
+
}));
|
96
122
|
try {
|
97
123
|
(_a = fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.onError) === null || _a === void 0 ? void 0 : _a.call(fetchOptions);
|
98
124
|
}
|
@@ -116,3 +142,62 @@ function makeNetworkRequest(environment, artifact, variables, fetchOptions) {
|
|
116
142
|
];
|
117
143
|
return response;
|
118
144
|
}
|
145
|
+
function readDataForOnComplete(artifact, environment, root, variables) {
|
146
|
+
// An entrypoint, but not a RefetchQueryNormalizationArtifact, has a reader ASTs.
|
147
|
+
// So, we can only pass data to onComplete if makeNetworkRequest was passed an entrypoint.
|
148
|
+
// This is awkward, since we don't express that in the types of the parameters
|
149
|
+
// (i.e. FetchOptions could be passed, along with a RefetchQueryNormalizationArtifact).
|
150
|
+
//
|
151
|
+
// However, this isn't a big deal: RefetchQueryNormalizationArtifact is going away.
|
152
|
+
if (artifact.kind === 'Entrypoint') {
|
153
|
+
// TODO this is a smell!
|
154
|
+
const fakeNetworkRequest = (0, PromiseWrapper_1.wrapResolvedValue)(undefined);
|
155
|
+
// TODO this is a smell — we know the network response is not in flight,
|
156
|
+
// so we don't really care!
|
157
|
+
const fakeNetworkRequestOptions = {
|
158
|
+
suspendIfInFlight: false,
|
159
|
+
throwOnNetworkError: false,
|
160
|
+
};
|
161
|
+
const fragment = {
|
162
|
+
kind: 'FragmentReference',
|
163
|
+
// TODO this smells.
|
164
|
+
readerWithRefetchQueries: (0, PromiseWrapper_1.wrapResolvedValue)(artifact.readerWithRefetchQueries),
|
165
|
+
root,
|
166
|
+
variables,
|
167
|
+
networkRequest: fakeNetworkRequest,
|
168
|
+
};
|
169
|
+
const fragmentResult = (0, read_1.readButDoNotEvaluate)(environment, fragment, fakeNetworkRequestOptions).item;
|
170
|
+
const readerArtifact = artifact.readerWithRefetchQueries.readerArtifact;
|
171
|
+
switch (readerArtifact.kind) {
|
172
|
+
case 'ComponentReaderArtifact': {
|
173
|
+
// @ts-expect-error We should find a way to encode this in the type system:
|
174
|
+
// if we have a ComponentReaderArtifact, we will necessarily have a
|
175
|
+
// TClientFieldValue which is a React.FC<...>
|
176
|
+
return (0, componentCache_1.getOrCreateCachedComponent)(environment, readerArtifact.fieldName, {
|
177
|
+
kind: 'FragmentReference',
|
178
|
+
readerWithRefetchQueries: (0, PromiseWrapper_1.wrapResolvedValue)({
|
179
|
+
kind: 'ReaderWithRefetchQueries',
|
180
|
+
readerArtifact: readerArtifact,
|
181
|
+
nestedRefetchQueries: artifact.readerWithRefetchQueries.nestedRefetchQueries,
|
182
|
+
}),
|
183
|
+
root,
|
184
|
+
variables,
|
185
|
+
networkRequest: fakeNetworkRequest,
|
186
|
+
}, fakeNetworkRequestOptions);
|
187
|
+
}
|
188
|
+
case 'EagerReaderArtifact': {
|
189
|
+
return readerArtifact.resolver(Object.assign({ data: fragmentResult, parameters: variables }, (readerArtifact.hasUpdatable
|
190
|
+
? {
|
191
|
+
startUpdate: (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragment, artifact.readerWithRefetchQueries.readerArtifact.fieldName),
|
192
|
+
}
|
193
|
+
: undefined)));
|
194
|
+
}
|
195
|
+
default: {
|
196
|
+
const _ = readerArtifact;
|
197
|
+
_;
|
198
|
+
throw new Error('Expected case');
|
199
|
+
}
|
200
|
+
}
|
201
|
+
}
|
202
|
+
return null;
|
203
|
+
}
|
package/dist/core/read.d.ts
CHANGED
@@ -1,27 +1,32 @@
|
|
1
1
|
import { type EncounteredIds } from './cache';
|
2
|
-
import {
|
3
|
-
import {
|
2
|
+
import { RefetchQueryNormalizationArtifactWrapper } from './entrypoint';
|
3
|
+
import { ExtractData, FragmentReference, Variables, type UnknownTReadFromStore } from './FragmentReference';
|
4
|
+
import { IsographEnvironment, type DataTypeValue, type Link, type StoreRecord } from './IsographEnvironment';
|
5
|
+
import { PromiseWrapper } from './PromiseWrapper';
|
6
|
+
import { ReaderAst, type ReaderImperativelyLoadedField, type ReaderLinkedField, type ReaderLoadableField, type ReaderNonLoadableResolverField, type ReaderScalarField } from './reader';
|
4
7
|
export type WithEncounteredRecords<T> = {
|
5
8
|
readonly encounteredRecords: EncounteredIds;
|
6
9
|
readonly item: ExtractData<T>;
|
7
10
|
};
|
8
|
-
export declare function readButDoNotEvaluate<TReadFromStore extends
|
9
|
-
|
10
|
-
data: object;
|
11
|
-
}>(environment: IsographEnvironment, fragmentReference: FragmentReference<TReadFromStore, unknown>, networkRequestOptions: NetworkRequestReaderOptions): WithEncounteredRecords<TReadFromStore>;
|
12
|
-
export type ReadDataResult<TReadFromStore> = {
|
11
|
+
export declare function readButDoNotEvaluate<TReadFromStore extends UnknownTReadFromStore>(environment: IsographEnvironment, fragmentReference: FragmentReference<TReadFromStore, unknown>, networkRequestOptions: NetworkRequestReaderOptions): WithEncounteredRecords<TReadFromStore>;
|
12
|
+
export type ReadDataResultSuccess<Data> = {
|
13
13
|
readonly kind: 'Success';
|
14
|
-
readonly data:
|
15
|
-
|
16
|
-
|
14
|
+
readonly data: Data;
|
15
|
+
};
|
16
|
+
export type ReadDataResult<Data> = ReadDataResultSuccess<Data> | {
|
17
17
|
readonly kind: 'MissingData';
|
18
18
|
readonly reason: string;
|
19
19
|
readonly nestedReason?: ReadDataResult<unknown>;
|
20
20
|
readonly recordLink: Link;
|
21
21
|
};
|
22
|
+
export declare function readLoadablySelectedFieldData(environment: IsographEnvironment, field: ReaderLoadableField, root: Link, variables: Variables, networkRequest: PromiseWrapper<void, any>, networkRequestOptions: NetworkRequestReaderOptions, mutableEncounteredRecords: EncounteredIds): ReadDataResult<unknown>;
|
23
|
+
export declare function readResolverFieldData(environment: IsographEnvironment, field: ReaderNonLoadableResolverField, root: Link, variables: Variables, nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[], networkRequest: PromiseWrapper<void, any>, networkRequestOptions: NetworkRequestReaderOptions, mutableEncounteredRecords: EncounteredIds): ReadDataResult<unknown>;
|
24
|
+
export declare function readScalarFieldData(field: ReaderScalarField, storeRecord: StoreRecord, root: Link, variables: Variables): ReadDataResult<string | number | boolean | Link | DataTypeValue[] | null>;
|
25
|
+
export declare function readLinkedFieldData(environment: IsographEnvironment, field: ReaderLinkedField, storeRecord: StoreRecord, root: Link, variables: Variables, networkRequest: PromiseWrapper<void, any>, readData: <TReadFromStore>(ast: ReaderAst<TReadFromStore>, root: Link) => ReadDataResult<object>): ReadDataResult<unknown>;
|
22
26
|
export type NetworkRequestReaderOptions = {
|
23
27
|
suspendIfInFlight: boolean;
|
24
28
|
throwOnNetworkError: boolean;
|
25
29
|
};
|
26
30
|
export declare function getNetworkRequestOptionsWithDefaults(networkRequestOptions?: Partial<NetworkRequestReaderOptions> | void): NetworkRequestReaderOptions;
|
31
|
+
export declare function readImperativelyLoadedField(environment: IsographEnvironment, field: ReaderImperativelyLoadedField, root: Link, variables: Variables, nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[], networkRequest: PromiseWrapper<void, any>, networkRequestOptions: NetworkRequestReaderOptions, mutableEncounteredRecords: EncounteredIds): ReadDataResult<unknown>;
|
27
32
|
//# sourceMappingURL=read.d.ts.map
|
package/dist/core/read.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/core/read.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/core/read.ts"],"names":[],"mappings":"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"}
|