@yandex-cloud/function-types
Version:
TypeScript typings for Serverless Functions in Yandex.Cloud
55 lines (54 loc) • 1.88 kB
TypeScript
import type { Http } from "../http";
export declare type ConnectEvent = Common<ConnectHeaders> & {
httpMethod: Http.Event["httpMethod"];
requestContext: RequestContext<"CONNECT">;
};
export declare type MessageEvent = Common<MessageHeaders> & {
body: string;
isBase64Encoded: boolean;
requestContext: RequestContext<"MESSAGE"> & {
messageId: string;
};
};
export declare type DisconnectEvent = Common<DisconnectHeaders> & {
httpMethod: Http.Event["httpMethod"];
requestContext: RequestContext<"DISCONNECT"> & {
disconnectStatusCode: number;
};
};
declare type Common<Headers extends Record<string, string>> = {
resource: string;
path: string;
pathParameters: Record<string, string>;
headers: Headers;
multiValueHeaders: {
[K in keyof Headers]: Headers[K][];
};
parameters: Record<string, string>;
multiValueParameters: Record<string, string[]>;
operationId: string;
};
interface ConnectHeaders extends Headers {
"X-Yc-Apigateway-Websocket-Event-Type": 'CONNECT';
}
interface MessageHeaders extends Headers {
"X-Yc-Apigateway-Websocket-Event-Type": 'MESSAGE';
"X-Yc-Apigateway-Websocket-Message-Id": string;
}
interface DisconnectHeaders extends Headers {
"X-Yc-Apigateway-Websocket-Event-Type": 'DISCONNECT';
"X-Yc-Apigateway-Websocket-Disconnect-Reason": string;
"X-Yc-Apigateway-Websocket-Disconnect-Status-Code": string;
}
declare type Headers = {
"X-Yc-Apigateway-Websocket-Connected-At": string;
"X-Yc-Apigateway-Websocket-Connection-Id": string;
"X-Yc-Apigateway-Websocket-Event-Type": EventType;
} & Record<string, string>;
declare type EventType = "MESSAGE" | "CONNECT" | "DISCONNECT";
declare type RequestContext<E extends EventType> = Http.RequestContext & {
connectedAt: number;
eventType: E;
connectionId: string;
};
export {};