relay-runtime 1.7.0-rc.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/LICENSE +1 -1
  2. package/index.js +1 -1
  3. package/lib/ConvertToExecuteFunction.js +12 -75
  4. package/lib/DataChecker.js +400 -0
  5. package/lib/NormalizationNode.js +14 -0
  6. package/lib/ReaderNode.js +10 -0
  7. package/lib/RelayCombinedEnvironmentTypes.js +10 -0
  8. package/lib/RelayConcreteNode.js +12 -29
  9. package/lib/RelayConcreteVariables.js +17 -11
  10. package/lib/RelayConnectionHandler.js +98 -42
  11. package/lib/RelayConnectionInterface.js +5 -13
  12. package/lib/RelayCore.js +17 -14
  13. package/lib/RelayDeclarativeMutationConfig.js +69 -34
  14. package/lib/RelayDefaultHandleKey.js +1 -2
  15. package/lib/RelayDefaultHandlerProvider.js +6 -5
  16. package/lib/RelayError.js +6 -9
  17. package/lib/RelayInMemoryRecordSource.js +20 -22
  18. package/lib/RelayModernEnvironment.js +140 -229
  19. package/lib/RelayModernFragmentSpecResolver.js +110 -102
  20. package/lib/RelayModernGraphQLTag.js +53 -15
  21. package/lib/{RelayModernOperationSelector.js → RelayModernOperationDescriptor.js} +9 -8
  22. package/lib/RelayModernQueryExecutor.js +172 -0
  23. package/lib/RelayModernRecord.js +97 -38
  24. package/lib/RelayModernSelector.js +89 -33
  25. package/lib/RelayModernStore.js +301 -0
  26. package/lib/RelayNetwork.js +16 -28
  27. package/lib/RelayNetworkLogger.js +2 -3
  28. package/lib/RelayNetworkLoggerTransaction.js +32 -30
  29. package/lib/RelayNetworkTypes.js +1 -2
  30. package/lib/RelayObservable.js +127 -155
  31. package/lib/RelayProfiler.js +35 -22
  32. package/lib/RelayPublishQueue.js +144 -96
  33. package/lib/RelayQueryResponseCache.js +37 -21
  34. package/lib/RelayReader.js +194 -61
  35. package/lib/RelayRecordProxy.js +50 -31
  36. package/lib/RelayRecordSourceMutator.js +92 -51
  37. package/lib/RelayRecordSourceProxy.js +43 -35
  38. package/lib/RelayRecordSourceSelectorProxy.js +22 -21
  39. package/lib/RelayRecordState.js +1 -3
  40. package/lib/RelayReferenceMarker.js +110 -37
  41. package/lib/RelayResponseNormalizer.js +248 -82
  42. package/lib/RelayRuntimeTypes.js +1 -3
  43. package/lib/RelayStoreTypes.js +1 -2
  44. package/lib/RelayStoreUtils.js +37 -19
  45. package/lib/RelayViewerHandler.js +14 -10
  46. package/lib/applyRelayModernOptimisticMutation.js +8 -8
  47. package/lib/cloneRelayHandleSourceField.js +8 -9
  48. package/lib/commitLocalUpdate.js +1 -2
  49. package/lib/commitRelayModernMutation.js +21 -14
  50. package/lib/createRelayNetworkLogger.js +11 -9
  51. package/lib/deepFreeze.js +2 -3
  52. package/lib/fetchRelayModernQuery.js +10 -12
  53. package/lib/generateRelayClientID.js +4 -2
  54. package/lib/getRelayHandleKey.js +5 -6
  55. package/lib/hasOverlappingIDs.js +3 -2
  56. package/lib/index.js +59 -62
  57. package/lib/isPromise.js +1 -2
  58. package/lib/isRelayModernEnvironment.js +1 -3
  59. package/lib/isScalarAndEqual.js +1 -3
  60. package/lib/normalizePayload.js +17 -15
  61. package/lib/normalizeRelayPayload.js +9 -9
  62. package/lib/recycleNodesInto.js +25 -9
  63. package/lib/requestRelaySubscription.js +25 -58
  64. package/lib/simpleClone.js +2 -3
  65. package/lib/stableCopy.js +5 -3
  66. package/lib/validateMutation.js +146 -0
  67. package/package.json +3 -3
  68. package/relay-runtime.js +4 -0
  69. package/relay-runtime.min.js +9 -0
  70. package/lib/RelayDataLoader.js +0 -302
  71. package/lib/RelayMarkSweepStore.js +0 -242
  72. package/lib/deferrableFragmentKey.js +0 -20
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2013-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -7,84 +7,81 @@
7
7
  *
