Skip to content

Commit 8b3de5e

Browse files
committed
with context extension
1 parent 823b318 commit 8b3de5e

File tree

3 files changed

+13
-8
lines changed

3 files changed

+13
-8
lines changed

packages/core/src/orchestrator.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ export function createEnvelopOrchestrator<PluginsContext extends DefaultContext>
564564
const validate = customValidate(initialContext);
565565
const contextFactory = customContextFactory(initialContext);
566566

567-
return async params => {
567+
return async (params, contextExtension) => {
568568
let document;
569569
try {
570570
document = parse(params.query);
@@ -577,8 +577,7 @@ export function createEnvelopOrchestrator<PluginsContext extends DefaultContext>
577577
return { errors: validationErrors };
578578
}
579579

580-
// TODO: add context to perform
581-
const context = await contextFactory();
580+
const context = await contextFactory(contextExtension);
582581

583582
if (isSubscriptionOperation(document, params.operationName)) {
584583
return await customSubscribe({

packages/types/src/get-enveloped.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Plugin } from './plugin.js';
2-
import { ExecuteFunction, ParseFunction, SubscribeFunction, ValidateFunction } from './graphql.js';
3-
import { ArbitraryObject, Spread, PromiseOrValue } from './utils.js';
4-
import { PerformFunction } from './hooks.js';
2+
import { ExecuteFunction, ExecutionResult, ParseFunction, SubscribeFunction, ValidateFunction } from './graphql.js';
3+
import { ArbitraryObject, Spread, PromiseOrValue, AsyncIterableIteratorOrValue } from './utils.js';
4+
import { PerformParams } from './hooks.js';
55
export { ArbitraryObject } from './utils.js';
66

77
export type EnvelopContextFnWrapper<TFunction extends Function, ContextType = unknown> = (
@@ -18,7 +18,10 @@ export type GetEnvelopedFn<PluginsContext> = {
1818
contextExtension?: ContextExtension
1919
) => PromiseOrValue<Spread<[InitialContext, PluginsContext, ContextExtension]>>;
2020
schema: any;
21-
perform: PerformFunction;
21+
perform: <ContextExtension = unknown>(
22+
params: PerformParams,
23+
contextExtension?: ContextExtension
24+
) => Promise<AsyncIterableIteratorOrValue<ExecutionResult>>;
2225
};
2326
_plugins: Plugin[];
2427
};

packages/types/src/hooks.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,10 @@ export interface PerformParams {
514514
*
515515
* Will never throw GraphQL errors, they will be constructed accordingly and placed in the result.
516516
*/
517-
export type PerformFunction = (params: PerformParams) => Promise<AsyncIterableIteratorOrValue<ExecutionResult>>;
517+
export type PerformFunction<ContextExtension = unknown> = (
518+
params: PerformParams,
519+
contextExtension?: ContextExtension
520+
) => Promise<AsyncIterableIteratorOrValue<ExecutionResult>>;
518521

519522
export type OnPerformEventPayload = {
520523
params: PerformParams;

0 commit comments

Comments
 (0)