relay-runtime 9.0.0 → 10.1.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 (142) hide show
  1. package/handlers/RelayDefaultHandlerProvider.js.flow +47 -0
  2. package/handlers/connection/ConnectionHandler.js.flow +549 -0
  3. package/handlers/connection/ConnectionInterface.js.flow +92 -0
  4. package/handlers/connection/MutationHandlers.js.flow +199 -0
  5. package/index.js +1 -1
  6. package/index.js.flow +335 -0
  7. package/lib/handlers/RelayDefaultHandlerProvider.js +20 -0
  8. package/lib/handlers/connection/ConnectionHandler.js +1 -3
  9. package/lib/handlers/connection/MutationHandlers.js +212 -0
  10. package/lib/index.js +14 -2
  11. package/lib/mutations/RelayDeclarativeMutationConfig.js +22 -45
  12. package/lib/mutations/RelayRecordProxy.js +1 -3
  13. package/lib/mutations/RelayRecordSourceMutator.js +1 -3
  14. package/lib/mutations/RelayRecordSourceProxy.js +1 -3
  15. package/lib/mutations/RelayRecordSourceSelectorProxy.js +1 -3
  16. package/lib/mutations/commitMutation.js +2 -3
  17. package/lib/mutations/validateMutation.js +40 -9
  18. package/lib/network/RelayObservable.js +9 -9
  19. package/lib/network/RelayQueryResponseCache.js +8 -6
  20. package/lib/query/GraphQLTag.js +2 -1
  21. package/lib/query/PreloadableQueryRegistry.js +70 -0
  22. package/lib/query/fetchQuery.js +2 -3
  23. package/lib/query/fetchQueryInternal.js +5 -14
  24. package/lib/store/DataChecker.js +200 -71
  25. package/lib/store/RelayConcreteVariables.js +6 -2
  26. package/lib/store/RelayModernEnvironment.js +124 -65
  27. package/lib/store/RelayModernFragmentSpecResolver.js +19 -14
  28. package/lib/store/RelayModernOperationDescriptor.js +6 -5
  29. package/lib/store/RelayModernQueryExecutor.js +122 -73
  30. package/lib/store/RelayModernRecord.js +14 -9
  31. package/lib/store/RelayModernSelector.js +6 -2
  32. package/lib/store/RelayModernStore.js +281 -131
  33. package/lib/store/RelayOperationTracker.js +35 -78
  34. package/lib/store/RelayOptimisticRecordSource.js +7 -5
  35. package/lib/store/RelayPublishQueue.js +2 -4
  36. package/lib/store/RelayReader.js +304 -52
  37. package/lib/store/RelayRecordSource.js +1 -3
  38. package/lib/store/RelayRecordSourceMapImpl.js +13 -18
  39. package/lib/store/RelayReferenceMarker.js +125 -14
  40. package/lib/store/RelayResponseNormalizer.js +261 -66
  41. package/lib/store/RelayStoreReactFlightUtils.js +47 -0
  42. package/lib/store/RelayStoreUtils.js +1 -0
  43. package/lib/store/StoreInspector.js +8 -8
  44. package/lib/store/TypeID.js +28 -0
  45. package/lib/store/cloneRelayScalarHandleSourceField.js +44 -0
  46. package/lib/store/defaultRequiredFieldLogger.js +18 -0
  47. package/lib/store/normalizeRelayPayload.js +6 -2
  48. package/lib/store/readInlineData.js +1 -1
  49. package/lib/subscription/requestSubscription.js +4 -3
  50. package/lib/util/NormalizationNode.js +1 -5
  51. package/lib/util/RelayConcreteNode.js +11 -6
  52. package/lib/util/RelayError.js +39 -9
  53. package/lib/util/RelayFeatureFlags.js +6 -3
  54. package/lib/util/RelayReplaySubject.js +3 -3
  55. package/lib/util/createPayloadFor3DField.js +7 -2
  56. package/lib/util/getFragmentIdentifier.js +12 -3
  57. package/lib/util/getOperation.js +33 -0
  58. package/lib/util/getRequestIdentifier.js +2 -2
  59. package/lib/util/isEmptyObject.js +25 -0
  60. package/lib/util/recycleNodesInto.js +6 -7
  61. package/lib/util/reportMissingRequiredFields.js +48 -0
  62. package/mutations/RelayDeclarativeMutationConfig.js.flow +380 -0
  63. package/mutations/RelayRecordProxy.js.flow +165 -0
  64. package/mutations/RelayRecordSourceMutator.js.flow +238 -0
  65. package/mutations/RelayRecordSourceProxy.js.flow +164 -0
  66. package/mutations/RelayRecordSourceSelectorProxy.js.flow +119 -0
  67. package/mutations/applyOptimisticMutation.js.flow +76 -0
  68. package/mutations/commitLocalUpdate.js.flow +24 -0
  69. package/mutations/commitMutation.js.flow +181 -0
  70. package/mutations/validateMutation.js.flow +242 -0
  71. package/network/ConvertToExecuteFunction.js.flow +49 -0
  72. package/network/RelayNetwork.js.flow +84 -0
  73. package/network/RelayNetworkTypes.js.flow +145 -0
  74. package/network/RelayObservable.js.flow +634 -0
  75. package/network/RelayQueryResponseCache.js.flow +111 -0
  76. package/package.json +2 -2
  77. package/query/GraphQLTag.js.flow +168 -0
  78. package/query/PreloadableQueryRegistry.js.flow +65 -0
  79. package/query/fetchQuery.js.flow +47 -0
  80. package/query/fetchQueryInternal.js.flow +343 -0
  81. package/relay-runtime.js +2 -2
  82. package/relay-runtime.min.js +2 -2
  83. package/store/ClientID.js.flow +43 -0
  84. package/store/DataChecker.js.flow +568 -0
  85. package/store/RelayConcreteVariables.js.flow +96 -0
  86. package/store/RelayModernEnvironment.js.flow +571 -0
  87. package/store/RelayModernFragmentSpecResolver.js.flow +438 -0
  88. package/store/RelayModernOperationDescriptor.js.flow +92 -0
  89. package/store/RelayModernQueryExecutor.js.flow +1345 -0
  90. package/store/RelayModernRecord.js.flow +403 -0
  91. package/store/RelayModernSelector.js.flow +455 -0
  92. package/store/RelayModernStore.js.flow +858 -0
  93. package/store/RelayOperationTracker.js.flow +164 -0
  94. package/store/RelayOptimisticRecordSource.js.flow +119 -0
  95. package/store/RelayPublishQueue.js.flow +401 -0
  96. package/store/RelayReader.js.flow +638 -0
  97. package/store/RelayRecordSource.js.flow +29 -0
  98. package/store/RelayRecordSourceMapImpl.js.flow +87 -0
  99. package/store/RelayRecordState.js.flow +37 -0
  100. package/store/RelayReferenceMarker.js.flow +324 -0
  101. package/store/RelayResponseNormalizer.js.flow +791 -0
  102. package/store/RelayStoreReactFlightUtils.js.flow +64 -0
  103. package/store/RelayStoreTypes.js.flow +958 -0
  104. package/store/RelayStoreUtils.js.flow +219 -0
  105. package/store/StoreInspector.js.flow +171 -0
  106. package/store/TypeID.js.flow +28 -0
  107. package/store/ViewerPattern.js.flow +26 -0
  108. package/store/cloneRelayHandleSourceField.js.flow +66 -0
  109. package/store/cloneRelayScalarHandleSourceField.js.flow +62 -0
  110. package/store/createFragmentSpecResolver.js.flow +55 -0
  111. package/store/createRelayContext.js.flow +44 -0
  112. package/store/defaultGetDataID.js.flow +27 -0
  113. package/store/defaultRequiredFieldLogger.js.flow +23 -0
  114. package/store/hasOverlappingIDs.js.flow +34 -0
  115. package/store/isRelayModernEnvironment.js.flow +27 -0
  116. package/store/normalizeRelayPayload.js.flow +51 -0
  117. package/store/readInlineData.js.flow +75 -0
  118. package/subscription/requestSubscription.js.flow +103 -0
  119. package/util/JSResourceTypes.flow.js.flow +20 -0
  120. package/util/NormalizationNode.js.flow +213 -0
  121. package/util/ReaderNode.js.flow +227 -0
  122. package/util/RelayConcreteNode.js.flow +99 -0
  123. package/util/RelayDefaultHandleKey.js.flow +17 -0
  124. package/util/RelayError.js.flow +62 -0
  125. package/util/RelayFeatureFlags.js.flow +37 -0
  126. package/util/RelayProfiler.js.flow +284 -0
  127. package/util/RelayReplaySubject.js.flow +135 -0
  128. package/util/RelayRuntimeTypes.js.flow +72 -0
  129. package/util/createPayloadFor3DField.js.flow +43 -0
  130. package/util/deepFreeze.js.flow +36 -0
  131. package/util/generateID.js.flow +21 -0
  132. package/util/getFragmentIdentifier.js.flow +76 -0
  133. package/util/getOperation.js.flow +40 -0
  134. package/util/getRelayHandleKey.js.flow +41 -0
  135. package/util/getRequestIdentifier.js.flow +42 -0
  136. package/util/isEmptyObject.js.flow +25 -0
  137. package/util/isPromise.js.flow +21 -0
  138. package/util/isScalarAndEqual.js.flow +26 -0
  139. package/util/recycleNodesInto.js.flow +87 -0
  140. package/util/reportMissingRequiredFields.js.flow +51 -0
  141. package/util/resolveImmediate.js.flow +30 -0
  142. package/util/stableCopy.js.flow +35 -0
