45 lines · 1.7 KB · TypeScript
RawDownload
import { HttpApiBuilder } from "@effect/platform";import { Context, Effect } from "effect"; import { addGroup } from "@executor/api";import type { GraphqlPluginExtension, HeaderValue } from "../sdk/plugin";import { GraphqlGroup } from "./group"; // ---------------------------------------------------------------------------// Service tag — the server provides the GraphQL extension// --------------------------------------------------------------------------- export class GraphqlExtensionService extends Context.Tag(  "GraphqlExtensionService",)<GraphqlExtensionService, GraphqlPluginExtension>() {} // ---------------------------------------------------------------------------// Composed API — core + graphql group// --------------------------------------------------------------------------- const ExecutorApiWithGraphql = addGroup(GraphqlGroup); // ---------------------------------------------------------------------------// Handlers// --------------------------------------------------------------------------- export const GraphqlHandlers = HttpApiBuilder.group(  ExecutorApiWithGraphql,  "graphql",  (handlers) =>    handlers.handle("addSource", ({ payload }) =>      Effect.gen(function* () {        const ext = yield* GraphqlExtensionService;        const result = yield* ext.addSource({          endpoint: payload.endpoint,          introspectionJson: payload.introspectionJson,          namespace: payload.namespace,          headers: payload.headers as Record<string, HeaderValue> | undefined,        });        return {          toolCount: result.toolCount,          namespace: payload.namespace ?? "graphql",        };      }).pipe(Effect.orDie),    ),);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t