relay-runtime 0.0.0-main-0f842787 → 0.0.0-main-a70cd064

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/README.md CHANGED
@@ -1,5 +1,4 @@
1
- Relay Runtime
2
- ---
1
+ ## Relay Runtime
3
2
 
4
3
  A set of Relay APIs responsible for data fetching, reading and normalization of
5
4
  the GraphQL data.
@@ -7,7 +6,6 @@ the GraphQL data.
7
6
  Example:
8
7
 
9
8
  ```js
10
-
11
9
  // @flow strict-local
12
10
 
13
11
  import type {FetchFunction} from 'relay-runtime';
@@ -61,7 +59,6 @@ fetchQuery(
61
59
  console.log(data);
62
60
  },
63
61
  });
64
-
65
62
  ```
66
63
 
67
64
  For complete API reference, visit https://relay.dev/.
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v0.0.0-main-0f842787
2
+ * Relay v0.0.0-main-a70cd064
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
@@ -90,6 +90,7 @@ var RelayReader = /*#__PURE__*/function () {
90
90
  this._selector = selector;
91
91
  this._variables = selector.variables;
92
92
  this._resolverCache = resolverCache;
93
+ this._fragmentName = selector.node.name;
93
94
  }
94
95
 
95
96
  var _proto = RelayReader.prototype;
@@ -219,7 +220,7 @@ var RelayReader = /*#__PURE__*/function () {
219
220
  return;
220
221
  }
221
222
 
222
- var owner = this._selector.node.name;
223
+ var owner = this._fragmentName;
223
224
 
224
225
  switch (action) {
225
226
  case 'THROW':
@@ -236,15 +237,21 @@ var RelayReader = /*#__PURE__*/function () {
236
237
  if (this._missingRequiredFields == null) {
237
238
  this._missingRequiredFields = {
238
239
  action: action,
239
- fields: []
240
+ fields: [{
241
+ path: fieldPath,
242
+ owner: owner
243
+ }]
244
+ };
245
+ } else {
246
+ this._missingRequiredFields = {
247
+ action: action,
248
+ fields: [].concat((0, _toConsumableArray2["default"])(this._missingRequiredFields.fields), [{
249
+ path: fieldPath,
250
+ owner: owner
251
+ }])
240
252
  };
241
253
  }
242
254
 
243
- this._missingRequiredFields.fields.push({
244
- path: fieldPath,
245
- owner: owner
246
- });
247
-
248
255
  return;
249
256
 
250
257
  default:
@@ -488,6 +495,8 @@ var RelayReader = /*#__PURE__*/function () {
488
495
 
489
496
  var fragmentValue;
490
497
  var fragmentReaderSelector;
498
+ var fragmentMissingRequiredFields;
499
+ var previousMissingRequriedFields;
491
500
  var fragmentSeenRecordIDs = new Set();
492
501
 
493
502
  var getDataForResolverFragment = function getDataForResolverFragment(singularReaderSelector) {
@@ -506,14 +515,18 @@ var RelayReader = /*#__PURE__*/function () {
506
515
 
507
516
  _this._seenRecords = fragmentSeenRecordIDs;
508
517
  var resolverFragmentData = {};
518
+ previousMissingRequriedFields = _this._missingRequiredFields;
519
+ _this._missingRequiredFields = null;
509
520
 
510
521
  _this._createInlineDataOrResolverFragmentPointer(singularReaderSelector.node, record, resolverFragmentData);
511
522
 
523
+ fragmentMissingRequiredFields = _this._missingRequiredFields;
512
524
  fragmentValue = (_resolverFragmentData = resolverFragmentData[FRAGMENTS_KEY]) === null || _resolverFragmentData === void 0 ? void 0 : _resolverFragmentData[fragment.name];
513
525
  !(typeof fragmentValue === 'object' && fragmentValue !== null) ? process.env.NODE_ENV !== "production" ? invariant(false, "Expected reader data to contain a __fragments property with a property for the fragment named ".concat(fragment.name, ", but it is missing.")) : invariant(false) : void 0;
514
526
  return fragmentValue;
515
527
  } finally {
516
528
  _this._seenRecords = existingSeenRecords;
529
+ _this._missingRequiredFields = previousMissingRequriedFields;
517
530
  }
518
531
  };
519
532
 
@@ -535,12 +548,18 @@ var RelayReader = /*#__PURE__*/function () {
535
548
  fragmentValue: fragmentValue,
536
549
  resolverID: resolverID,
537
550
  seenRecordIDs: fragmentSeenRecordIDs,
538
- readerSelector: fragmentReaderSelector
551
+ readerSelector: fragmentReaderSelector,
552
+ missingRequiredFields: fragmentMissingRequiredFields
539
553
  };
540
554
  });
541
555
  }, getDataForResolverFragment),
542
556
  result = _this$_resolverCache$[0],
543
- seenRecord = _this$_resolverCache$[1];
557
+ seenRecord = _this$_resolverCache$[1],
558
+ missingRequiredFields = _this$_resolverCache$[2];
559
+
560
+ if (missingRequiredFields != null) {
561
+ this._addMissingRequiredFields(missingRequiredFields);
562
+ }
544
563
 
545
564
  if (seenRecord != null) {
546
565
  this._seenRecords.add(seenRecord);
@@ -815,13 +834,37 @@ var RelayReader = /*#__PURE__*/function () {
815
834
  }
816
835
 
817
836
  var inlineData = {};
837
+ var parentFragmentName = this._fragmentName;
838
+ this._fragmentName = fragmentSpreadOrFragment.name;
818
839
 
819
- this._traverseSelections(fragmentSpreadOrFragment.selections, record, inlineData); // $FlowFixMe[cannot-write] - writing into read-only field
840
+ this._traverseSelections(fragmentSpreadOrFragment.selections, record, inlineData);
820
841
 
842
+ this._fragmentName = parentFragmentName; // $FlowFixMe[cannot-write] - writing into read-only field
821
843
 
822
844
  fragmentPointers[fragmentSpreadOrFragment.name] = inlineData;
823
845
  };
