relay-runtime 0.0.0-main-b6199194 → 0.0.0-main-042ceca3

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/experimental.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v0.0.0-main-b6199194
2
+ * Relay v0.0.0-main-042ceca3
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-b6199194
2
+ * Relay v0.0.0-main-042ceca3
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
package/index.js.flow CHANGED
@@ -134,7 +134,6 @@ export type {
134
134
  LogEvent,
135
135
  LogFunction,
136
136
  MissingFieldHandler,
137
- MissingRequiredFields,
138
137
  ModuleImportPointer,
139
138
  MutableRecordSource,
140
139
  MutationParameters,
@@ -20,8 +20,7 @@ function fetchQuery(environment, query, variables, options) {
20
20
  var operation = createOperationDescriptor(queryNode, variables, networkCacheConfig);
21
21
  var fetchPolicy = (_options$fetchPolicy = options === null || options === void 0 ? void 0 : options.fetchPolicy) !== null && _options$fetchPolicy !== void 0 ? _options$fetchPolicy : 'network-only';
22
22
  function readData(snapshot) {
23
- var _queryNode$fragment$m, _queryNode$fragment$m2;
24
- handlePotentialSnapshotErrors(environment, snapshot.missingRequiredFields, snapshot.errorResponseFields, (_queryNode$fragment$m = (_queryNode$fragment$m2 = queryNode.fragment.metadata) === null || _queryNode$fragment$m2 === void 0 ? void 0 : _queryNode$fragment$m2.throwOnFieldError) !== null && _queryNode$fragment$m !== void 0 ? _queryNode$fragment$m : false);
23
+ handlePotentialSnapshotErrors(environment, snapshot.errorResponseFields);
25
24
  return snapshot.data;
26
25
  }
27
26
  switch (fetchPolicy) {
@@ -4,24 +4,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
5
5
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
6
6
  var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
7
- var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
8
- var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
9
7
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
8
  var _excluded = ["path", "locations"];
11
9
  var SELF = Symbol('$SELF');
12
- var RelayFieldError = /*#__PURE__*/function (_Error) {
13
- (0, _inheritsLoose2["default"])(RelayFieldError, _Error);
14
- function RelayFieldError(message) {
15
- var _this;
16
- var errors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
17
- _this = _Error.call(this, message) || this;
18
- _this.name = 'RelayFieldError';
19
- _this.message = message;
20
- _this.errors = errors;
21
- return _this;
22
- }
23
- return RelayFieldError;
24
- }(/*#__PURE__*/(0, _wrapNativeSuper2["default"])(Error));
25
10
  function buildErrorTrie(errors) {
26
11
  if (errors == null) {
27
12
  return null;
@@ -136,6 +121,5 @@ module.exports = {
136
121
  SELF: SELF,
137
122
  buildErrorTrie: buildErrorTrie,
138
123
  getNestedErrorTrieByKey: getNestedErrorTrieByKey,
139
- getErrorsByKey: getErrorsByKey,
140
- RelayFieldError: RelayFieldError
124
+ getErrorsByKey: getErrorsByKey
141
125
  };
@@ -131,7 +131,6 @@ var SelectorResolver = /*#__PURE__*/function () {
131
131
  (0, _defineProperty2["default"])(this, "_onChange", function (snapshot) {
132
132
  _this2._data = snapshot.data;
133
133
  _this2._isMissingData = snapshot.isMissingData;
134
- _this2._missingRequiredFields = snapshot.missingRequiredFields;
135
134
  _this2._errorResponseFields = snapshot.errorResponseFields;
136
135
  _this2._callback();
137
136
  });
@@ -139,7 +138,6 @@ var SelectorResolver = /*#__PURE__*/function () {
139
138
  this._callback = callback;
140
139
  this._data = _snapshot.data;
141
140
  this._isMissingData = _snapshot.isMissingData;
142
- this._missingRequiredFields = _snapshot.missingRequiredFields;
143
141
  this._errorResponseFields = _snapshot.errorResponseFields;
144
142
  this._environment = environment;
145
143
  this._rootIsQueryRenderer = rootIsQueryRenderer;
@@ -160,7 +158,6 @@ var SelectorResolver = /*#__PURE__*/function () {
160
158
  }
161
159
  };
162
160
  _proto2.resolve = function resolve() {
163
- var _this$_selector$node$, _this$_selector$node$2;
164
161
  if (this._isMissingData === true) {
165
162
  var pendingOperationsResult = getPendingOperationsForFragment(this._environment, this._selector.node, this._selector.owner);
166
163
  var promise = pendingOperationsResult === null || pendingOperationsResult === void 0 ? void 0 : pendingOperationsResult.promise;
@@ -184,7 +181,7 @@ var SelectorResolver = /*#__PURE__*/function () {
184
181
  }
185
182
  }
186
183
  }
187
- handlePotentialSnapshotErrors(this._environment, this._missingRequiredFields, this._errorResponseFields, (_this$_selector$node$ = (_this$_selector$node$2 = this._selector.node.metadata) === null || _this$_selector$node$2 === void 0 ? void 0 : _this$_selector$node$2.throwOnFieldError) !== null && _this$_selector$node$ !== void 0 ? _this$_selector$node$ : false);
184
+ handlePotentialSnapshotErrors(this._environment, this._errorResponseFields);
188
185
  return this._data;
189
186
  };
190
187
  _proto2.setSelector = function setSelector(selector) {
@@ -195,7 +192,6 @@ var SelectorResolver = /*#__PURE__*/function () {
195
192
  var snapshot = this._environment.lookup(selector);
196
193
  this._data = recycleNodesInto(this._data, snapshot.data);
197
194
  this._isMissingData = snapshot.isMissingData;
198
- this._missingRequiredFields = snapshot.missingRequiredFields;
199
195
  this._errorResponseFields = snapshot.errorResponseFields;
200
196
  this._selector = selector;
201
197
  this._subscription = this._environment.subscribe(snapshot, this._onChange);
@@ -42,7 +42,6 @@ var RelayReader = /*#__PURE__*/function () {
42
42
  this._missingLiveResolverFields = [];
43
43
  this._isMissingData = false;
44
44
  this._isWithinUnmatchedTypeRefinement = false;
45
- this._missingRequiredFields = null;
46
45
  this._errorResponseFields = null;
47
46
  this._owner = selector.owner;
48
47
  this._recordSource = recordSource;
@@ -87,7 +86,6 @@ var RelayReader = /*#__PURE__*/function () {
87
86
  missingLiveResolverFields: this._missingLiveResolverFields,
88
87
  seenRecords: this._seenRecords,
89
88
  selector: this._selector,
90
- missingRequiredFields: this._missingRequiredFields,
91
89
  errorResponseFields: this._errorResponseFields
92
90
  };
93
91
  };
@@ -111,7 +109,8 @@ var RelayReader = /*#__PURE__*/function () {
111
109
  owner: owner,
112
110
  fieldPath: ((_error$path = error.path) !== null && _error$path !== void 0 ? _error$path : []).join('.'),
113
111
  error: error,
114
- shouldThrow: (_this$_selector$node$ = (_this$_selector$node$2 = this._selector.node.metadata) === null || _this$_selector$node$2 === void 0 ? void 0 : _this$_selector$node$2.throwOnFieldError) !== null && _this$_selector$node$ !== void 0 ? _this$_selector$node$ : false
112
+ shouldThrow: (_this$_selector$node$ = (_this$_selector$node$2 = this._selector.node.metadata) === null || _this$_selector$node$2 === void 0 ? void 0 : _this$_selector$node$2.throwOnFieldError) !== null && _this$_selector$node$ !== void 0 ? _this$_selector$node$ : false,
113
+ handled: false
115
114
  });
116
115
  }
117
116
  } catch (err) {
@@ -130,7 +129,8 @@ var RelayReader = /*#__PURE__*/function () {
130
129
  this._errorResponseFields.push(((_this$_selector$node$3 = (_this$_selector$node$4 = this._selector.node.metadata) === null || _this$_selector$node$4 === void 0 ? void 0 : _this$_selector$node$4.throwOnFieldError) !== null && _this$_selector$node$3 !== void 0 ? _this$_selector$node$3 : false) ? {
131
130
  kind: 'missing_expected_data.throw',
132
131
  owner: owner,
133
- fieldPath: fieldPath
132
+ fieldPath: fieldPath,
133
+ handled: false
134
134
  } : {
135
135
  kind: 'missing_expected_data.log',
136
136
  owner: owner,
@@ -165,46 +165,32 @@ var RelayReader = /*#__PURE__*/function () {
165
165
  return this._variables[name];
166
166
  };
167
167
  _proto._maybeReportUnexpectedNull = function _maybeReportUnexpectedNull(fieldPath, action) {
168
- var _this$_missingRequire;
169
- if (((_this$_missingRequire = this._missingRequiredFields) === null || _this$_missingRequire === void 0 ? void 0 : _this$_missingRequire.action) === 'THROW') {
170
- return;
171
- }
172
168
  var owner = this._fragmentName;
169
+ if (this._errorResponseFields == null) {
170
+ this._errorResponseFields = [];
171
+ }
173
172
  switch (action) {
174
173
  case 'THROW':
175
- this._missingRequiredFields = {
176
- action: action,
177
- field: {
178
- path: fieldPath,
179
- owner: owner
180
- }
181
- };
174
+ this._errorResponseFields.push({
175
+ kind: 'missing_required_field.throw',
176
+ fieldPath: fieldPath,
177
+ owner: owner,
178
+ handled: false
179
+ });
182
180
  return;
183
181
  case 'LOG':
184
- if (this._missingRequiredFields == null) {
185
- this._missingRequiredFields = {
186
- action: action,
187
- fields: [{
188
- path: fieldPath,
189
- owner: owner
190
- }]
191
- };
192
- } else {
193
- this._missingRequiredFields = {
194
- action: action,
195
- fields: [].concat((0, _toConsumableArray2["default"])(this._missingRequiredFields.fields), [{
196
- path: fieldPath,
197
- owner: owner
198
- }])
199
- };
200
- }
182
+ this._errorResponseFields.push({
183
+ kind: 'missing_required_field.log',
184
+ fieldPath: fieldPath,
185
+ owner: owner
186
+ });
201
187
  return;
202
188
  default:
203
189
  action;
204
190
  }
205
191
  };
206
192
  _proto._handleCatchToResult = function _handleCatchToResult(selection, record, data, value) {
207
- var _selection$field$back, _selection$field, _field$alias, _this$_errorResponseF, _this$_missingRequire2;
193
+ var _selection$field$back, _selection$field, _field$alias, _this$_errorResponseF;
208
194
  var field = (_selection$field$back = (_selection$field = selection.field) === null || _selection$field === void 0 ? void 0 : _selection$field.backingField) !== null && _selection$field$back !== void 0 ? _selection$field$back : selection.field;
209
195
  var fieldName = (_field$alias = field === null || field === void 0 ? void 0 : field.alias) !== null && _field$alias !== void 0 ? _field$alias : field === null || field === void 0 ? void 0 : field.name;
210
196
  !(fieldName != null) ? process.env.NODE_ENV !== "production" ? invariant(false, "Couldn't determine field name for this field. It might be a ReaderClientExtension - which is not yet supported.") : invariant(false) : void 0;
@@ -224,24 +210,17 @@ var RelayReader = /*#__PURE__*/function () {
224
210
  return {
225
211
  message: "Relay: Error in resolver for field at ".concat(error.fieldPath, " in ").concat(error.owner)
226
212
  };
213
+ case 'missing_required_field.throw':
214
+ return {
215
+ message: "Relay: Missing @required value at path '".concat(error.fieldPath, "' in '").concat(error.owner, "'.")
216
+ };
217
+ case 'missing_required_field.log':
218
+ return null;
227
219
  default:
228
220
  error.kind;
229
221
  !false ? process.env.NODE_ENV !== "production" ? invariant(false, 'Unexpected error errorResponseField kind: %s', error.kind) : invariant(false) : void 0;
230
222
  }
231
- });
232
- if (((_this$_missingRequire2 = this._missingRequiredFields) === null || _this$_missingRequire2 === void 0 ? void 0 : _this$_missingRequire2.action) === 'THROW') {
233
- var _this$_missingRequire3 = this._missingRequiredFields.field,
234
- owner = _this$_missingRequire3.owner,
235
- path = _this$_missingRequire3.path;
236
- var missingFieldError = {
237
- message: "Relay: Missing @required value at path '".concat(path, "' in '").concat(owner, "'.")
238
- };
239
- if (errors == null) {
240
- errors = [missingFieldError];
241
- } else {
242
- errors.push(missingFieldError);
243
- }
244
- }
223
+ }).filter(Boolean);
245
224
  data[fieldName] = errors != null ? {
246
225
  ok: false,
247
226
  errors: errors
@@ -273,18 +252,24 @@ var RelayReader = /*#__PURE__*/function () {
273
252
  case 'CatchField':
274
253
  {
275
254
  var previousResponseFields = this._errorResponseFields;
276
- var previousMissingRequiredFields = this._missingRequiredFields;
277
255
  this._errorResponseFields = null;
278
- this._missingRequiredFields = null;
279
256
  var catchFieldValue = this._readClientSideDirectiveField(selection, record, data);
280
257
  if (selection.to === 'RESULT') {
281
258
  this._handleCatchToResult(selection, record, data, catchFieldValue);
282
259
  }
283
- var childrenMissingRequiredFields = this._missingRequiredFields;
260
+ var childrenErrorResponseFields = this._errorResponseFields;
284
261
  this._errorResponseFields = previousResponseFields;
285
- this._missingRequiredFields = previousMissingRequiredFields;
286
- if ((childrenMissingRequiredFields === null || childrenMissingRequiredFields === void 0 ? void 0 : childrenMissingRequiredFields.action) === 'LOG') {
287
- this._addMissingRequiredFields(childrenMissingRequiredFields);
262
+ if (childrenErrorResponseFields != null) {
263
+ for (var _i = 0; _i < childrenErrorResponseFields.length; _i++) {
264
+ var event = childrenErrorResponseFields[_i];
265
+ if (event.kind === 'missing_required_field.log') {
266
+ if (this._errorResponseFields == null) {
267
+ this._errorResponseFields = [event];
268
+ } else {
269
+ this._errorResponseFields.push(event);
270
+ }
271
+ }
272
+ }
288
273
  }
289
274
  break;
290
275
  }
@@ -426,14 +411,14 @@ var RelayReader = /*#__PURE__*/function () {
426
411
  return {
427
412
  data: snapshot.data,
428
413
  isMissingData: snapshot.isMissingData,
429
- missingRequiredFields: snapshot.missingRequiredFields
414
+ errorResponseFields: snapshot.errorResponseFields
430
415
  };
431
416
  }
432
417
  snapshot = read(_this._recordSource, singularReaderSelector, _this._resolverCache);
433
418
  return {
434
419
  data: snapshot.data,
435
420
  isMissingData: snapshot.isMissingData,
436
- missingRequiredFields: snapshot.missingRequiredFields
421
+ errorResponseFields: snapshot.errorResponseFields
437
422
  };
438
423
  };
439
424
  var evaluate = function evaluate() {
@@ -479,9 +464,6 @@ var RelayReader = /*#__PURE__*/function () {
479
464
  };
480
465
  _proto._propagateResolverMetadata = function _propagateResolverMetadata(fieldPath, cachedSnapshot, resolverError, seenRecord, suspenseID, updatedDataIDs) {
481
466
  if (cachedSnapshot != null) {
482
- if (cachedSnapshot.missingRequiredFields != null) {
483
- this._addMissingRequiredFields(cachedSnapshot.missingRequiredFields);
484
- }
485
467
  if (cachedSnapshot.missingClientEdges != null) {
486
468
  var _iterator2 = (0, _createForOfIteratorHelper2["default"])(cachedSnapshot.missingClientEdges),
487
469
  _step2;
@@ -520,7 +502,7 @@ var RelayReader = /*#__PURE__*/function () {
520
502
  try {
521
503
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
522
504
  var error = _step4.value;
523
- if (error.kind === 'relay_resolver.error') {
505
+ if (error.kind === 'relay_resolver.error' || error.kind === 'missing_required_field.throw' || error.kind === 'missing_required_field.log') {
524
506
  this._errorResponseFields.push(error);
525
507
  }
526
508
  }
@@ -539,7 +521,8 @@ var RelayReader = /*#__PURE__*/function () {
539
521
  fieldPath: fieldPath,
540
522
  owner: this._fragmentName,
541
523
  error: resolverError,
542
- shouldThrow: (_this$_selector$node$5 = (_this$_selector$node$6 = this._selector.node.metadata) === null || _this$_selector$node$6 === void 0 ? void 0 : _this$_selector$node$6.throwOnFieldError) !== null && _this$_selector$node$5 !== void 0 ? _this$_selector$node$5 : RelayFeatureFlags.ENABLE_FIELD_ERROR_HANDLING_THROW_BY_DEFAULT
524
+ shouldThrow: (_this$_selector$node$5 = (_this$_selector$node$6 = this._selector.node.metadata) === null || _this$_selector$node$6 === void 0 ? void 0 : _this$_selector$node$6.throwOnFieldError) !== null && _this$_selector$node$5 !== void 0 ? _this$_selector$node$5 : RelayFeatureFlags.ENABLE_FIELD_ERROR_HANDLING_THROW_BY_DEFAULT,
525
+ handled: false
543
526
  };
544
527
  if (this._errorResponseFields == null) {
545
528
  this._errorResponseFields = [errorEvent];
@@ -849,23 +832,6 @@ var RelayReader = /*#__PURE__*/function () {
849
832
  this._fragmentName = parentFragmentName;
850
833
  fragmentPointers[fragmentSpreadOrFragment.name] = inlineData;
851
834
  };
852
- _proto._addMissingRequiredFields = function _addMissingRequiredFields(additional) {
853
- if (this._missingRequiredFields == null) {
854
- this._missingRequiredFields = additional;
855
- return;
856
- }
857
- if (this._missingRequiredFields.action === 'THROW') {
858
- return;
859
- }
860
- if (additional.action === 'THROW') {
861
- this._missingRequiredFields = additional;
862
- return;
863
- }
864
- this._missingRequiredFields = {
865
- action: 'LOG',
866
- fields: [].concat((0, _toConsumableArray2["default"])(this._missingRequiredFields.fields), (0, _toConsumableArray2["default"])(additional.fields))
867
- };
868
- };
869
835
  _proto._implementsInterface = function _implementsInterface(record, abstractKey) {
870
836
  var typeName = RelayModernRecord.getType(record);
871
837
  var typeRecord = this._recordSource.get(generateTypeID(typeName));
@@ -59,7 +59,6 @@ var RelayStoreSubscriptions = /*#__PURE__*/function () {
59
59
  missingLiveResolverFields: backup.missingLiveResolverFields,
60
60
  seenRecords: backup.seenRecords,
61
61
  selector: backup.selector,
62
- missingRequiredFields: backup.missingRequiredFields,
63
62
  errorResponseFields: backup.errorResponseFields
64
63
  };
65
64
  } else {
@@ -95,7 +94,6 @@ var RelayStoreSubscriptions = /*#__PURE__*/function () {
95
94
  missingLiveResolverFields: nextSnapshot.missingLiveResolverFields,
96
95
  seenRecords: nextSnapshot.seenRecords,
97
96
  selector: nextSnapshot.selector,
98
- missingRequiredFields: nextSnapshot.missingRequiredFields,
99
97
  errorResponseFields: nextSnapshot.errorResponseFields
100
98
  };
101
99
  if (process.env.NODE_ENV !== "production") {
@@ -26,8 +26,10 @@ function readFragment(fragmentInput, fragmentKey) {
26
26
  var _context$getDataForRe = context.getDataForResolverFragment(fragmentSelector, fragmentKey),
27
27
  data = _context$getDataForRe.data,
28
28
  isMissingData = _context$getDataForRe.isMissingData,
29
- missingRequiredFields = _context$getDataForRe.missingRequiredFields;
30
- if (isMissingData || missingRequiredFields != null && missingRequiredFields.action === 'THROW') {
29
+ errorResponseFields = _context$getDataForRe.errorResponseFields;
30
+ if (isMissingData || errorResponseFields != null && errorResponseFields.some(function (event) {
31
+ return event.kind === 'missing_required_field.throw';
32
+ })) {
31
33
  throw RESOLVER_FRAGMENT_ERRORED_SENTINEL;
32
34
  }
33
35
  return data;
@@ -83,8 +83,7 @@ function snapshotToFragmentState(environment, fragmentNode, owner, snapshot) {
83
83
  }
84
84
  }
85
85
  try {
86
- var _snapshot$selector$no, _snapshot$selector$no2;
87
- handlePotentialSnapshotErrors(environment, snapshot.missingRequiredFields, snapshot.errorResponseFields, (_snapshot$selector$no = (_snapshot$selector$no2 = snapshot.selector.node.metadata) === null || _snapshot$selector$no2 === void 0 ? void 0 : _snapshot$selector$no2.throwOnFieldError) !== null && _snapshot$selector$no !== void 0 ? _snapshot$selector$no : false);
86
+ handlePotentialSnapshotErrors(environment, snapshot.errorResponseFields);
88
87
  } catch (error) {
89
88
  return {
90
89
  error: error,
@@ -1,12 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
5
4
  var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
6
- var _excluded = ["message"];
7
- var _require = require('../store/RelayErrorTrie'),
8
- RelayFieldError = _require.RelayFieldError;
9
- function handleFieldErrors(environment, errorResponseFields, shouldThrow) {
5
+ var invariant = require('invariant');
6
+ function handleFieldErrors(environment, errorResponseFields) {
10
7
  var _iterator = (0, _createForOfIteratorHelper2["default"])(errorResponseFields),
11
8
  _step;
12
9
  try {
@@ -19,70 +16,55 @@ function handleFieldErrors(environment, errorResponseFields, shouldThrow) {
19
16
  } finally {
20
17
  _iterator.f();
21
18
  }
22
- if (shouldThrow) {
23
- throw new RelayFieldError("Relay: Unexpected response payload - this object includes an errors property in which you can access the underlying errors", errorResponseFields.map(function (event) {
24
- switch (event.kind) {
25
- case 'relay_field_payload.error':
26
- var _event$error = event.error,
27
- message = _event$error.message,
28
- displayError = (0, _objectWithoutPropertiesLoose2["default"])(_event$error, _excluded);
29
- return displayError;
30
- case 'missing_expected_data.throw':
31
- return {
32
- path: event.fieldPath.split('.')
33
- };
34
- case 'missing_expected_data.log':
35
- return {
36
- path: event.fieldPath.split('.')
37
- };
38
- case 'relay_resolver.error':
39
- return {
40
- path: event.fieldPath.split('.')
41
- };
42
- default:
43
- event.kind;
44
- throw new Error('Relay: Unexpected event kind');
19
+ var _iterator2 = (0, _createForOfIteratorHelper2["default"])(errorResponseFields),
20
+ _step2;
21
+ try {
22
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
23
+ var _fieldError = _step2.value;
24
+ if (eventShouldThrow(_fieldError)) {
25
+ switch (_fieldError.kind) {
26
+ case 'relay_resolver.error':
27
+ throw new Error("Relay: Resolver error at path '".concat(_fieldError.fieldPath, "' in '").concat(_fieldError.owner, "'."));
28
+ case 'relay_field_payload.error':
29
+ throw new Error("Relay: Unexpected response payload - this object includes an errors property in which you can access the underlying errors");
30
+ case 'missing_expected_data.throw':
31
+ throw new Error("Relay: Missing expected data at path '".concat(_fieldError.fieldPath, "' in '").concat(_fieldError.owner, "'."));
32
+ case 'missing_required_field.throw':
33
+ throw new Error("Relay: Missing @required value at path '".concat(_fieldError.fieldPath, "' in '").concat(_fieldError.owner, "'."));
34
+ case 'missing_required_field.log':
35
+ case 'missing_expected_data.log':
36
+ break;
37
+ default:
38
+ _fieldError.kind;
39
+ !false ? process.env.NODE_ENV !== "production" ? invariant(false, 'Relay: Unexpected event kind: %s', _fieldError.kind) : invariant(false) : void 0;
40
+ }
45
41
  }
46
- }));
42
+ }
43
+ } catch (err) {
44
+ _iterator2.e(err);
45
+ } finally {
46
+ _iterator2.f();
47
47
  }
48
48
  }
49
- function handleMissingRequiredFields(environment, missingRequiredFields) {
50
- switch (missingRequiredFields.action) {
51
- case 'THROW':
52
- {
53
- var _missingRequiredField = missingRequiredFields.field,
54
- path = _missingRequiredField.path,
55
- owner = _missingRequiredField.owner;
56
- environment.relayFieldLogger({
57
- kind: 'missing_required_field.throw',
58
- owner: owner,
59
- fieldPath: path
60
- });
61
- throw new Error("Relay: Missing @required value at path '".concat(path, "' in '").concat(owner, "'."));
62
- }
63
- case 'LOG':
64
- missingRequiredFields.fields.forEach(function (_ref) {
65
- var path = _ref.path,
66
- owner = _ref.owner;
67
- environment.relayFieldLogger({
68
- kind: 'missing_required_field.log',
69
- owner: owner,
70
- fieldPath: path
71
- });
72
- });
73
- break;
49
+ function eventShouldThrow(event) {
50
+ switch (event.kind) {
51
+ case 'relay_resolver.error':
52
+ case 'relay_field_payload.error':
53
+ return event.shouldThrow && !event.handled;
54
+ case 'missing_expected_data.throw':
55
+ case 'missing_required_field.throw':
56
+ return !event.handled;
57
+ case 'missing_required_field.log':
58
+ case 'missing_expected_data.log':
59
+ return false;
74
60
  default:
75
- {
76
- missingRequiredFields.action;
77
- }
61
+ event.kind;
62
+ throw new Error('Relay: Unexpected event kind');
78
63
  }
79
64
  }
80
- function handlePotentialSnapshotErrors(environment, missingRequiredFields, errorResponseFields, throwOnFieldError) {
81
- if (missingRequiredFields != null) {
82
- handleMissingRequiredFields(environment, missingRequiredFields);
83
- }
65
+ function handlePotentialSnapshotErrors(environment, errorResponseFields) {
84
66
  if (errorResponseFields != null) {
85
- handleFieldErrors(environment, errorResponseFields, throwOnFieldError);
67
+ handleFieldErrors(environment, errorResponseFields);
86
68
  }
87
69
  }
88
70
  module.exports = handlePotentialSnapshotErrors;
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-b6199194",
4
+ "version": "0.0.0-main-042ceca3",
5
5
  "keywords": [
6
6
  "graphql",
7
7
  "relay"
@@ -136,12 +136,7 @@ function fetchQuery<TVariables: Variables, TData, TRawResponse>(
136
136
  const fetchPolicy = options?.fetchPolicy ?? 'network-only';
137
137
 
138
138
  function readData(snapshot: Snapshot): TData {
139
- handlePotentialSnapshotErrors(
140
- environment,
141
- snapshot.missingRequiredFields,
142
- snapshot.errorResponseFields,
143
- queryNode.fragment.metadata?.throwOnFieldError ?? false,
144
- );
139
+ handlePotentialSnapshotErrors(environment, snapshot.errorResponseFields);
145
140
  /* $FlowFixMe[incompatible-return] we assume readData returns the right
146
141
  * data just having written it from network or checked availability. */
147
142
  return snapshot.data;