From ab117d5638707f96bcf9355cf438062766dc3cd2 Mon Sep 17 00:00:00 2001 From: Aarne Laur Date: Tue, 21 May 2024 14:09:19 +0200 Subject: [PATCH] feat: Add support for onLocalContext callback --- src/createMeshInstance.ts | 2 ++ src/executor.ts | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/createMeshInstance.ts b/src/createMeshInstance.ts index e4f1b68..1aa3734 100644 --- a/src/createMeshInstance.ts +++ b/src/createMeshInstance.ts @@ -4,6 +4,7 @@ import { getMesh } from "@graphql-mesh/runtime"; import { InMemoryStoreStorageAdapter, MeshStore } from "@graphql-mesh/store"; import { DefaultLogger, PubSub } from "@graphql-mesh/utils"; import { GraphQLSchema } from "graphql"; +import type { YogaServerOptions } from "graphql-yoga"; import SupergraphHandler from "./SupergraphHandler.js"; import { OnRemoteRequestHeadersCallback } from "./index.js"; @@ -11,6 +12,7 @@ export interface CreateMeshInstanceOptions { supergraphSDL: string; localSchema: GraphQLSchema; onRemoteRequestHeaders?: OnRemoteRequestHeadersCallback; + onLocalContext?: YogaServerOptions<{}, {}>["context"]; } export async function createMeshInstance( diff --git a/src/executor.ts b/src/executor.ts index c0f6233..1c49f21 100644 --- a/src/executor.ts +++ b/src/executor.ts @@ -3,12 +3,13 @@ import { FetchFn, buildHTTPExecutor } from "@graphql-tools/executor-http"; import type { Executor } from "@graphql-tools/utils"; import { readFile } from "fs/promises"; import { GraphQLResolveInfo, GraphQLSchema } from "graphql"; -import { createYoga } from "graphql-yoga"; +import { createYoga, type YogaServerOptions } from "graphql-yoga"; import { OnRemoteRequestHeadersCallback, SubgraphService } from "./index.js"; export interface CreateSupergraphOptions { localSchema: GraphQLSchema; onRemoteRequestHeaders?: OnRemoteRequestHeadersCallback; + onLocalContext?: YogaServerOptions<{}, {}>["context"]; } /** @@ -92,6 +93,7 @@ export function executorFactory( const localFetch = createYoga({ schema: opts.localSchema, batching: true, + context: opts.onLocalContext, }).fetch; function getFetch(subgraph: SubgraphService) {