react-relay 0.0.0-main-7a006f45 → 0.0.0-main-cd82781d
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/ReactRelayContext.js +1 -1
- package/hooks.js +1 -1
- package/index.js +1 -1
- package/legacy.js +1 -1
- package/lib/relay-hooks/QueryResource.js +17 -5
- package/lib/relay-hooks/execTimeResolvers.js +9 -0
- package/lib/relay-hooks/loadQuery.js +26 -10
- package/package.json +2 -2
- package/relay-hooks/QueryResource.js.flow +18 -11
- package/relay-hooks/execTimeResolvers.js.flow +27 -0
- package/relay-hooks/loadQuery.js.flow +26 -1
- package/rsc-client_EXPERIMENTAL.js +1 -1
- package/rsc_EXPERIMENTAL.js +1 -1
package/ReactRelayContext.js
CHANGED
package/hooks.js
CHANGED
package/index.js
CHANGED
package/legacy.js
CHANGED
|
@@ -3,21 +3,33 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
4
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
5
5
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
+
var _require = require('./execTimeResolvers'),
|
|
7
|
+
isExecTimeResolversEnabled = _require.isExecTimeResolversEnabled;
|
|
6
8
|
var LRUCache = require('./LRUCache');
|
|
7
9
|
var SuspenseResource = require('./SuspenseResource');
|
|
8
10
|
var invariant = require('invariant');
|
|
9
|
-
var
|
|
10
|
-
isPromise =
|
|
11
|
+
var _require2 = require('relay-runtime'),
|
|
12
|
+
isPromise = _require2.isPromise;
|
|
11
13
|
var warning = require("fbjs/lib/warning");
|
|
12
14
|
var CACHE_CAPACITY = 1000;
|
|
13
15
|
var DEFAULT_FETCH_POLICY = 'store-or-network';
|
|
14
16
|
var DEFAULT_LIVE_FETCH_POLICY = 'store-and-network';
|
|
15
17
|
var WEAKMAP_SUPPORTED = typeof WeakMap === 'function';
|
|
16
18
|
function operationIsLiveQuery(operation) {
|
|
17
|
-
return operation.request.node.params.metadata.live !== undefined;
|
|
19
|
+
return operation.request.node.params.metadata.live !== undefined || isExecTimeResolversEnabled(operation.request.node.operation);
|
|
20
|
+
}
|
|
21
|
+
function getDefaultFetchPolicy(operation) {
|
|
22
|
+
if (operationIsLiveQuery(operation)) {
|
|
23
|
+
return DEFAULT_LIVE_FETCH_POLICY;
|
|
24
|
+
}
|
|
25
|
+
var request = operation.request.node;
|
|
26
|
+
if (request.params.id == null && request.params.text == null) {
|
|
27
|
+
return 'store-only';
|
|
28
|
+
}
|
|
29
|
+
return DEFAULT_FETCH_POLICY;
|
|
18
30
|
}
|
|
19
31
|
function getQueryCacheIdentifier(environment, operation, maybeFetchPolicy, maybeRenderPolicy, cacheBreaker) {
|
|
20
|
-
var fetchPolicy = maybeFetchPolicy !== null && maybeFetchPolicy !== void 0 ? maybeFetchPolicy :
|
|
32
|
+
var fetchPolicy = maybeFetchPolicy !== null && maybeFetchPolicy !== void 0 ? maybeFetchPolicy : getDefaultFetchPolicy(operation);
|
|
21
33
|
var renderPolicy = maybeRenderPolicy !== null && maybeRenderPolicy !== void 0 ? maybeRenderPolicy : environment.UNSTABLE_getDefaultRenderPolicy();
|
|
22
34
|
var cacheIdentifier = "".concat(fetchPolicy, "-").concat(renderPolicy, "-").concat(operation.request.identifier);
|
|
23
35
|
if (cacheBreaker != null) {
|
|
@@ -100,7 +112,7 @@ var QueryResourceImpl = /*#__PURE__*/function () {
|
|
|
100
112
|
};
|
|
101
113
|
_proto.prepareWithIdentifier = function prepareWithIdentifier(cacheIdentifier, operation, fetchObservable, maybeFetchPolicy, maybeRenderPolicy, observer, profilerContext) {
|
|
102
114
|
var environment = this._environment;
|
|
103
|
-
var fetchPolicy = maybeFetchPolicy !== null && maybeFetchPolicy !== void 0 ? maybeFetchPolicy :
|
|
115
|
+
var fetchPolicy = maybeFetchPolicy !== null && maybeFetchPolicy !== void 0 ? maybeFetchPolicy : getDefaultFetchPolicy(operation);
|
|
104
116
|
var renderPolicy = maybeRenderPolicy !== null && maybeRenderPolicy !== void 0 ? maybeRenderPolicy : environment.UNSTABLE_getDefaultRenderPolicy();
|
|
105
117
|
var cacheEntry = this._cache.get(cacheIdentifier);
|
|
106
118
|
var temporaryRetainDisposable = null;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function isExecTimeResolversEnabled(operation) {
|
|
4
|
+
var _operation$use_exec_t, _operation$exec_time_;
|
|
5
|
+
return ((_operation$use_exec_t = operation.use_exec_time_resolvers) !== null && _operation$use_exec_t !== void 0 ? _operation$use_exec_t : (_operation$exec_time_ = operation.exec_time_resolvers_enabled_provider) === null || _operation$exec_time_ === void 0 ? void 0 : _operation$exec_time_.get()) === true;
|
|
6
|
+
}
|
|
7
|
+
module.exports = {
|
|
8
|
+
isExecTimeResolversEnabled: isExecTimeResolversEnabled
|
|
9
|
+
};
|
|
@@ -2,20 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
4
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
5
|
+
var _require = require('./execTimeResolvers'),
|
|
6
|
+
isExecTimeResolversEnabled = _require.isExecTimeResolversEnabled;
|
|
5
7
|
var invariant = require('invariant');
|
|
6
|
-
var
|
|
7
|
-
fetchQueryDeduped =
|
|
8
|
-
Observable =
|
|
9
|
-
PreloadableQueryRegistry =
|
|
10
|
-
ReplaySubject =
|
|
11
|
-
createOperationDescriptor =
|
|
12
|
-
getRequest =
|
|
13
|
-
getRequestIdentifier =
|
|
8
|
+
var _require2 = require('relay-runtime'),
|
|
9
|
+
fetchQueryDeduped = _require2.__internal.fetchQueryDeduped,
|
|
10
|
+
Observable = _require2.Observable,
|
|
11
|
+
PreloadableQueryRegistry = _require2.PreloadableQueryRegistry,
|
|
12
|
+
ReplaySubject = _require2.ReplaySubject,
|
|
13
|
+
createOperationDescriptor = _require2.createOperationDescriptor,
|
|
14
|
+
getRequest = _require2.getRequest,
|
|
15
|
+
getRequestIdentifier = _require2.getRequestIdentifier;
|
|
16
|
+
var DEFAULT_FETCH_POLICY = 'store-or-network';
|
|
17
|
+
var DEFAULT_LIVE_FETCH_POLICY = 'store-and-network';
|
|
18
|
+
function getDefaultFetchPolicy(request) {
|
|
19
|
+
if (request.params.metadata.live !== undefined || isExecTimeResolversEnabled(request.operation)) {
|
|
20
|
+
return DEFAULT_LIVE_FETCH_POLICY;
|
|
21
|
+
}
|
|
22
|
+
if (request.params.id == null && request.params.text == null) {
|
|
23
|
+
return 'store-only';
|
|
24
|
+
}
|
|
25
|
+
return DEFAULT_FETCH_POLICY;
|
|
26
|
+
}
|
|
14
27
|
var fetchKey = 100001;
|
|
15
28
|
function loadQuery(environment, preloadableRequest, variables, options, environmentProviderOptions) {
|
|
16
|
-
var _options$fetchPolicy;
|
|
17
29
|
fetchKey++;
|
|
18
|
-
var
|
|
30
|
+
var providedFetchPolicy = options === null || options === void 0 ? void 0 : options.fetchPolicy;
|
|
31
|
+
var fetchPolicy = providedFetchPolicy !== null && providedFetchPolicy !== void 0 ? providedFetchPolicy : DEFAULT_FETCH_POLICY;
|
|
19
32
|
var networkCacheConfig = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, options === null || options === void 0 ? void 0 : options.networkCacheConfig), {}, {
|
|
20
33
|
force: true
|
|
21
34
|
});
|
|
@@ -89,6 +102,9 @@ function loadQuery(environment, preloadableRequest, variables, options, environm
|
|
|
89
102
|
unsubscribeFromExecution = _fetchQueryDeduped$su.unsubscribe;
|
|
90
103
|
};
|
|
91
104
|
var checkAvailabilityAndExecute = function checkAvailabilityAndExecute(concreteRequest) {
|
|
105
|
+
if (providedFetchPolicy == null) {
|
|
106
|
+
fetchPolicy = getDefaultFetchPolicy(concreteRequest);
|
|
107
|
+
}
|
|
92
108
|
var operation = createOperationDescriptor(concreteRequest, variables, networkCacheConfig);
|
|
93
109
|
retainReference = environment.retain(operation);
|
|
94
110
|
if (fetchPolicy === 'store-only') {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-relay",
|
|
3
3
|
"description": "A framework for building GraphQL-driven React applications.",
|
|
4
|
-
"version": "0.0.0-main-
|
|
4
|
+
"version": "0.0.0-main-cd82781d",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"graphql",
|
|
7
7
|
"relay",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"fbjs": "^3.0.2",
|
|
21
21
|
"invariant": "^2.2.4",
|
|
22
22
|
"nullthrows": "^1.1.1",
|
|
23
|
-
"relay-runtime": "0.0.0-main-
|
|
23
|
+
"relay-runtime": "0.0.0-main-cd82781d"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"react": "^16.9.0 || ^17 || ^18 || ^19"
|
|
@@ -27,6 +27,7 @@ import type {
|
|
|
27
27
|
Subscription,
|
|
28
28
|
} from 'relay-runtime';
|
|
29
29
|
|
|
30
|
+
const {isExecTimeResolversEnabled} = require('./execTimeResolvers');
|
|
30
31
|
const LRUCache = require('./LRUCache');
|
|
31
32
|
const SuspenseResource = require('./SuspenseResource');
|
|
32
33
|
const invariant = require('invariant');
|
|
@@ -74,7 +75,21 @@ interface IMap<K, V> {
|
|
|
74
75
|
}
|
|
75
76
|
|
|
76
77
|
function operationIsLiveQuery(operation: OperationDescriptor): boolean {
|
|
77
|
-
return
|
|
78
|
+
return (
|
|
79
|
+
operation.request.node.params.metadata.live !== undefined ||
|
|
80
|
+
isExecTimeResolversEnabled(operation.request.node.operation)
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function getDefaultFetchPolicy(operation: OperationDescriptor): FetchPolicy {
|
|
85
|
+
if (operationIsLiveQuery(operation)) {
|
|
86
|
+
return DEFAULT_LIVE_FETCH_POLICY;
|
|
87
|
+
}
|
|
88
|
+
const request = operation.request.node;
|
|
89
|
+
if (request.params.id == null && request.params.text == null) {
|
|
90
|
+
return 'store-only';
|
|
91
|
+
}
|
|
92
|
+
return DEFAULT_FETCH_POLICY;
|
|
78
93
|
}
|
|
79
94
|
|
|
80
95
|
function getQueryCacheIdentifier(
|
|
@@ -84,11 +99,7 @@ function getQueryCacheIdentifier(
|
|
|
84
99
|
maybeRenderPolicy: ?RenderPolicy,
|
|
85
100
|
cacheBreaker?: ?string | ?number,
|
|
86
101
|
): string {
|
|
87
|
-
const fetchPolicy =
|
|
88
|
-
maybeFetchPolicy ??
|
|
89
|
-
(operationIsLiveQuery(operation)
|
|
90
|
-
? DEFAULT_LIVE_FETCH_POLICY
|
|
91
|
-
: DEFAULT_FETCH_POLICY);
|
|
102
|
+
const fetchPolicy = maybeFetchPolicy ?? getDefaultFetchPolicy(operation);
|
|
92
103
|
const renderPolicy =
|
|
93
104
|
maybeRenderPolicy ?? environment.UNSTABLE_getDefaultRenderPolicy();
|
|
94
105
|
const cacheIdentifier = `${fetchPolicy}-${renderPolicy}-${operation.request.identifier}`;
|
|
@@ -241,11 +252,7 @@ class QueryResourceImpl {
|
|
|
241
252
|
profilerContext: unknown,
|
|
242
253
|
): QueryResult {
|
|
243
254
|
const environment = this._environment;
|
|
244
|
-
const fetchPolicy =
|
|
245
|
-
maybeFetchPolicy ??
|
|
246
|
-
(operationIsLiveQuery(operation)
|
|
247
|
-
? DEFAULT_LIVE_FETCH_POLICY
|
|
248
|
-
: DEFAULT_FETCH_POLICY);
|
|
255
|
+
const fetchPolicy = maybeFetchPolicy ?? getDefaultFetchPolicy(operation);
|
|
249
256
|
const renderPolicy =
|
|
250
257
|
maybeRenderPolicy ?? environment.UNSTABLE_getDefaultRenderPolicy();
|
|
251
258
|
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
* @flow strict-local
|
|
8
|
+
* @format
|
|
9
|
+
* @oncall relay
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
'use strict';
|
|
13
|
+
|
|
14
|
+
import type {NormalizationOperation} from 'relay-runtime/util/NormalizationNode';
|
|
15
|
+
|
|
16
|
+
function isExecTimeResolversEnabled(
|
|
17
|
+
operation: NormalizationOperation,
|
|
18
|
+
): boolean {
|
|
19
|
+
return (
|
|
20
|
+
(operation.use_exec_time_resolvers ??
|
|
21
|
+
operation.exec_time_resolvers_enabled_provider?.get()) === true
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
module.exports = {
|
|
26
|
+
isExecTimeResolversEnabled,
|
|
27
|
+
};
|
|
@@ -23,6 +23,7 @@ import type {
|
|
|
23
23
|
} from './EntryPointTypes.flow';
|
|
24
24
|
import type {
|
|
25
25
|
ConcreteRequest,
|
|
26
|
+
FetchPolicy,
|
|
26
27
|
GraphQLResponse,
|
|
27
28
|
GraphQLTaggedNode,
|
|
28
29
|
IEnvironment,
|
|
@@ -33,6 +34,7 @@ import type {
|
|
|
33
34
|
RequestParameters,
|
|
34
35
|
} from 'relay-runtime';
|
|
35
36
|
|
|
37
|
+
const {isExecTimeResolversEnabled} = require('./execTimeResolvers');
|
|
36
38
|
const invariant = require('invariant');
|
|
37
39
|
const {
|
|
38
40
|
__internal: {fetchQueryDeduped},
|
|
@@ -44,6 +46,23 @@ const {
|
|
|
44
46
|
getRequestIdentifier,
|
|
45
47
|
} = require('relay-runtime');
|
|
46
48
|
|
|
49
|
+
const DEFAULT_FETCH_POLICY: FetchPolicy = 'store-or-network';
|
|
50
|
+
const DEFAULT_LIVE_FETCH_POLICY: FetchPolicy = 'store-and-network';
|
|
51
|
+
|
|
52
|
+
function getDefaultFetchPolicy(request: ConcreteRequest): FetchPolicy {
|
|
53
|
+
if (
|
|
54
|
+
request.params.metadata.live !== undefined ||
|
|
55
|
+
isExecTimeResolversEnabled(request.operation)
|
|
56
|
+
) {
|
|
57
|
+
return DEFAULT_LIVE_FETCH_POLICY;
|
|
58
|
+
}
|
|
59
|
+
if (request.params.id == null && request.params.text == null) {
|
|
60
|
+
// A client-only query using read-time resolvers has no server operation to fetch.
|
|
61
|
+
return 'store-only';
|
|
62
|
+
}
|
|
63
|
+
return DEFAULT_FETCH_POLICY;
|
|
64
|
+
}
|
|
65
|
+
|
|
47
66
|
let fetchKey = 100001;
|
|
48
67
|
|
|
49
68
|
export type QueryType<T> =
|
|
@@ -89,7 +108,10 @@ function loadQuery<
|
|
|
89
108
|
// necessary.
|
|
90
109
|
fetchKey++;
|
|
91
110
|
|
|
92
|
-
const
|
|
111
|
+
const providedFetchPolicy = options?.fetchPolicy;
|
|
112
|
+
// Keep the existing default for params-only preloadable requests. Full
|
|
113
|
+
// ConcreteRequests get an exec-time-aware default below.
|
|
114
|
+
let fetchPolicy: FetchPolicy = providedFetchPolicy ?? DEFAULT_FETCH_POLICY;
|
|
93
115
|
const networkCacheConfig = {
|
|
94
116
|
...options?.networkCacheConfig,
|
|
95
117
|
force: true,
|
|
@@ -252,6 +274,9 @@ function loadQuery<
|
|
|
252
274
|
};
|
|
253
275
|
|
|
254
276
|
const checkAvailabilityAndExecute = (concreteRequest: ConcreteRequest) => {
|
|
277
|
+
if (providedFetchPolicy == null) {
|
|
278
|
+
fetchPolicy = getDefaultFetchPolicy(concreteRequest);
|
|
279
|
+
}
|
|
255
280
|
const operation = createOperationDescriptor(
|
|
256
281
|
concreteRequest,
|
|
257
282
|
variables,
|
package/rsc_EXPERIMENTAL.js
CHANGED