@graphitation/supermassive 3.14.2 → 3.15.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.
@@ -284,6 +284,9 @@ function executeFieldsSerially(exeContext, parentTypeName, sourceValue, path, gr
284
284
  }
285
285
  if (isPromise(result)) {
286
286
  return result.then((resolvedResult) => {
287
+ if (resolvedResult === void 0) {
288
+ return results;
289
+ }
287
290
  results[responseName] = resolvedResult;
288
291
  return results;
289
292
  });
@@ -353,6 +356,7 @@ function executeField(exeContext, parentTypeName, source, fieldGroup, path, incr
353
356
  fieldName
354
357
  });
355
358
  if (!loading) {
359
+ throwIfRootField(parentTypeName, fieldName, fieldGroup, "typeDefinition");
356
360
  return void 0;
357
361
  }
358
362
  return loading.then(() => {
@@ -372,9 +376,17 @@ function executeField(exeContext, parentTypeName, source, fieldGroup, path, incr
372
376
  incrementalDataRecord
373
377
  );
374
378
  }
379
+ throwIfRootField(parentTypeName, fieldName, fieldGroup, "typeDefinition");
375
380
  return void 0;
376
381
  });
377
382
  }
383
+ function throwIfRootField(parentTypeName, fieldName, fieldGroup, validationTarget) {
384
+ const isRootField = parentTypeName === "Mutation" || parentTypeName === "Query";
385
+ if (isRootField) {
386
+ const message = validationTarget === "typeDefinition" ? `Type definition for ${parentTypeName}.${fieldName} is missing` : validationTarget === "resolver" ? `Resolver for ${parentTypeName}.${fieldName} is missing` : "Unexpected validation target";
387
+ throw locatedError(new Error(message), fieldGroup);
388
+ }
389
+ }
378
390
  function requestSchemaFragment(exeContext, request) {
379
391
  if (!exeContext.schemaFragmentLoader) {
380
392
  return;
@@ -632,6 +644,9 @@ function resolveAndCompleteField(exeContext, parentTypeName, fieldDefinition, fi
632
644
  path
633
645
  );
634
646
  const isDefaultResolverUsed = resolveFn === exeContext.fieldResolver || fieldName === "__typename";
647
+ if (resolveFn === exeContext.fieldResolver && typeof source === "undefined") {
648
+ throwIfRootField(parentTypeName, fieldName, fieldGroup, "resolver");
649
+ }
635
650
  const hooks = exeContext.fieldExecutionHooks;
636
651
  let hookContext = void 0;
637
652
  try {