@@ -10,11 +10,15 @@
10
10
  // flowlint ambiguous-object-type:error
11
11
  'use strict';
12
12
 
13
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
14
+
15
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
16
+
17
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
18
+
13
19
  var invariant = require("fbjs/lib/invariant");
14
20
 
15
- var RelayOperationTracker =
16
- /*#__PURE__*/
17
- function () {
21
+ var RelayOperationTracker = /*#__PURE__*/function () {
18
22
  function RelayOperationTracker() {
19
23
  this._ownersToPendingOperations = new Map();
20
24
  this._pendingOperationsToOwners = new Map();
@@ -34,12 +38,12 @@ function () {
34
38
  }
35
39
 
36
40
  var newlyAffectedOwners = new Set();
37
- var _iteratorNormalCompletion = true;
38
- var _didIteratorError = false;
39
- var _iteratorError = undefined;
41
+
42
+ var _iterator = _createForOfIteratorHelper(affectedOwners),
43
+ _step;
40
44
 
41
45
  try {
42
- for (var _iterator = affectedOwners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
46
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
43
47
  var owner = _step.value;
44
48
 
45
49
  var pendingOperationsAffectingOwner = this._ownersToPendingOperations.get(owner);
@@ -61,18 +65,9 @@ function () {
61
65
  } // No new owners were affected by this operation, we may stop here
62
66
 
63
67
  } catch (err) {
64
- _didIteratorError = true;
65
- _iteratorError = err;
68
+ _iterator.e(err);
66
69
  } finally {
67
- try {
68
- if (!_iteratorNormalCompletion && _iterator["return"] != null) {
69
- _iterator["return"]();
70
- }
71
- } finally {
72
- if (_didIteratorError) {
73
- throw _iteratorError;
74
- }
75
- }
70
+ _iterator.f();
76
71
  }
77
72
 
78
73
  if (newlyAffectedOwners.size === 0) {
@@ -82,12 +77,12 @@ function () {
82
77
 
83
78
 
84
79
  var ownersAffectedByOperation = this._pendingOperationsToOwners.get(pendingOperation) || new Set();
85
- var _iteratorNormalCompletion2 = true;
86
- var _didIteratorError2 = false;
87
- var _iteratorError2 = undefined;
80
+
81
+ var _iterator2 = _createForOfIteratorHelper(newlyAffectedOwners),
82
+ _step2;
88
83
 
89
84
  try {
90
- for (var _iterator2 = newlyAffectedOwners[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
85
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
91
86
  var _owner = _step2.value;
92
87
 
93
88
  this._resolveOwnerResolvers(_owner);
@@ -95,18 +90,9 @@ function () {
95
90
  ownersAffectedByOperation.add(_owner);
96
91
  }
97
92
  } catch (err) {
98
- _didIteratorError2 = true;
99
- _iteratorError2 = err;
93
+ _iterator2.e(err);
100
94
  } finally {
101
- try {
102
- if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
103
- _iterator2["return"]();
104
- }
105
- } finally {
106
- if (_didIteratorError2) {
107
- throw _iteratorError2;
108
- }
109
- }
95
+ _iterator2.f();
110
96
  }
111
97
 
112
98
  this._pendingOperationsToOwners.set(pendingOperation, ownersAffectedByOperation);
@@ -129,12 +115,12 @@ function () {
129
115
  // and some other operations
130
116
 
131
117
  var updatedOwners = new Set();
132
- var _iteratorNormalCompletion3 = true;
133
- var _didIteratorError3 = false;
134
- var _iteratorError3 = undefined;
118
+
119
+ var _iterator3 = _createForOfIteratorHelper(affectedOwners),
120
+ _step3;
135
121
 
136
122
  try {
137
- for (var _iterator3 = affectedOwners[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
123
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
138
124
  var owner = _step3.value;
139
125
 
140
126
  var pendingOperationsAffectingOwner = this._ownersToPendingOperations.get(owner);
@@ -153,26 +139,16 @@ function () {
153
139
  } // Complete subscriptions for all owners, affected by `pendingOperation`
154
140
 
155
141
  } catch (err) {
156
- _didIteratorError3 = true;
157
- _iteratorError3 = err;
142
+ _iterator3.e(err);
158
143
  } finally {
159
- try {
160
- if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
161
- _iterator3["return"]();
162
- }
163
- } finally {
164
- if (_didIteratorError3) {
165
- throw _iteratorError3;
166
- }
167
- }
144
+ _iterator3.f();
168
145
  }
169
146
 
170
- var _iteratorNormalCompletion4 = true;
171
- var _didIteratorError4 = false;
172
- var _iteratorError4 = undefined;
147
+ var _iterator4 = _createForOfIteratorHelper(completedOwners),
148
+ _step4;
173
149
 
174
150
  try {
175
- for (var _iterator4 = completedOwners[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
151
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
176
152
  var _owner2 = _step4.value;
177
153
 
178
154
  this._resolveOwnerResolvers(_owner2);
@@ -182,44 +158,25 @@ function () {
182
158
  // are affected by other operations
183
159
 
184
160
  } catch (err) {
185
- _didIteratorError4 = true;
186
- _iteratorError4 = err;
161
+ _iterator4.e(err);
187
162
  } finally {
188
- try {
189
- if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) {
190
- _iterator4["return"]();
191
- }
192
- } finally {
193
- if (_didIteratorError4) {
194
- throw _iteratorError4;
195
- }
196
- }
163
+ _iterator4.f();
197
164
  }
198
165
 
199
- var _iteratorNormalCompletion5 = true;
200
- var _didIteratorError5 = false;
201
- var _iteratorError5 = undefined;
166
+ var _iterator5 = _createForOfIteratorHelper(updatedOwners),
167
+ _step5;
202
168
 
203
169
  try {
204
- for (var _iterator5 = updatedOwners[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
170
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
205
171
  var _owner3 = _step5.value;
206
172
 
207
173
  this._resolveOwnerResolvers(_owner3);
208
174
  } // Finally, remove pending operation
209
175
 
210
176
  } catch (err) {
211
- _didIteratorError5 = true;
212
- _iteratorError5 = err;
177
+ _iterator5.e(err);
213
178
  } finally {
214
- try {
215
- if (!_iteratorNormalCompletion5 && _iterator5["return"] != null) {
216
- _iterator5["return"]();
217
- }
218
- } finally {
219
- if (_didIteratorError5) {
220
- throw _iteratorError5;
221
- }
222
- }
179
+ _iterator5.f();
223
180
  }
224
181
 
225
182
  this._pendingOperationsToOwners["delete"](pendingOperation);
@@ -12,7 +12,11 @@
12
12
 
13
13
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
14
14
 
15
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
15
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
+
17
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
18
+
19
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
16
20
 
17
21
  var RelayRecordSource = require('./RelayRecordSource');
18
22
 
@@ -25,9 +29,7 @@ var UNPUBLISH_RECORD_SENTINEL = Object.freeze({
25
29
  * shadow the base version of the record rather than updating/replacing them.
26
30
  */
27
31
 
28
- var RelayOptimisticRecordSource =
29
- /*#__PURE__*/
30
- function () {
32
+ var RelayOptimisticRecordSource = /*#__PURE__*/function () {
31
33
  function RelayOptimisticRecordSource(base) {
32
34
  this._base = base;
33
35
  this._sink = RelayRecordSource.create();
@@ -100,7 +102,7 @@ function () {
100
102
  _proto.toJSON = function toJSON() {
101
103
  var _this = this;
102
104
 
103
- var merged = (0, _objectSpread2["default"])({}, this._base.toJSON());
105
+ var merged = _objectSpread({}, this._base.toJSON());
104
106
 
105
107
  this._sink.getRecordIDs().forEach(function (dataID) {
106
108
  var record = _this.get(dataID);
@@ -37,9 +37,7 @@ var warning = require("fbjs/lib/warning");
37
37
  * - Executes handlers for "handle" fields.
38
38
  * - Reverts and reapplies pending optimistic updates.
39
39
  */
40
- var RelayPublishQueue =
41
- /*#__PURE__*/
42
- function () {
40
+ var RelayPublishQueue = /*#__PURE__*/function () {
43
41
  // True if the next `run()` should apply the backup and rerun all optimistic
44
42
  // updates performing a rebase.
45
43
  // Payloads to apply or Sources to publish to the store with the next `run()`.
@@ -148,7 +146,7 @@ function () {
148
146
 
149
147
  _proto.run = function run(sourceOperation) {
150
148
  if (process.env.NODE_ENV !== "production") {
151
- process.env.NODE_ENV !== "production" ? warning(this._isRunning !== true, 'A store update was detected within another store update. Please ' + 'make sure new store updates arent being executed within an ' + 'updater function for a different update.') : void 0;
149
+ process.env.NODE_ENV !== "production" ? warning(this._isRunning !== true, 'A store update was detected within another store update. Please ' + "make sure new store updates aren't being executed within an " + 'updater function for a different update.') : void 0;
152
150
  this._isRunning = true;
153
151
  }
154
152