UNPKG

2.68 kBTypeScriptView Raw
1import { HttpRequest } from "./http";
2import { FinalizeHandler, FinalizeHandlerArguments, FinalizeHandlerOutput, HandlerExecutionContext } from "./middleware";
3import { MetadataBearer } from "./response";
4/**
5 * An event stream message. The headers and body properties will always be
6 * defined, with empty headers represented as an object with no keys and an
7 * empty body represented as a zero-length Uint8Array.
8 */
9export interface Message {
10 headers: MessageHeaders;
11 body: Uint8Array;
12}
13export interface MessageHeaders {
14 [name: string]: MessageHeaderValue;
15}
16export interface BooleanHeaderValue {
17 type: "boolean";
18 value: boolean;
19}
20export interface ByteHeaderValue {
21 type: "byte";
22 value: number;
23}
24export interface ShortHeaderValue {
25 type: "short";
26 value: number;
27}
28export interface IntegerHeaderValue {
29 type: "integer";
30 value: number;
31}
32export interface LongHeaderValue {
33 type: "long";
34 value: Int64;
35}
36export interface BinaryHeaderValue {
37 type: "binary";
38 value: Uint8Array;
39}
40export interface StringHeaderValue {
41 type: "string";
42 value: string;
43}
44export interface TimestampHeaderValue {
45 type: "timestamp";
46 value: Date;
47}
48export interface UuidHeaderValue {
49 type: "uuid";
50 value: string;
51}
52export declare type MessageHeaderValue = BooleanHeaderValue | ByteHeaderValue | ShortHeaderValue | IntegerHeaderValue | LongHeaderValue | BinaryHeaderValue | StringHeaderValue | TimestampHeaderValue | UuidHeaderValue;
53export interface Int64 {
54 readonly bytes: Uint8Array;
55 valueOf: () => number;
56 toString: () => string;
57}
58/**
59 * Util functions for serializing or deserializing event stream
60 */
61export interface EventStreamSerdeContext {
62 eventStreamMarshaller: EventStreamMarshaller;
63}
64export interface EventStreamMarshaller {
65 deserialize: (body: any, deserializer: (input: {
66 [event: string]: Message;
67 }) => any) => AsyncIterable<any>;
68 serialize: (input: AsyncIterable<any>, serializer: (event: any) => Message) => any;
69}
70export interface EventStreamRequestSigner {
71 sign(request: HttpRequest): Promise<HttpRequest>;
72}
73export interface EventStreamPayloadHandler {
74 handle: <Input extends object, Output extends MetadataBearer>(next: FinalizeHandler<Input, Output>, args: FinalizeHandlerArguments<Input>, context?: HandlerExecutionContext) => Promise<FinalizeHandlerOutput<Output>>;
75}
76export interface EventStreamPayloadHandlerProvider {
77 (options: any): EventStreamPayloadHandler;
78}
79export interface EventStreamSerdeProvider {
80 (options: any): EventStreamMarshaller;
81}
82export interface EventStreamSignerProvider {
83 (options: any): EventStreamRequestSigner;
84}