824
846
 
847
+ _proto._addMissingRequiredFields = function _addMissingRequiredFields(additional) {
848
+ if (this._missingRequiredFields == null) {
849
+ this._missingRequiredFields = additional;
850
+ return;
851
+ }
852
+
853
+ if (this._missingRequiredFields.action === 'THROW') {
854
+ return;
855
+ }
856
+
857
+ if (additional.action === 'THROW') {
858
+ this._missingRequiredFields = additional;
859
+ return;
860
+ }
861
+
862
+ this._missingRequiredFields = {
863
+ action: 'LOG',
864
+ fields: [].concat((0, _toConsumableArray2["default"])(this._missingRequiredFields.fields), (0, _toConsumableArray2["default"])(additional.fields))
865
+ };
866
+ };
867
+
825
868
  return RelayReader;
826
869
  }();
827
870
 
@@ -211,6 +211,7 @@ var RelayStoreUtils = {
211
211
  RELAY_RESOLVER_INVALIDATION_KEY: '__resolverValueMayBeInvalid',
212
212
  RELAY_RESOLVER_INPUTS_KEY: '__resolverInputValues',
213
213
  RELAY_RESOLVER_READER_SELECTOR_KEY: '__resolverReaderSelector',
214
+ RELAY_RESOLVER_MISSING_REQUIRED_FIELDS_KEY: '__resolverMissingRequiredFields',
214
215
  formatStorageKey: formatStorageKey,
215
216
  getArgumentValue: getArgumentValue,
216
217
  getArgumentValues: getArgumentValues,
@@ -24,6 +24,7 @@ var RelayModernRecord = require('./RelayModernRecord');
24
24
  var _require2 = require('./RelayStoreUtils'),
25
25
  RELAY_RESOLVER_INPUTS_KEY = _require2.RELAY_RESOLVER_INPUTS_KEY,
26
26
  RELAY_RESOLVER_INVALIDATION_KEY = _require2.RELAY_RESOLVER_INVALIDATION_KEY,
27
+ RELAY_RESOLVER_MISSING_REQUIRED_FIELDS_KEY = _require2.RELAY_RESOLVER_MISSING_REQUIRED_FIELDS_KEY,
27
28
  RELAY_RESOLVER_READER_SELECTOR_KEY = _require2.RELAY_RESOLVER_READER_SELECTOR_KEY,
28
29
  RELAY_RESOLVER_VALUE_KEY = _require2.RELAY_RESOLVER_VALUE_KEY,
29
30
  getStorageKey = _require2.getStorageKey;
@@ -39,7 +40,11 @@ var NoopResolverCache = /*#__PURE__*/function () {
39
40
  var _proto = NoopResolverCache.prototype;
40
41
 
41
42
  _proto.readFromCacheOrEvaluate = function readFromCacheOrEvaluate(record, field, variables, evaluate, getDataForResolverFragment) {
42
- return [evaluate().resolverResult, undefined];
43
+ var _evaluate = evaluate(),
44
+ resolverResult = _evaluate.resolverResult,
45
+ missingRequiredFields = _evaluate.missingRequiredFields;
46
+
47
+ return [resolverResult, undefined, missingRequiredFields];
43
48
  };
44
49
 
45
50
  _proto.invalidateDataIDs = function invalidateDataIDs(updatedDataIDs) {};
@@ -85,6 +90,7 @@ var RecordResolverCache = /*#__PURE__*/function () {
85
90
  RelayModernRecord.setValue(linkedRecord, RELAY_RESOLVER_VALUE_KEY, evaluationResult.resolverResult);
86
91
  RelayModernRecord.setValue(linkedRecord, RELAY_RESOLVER_INPUTS_KEY, evaluationResult.fragmentValue);
87
92
  RelayModernRecord.setValue(linkedRecord, RELAY_RESOLVER_READER_SELECTOR_KEY, evaluationResult.readerSelector);
93
+ RelayModernRecord.setValue(linkedRecord, RELAY_RESOLVER_MISSING_REQUIRED_FIELDS_KEY, evaluationResult.missingRequiredFields);
88
94
  recordSource.set(linkedID, linkedRecord); // Link the resolver value record to the resolver field of the record being read:
89
95
 
90
96
  var nextRecord = RelayModernRecord.clone(record);
@@ -112,7 +118,9 @@ var RecordResolverCache = /*#__PURE__*/function () {
112
118
 
113
119
 
114
120
  var answer = linkedRecord[RELAY_RESOLVER_VALUE_KEY];
115
- return [answer, linkedID];
121
+ var missingRequiredFields = // $FlowFixMe[incompatible-type] - casting mixed
122
+ linkedRecord[RELAY_RESOLVER_MISSING_REQUIRED_FIELDS_KEY];
123
+ return [answer, linkedID, missingRequiredFields];
116
124
  };
117
125
 
118
126
  _proto2.invalidateDataIDs = function invalidateDataIDs(updatedDataIDs) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "relay-runtime",
3
3
  "description": "A core runtime for building GraphQL-driven applications.",
4
- "version": "0.0.0-main-0f842787",
4
+ "version": "0.0.0-main-a70cd064",
5
5
  "keywords": [
6
6
  "graphql",
7
7
  "relay"