8
8
  * @format
9
9
  */
10
-
11
10
  'use strict';
12
11
 
13
12
  // As early as possible, check for the existence of the JavaScript globals which
14
13
  // Relay Runtime relies upon, and produce a clear message if they do not exist.
15
- if (process.env.NODE_ENV !== 'production') {
14
+ if (process.env.NODE_ENV !== "production") {
16
15
  if (typeof Map !== 'function' || typeof Set !== 'function' || typeof Promise !== 'function' || typeof Object.assign !== 'function') {
17
16
  throw new Error('relay-runtime requires Map, Set, Promise, and Object.assign to exist. ' + 'Use a polyfill to provide these for older browsers.');
18
17
  }
19
18
  }
20
-
21
19
  /**
22
20
  * The public interface to Relay Runtime.
23
21
  */
24
- module.exports = {
25
- // Core API
26
- Environment: require('./RelayModernEnvironment'),
27
- Network: require('./RelayNetwork'),
28
- Observable: require('./RelayObservable'),
29
- QueryResponseCache: require('./RelayQueryResponseCache'),
30
- RecordSource: require('./RelayInMemoryRecordSource'),
31
- Store: require('./RelayMarkSweepStore'),
32
22
 
33
- areEqualSelectors: require('./RelayCore').areEqualSelectors,
34
- createFragmentSpecResolver: require('./RelayCore').createFragmentSpecResolver,
35
- createOperationSelector: require('./RelayCore').createOperationSelector,
36
- getDataIDsFromObject: require('./RelayCore').getDataIDsFromObject,
37
- getFragment: require('./RelayModernGraphQLTag').getFragment,
38
- getRequest: require('./RelayModernGraphQLTag').getRequest,
39
- // TODO (T23201154) remove in a future Relay release.
40
- getOperation: function getOperation() {
41
- if (process.env.NODE_ENV !== 'production') {
42
- require('fbjs/lib/warning')(false, 'getOperation() deprecated. Use getRequest().');
43
- }
44
- return require('./RelayModernGraphQLTag').getRequest.apply(null, arguments);
45
- },
46
- getSelector: require('./RelayCore').getSelector,
47
- getSelectorList: require('./RelayCore').getSelectorList,
48
- getSelectorsFromObject: require('./RelayCore').getSelectorsFromObject,
49
- getStorageKey: require('./RelayStoreUtils').getStorageKey,
50
- getVariablesFromObject: require('./RelayCore').getVariablesFromObject,
51
- graphql: require('./RelayModernGraphQLTag').graphql,
52
23
 
24
+ module.exports = {
25
+ // Core API
26
+ Environment: require("./RelayModernEnvironment"),
27
+ Network: require("./RelayNetwork"),
28
+ Observable: require("./RelayObservable"),
29
+ QueryResponseCache: require("./RelayQueryResponseCache"),
30
+ RecordSource: require("./RelayInMemoryRecordSource"),
31
+ Store: require("./RelayModernStore"),
32
+ areEqualSelectors: require("./RelayCore").areEqualSelectors,
33
+ createFragmentSpecResolver: require("./RelayCore").createFragmentSpecResolver,
34
+ createOperationDescriptor: require("./RelayCore").createOperationDescriptor,
35
+ getDataIDsFromObject: require("./RelayCore").getDataIDsFromObject,
36
+ getFragment: require("./RelayModernGraphQLTag").getFragment,
37
+ getPaginationFragment: require("./RelayModernGraphQLTag").getPaginationFragment,
38
+ getRefetchableFragment: require("./RelayModernGraphQLTag").getRefetchableFragment,
39
+ getRequest: require("./RelayModernGraphQLTag").getRequest,
40
+ getSelector: require("./RelayCore").getSelector,
41
+ getSelectorList: require("./RelayCore").getSelectorList,
42
+ getSelectorsFromObject: require("./RelayCore").getSelectorsFromObject,
43
+ getStorageKey: require("./RelayStoreUtils").getStorageKey,
44
+ getVariablesFromObject: require("./RelayCore").getVariablesFromObject,
45
+ graphql: require("./RelayModernGraphQLTag").graphql,
53
46
  // Declarative mutation API
54
- MutationTypes: require('./RelayDeclarativeMutationConfig').MutationTypes,
55
- RangeOperations: require('./RelayDeclarativeMutationConfig').RangeOperations,
56
-
47
+ MutationTypes: require("./RelayDeclarativeMutationConfig").MutationTypes,
48
+ RangeOperations: require("./RelayDeclarativeMutationConfig").RangeOperations,
57
49
  // Extensions
58
- ConnectionHandler: require('./RelayConnectionHandler'),
59
- ViewerHandler: require('./RelayViewerHandler'),
60
-
50
+ DefaultHandlerProvider: require("./RelayDefaultHandlerProvider"),
51
+ ConnectionHandler: require("./RelayConnectionHandler"),
52
+ ViewerHandler: require("./RelayViewerHandler"),
61
53
  // Helpers (can be implemented via the above API)
62
- applyOptimisticMutation: require('./applyRelayModernOptimisticMutation'),
63
- commitLocalUpdate: require('./commitLocalUpdate'),
64
- commitMutation: require('./commitRelayModernMutation'),
65
- fetchQuery: require('./fetchRelayModernQuery'),
66
- isRelayModernEnvironment: require('./isRelayModernEnvironment'),
67
- requestSubscription: require('./requestRelaySubscription'),
68
-
54
+ applyOptimisticMutation: require("./applyRelayModernOptimisticMutation"),
55
+ commitLocalUpdate: require("./commitLocalUpdate"),
56
+ commitMutation: require("./commitRelayModernMutation"),
57
+ fetchQuery: require("./fetchRelayModernQuery"),
58
+ isRelayModernEnvironment: require("./isRelayModernEnvironment"),
59
+ requestSubscription: require("./requestRelaySubscription"),
69
60
  // Configuration interface for legacy or special uses
70
- ConnectionInterface: require('./RelayConnectionInterface'),
71
-
61
+ ConnectionInterface: require("./RelayConnectionInterface"),
72
62
  // Utilities
73
- RelayProfiler: require('./RelayProfiler'),
74
-
63
+ RelayProfiler: require("./RelayProfiler"),
75
64
  // INTERNAL-ONLY: These exports might be removed at any point.
76
- RelayConcreteNode: require('./RelayConcreteNode'),
77
- RelayError: require('./RelayError'),
78
- RelayNetworkLoggerTransaction: require('./RelayNetworkLoggerTransaction'),
79
- DEFAULT_HANDLE_KEY: require('./RelayDefaultHandleKey').DEFAULT_HANDLE_KEY,
80
- ROOT_ID: require('./RelayStoreUtils').ROOT_ID,
81
-
82
- createRelayNetworkLogger: require('./createRelayNetworkLogger'),
83
- deepFreeze: require('./deepFreeze'),
84
- generateClientID: require('./generateRelayClientID'),
85
- getRelayHandleKey: require('./getRelayHandleKey'),
86
- isScalarAndEqual: require('./isScalarAndEqual'),
87
- recycleNodesInto: require('./recycleNodesInto'),
88
- simpleClone: require('./simpleClone'),
89
- stableCopy: require('./stableCopy')
65
+ RelayConcreteNode: require("./RelayConcreteNode"),
66
+ RelayError: require("./RelayError"),
67
+ RelayNetworkLoggerTransaction: require("./RelayNetworkLoggerTransaction"),
68
+ DEFAULT_HANDLE_KEY: require("./RelayDefaultHandleKey").DEFAULT_HANDLE_KEY,
69
+ FRAGMENTS_KEY: require("./RelayStoreUtils").FRAGMENTS_KEY,
70
+ FRAGMENT_OWNER_KEY: require("./RelayStoreUtils").FRAGMENT_OWNER_KEY,
71
+ ID_KEY: require("./RelayStoreUtils").ID_KEY,
72
+ REF_KEY: require("./RelayStoreUtils").REF_KEY,
73
+ REFS_KEY: require("./RelayStoreUtils").REFS_KEY,
74
+ ROOT_ID: require("./RelayStoreUtils").ROOT_ID,
75
+ ROOT_TYPE: require("./RelayStoreUtils").ROOT_TYPE,
76
+ createRelayNetworkLogger: require("./createRelayNetworkLogger"),
77
+ deepFreeze: require("./deepFreeze"),
78
+ generateClientID: require("./generateRelayClientID"),
79
+ getRelayHandleKey: require("./getRelayHandleKey"),
80
+ isScalarAndEqual: require("./isScalarAndEqual"),
81
+ recycleNodesInto: require("./recycleNodesInto"),
82
+ simpleClone: require("./simpleClone"),
83
+ stableCopy: require("./stableCopy"),
84
+ __internal: {
85
+ getModernOperationVariables: require("./RelayConcreteVariables").getOperationVariables
86
+ }
90
87
  };
package/lib/isPromise.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2013-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -7,7 +7,6 @@
7
7
  * strict
8
8
  * @format
9
9
  */
10
-
11
10
  'use strict';
12
11
 
13
12
  function isPromise(p) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2013-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -7,9 +7,7 @@
7
7
  *
8
8
  * @format
9
9
  */
10
-
11
10
  'use strict';
12
-
13
11
  /**
14
12
  * Determine if a given value is an object that implements the `Environment`
15
13
  * interface defined in `RelayStoreTypes`.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2013-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -7,9 +7,7 @@
7
7
  * strict
8
8
  * @format
9
9
  */
10
-
11
10
  'use strict';
12
-
13
11
  /**
14
12
  * A fast test to determine if two values are equal scalars:
15
13
  * - compares scalars such as booleans, strings, numbers by value
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2013-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -7,28 +7,30 @@
7
7
  *
8
8
  * @format
9
9
  */
10
-
11
10
  'use strict';
12
11
 
13
- function normalizePayload(payload) {
14
- var operation = payload.operation,
15
- variables = payload.variables,
16
- response = payload.response;
17
- var data = response.data,
18
- errors = response.errors;
12
+ function normalizePayload(operation, payload) {
13
+ var data = payload.data,
14
+ errors = payload.errors;
19
15
 
20
16
  if (data != null) {
21
- return require('./normalizeRelayPayload')({
22
- dataID: require('./RelayStoreUtils').ROOT_ID,
23
- node: operation,
24
- variables: variables
25
- }, data, errors, { handleStrippedNulls: true });
17
+ return require("./normalizeRelayPayload")(operation.root, data, errors, {
18
+ handleStrippedNulls: true
19
+ });
26
20
  }
27
- var error = require('./RelayError').create('RelayNetwork', 'No data returned for operation `%s`, got error(s):\n%s\n\nSee the error ' + '`source` property for more information.', operation.name, errors ? errors.map(function (_ref) {
21
+
22
+ var node = operation.node;
23
+
24
+ var error = require("./RelayError").create('RelayNetwork', 'No data returned for operation `%s`, got error(s):\n%s\n\nSee the error ' + '`source` property for more information.', node.params ? node.params.name : node.name, errors ? errors.map(function (_ref) {
28
25
  var message = _ref.message;
29
26
  return message;
30
27
  }).join('\n') : '(No errors)');
31
- error.source = { errors: errors, operation: operation, variables: variables };
28
+
29
+ error.source = {
30
+ errors: errors,
31
+ operation: operation.node,
32
+ variables: operation.variables
33
+ };
32
34
  throw error;
33
35
  }
34
36
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2013-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -7,23 +7,23 @@
7
7
  * strict-local
8
8
  * @format
9
9
  */
10
-
11
10
  'use strict';
12
11
 
13
12
  function normalizeRelayPayload(selector, payload, errors) {
14
- var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : { handleStrippedNulls: false };
15
-
16
- var source = new (require('./RelayInMemoryRecordSource'))();
17
- source.set(require('./RelayStoreUtils').ROOT_ID, require('./RelayModernRecord').create(require('./RelayStoreUtils').ROOT_ID, require('./RelayStoreUtils').ROOT_TYPE));
13
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {
14
+ handleStrippedNulls: false
15
+ };
16
+ var source = new (require("./RelayInMemoryRecordSource"))();
17
+ source.set(require("./RelayStoreUtils").ROOT_ID, require("./RelayModernRecord").create(require("./RelayStoreUtils").ROOT_ID, require("./RelayStoreUtils").ROOT_TYPE));
18
18
 
19
- var _RelayResponseNormali = require('./RelayResponseNormalizer').normalize(source, selector, payload, options),
19
+ var _RelayResponseNormali = require("./RelayResponseNormalizer").normalize(source, selector, payload, options),
20
20
  fieldPayloads = _RelayResponseNormali.fieldPayloads,
21
- deferrableSelections = _RelayResponseNormali.deferrableSelections;
21
+ matchPayloads = _RelayResponseNormali.matchPayloads;
22
22
 
23
23
  return {
24
24
  errors: errors,
25
25
  fieldPayloads: fieldPayloads,
26
- deferrableSelections: deferrableSelections,
26
+ matchPayloads: matchPayloads,
27
27
  source: source
28
28
  };
29
29
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2013-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -7,9 +7,7 @@
7
7
  * strict
8
8
  * @format
9
9
  */
10
-
11
10
  'use strict';
12
-
13
11
  /**
14
12
  * Recycles subtrees from `prevData` by replacing equal subtrees in `nextData`.
15
13
  */
@@ -18,19 +16,28 @@ function recycleNodesInto(prevData, nextData) {
18
16
  if (prevData === nextData || typeof prevData !== 'object' || !prevData || typeof nextData !== 'object' || !nextData) {
19
17
  return nextData;
20
18
  }
21
- var canRecycle = false;
22
19
 
23
- // Assign local variables to preserve Flow type refinement.
20
+ var canRecycle = false; // Assign local variables to preserve Flow type refinement.
21
+
24
22
  var prevArray = Array.isArray(prevData) ? prevData : null;
25
23
  var nextArray = Array.isArray(nextData) ? nextData : null;
24
+
26
25
  if (prevArray && nextArray) {
27
26
  canRecycle = nextArray.reduce(function (wasEqual, nextItem, ii) {
28
27
  var prevValue = prevArray[ii];
29
28
  var nextValue = recycleNodesInto(prevValue, nextItem);
29
+
30
30
  if (nextValue !== nextArray[ii]) {
31
- nextArray[ii] = nextValue;
31
+ if (process.env.NODE_ENV !== "production") {
32
+ if (!Object.isFrozen(nextArray)) {
33
+ nextArray[ii] = nextValue;
34
+ }
35
+ } else {
36
+ nextArray[ii] = nextValue;
37
+ }
32
38
  }
33
- return wasEqual && nextArray[ii] === prevArray[ii];
39
+
40
+ return wasEqual && nextValue === prevArray[ii];
34
41
  }, true) && prevArray.length === nextArray.length;
35
42
  } else if (!prevArray && !nextArray) {
36
43
  // Assign local variables to preserve Flow type refinement.
@@ -41,12 +48,21 @@ function recycleNodesInto(prevData, nextData) {
41
48
  canRecycle = nextKeys.reduce(function (wasEqual, key) {
42
49
  var prevValue = prevObject[key];
43
50
  var nextValue = recycleNodesInto(prevValue, nextObject[key]);
51
+
44
52
  if (nextValue !== nextObject[key]) {
45
- nextObject[key] = nextValue;
53
+ if (process.env.NODE_ENV !== "production") {
54
+ if (!Object.isFrozen(nextObject)) {
55
+ nextObject[key] = nextValue;
56
+ }
57
+ } else {
58
+ nextObject[key] = nextValue;
59
+ }
46
60
  }
47
- return wasEqual && nextObject[key] === prevObject[key];
61
+
62
+ return wasEqual && nextValue === prevObject[key];
48
63
  }, true) && prevKeys.length === nextKeys.length;
49
64
  }
65
+
50
66
  return canRecycle ? prevData : nextData;
51
67
  }
52
68
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2013-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -7,79 +7,46 @@
7
7
  *
8
8
  * @format
9
9
  */
10
-
11
10
  'use strict';
12
11
 
13
- var _extends3 = _interopRequireDefault(require('babel-runtime/helpers/extends'));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
16
-
17
12
  function requestRelaySubscription(environment, config) {
18
13
  var _environment$unstable = environment.unstable_internal,
19
- createOperationSelector = _environment$unstable.createOperationSelector,
14
+ createOperationDescriptor = _environment$unstable.createOperationDescriptor,
20
15
  getRequest = _environment$unstable.getRequest;
21
-
22
16
  var subscription = getRequest(config.subscription);
23
- if (subscription.operationKind !== 'subscription') {
17
+
18
+ if (subscription.params.operationKind !== 'subscription') {
24
19
  throw new Error('requestRelaySubscription: Must use Subscription operation');
25
20
  }
21
+
26
22
  var configs = config.configs,
27
23
  onCompleted = config.onCompleted,
28
24
  onError = config.onError,
29
25
  onNext = config.onNext,
30
- variables = config.variables,
31
- receiveEvents = config.receiveEvents;
26
+ variables = config.variables;
27
+ var operation = createOperationDescriptor(subscription, variables);
28
+ process.env.NODE_ENV !== "production" ? require("fbjs/lib/warning")(!(config.updater && configs), 'requestRelaySubscription: Expected only one of `updater` and `configs` to be provided') : void 0;
32
29
 
33
- var operation = createOperationSelector(subscription, variables);
34
-
35
- process.env.NODE_ENV !== 'production' ? require('fbjs/lib/warning')(!(config.updater && configs), 'requestRelaySubscription: Expected only one of `updater` and `configs` to be provided') : void 0;
36
-
37
- var _ref = configs ? require('./RelayDeclarativeMutationConfig').convert(configs, subscription, null /* optimisticUpdater */
30
+ var _ref = configs ? require("./RelayDeclarativeMutationConfig").convert(configs, subscription, null
31
+ /* optimisticUpdater */
38
32
  , config.updater) : config,
39
33
  updater = _ref.updater;
40
34
 
41
- if (receiveEvents) {
42
- return environment.executeWithEvents({
43
- operation: operation,
44
- updater: updater,
45
- cacheConfig: { force: true }
46
- }).subscribeLegacy({
47
- onNext: function (_onNext) {
48
- function onNext(_x) {
49
- return _onNext.apply(this, arguments);
50
- }
51
-
52
- onNext.toString = function () {
53
- return _onNext.toString();
54
- };
55
-
56
- return onNext;
57
- }(function (payload) {
58
- if (onNext) {
59
- if (payload.kind === 'event') {
60
- onNext(payload);
61
- } else {
62
- var data = environment.lookup(operation.fragment).data;
63
- onNext((0, _extends3['default'])({ kind: 'data' }, data));
64
- }
65
- }
66
- }),
67
- onError: onError,
68
- onCompleted: onCompleted
69
- });
70
- } else {
71
- return environment.execute({
72
- operation: operation,
73
- updater: updater,
74
- cacheConfig: { force: true }
75
- }).map(function () {
76
- return environment.lookup(operation.fragment).data;
77
- }).subscribeLegacy({
78
- onNext: onNext,
79
- onError: onError,
80
- onCompleted: onCompleted
81
- });
82
- }
35
+ return environment.execute({
36
+ operation: operation,
37
+ updater: updater,
38
+ cacheConfig: {
39
+ force: true
40
+ }
41
+ }).map(function () {
42
+ var data = environment.lookup(operation.fragment).data; // $FlowFixMe
43
+
44
+ return data;
45
+ }).subscribeLegacy({
46
+ onNext: onNext,
47
+ onError: onError,
48
+ onCompleted: onCompleted
49
+ });
83
50
  }
84
51
 
85
52
  module.exports = requestRelaySubscription;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2013-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -7,7 +7,6 @@
7
7
  *
8
8
  * @format
9
9
  */
10
-
11
10
  'use strict';
12
11
 
13
12
  /**
@@ -19,7 +18,7 @@ function simpleClone(value) {
19
18
  if (Array.isArray(value)) {
20
19
  return value.map(simpleClone);
21
20
  } else if (value && typeof value === 'object') {
22
- return require('fbjs/lib/mapObject')(value, simpleClone);
21
+ return require("fbjs/lib/mapObject")(value, simpleClone);
23
22
  } else {
24
23
  return value;
25
24
  }
package/lib/stableCopy.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2013-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -7,9 +7,7 @@
7
7
  *
8
8
  * @format
9
9
  */
10
-
11
10
  'use strict';
12
-
13
11
  /**
14
12
  * Creates a copy of the provided value, ensuring any nested objects have their
15
13
  * keys sorted such that equivalent values would have identical JSON.stringify
@@ -20,14 +18,18 @@ function stableCopy(value) {
20
18
  if (!value || typeof value !== 'object') {
21
19
  return value;
22
20
  }
21
+
23
22
  if (Array.isArray(value)) {
24
23
  return value.map(stableCopy);
25
24
  }
25
+
26
26
  var keys = Object.keys(value).sort();
27
27
  var stable = {};
28
+
28
29
  for (var i = 0; i < keys.length; i++) {
29
30
  stable[keys[i]] = stableCopy(value[keys[i]]);
30
31
  }
32
+
31
33
  return stable;
32
34
  }
33
35