UNPKG

@wundergraph/cosmo-shared

Version:

Shared code between WunderGraph Cosmo packages

68 lines (67 loc) 2.85 kB
import { ConfigurationData, FieldConfiguration, TypeName } from '@wundergraph/composition'; import { GraphQLSubscriptionProtocol, GraphQLWebsocketSubprotocol } from '@wundergraph/cosmo-connect/dist/common/common_pb'; import { GraphQLSchema } from 'graphql'; import { EngineConfiguration, GRPCMapping, ImageReference, InternedString, RouterConfig } from '@wundergraph/cosmo-connect/dist/node/v1/node_pb'; export interface Input { federatedClientSDL: string; federatedSDL: string; fieldConfigurations: FieldConfiguration[]; routerCompatibilityVersion: string; schemaVersionId: string; subgraphs: RouterSubgraph[]; } /** * Protocol used when subscribing to a subgraph. * * ws: Negotiates an appropriate protocol over websockets. Both https://github.com/enisdenjo/graphql-ws/blob/master/PROTOCOL.md and https://github.com/apollographql/subscriptions-transport-ws/blob/master/PROTOCOL.md are supported * sse: Uses the Server-Sent Events protocol with a GET request * sse_post: Uses the Server-Sent Events protocol with a POST request */ export type SubscriptionProtocol = 'ws' | 'sse' | 'sse_post'; export type WebsocketSubprotocol = 'auto' | 'graphql-ws' | 'graphql-transport-ws'; export declare enum SubgraphKind { Plugin = 0, Standard = 1, GRPC = 2 } export type RouterSubgraph = ComposedSubgraph | ComposedSubgraphPlugin | ComposedSubgraphGRPC; export interface ComposedSubgraph { readonly kind: SubgraphKind.Standard; id: string; name: string; sdl: string; url: string; subscriptionUrl: string; subscriptionProtocol?: SubscriptionProtocol | undefined; websocketSubprotocol?: WebsocketSubprotocol | undefined; configurationDataByTypeName?: Map<TypeName, ConfigurationData>; schema?: GraphQLSchema; } export interface ComposedSubgraphPlugin { readonly kind: SubgraphKind.Plugin; id: string; version: string; name: string; sdl: string; url: string; protoSchema: string; mapping: GRPCMapping; configurationDataByTypeName?: Map<TypeName, ConfigurationData>; schema?: GraphQLSchema; imageReference?: ImageReference; } export interface ComposedSubgraphGRPC { readonly kind: SubgraphKind.GRPC; id: string; name: string; sdl: string; url: string; protoSchema: string; mapping: GRPCMapping; configurationDataByTypeName?: Map<TypeName, ConfigurationData>; schema?: GraphQLSchema; } export declare const internString: (config: EngineConfiguration, str: string) => InternedString; export declare const parseGraphQLSubscriptionProtocol: (protocolName: SubscriptionProtocol) => GraphQLSubscriptionProtocol; export declare const parseGraphQLWebsocketSubprotocol: (protocolName: WebsocketSubprotocol) => GraphQLWebsocketSubprotocol; export declare const buildRouterConfig: (input: Input) => RouterConfig;