@graphitation/supermassive 3.5.5 → 3.6.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.
@@ -83,7 +83,7 @@ function executeWithoutSchema(args) {
83
83
  if (!("schemaFragment" in exeContext)) {
84
84
  return { errors: exeContext };
85
85
  } else {
86
- return executeOperation(exeContext);
86
+ return executeOperationWithBeforeHook(exeContext);
87
87
  }
88
88
  }
89
89
  function assertValidExecutionArguments(document, rawVariableValues) {
@@ -175,6 +175,17 @@ function buildPerEventExecutionContext(exeContext, payload) {
175
175
  errors: []
176
176
  });
177
177
  }
178
+ function executeOperationWithBeforeHook(exeContext) {
179
+ const hooks = exeContext.fieldExecutionHooks;
180
+ let hook;
181
+ if (hooks == null ? void 0 : hooks.beforeOperationExecute) {
182
+ hook = invokeBeforeOperationExecuteHook(exeContext);
183
+ }
184
+ if (isPromise(hook)) {
185
+ return hook.then(() => executeOperation(exeContext));
186
+ }
187
+ return executeOperation(exeContext);
188
+ }
178
189
  function executeOperation(exeContext) {
179
190
  try {
180
191
  const { operation, rootValue } = exeContext;
@@ -185,10 +196,6 @@ function executeOperation(exeContext) {
185
196
  );
186
197
  const path = void 0;
187
198
  let result;
188
- const hooks = exeContext.fieldExecutionHooks;
189
- if (hooks == null ? void 0 : hooks.beforeOperationExecute) {
190
- invokeBeforeOperationExecuteHook(exeContext);
191
- }
192
199
  switch (operation.operation) {
193
200
  case "query":
194
201
  result = executeFields(
@@ -456,7 +463,10 @@ function executeSubscriptionImpl(exeContext) {
456
463
  if (!isDefaultResolverUsed && (hooks == null ? void 0 : hooks.beforeFieldResolve)) {
457
464
  hookContext = invokeBeforeFieldResolveHook(info, exeContext);
458
465
  }
459
- const result = resolveFn(rootValue, args, contextValue, info);
466
+ const result = isPromise(hookContext) ? hookContext.then((context) => {
467
+ hookContext = context;
468
+ return resolveFn(rootValue, args, contextValue, info);
469
+ }) : resolveFn(rootValue, args, contextValue, info);
460
470
  if (isPromise(result)) {
461
471
  return result.then(assertEventStream).then(
462
472
  (resolved) => {
@@ -540,11 +550,24 @@ function mapResultOrEventStreamOrPromise(resultOrStreamOrPromise, exeContext, pa
540
550
  payload
541
551
  );
542
552
  const hooks = exeContext == null ? void 0 : exeContext.fieldExecutionHooks;
553
+ let beforeExecuteFieldsHook;
543
554
  if (hooks == null ? void 0 : hooks.beforeSubscriptionEventEmit) {
544
- invokeBeforeSubscriptionEventEmitHook(perEventContext, payload);
555
+ beforeExecuteFieldsHook = invokeBeforeSubscriptionEventEmitHook(
556
+ perEventContext,
557
+ payload
558
+ );
545
559
  }
546
560
  try {
547
- const data = executeFields(
561
+ const data = isPromise(beforeExecuteFieldsHook) ? beforeExecuteFieldsHook.then(
562
+ () => executeFields(
563
+ exeContext,
564
+ parentTypeName,
565
+ payload,
566
+ path,
567
+ groupedFieldSet,
568
+ void 0
569
+ )
570
+ ) : executeFields(
548
571
  exeContext,
549
572
  parentTypeName,
550
573
  payload,
@@ -610,7 +633,10 @@ function resolveAndCompleteField(exeContext, parentTypeName, fieldDefinition, fi
610
633
  if (!isDefaultResolverUsed && (hooks == null ? void 0 : hooks.beforeFieldResolve)) {
611
634
  hookContext = invokeBeforeFieldResolveHook(info, exeContext);
612
635
  }
613
- const result = resolveFn(source, args, contextValue, info);
636
+ const result = isPromise(hookContext) ? hookContext.then((context) => {
637
+ hookContext = context;
638
+ return resolveFn(source, args, contextValue, info);
639
+ }) : resolveFn(source, args, contextValue, info);
614
640
  let completed;
615
641
  if (isPromise(result)) {
616
642
  completed = result.then(
@@ -1351,9 +1377,20 @@ function executeSafe(execute, onComplete) {
1351
1377
  } catch (e) {
1352
1378
  error = e;
1353
1379
  } finally {
1354
- onComplete(result, error);
1380
+ if (!isPromise(result)) {
1381
+ onComplete(result, error);
1382
+ }
1355
1383
  }
1356
- return result;
1384
+ if (!isPromise(result)) {
1385
+ return result;
1386
+ }
1387
+ return result.then((hookResult) => {
1388
+ onComplete(hookResult, error);
1389
+ return hookResult;
1390
+ }).catch((e) => {
1391
+ onComplete(void 0, e);
1392
+ return void 0;
1393
+ });
1357
1394
  }
1358
1395
  function toGraphQLError(originalError, path, prependMessage) {
1359
1396
  const originalMessage = originalError instanceof Error ? originalError.message : inspect(originalError);