react-relay 15.0.0 → 16.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/ReactRelayContext.js +1 -1
- package/ReactRelayQueryFetcher.js.flow +1 -5
- package/ReactRelayQueryRenderer.js.flow +9 -36
- package/ReactRelayTypes.js.flow +1 -0
- package/buildReactRelayContainer.js.flow +3 -1
- package/hooks.js +1 -1
- package/index.js +1 -1
- package/legacy.js +1 -1
- package/lib/ReactRelayContainerUtils.js +0 -11
- package/lib/ReactRelayContext.js +0 -11
- package/lib/ReactRelayFragmentContainer.js +6 -78
- package/lib/ReactRelayFragmentMockRenderer.js +0 -11
- package/lib/ReactRelayLocalQueryRenderer.js +0 -17
- package/lib/ReactRelayPaginationContainer.js +5 -208
- package/lib/ReactRelayQueryFetcher.js +2 -51
- package/lib/ReactRelayQueryRenderer.js +6 -94
- package/lib/ReactRelayQueryRendererContext.js +0 -11
- package/lib/ReactRelayRefetchContainer.js +5 -91
- package/lib/ReactRelayTestMocker.js +9 -85
- package/lib/ReactRelayTypes.js +0 -11
- package/lib/RelayContext.js +0 -21
- package/lib/assertFragmentMap.js +0 -15
- package/lib/buildReactRelayContainer.js +0 -19
- package/lib/getRootVariablesForFragments.js +0 -14
- package/lib/hooks.js +0 -15
- package/lib/index.js +0 -17
- package/lib/isRelayEnvironment.js +1 -18
- package/lib/jest-react/enqueueTask.js +0 -20
- package/lib/jest-react/internalAct.js +0 -38
- package/lib/legacy.js +0 -15
- package/lib/multi-actor/ActorChange.js +0 -11
- package/lib/multi-actor/index.js +0 -11
- package/lib/multi-actor/useRelayActorEnvironment.js +0 -11
- package/lib/relay-hooks/EntryPointContainer.react.js +0 -11
- package/lib/relay-hooks/EntryPointTypes.flow.js +1 -14
- package/lib/relay-hooks/FragmentResource.js +76 -132
- package/lib/relay-hooks/HooksImplementation.js +0 -11
- package/lib/relay-hooks/InternalLogger.js +0 -11
- package/lib/relay-hooks/LRUCache.js +0 -22
- package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +0 -18
- package/lib/relay-hooks/MatchContainer.js +0 -94
- package/lib/relay-hooks/NestedRelayEntryPointBuilderUtils.js +9 -0
- package/lib/relay-hooks/ProfilerContext.js +0 -15
- package/lib/relay-hooks/QueryResource.js +2 -68
- package/lib/relay-hooks/RelayEnvironmentProvider.js +0 -11
- package/lib/relay-hooks/SuspenseResource.js +0 -34
- package/lib/relay-hooks/loadEntryPoint.js +1 -24
- package/lib/relay-hooks/loadQuery.js +2 -106
- package/lib/relay-hooks/preloadQuery_DEPRECATED.js +2 -27
- package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +0 -13
- package/lib/relay-hooks/react-cache/RelayReactCache.js +0 -12
- package/lib/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js +1 -36
- package/lib/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js +3 -27
- package/lib/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js +34 -99
- package/lib/relay-hooks/react-cache/useFragment_REACT_CACHE.js +0 -15
- package/lib/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js +0 -16
- package/lib/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js +1 -23
- package/lib/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js +0 -29
- package/lib/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js +12 -96
- package/lib/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js +0 -14
- package/lib/relay-hooks/useBlockingPaginationFragment.js +0 -42
- package/lib/relay-hooks/useClientQuery.js +0 -18
- package/lib/relay-hooks/useEntryPointLoader.js +0 -69
- package/lib/relay-hooks/useFetchTrackingRef.js +0 -26
- package/lib/relay-hooks/useFragment.js +0 -17
- package/lib/relay-hooks/useFragmentNode.js +2 -32
- package/lib/relay-hooks/useIsMountedRef.js +0 -11
- package/lib/relay-hooks/useIsOperationNodeActive.js +0 -11
- package/lib/relay-hooks/useIsParentQueryActive.js +0 -11
- package/lib/relay-hooks/useLazyLoadQuery.js +0 -18
- package/lib/relay-hooks/useLazyLoadQueryNode.js +0 -35
- package/lib/relay-hooks/useLoadMoreFunction.js +9 -34
- package/lib/relay-hooks/useMemoOperationDescriptor.js +0 -11
- package/lib/relay-hooks/useMemoVariables.js +0 -17
- package/lib/relay-hooks/useMutation.js +0 -11
- package/lib/relay-hooks/usePaginationFragment.js +1 -26
- package/lib/relay-hooks/usePreloadedQuery.js +0 -27
- package/lib/relay-hooks/useQueryLoader.js +0 -74
- package/lib/relay-hooks/useRefetchableFragment.js +0 -16
- package/lib/relay-hooks/useRefetchableFragmentNode.js +14 -97
- package/lib/relay-hooks/useRelayEnvironment.js +0 -11
- package/lib/relay-hooks/useStaticFragmentNodeWarning.js +0 -15
- package/lib/relay-hooks/useSubscribeToInvalidationState.js +0 -25
- package/lib/relay-hooks/useSubscription.js +0 -15
- package/lib/relay-hooks/useUnsafeRef_DEPRECATED.js +0 -17
- package/package.json +2 -2
- package/react-relay-hooks.js +2 -2
- package/react-relay-hooks.min.js +2 -2
- package/react-relay-legacy.js +2 -2
- package/react-relay-legacy.min.js +2 -2
- package/react-relay.js +2 -2
- package/react-relay.min.js +2 -2
- package/relay-hooks/EntryPointContainer.react.js.flow +5 -0
- package/relay-hooks/EntryPointTypes.flow.js.flow +20 -19
- package/relay-hooks/FragmentResource.js.flow +114 -26
- package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +4 -2
- package/relay-hooks/NestedRelayEntryPointBuilderUtils.js.flow +51 -0
- package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +7 -5
- package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +5 -0
- package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +5 -0
- package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +2 -0
- package/relay-hooks/loadEntryPoint.js.flow +4 -2
- package/relay-hooks/loadQuery.js.flow +21 -1
- package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +4 -2
- package/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js.flow +2 -1
- package/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js.flow +28 -10
- package/relay-hooks/react-cache/useFragment_REACT_CACHE.js.flow +3 -9
- package/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js.flow +28 -57
- package/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js.flow +19 -12
- package/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js.flow +15 -31
- package/relay-hooks/useBlockingPaginationFragment.js.flow +2 -4
- package/relay-hooks/useClientQuery.js.flow +2 -2
- package/relay-hooks/useFragmentNode.js.flow +2 -2
- package/relay-hooks/useLoadMoreFunction.js.flow +15 -9
- package/relay-hooks/useMutation.js.flow +26 -9
- package/relay-hooks/usePaginationFragment.js.flow +2 -8
- package/relay-hooks/useQueryLoader.js.flow +2 -8
- package/relay-hooks/useRefetchableFragment.js.flow +3 -2
- package/relay-hooks/useRefetchableFragmentNode.js.flow +28 -13
@@ -1,14 +1,3 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
3
|
-
*
|
4
|
-
* This source code is licensed under the MIT license found in the
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
6
|
-
*
|
7
|
-
*
|
8
|
-
* @format
|
9
|
-
* @oncall relay
|
10
|
-
*/
|
11
|
-
|
12
1
|
'use strict';
|
13
2
|
|
14
3
|
var preloadQuery_DEPRECATED = require('./preloadQuery_DEPRECATED');
|
@@ -26,7 +15,6 @@ function stableStringify(value) {
|
|
26
15
|
return (_JSON$stringify = JSON.stringify(stableCopy(value))) !== null && _JSON$stringify !== void 0 ? _JSON$stringify : 'null';
|
27
16
|
}
|
28
17
|
function prepareEntryPoint(environmentProvider, entryPoint, entryPointParams) {
|
29
|
-
// Start loading the code for the entrypoint
|
30
18
|
var loadingPromise = null;
|
31
19
|
if (entryPoint.root.getModuleIfRequired() == null) {
|
32
20
|
loadingPromise = entryPoint.root.load();
|
@@ -71,7 +59,6 @@ function prepareEntryPoint(environmentProvider, entryPoint, entryPointParams) {
|
|
71
59
|
loadingPromise = (_loadingPromise = loadingPromise) !== null && _loadingPromise !== void 0 ? _loadingPromise : entryPoint.root.load();
|
72
60
|
throw loadingPromise;
|
73
61
|
}
|
74
|
-
// $FlowFixMe[incompatible-cast] - trust me Flow, its entryPoint component
|
75
62
|
return component;
|
76
63
|
},
|
77
64
|
queries: preloadedQueries,
|
@@ -85,9 +72,6 @@ function LazyLoadEntryPointContainer_DEPRECATED(_ref) {
|
|
85
72
|
environmentProvider = _ref.environmentProvider;
|
86
73
|
var environment = useRelayEnvironment();
|
87
74
|
var getPreloadProps = entryPoint.getPreloadProps;
|
88
|
-
// IMPORTANT: Loading the component may suspend (throw), so the props
|
89
|
-
// *must* be computed first to fetch the component's data-dependencies in
|
90
|
-
// parallel with the component itself (the code).
|
91
75
|
var entryPointParamsHash = stableStringify(entryPointParams);
|
92
76
|
var _useMemo = useMemo(function () {
|
93
77
|
return prepareEntryPoint(environmentProvider !== null && environmentProvider !== void 0 ? environmentProvider : {
|
@@ -95,8 +79,6 @@ function LazyLoadEntryPointContainer_DEPRECATED(_ref) {
|
|
95
79
|
return environment;
|
96
80
|
}
|
97
81
|
}, entryPoint, entryPointParams);
|
98
|
-
// NOTE: stableParams encodes the information from params
|
99
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
100
82
|
}, [environment, environmentProvider, getPreloadProps, entryPointParamsHash]),
|
101
83
|
getComponent = _useMemo.getComponent,
|
102
84
|
queries = _useMemo.queries,
|
@@ -1,92 +1,9 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
3
|
-
*
|
4
|
-
* This source code is licensed under the MIT license found in the
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
6
|
-
*
|
7
|
-
*
|
8
|
-
* @format
|
9
|
-
* @oncall relay
|
10
|
-
*/
|
11
|
-
|
12
1
|
'use strict';
|
13
2
|
|
14
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
15
4
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
16
5
|
var React = require('react');
|
17
6
|
var useMemo = React.useMemo;
|
18
|
-
|
19
|
-
/**
|
20
|
-
* Renders the results of a data-driven dependency fetched with the `@match`
|
21
|
-
* directive. The `@match` directive can be used to specify a mapping of
|
22
|
-
* result types to the containers used to render those types. The result
|
23
|
-
* value is an opaque object that described which component was selected
|
24
|
-
* and a reference to its data. Use <MatchContainer/> to render these
|
25
|
-
* values.
|
26
|
-
*
|
27
|
-
* ## Example
|
28
|
-
*
|
29
|
-
* For example, consider a piece of media content that might be text or
|
30
|
-
* an image, where for clients that don't support images the application
|
31
|
-
* should fall back to rendering the image caption as text. @match can be
|
32
|
-
* used to dynamically select whether to render a given media item as
|
33
|
-
* an image or text (on the server) and then fetch the corresponding
|
34
|
-
* React component and its data dependencies (information about the
|
35
|
-
* image or about the text).
|
36
|
-
*
|
37
|
-
* ```
|
38
|
-
* // Media.react.js
|
39
|
-
*
|
40
|
-
* // Define a React component that uses <MatchContainer /> to render the
|
41
|
-
* // results of a @module selection
|
42
|
-
* function Media(props) {
|
43
|
-
* const {media, ...restProps} = props;
|
44
|
-
*
|
45
|
-
* const loader = moduleReference => {
|
46
|
-
* // given the data returned by your server for the @module directive,
|
47
|
-
* // return the React component (or throw a Suspense promise if
|
48
|
-
* // it is loading asynchronously).
|
49
|
-
* todo_returnModuleOrThrowPromise(moduleReference);
|
50
|
-
* };
|
51
|
-
* return <MatchContainer
|
52
|
-
* loader={loader}
|
53
|
-
* match={media.mediaAttachment}
|
54
|
-
* props={restProps}
|
55
|
-
* />;
|
56
|
-
* }
|
57
|
-
*
|
58
|
-
* module.exports = createSuspenseFragmentContainer(
|
59
|
-
* Media,
|
60
|
-
* {
|
61
|
-
* media: graphql`
|
62
|
-
* fragment Media_media on Media {
|
63
|
-
* # ...
|
64
|
-
* mediaAttachment @match {
|
65
|
-
* ...ImageContainer_image @module(name: "ImageContainer.react")
|
66
|
-
* ...TextContainer_text @module(name: "TextContainer.react")
|
67
|
-
* }
|
68
|
-
* }
|
69
|
-
* `
|
70
|
-
* },
|
71
|
-
* );
|
72
|
-
* ```
|
73
|
-
*
|
74
|
-
* ## API
|
75
|
-
*
|
76
|
-
* MatchContainer accepts the following props:
|
77
|
-
* - `match`: The results (an opaque object) of a `@match` field.
|
78
|
-
* - `props`: Props that should be passed through to the dynamically
|
79
|
-
* selected component. Note that any of the components listed in
|
80
|
-
* `@module()` could be selected, so all components should accept
|
81
|
-
* the value passed here.
|
82
|
-
* - `loader`: A function to load a module given a reference (whatever
|
83
|
-
* your server returns for the `js(moduleName: String)` field).
|
84
|
-
*
|
85
|
-
*/
|
86
|
-
|
87
|
-
// Note: this type is intentionally non-exact, it is expected that the
|
88
|
-
// object may contain sibling fields.
|
89
|
-
|
90
7
|
function MatchContainer(_ref2) {
|
91
8
|
var _ref;
|
92
9
|
var fallback = _ref2.fallback,
|
@@ -96,13 +13,6 @@ function MatchContainer(_ref2) {
|
|
96
13
|
if (match != null && typeof match !== 'object') {
|
97
14
|
throw new Error('MatchContainer: Expected `match` value to be an object or null/undefined.');
|
98
15
|
}
|
99
|
-
// NOTE: the MatchPointer type has a $fragmentSpreads field to ensure that only
|
100
|
-
// an object that contains a FragmentSpread can be passed. If the fragment
|
101
|
-
// spread matches, then the metadata fields below (__id, __fragments, etc.)
|
102
|
-
// will be present. But they can be missing if all the fragment spreads use
|
103
|
-
// @module and none of the types matched. The cast here is necessary because
|
104
|
-
// fragment Flow types don't describe metadata fields, only the actual schema
|
105
|
-
// fields the developer selected.
|
106
16
|
var _ref3 = (_ref = match) !== null && _ref !== void 0 ? _ref : {},
|
107
17
|
__id = _ref3.__id,
|
108
18
|
__fragments = _ref3.__fragments,
|
@@ -114,8 +24,6 @@ function MatchContainer(_ref2) {
|
|
114
24
|
}
|
115
25
|
var LoadedContainer = __module_component != null ? loader(__module_component) : null;
|
116
26
|
var fragmentProps = useMemo(function () {
|
117
|
-
// TODO: Perform this transformation in RelayReader so that unchanged
|
118
|
-
// output of subscriptions already has a stable identity.
|
119
27
|
if (__fragmentPropName != null && __id != null && __fragments != null) {
|
120
28
|
var fragProps = {};
|
121
29
|
fragProps[__fragmentPropName] = {
|
@@ -128,8 +36,6 @@ function MatchContainer(_ref2) {
|
|
128
36
|
return null;
|
129
37
|
}, [__id, __fragments, __fragmentOwner, __fragmentPropName]);
|
130
38
|
if (LoadedContainer != null && fragmentProps != null) {
|
131
|
-
// $FlowFixMe[incompatible-type]
|
132
|
-
// $FlowFixMe[cannot-spread-indexer]
|
133
39
|
return /*#__PURE__*/React.createElement(LoadedContainer, (0, _extends2["default"])({}, props, fragmentProps));
|
134
40
|
} else {
|
135
41
|
return fallback !== null && fallback !== void 0 ? fallback : null;
|
@@ -1,18 +1,3 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
3
|
-
*
|
4
|
-
* This source code is licensed under the MIT license found in the
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
6
|
-
*
|
7
|
-
*
|
8
|
-
* @format
|
9
|
-
* @oncall relay
|
10
|
-
*/
|
11
|
-
|
12
|
-
// This contextual profiler can be used to wrap a react sub-tree. It will bind
|
13
|
-
// the RelayProfiler during the render phase of these components. Allows
|
14
|
-
// collecting metrics for a specific part of your application.
|
15
|
-
|
16
1
|
'use strict';
|
17
2
|
|
18
3
|
var React = require('react');
|
@@ -1,14 +1,3 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
3
|
-
*
|
4
|
-
* This source code is licensed under the MIT license found in the
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
6
|
-
*
|
7
|
-
*
|
8
|
-
* @format
|
9
|
-
* @oncall relay
|
10
|
-
*/
|
11
|
-
|
12
1
|
'use strict';
|
13
2
|
|
14
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
@@ -58,9 +47,6 @@ function createCacheEntry(cacheIdentifier, operation, operationAvailability, val
|
|
58
47
|
var retention = environment.retain(operation);
|
59
48
|
return {
|
60
49
|
dispose: function dispose() {
|
61
|
-
// Normally if this entry never commits, the request would've ended by the
|
62
|
-
// time this timeout expires and the temporary retain is released. However,
|
63
|
-
// we need to do this for live queries which remain open indefinitely.
|
64
50
|
if (isLiveQuery && currentNetworkSubscription != null) {
|
65
51
|
currentNetworkSubscription.unsubscribe();
|
66
52
|
}
|
@@ -111,34 +97,17 @@ var QueryResourceImpl = /*#__PURE__*/function () {
|
|
111
97
|
_proto.prepare = function prepare(operation, fetchObservable, maybeFetchPolicy, maybeRenderPolicy, observer, cacheBreaker, profilerContext) {
|
112
98
|
var cacheIdentifier = getQueryCacheIdentifier(this._environment, operation, maybeFetchPolicy, maybeRenderPolicy, cacheBreaker);
|
113
99
|
return this.prepareWithIdentifier(cacheIdentifier, operation, fetchObservable, maybeFetchPolicy, maybeRenderPolicy, observer, profilerContext);
|
114
|
-
}
|
115
|
-
|
116
|
-
/**
|
117
|
-
* This function should be called during a Component's render function,
|
118
|
-
* to either read an existing cached value for the query, or fetch the query
|
119
|
-
* and suspend.
|
120
|
-
*/;
|
100
|
+
};
|
121
101
|
_proto.prepareWithIdentifier = function prepareWithIdentifier(cacheIdentifier, operation, fetchObservable, maybeFetchPolicy, maybeRenderPolicy, observer, profilerContext) {
|
122
102
|
var environment = this._environment;
|
123
103
|
var fetchPolicy = maybeFetchPolicy !== null && maybeFetchPolicy !== void 0 ? maybeFetchPolicy : operationIsLiveQuery(operation) ? DEFAULT_LIVE_FETCH_POLICY : DEFAULT_FETCH_POLICY;
|
124
104
|
var renderPolicy = maybeRenderPolicy !== null && maybeRenderPolicy !== void 0 ? maybeRenderPolicy : environment.UNSTABLE_getDefaultRenderPolicy();
|
125
|
-
|
126
|
-
// 1. Check if there's a cached value for this operation, and reuse it if
|
127
|
-
// it's available
|
128
105
|
var cacheEntry = this._cache.get(cacheIdentifier);
|
129
106
|
var temporaryRetainDisposable = null;
|
130
107
|
var entryWasCached = cacheEntry != null;
|
131
108
|
if (cacheEntry == null) {
|
132
|
-
// 2. If a cached value isn't available, try fetching the operation.
|
133
|
-
// _fetchAndSaveQuery will update the cache with either a Promise or
|
134
|
-
// an Error to throw, or a QueryResult to return.
|
135
109
|
cacheEntry = this._fetchAndSaveQuery(cacheIdentifier, operation, fetchObservable, fetchPolicy, renderPolicy, profilerContext, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, observer), {}, {
|
136
110
|
unsubscribe: function unsubscribe(subscription) {
|
137
|
-
// 4. If the request is cancelled, make sure to dispose
|
138
|
-
// of the temporary retain; this will ensure that a promise
|
139
|
-
// doesn't remain unnecessarily cached until the temporary retain
|
140
|
-
// expires. Not clearing the temporary retain might cause the
|
141
|
-
// query to incorrectly re-suspend.
|
142
111
|
if (temporaryRetainDisposable != null) {
|
143
112
|
temporaryRetainDisposable.dispose();
|
144
113
|
}
|
@@ -147,12 +116,6 @@ var QueryResourceImpl = /*#__PURE__*/function () {
|
|
147
116
|
}
|
148
117
|
}));
|
149
118
|
}
|
150
|
-
|
151
|
-
// 3. Temporarily retain here in render phase. When the component reading
|
152
|
-
// the operation is committed, we will transfer ownership of data retention
|
153
|
-
// to the component.
|
154
|
-
// In case the component never commits (mounts or updates) from this render,
|
155
|
-
// this data retention hold will auto-release itself after a timeout.
|
156
119
|
temporaryRetainDisposable = cacheEntry.temporaryRetain(environment);
|
157
120
|
var cachedValue = cacheEntry.getValue();
|
158
121
|
if (isPromise(cachedValue)) {
|
@@ -170,13 +133,7 @@ var QueryResourceImpl = /*#__PURE__*/function () {
|
|
170
133
|
throw cachedValue;
|
171
134
|
}
|
172
135
|
return cachedValue;
|
173
|
-
}
|
174
|
-
|
175
|
-
/**
|
176
|
-
* This function should be called during a component's commit phase
|
177
|
-
* (e.g. inside useEffect), in order to retain the operation in the Relay store
|
178
|
-
* and transfer ownership of the operation to the component lifecycle.
|
179
|
-
*/;
|
136
|
+
};
|
180
137
|
_proto.retain = function retain(queryResult, profilerContext) {
|
181
138
|
var environment = this._environment;
|
182
139
|
var cacheIdentifier = queryResult.cacheIdentifier,
|
@@ -216,19 +173,12 @@ var QueryResourceImpl = /*#__PURE__*/function () {
|
|
216
173
|
_proto._fetchAndSaveQuery = function _fetchAndSaveQuery(cacheIdentifier, operation, fetchObservable, fetchPolicy, renderPolicy, profilerContext, observer) {
|
217
174
|
var _this2 = this;
|
218
175
|
var environment = this._environment;
|
219
|
-
|
220
|
-
// NOTE: Running `check` will write missing data to the store using any
|
221
|
-
// missing data handlers specified on the environment;
|
222
|
-
// We run it here first to make the handlers get a chance to populate
|
223
|
-
// missing data.
|
224
176
|
var queryAvailability = environment.check(operation);
|
225
177
|
var queryStatus = queryAvailability.status;
|
226
178
|
var hasFullQuery = queryStatus === 'available';
|
227
179
|
var canPartialRender = hasFullQuery || renderPolicy === 'partial' && queryStatus !== 'stale';
|
228
180
|
var shouldFetch;
|
229
181
|
var shouldAllowRender;
|
230
|
-
// Different definitions for Promise in our repos can cause this variable
|
231
|
-
// to cause errors when synced elsewhere
|
232
182
|
var resolveNetworkPromise = function resolveNetworkPromise() {};
|
233
183
|
switch (fetchPolicy) {
|
234
184
|
case 'store-only':
|
@@ -257,11 +207,6 @@ var QueryResourceImpl = /*#__PURE__*/function () {
|
|
257
207
|
break;
|
258
208
|
}
|
259
209
|
}
|
260
|
-
|
261
|
-
// NOTE: If this value is false, we will cache a promise for this
|
262
|
-
// query, which means we will suspend here at this query root.
|
263
|
-
// If it's true, we will cache the query resource and allow rendering to
|
264
|
-
// continue.
|
265
210
|
if (shouldAllowRender) {
|
266
211
|
var queryResult = getQueryResult(operation, cacheIdentifier);
|
267
212
|
var _cacheEntry = createCacheEntry(cacheIdentifier, operation, queryAvailability, queryResult, null, this._clearCacheEntry);
|
@@ -281,7 +226,6 @@ var QueryResourceImpl = /*#__PURE__*/function () {
|
|
281
226
|
if (observerStart) {
|
282
227
|
var subscriptionWithConditionalCancelation = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, subscription), {}, {
|
283
228
|
unsubscribe: function unsubscribe() {
|
284
|
-
// Only live queries should have their network requests canceled.
|
285
229
|
if (operationIsLiveQuery(operation)) {
|
286
230
|
subscription.unsubscribe();
|
287
231
|
}
|
@@ -303,17 +247,9 @@ var QueryResourceImpl = /*#__PURE__*/function () {
|
|
303
247
|
},
|
304
248
|
error: function error(_error) {
|
305
249
|
var cacheEntry = _this2._getOrCreateCacheEntry(cacheIdentifier, operation, queryAvailability, _error, networkSubscription);
|
306
|
-
|
307
|
-
// If, this is the first thing we receive for the query,
|
308
|
-
// before any other payload handled is error, we will cache and
|
309
|
-
// re-throw that error later.
|
310
|
-
|
311
|
-
// We will ignore errors for any incremental payloads we receive.
|
312
250
|
if (cacheEntry.processedPayloadsCount === 0) {
|
313
251
|
cacheEntry.setValue(_error);
|
314
252
|
} else {
|
315
|
-
// TODO:T92030819 Remove this warning and actually throw the network error
|
316
|
-
// To complete this task we need to have a way of precisely tracking suspendable points
|
317
253
|
process.env.NODE_ENV !== "production" ? warning(false, 'QueryResource: An incremental payload for query `%s` returned an error: `%s`.', operation.fragment.node.name, String(_error.message)) : void 0;
|
318
254
|
}
|
319
255
|
resolveNetworkPromise();
|
@@ -339,8 +275,6 @@ var QueryResourceImpl = /*#__PURE__*/function () {
|
|
339
275
|
var networkPromise = new Promise(function (resolve) {
|
340
276
|
resolveNetworkPromise = resolve;
|
341
277
|
});
|
342
|
-
|
343
|
-
// $FlowExpectedError[prop-missing] Expando to annotate Promises.
|
344
278
|
networkPromise.displayName = 'Relay(' + operation.fragment.node.name + ')';
|
345
279
|
_cacheEntry2 = createCacheEntry(cacheIdentifier, operation, queryAvailability, networkPromise, networkSubscription, this._clearCacheEntry);
|
346
280
|
this._cache.set(cacheIdentifier, _cacheEntry2);
|
@@ -1,14 +1,3 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
3
|
-
*
|
4
|
-
* This source code is licensed under the MIT license found in the
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
6
|
-
*
|
7
|
-
*
|
8
|
-
* @format
|
9
|
-
* @oncall relay
|
10
|
-
*/
|
11
|
-
|
12
1
|
'use strict';
|
13
2
|
|
14
3
|
var ReactRelayContext = require('./../ReactRelayContext');
|
@@ -1,26 +1,9 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
3
|
-
*
|
4
|
-
* This source code is licensed under the MIT license found in the
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
6
|
-
*
|
7
|
-
*
|
8
|
-
* @format
|
9
|
-
* @oncall relay
|
10
|
-
*/
|
11
|
-
|
12
1
|
'use strict';
|
13
2
|
|
14
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
15
4
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
16
5
|
var invariant = require('invariant');
|
17
6
|
var TEMPORARY_RETAIN_DURATION_MS = 5 * 60 * 1000;
|
18
|
-
|
19
|
-
/**
|
20
|
-
* Allows you to retain a resource as part of a component lifecycle accounting
|
21
|
-
* for Suspense. You temporarily retain the resource during render, then
|
22
|
-
* permanently retain it during commit and release it during unmount.
|
23
|
-
*/
|
24
7
|
var SuspenseResource = /*#__PURE__*/function () {
|
25
8
|
function SuspenseResource(retain) {
|
26
9
|
var _this = this;
|
@@ -48,20 +31,11 @@ var SuspenseResource = /*#__PURE__*/function () {
|
|
48
31
|
_proto.temporaryRetain = function temporaryRetain(environment) {
|
49
32
|
var _this2 = this;
|
50
33
|
var _this$_releaseTempora;
|
51
|
-
// If we're executing in a server environment, there's no need
|
52
|
-
// to create temporary retains, since the component will never commit.
|
53
34
|
if (environment.isServer()) {
|
54
35
|
return {
|
55
36
|
dispose: function dispose() {}
|
56
37
|
};
|
57
38
|
}
|
58
|
-
|
59
|
-
// temporaryRetain is called during the render phase. However,
|
60
|
-
// given that we can't tell if this render will eventually commit or not,
|
61
|
-
// we create a timer to autodispose of this retain in case the associated
|
62
|
-
// component never commits.
|
63
|
-
// If the component /does/ commit, permanentRetain will clear this timeout
|
64
|
-
// and permanently retain the data.
|
65
39
|
var retention = this._retain(environment);
|
66
40
|
var releaseQueryTimeout = null;
|
67
41
|
var releaseTemporaryRetain = function releaseTemporaryRetain() {
|
@@ -71,14 +45,6 @@ var SuspenseResource = /*#__PURE__*/function () {
|
|
71
45
|
retention.dispose();
|
72
46
|
};
|
73
47
|
releaseQueryTimeout = setTimeout(releaseTemporaryRetain, TEMPORARY_RETAIN_DURATION_MS);
|
74
|
-
|
75
|
-
// NOTE: Since temporaryRetain can be called multiple times, we release
|
76
|
-
// the previous temporary retain after we re-establish a new one, since
|
77
|
-
// we only ever need a single temporary retain until the permanent retain is
|
78
|
-
// established.
|
79
|
-
// temporaryRetain may be called multiple times by React during the render
|
80
|
-
// phase, as well as multiple times by other query components that are
|
81
|
-
// rendering the same query/variables.
|
82
48
|
(_this$_releaseTempora = this._releaseTemporaryRetain) === null || _this$_releaseTempora === void 0 ? void 0 : _this$_releaseTempora.call(this);
|
83
49
|
this._releaseTemporaryRetain = releaseTemporaryRetain;
|
84
50
|
return {
|
@@ -1,20 +1,8 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
3
|
-
*
|
4
|
-
* This source code is licensed under the MIT license found in the
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
6
|
-
*
|
7
|
-
*
|
8
|
-
* @format
|
9
|
-
* @oncall relay
|
10
|
-
*/
|
11
|
-
|
12
1
|
'use strict';
|
13
2
|
|
14
3
|
var _require = require('./loadQuery'),
|
15
4
|
loadQuery = _require.loadQuery;
|
16
5
|
function loadEntryPoint(environmentProvider, entryPoint, entryPointParams) {
|
17
|
-
// Start loading the code for the entrypoint
|
18
6
|
var loadingPromise = null;
|
19
7
|
if (entryPoint.root.getModuleIfRequired() == null) {
|
20
8
|
loadingPromise = entryPoint.root.load();
|
@@ -34,8 +22,6 @@ function loadEntryPoint(environmentProvider, entryPoint, entryPointParams) {
|
|
34
22
|
parameters = _queries$queryPropNam.parameters,
|
35
23
|
variables = _queries$queryPropNam.variables;
|
36
24
|
var environment = environmentProvider.getEnvironment(environmentProviderOptions);
|
37
|
-
|
38
|
-
// $FlowFixMe[underconstrained-implicit-instantiation]
|
39
25
|
preloadedQueries[queryPropName] = loadQuery(environment, parameters, variables, {
|
40
26
|
fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
|
41
27
|
networkCacheConfig: options === null || options === void 0 ? void 0 : options.networkCacheConfig,
|
@@ -84,18 +70,9 @@ function loadEntryPoint(environmentProvider, entryPoint, entryPointParams) {
|
|
84
70
|
loadingPromise = (_loadingPromise = loadingPromise) !== null && _loadingPromise !== void 0 ? _loadingPromise : entryPoint.root.load();
|
85
71
|
throw loadingPromise;
|
86
72
|
}
|
87
|
-
|
88
|
-
// On certain platforms, getting an es6 module with a default export from a JSResource will return an object like
|
89
|
-
// {default: module}, so let's assume that if the "component" has a static property named "default"
|
90
|
-
// that it's actually an es6 module wrapper, so unwrap it. This won't work for React classes with a static property named "default", but
|
91
|
-
// that's probably a worthwhile trade-off.
|
92
|
-
var component =
|
93
|
-
// $FlowIgnore[prop-missing]
|
94
|
-
componentModule["default"] != null ? componentModule["default"] : componentModule;
|
95
|
-
// $FlowFixMe[incompatible-cast] - trust me Flow, its entryPoint component
|
73
|
+
var component = componentModule["default"] != null ? componentModule["default"] : componentModule;
|
96
74
|
return component;
|
97
75
|
},
|
98
|
-
// $FlowFixMe[unsafe-getters-setters] - this has no side effects
|
99
76
|
get isDisposed() {
|
100
77
|
return isDisposed;
|
101
78
|
},
|
@@ -1,14 +1,3 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
3
|
-
*
|
4
|
-
* This source code is licensed under the MIT license found in the
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
6
|
-
*
|
7
|
-
*
|
8
|
-
* @format
|
9
|
-
* @oncall relay
|
10
|
-
*/
|
11
|
-
|
12
1
|
'use strict';
|
13
2
|
|
14
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
@@ -30,37 +19,18 @@ var fetchKey = 100001;
|
|
30
19
|
function useTrackLoadQueryInRender() {
|
31
20
|
if (RenderDispatcher === null) {
|
32
21
|
var _React$__SECRET_INTER, _React$__SECRET_INTER2;
|
33
|
-
|
34
|
-
// ensure here that this function isn't called inside render.
|
35
|
-
RenderDispatcher = // $FlowFixMe[prop-missing]
|
36
|
-
(_React$__SECRET_INTER = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === null || _React$__SECRET_INTER === void 0 ? void 0 : (_React$__SECRET_INTER2 = _React$__SECRET_INTER.ReactCurrentDispatcher) === null || _React$__SECRET_INTER2 === void 0 ? void 0 : _React$__SECRET_INTER2.current;
|
22
|
+
RenderDispatcher = (_React$__SECRET_INTER = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === null || _React$__SECRET_INTER === void 0 ? void 0 : (_React$__SECRET_INTER2 = _React$__SECRET_INTER.ReactCurrentDispatcher) === null || _React$__SECRET_INTER2 === void 0 ? void 0 : _React$__SECRET_INTER2.current;
|
37
23
|
}
|
38
24
|
}
|
39
25
|
function loadQuery(environment, preloadableRequest, variables, options, environmentProviderOptions) {
|
40
26
|
var _React$__SECRET_INTER3, _React$__SECRET_INTER4, _options$__nameForWar, _options$fetchPolicy;
|
41
|
-
|
42
|
-
var CurrentDispatcher = // $FlowFixMe[prop-missing]
|
43
|
-
(_React$__SECRET_INTER3 = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === null || _React$__SECRET_INTER3 === void 0 ? void 0 : (_React$__SECRET_INTER4 = _React$__SECRET_INTER3.ReactCurrentDispatcher) === null || _React$__SECRET_INTER4 === void 0 ? void 0 : _React$__SECRET_INTER4.current;
|
27
|
+
var CurrentDispatcher = (_React$__SECRET_INTER3 = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === null || _React$__SECRET_INTER3 === void 0 ? void 0 : (_React$__SECRET_INTER4 = _React$__SECRET_INTER3.ReactCurrentDispatcher) === null || _React$__SECRET_INTER4 === void 0 ? void 0 : _React$__SECRET_INTER4.current;
|
44
28
|
process.env.NODE_ENV !== "production" ? warning(RenderDispatcher == null || CurrentDispatcher !== RenderDispatcher, 'Relay: `%s` should not be called inside a React render function.', (_options$__nameForWar = options === null || options === void 0 ? void 0 : options.__nameForWarning) !== null && _options$__nameForWar !== void 0 ? _options$__nameForWar : 'loadQuery') : void 0;
|
45
|
-
|
46
|
-
// Every time you call loadQuery, we will generate a new fetchKey.
|
47
|
-
// This will ensure that every query reference that is created and
|
48
|
-
// passed to usePreloadedQuery is independently evaluated,
|
49
|
-
// even if they are for the same query/variables.
|
50
|
-
// Specifically, we want to avoid a case where we try to refetch a
|
51
|
-
// query by calling loadQuery a second time, and have the Suspense
|
52
|
-
// cache in usePreloadedQuery reuse the cached result instead of
|
53
|
-
// re-evaluating the new query ref and triggering a refetch if
|
54
|
-
// necessary.
|
55
29
|
fetchKey++;
|
56
30
|
var fetchPolicy = (_options$fetchPolicy = options === null || options === void 0 ? void 0 : options.fetchPolicy) !== null && _options$fetchPolicy !== void 0 ? _options$fetchPolicy : 'store-or-network';
|
57
31
|
var networkCacheConfig = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, options === null || options === void 0 ? void 0 : options.networkCacheConfig), {}, {
|
58
32
|
force: true
|
59
33
|
});
|
60
|
-
|
61
|
-
// executeWithNetworkSource will retain and execute an operation
|
62
|
-
// against the Relay store, given an Observable that would provide
|
63
|
-
// the network events for the operation.
|
64
34
|
var retainReference;
|
65
35
|
var didExecuteNetworkSource = false;
|
66
36
|
var executeWithNetworkSource = function executeWithNetworkSource(operation, networkObservable) {
|
@@ -70,53 +40,18 @@ function loadQuery(environment, preloadableRequest, variables, options, environm
|
|
70
40
|
source: networkObservable
|
71
41
|
});
|
72
42
|
};
|
73
|
-
|
74
|
-
// N.B. For loadQuery, we unconventionally want to return an Observable
|
75
|
-
// that isn't lazily executed, meaning that we don't want to wait
|
76
|
-
// until the returned Observable is subscribed to to actually start
|
77
|
-
// fetching and executing an operation; i.e. we want to execute the
|
78
|
-
// operation eagerly, when loadQuery is called.
|
79
|
-
// For this reason, we use an intermediate executionSubject which
|
80
|
-
// allows us to capture the events that occur during the eager execution
|
81
|
-
// of the operation, and then replay them to the Observable we
|
82
|
-
// ultimately return.
|
83
43
|
var executionSubject = new ReplaySubject();
|
84
44
|
var returnedObservable = Observable.create(function (sink) {
|
85
45
|
return executionSubject.subscribe(sink);
|
86
46
|
});
|
87
47
|
var unsubscribeFromNetworkRequest;
|
88
48
|
var networkError = null;
|
89
|
-
// makeNetworkRequest will immediately start a raw network request if
|
90
|
-
// one isn't already in flight and return an Observable that when
|
91
|
-
// subscribed to will replay the network events that have occured so far,
|
92
|
-
// as well as subsequent events.
|
93
49
|
var didMakeNetworkRequest = false;
|
94
50
|
var makeNetworkRequest = function makeNetworkRequest(params) {
|
95
|
-
// N.B. this function is called synchronously or not at all
|
96
|
-
// didMakeNetworkRequest is safe to rely on in the returned value
|
97
|
-
// Even if the request gets deduped below, we still wan't to return an
|
98
|
-
// observable that provides the replayed network events for the query,
|
99
|
-
// so we set this to true before deduping, to guarantee that the
|
100
|
-
// `source` observable is returned.
|
101
51
|
didMakeNetworkRequest = true;
|
102
52
|
var observable;
|
103
53
|
var subject = new ReplaySubject();
|
104
54
|
if (RelayFeatureFlags.ENABLE_LOAD_QUERY_REQUEST_DEDUPING === true) {
|
105
|
-
// Here, we are calling fetchQueryDeduped at the network layer level,
|
106
|
-
// which ensures that only a single network request is active for a given
|
107
|
-
// (environment, identifier) pair.
|
108
|
-
// Since network requests can be started /before/ we have the query ast
|
109
|
-
// necessary to process the results, we need to dedupe the raw requests
|
110
|
-
// separately from deduping the operation execution; specifically,
|
111
|
-
// if `loadQuery` is called multiple times before the query ast is available,
|
112
|
-
// we still want the network request to be deduped.
|
113
|
-
// - If a duplicate active network request is found, it will return an
|
114
|
-
// Observable that replays the events of the already active request.
|
115
|
-
// - If no duplicate active network request is found, it will call the fetchFn
|
116
|
-
// to start the request, and return an Observable that will replay
|
117
|
-
// the events from the network request.
|
118
|
-
// We provide an extra key to the identifier to distinguish deduping
|
119
|
-
// of raw network requests vs deduping of operation executions.
|
120
55
|
var identifier = 'raw-network-request-' + getRequestIdentifier(params, variables);
|
121
56
|
observable = fetchQueryDeduped(environment, identifier, function () {
|
122
57
|
var network = environment.getNetwork();
|
@@ -151,31 +86,8 @@ function loadQuery(environment, preloadableRequest, variables, options, environm
|
|
151
86
|
var unsubscribeFromExecution;
|
152
87
|
var executeDeduped = function executeDeduped(operation, fetchFn) {
|
153
88
|
if (RelayFeatureFlags.ENABLE_LOAD_QUERY_REQUEST_DEDUPING === true) {
|
154
|
-
// N.B. at this point, if we're calling execute with a query ast (OperationDescriptor),
|
155
|
-
// we are guaranteed to have started a network request. We set this to
|
156
|
-
// true here as well since `makeNetworkRequest` might get skipped in the case
|
157
|
-
// where the query ast is already available and the query executions get deduped.
|
158
|
-
// Even if the execution gets deduped below, we still wan't to return
|
159
|
-
// an observable that provides the replayed network events for the query,
|
160
|
-
// so we set this to true before deduping, to guarantee that the `source`
|
161
|
-
// observable is returned.
|
162
89
|
didMakeNetworkRequest = true;
|
163
90
|
}
|
164
|
-
|
165
|
-
// Here, we are calling fetchQueryDeduped, which ensures that only
|
166
|
-
// a single operation is active for a given (environment, identifier) pair,
|
167
|
-
// and also tracks the active state of the operation, which is necessary
|
168
|
-
// for our Suspense infra to later be able to suspend (or not) on
|
169
|
-
// active operations. Even though we already dedupe raw network requests,
|
170
|
-
// we also need to dedupe and keep track operation execution for our Suspense
|
171
|
-
// infra, and we also want to avoid processing responses more than once, for
|
172
|
-
// the cases where `loadQuery` might be called multiple times after the query ast
|
173
|
-
// is available.
|
174
|
-
// - If a duplicate active operation is found, it will return an
|
175
|
-
// Observable that replays the events of the already active operation.
|
176
|
-
// - If no duplicate active operation is found, it will call the fetchFn
|
177
|
-
// to execute the operation, and return an Observable that will provide
|
178
|
-
// the events for executing the operation.
|
179
91
|
var _fetchQueryDeduped$su = fetchQueryDeduped(environment, operation.request.identifier, fetchFn).subscribe({
|
180
92
|
error: function error(err) {
|
181
93
|
executionSubject.error(err);
|
@@ -195,15 +107,9 @@ function loadQuery(environment, preloadableRequest, variables, options, environm
|
|
195
107
|
if (fetchPolicy === 'store-only') {
|
196
108
|
return;
|
197
109
|
}
|
198
|
-
|
199
|
-
// N.B. If the fetch policy allows fulfillment from the store but the
|
200
|
-
// environment already has the data for that operation cached in the store,
|
201
|
-
// then we do nothing.
|
202
110
|
var shouldFetch = fetchPolicy !== 'store-or-network' || environment.check(operation).status !== 'available';
|
203
111
|
if (shouldFetch) {
|
204
112
|
executeDeduped(operation, function () {
|
205
|
-
// N.B. Since we have the operation synchronously available here,
|
206
|
-
// we can immediately fetch and execute the operation.
|
207
113
|
var networkObservable = makeNetworkRequest(concreteRequest.params);
|
208
114
|
var executeObservable = executeWithNetworkSource(operation, networkObservable);
|
209
115
|
return executeObservable;
|
@@ -223,15 +129,7 @@ function loadQuery(environment, preloadableRequest, variables, options, environm
|
|
223
129
|
if (_module != null) {
|
224
130
|
checkAvailabilityAndExecute(_module);
|
225
131
|
} else {
|
226
|
-
// If the module isn't synchronously available, we launch the
|
227
|
-
// network request immediately if the fetchPolicy might produce
|
228
|
-
// a network fetch, regardless of the state of the store cache. We
|
229
|
-
// do this because we can't check if a query is cached without the
|
230
|
-
// ast, and we know that if we don't have the query ast
|
231
|
-
// available, then this query could've never been written to the
|
232
|
-
// store in the first place, so it couldn't have been cached.
|
233
132
|
var networkObservable = fetchPolicy === 'store-only' ? null : makeNetworkRequest(params);
|
234
|
-
// $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
235
133
|
var _PreloadableQueryRegi = PreloadableQueryRegistry.onLoad(queryId, function (preloadedModule) {
|
236
134
|
cancelOnLoadCallback();
|
237
135
|
var operation = createOperationDescriptor(preloadedModule, variables, networkCacheConfig);
|
@@ -289,11 +187,9 @@ function loadQuery(environment, preloadableRequest, variables, options, environm
|
|
289
187
|
cancelNetworkRequest: cancelNetworkRequest,
|
290
188
|
fetchKey: fetchKey,
|
291
189
|
id: queryId,
|
292
|
-
// $FlowFixMe[unsafe-getters-setters] - this has no side effects
|
293
190
|
get isDisposed() {
|
294
191
|
return isDisposed || isReleased;
|
295
192
|
},
|
296
|
-
// $FlowFixMe[unsafe-getters-setters] - this has no side effects
|
297
193
|
get networkError() {
|
298
194
|
return networkError;
|
299
195
|
},
|