@wundergraph/cosmo-shared
Version:
Shared code between WunderGraph Cosmo packages
68 lines (67 loc) • 2.85 kB
TypeScript
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;