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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v0.0.0-main-7a006f45
2
+ * Relay v0.0.0-main-cd82781d
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
package/hooks.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v0.0.0-main-7a006f45
2
+ * Relay v0.0.0-main-cd82781d
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v0.0.0-main-7a006f45
2
+ * Relay v0.0.0-main-cd82781d
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
package/legacy.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v0.0.0-main-7a006f45
2
+ * Relay v0.0.0-main-cd82781d
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
@@ -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 _require = require('relay-runtime'),
10
- isPromise = _require.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 : operationIsLiveQuery(operation) ? DEFAULT_LIVE_FETCH_POLICY : DEFAULT_FETCH_POLICY;
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 : operationIsLiveQuery(operation) ? DEFAULT_LIVE_FETCH_POLICY : DEFAULT_FETCH_POLICY;
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 _require = require('relay-runtime'),
7
- fetchQueryDeduped = _require.__internal.fetchQueryDeduped,
8
- Observable = _require.Observable,
9
- PreloadableQueryRegistry = _require.PreloadableQueryRegistry,
10
- ReplaySubject = _require.ReplaySubject,
11
- createOperationDescriptor = _require.createOperationDescriptor,
12
- getRequest = _require.getRequest,
13
- getRequestIdentifier = _require.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 fetchPolicy = (_options$fetchPolicy = options === null || options === void 0 ? void 0 : options.fetchPolicy) !== null && _options$fetchPolicy !== void 0 ? _options$fetchPolicy : 'store-or-network';
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-7a006f45",
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-7a006f45"
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 operation.request.node.params.metadata.live !== undefined;
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 fetchPolicy = options?.fetchPolicy ?? 'store-or-network';
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,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v0.0.0-main-7a006f45
2
+ * Relay v0.0.0-main-cd82781d
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v0.0.0-main-7a006f45
2
+ * Relay v0.0.0-main-cd82781d
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *