UNPKG

57.4 kBTypeScriptView Raw
1declare module 'http2' {
2 import EventEmitter = require('events');
3 import * as fs from 'fs';
4 import * as net from 'net';
5 import * as stream from 'stream';
6 import * as tls from 'tls';
7 import * as url from 'url';
8
9 import {
10 IncomingHttpHeaders as Http1IncomingHttpHeaders,
11 OutgoingHttpHeaders,
12 IncomingMessage,
13 ServerResponse,
14 } from 'http';
15 export { OutgoingHttpHeaders } from 'http';
16
17 export interface IncomingHttpStatusHeader {
18 ":status"?: number;
19 }
20
21 export interface IncomingHttpHeaders extends Http1IncomingHttpHeaders {
22 ":path"?: string;
23 ":method"?: string;
24 ":authority"?: string;
25 ":scheme"?: string;
26 }
27
28 // Http2Stream
29
30 export interface StreamPriorityOptions {
31 exclusive?: boolean;
32 parent?: number;
33 weight?: number;
34 silent?: boolean;
35 }
36
37 export interface StreamState {
38 localWindowSize?: number;
39 state?: number;
40 localClose?: number;
41 remoteClose?: number;
42 sumDependencyWeight?: number;
43 weight?: number;
44 }
45
46 export interface ServerStreamResponseOptions {
47 endStream?: boolean;
48 waitForTrailers?: boolean;
49 }
50
51 export interface StatOptions {
52 offset: number;
53 length: number;
54 }
55
56 export interface ServerStreamFileResponseOptions {
57 statCheck?(stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions): void | boolean;
58 waitForTrailers?: boolean;
59 offset?: number;
60 length?: number;
61 }
62
63 export interface ServerStreamFileResponseOptionsWithError extends ServerStreamFileResponseOptions {
64 onError?(err: NodeJS.ErrnoException): void;
65 }
66
67 export interface Http2Stream extends stream.Duplex {
68 readonly aborted: boolean;
69 readonly bufferSize: number;
70 readonly closed: boolean;
71 readonly destroyed: boolean;
72 /**
73 * Set the true if the END_STREAM flag was set in the request or response HEADERS frame received,
74 * indicating that no additional data should be received and the readable side of the Http2Stream will be closed.
75 */
76 readonly endAfterHeaders: boolean;
77 readonly id?: number;
78 readonly pending: boolean;
79 readonly rstCode: number;
80 readonly sentHeaders: OutgoingHttpHeaders;
81 readonly sentInfoHeaders?: OutgoingHttpHeaders[];
82 readonly sentTrailers?: OutgoingHttpHeaders;
83 readonly session: Http2Session;
84 readonly state: StreamState;
85
86 close(code?: number, callback?: () => void): void;
87 priority(options: StreamPriorityOptions): void;
88 setTimeout(msecs: number, callback?: () => void): void;
89 sendTrailers(headers: OutgoingHttpHeaders): void;
90
91 addListener(event: "aborted", listener: () => void): this;
92 addListener(event: "close", listener: () => void): this;
93 addListener(event: "data", listener: (chunk: Buffer | string) => void): this;
94 addListener(event: "drain", listener: () => void): this;
95 addListener(event: "end", listener: () => void): this;
96 addListener(event: "error", listener: (err: Error) => void): this;
97 addListener(event: "finish", listener: () => void): this;
98 addListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
99 addListener(event: "pipe", listener: (src: stream.Readable) => void): this;
100 addListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
101 addListener(event: "streamClosed", listener: (code: number) => void): this;
102 addListener(event: "timeout", listener: () => void): this;
103 addListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
104 addListener(event: "wantTrailers", listener: () => void): this;
105 addListener(event: string | symbol, listener: (...args: any[]) => void): this;
106
107 emit(event: "aborted"): boolean;
108 emit(event: "close"): boolean;
109 emit(event: "data", chunk: Buffer | string): boolean;
110 emit(event: "drain"): boolean;
111 emit(event: "end"): boolean;
112 emit(event: "error", err: Error): boolean;
113 emit(event: "finish"): boolean;
114 emit(event: "frameError", frameType: number, errorCode: number): boolean;
115 emit(event: "pipe", src: stream.Readable): boolean;
116 emit(event: "unpipe", src: stream.Readable): boolean;
117 emit(event: "streamClosed", code: number): boolean;
118 emit(event: "timeout"): boolean;
119 emit(event: "trailers", trailers: IncomingHttpHeaders, flags: number): boolean;
120 emit(event: "wantTrailers"): boolean;
121 emit(event: string | symbol, ...args: any[]): boolean;
122
123 on(event: "aborted", listener: () => void): this;
124 on(event: "close", listener: () => void): this;
125 on(event: "data", listener: (chunk: Buffer | string) => void): this;
126 on(event: "drain", listener: () => void): this;
127 on(event: "end", listener: () => void): this;
128 on(event: "error", listener: (err: Error) => void): this;
129 on(event: "finish", listener: () => void): this;
130 on(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
131 on(event: "pipe", listener: (src: stream.Readable) => void): this;
132 on(event: "unpipe", listener: (src: stream.Readable) => void): this;
133 on(event: "streamClosed", listener: (code: number) => void): this;
134 on(event: "timeout", listener: () => void): this;
135 on(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
136 on(event: "wantTrailers", listener: () => void): this;
137 on(event: string | symbol, listener: (...args: any[]) => void): this;
138
139 once(event: "aborted", listener: () => void): this;
140 once(event: "close", listener: () => void): this;
141 once(event: "data", listener: (chunk: Buffer | string) => void): this;
142 once(event: "drain", listener: () => void): this;
143 once(event: "end", listener: () => void): this;
144 once(event: "error", listener: (err: Error) => void): this;
145 once(event: "finish", listener: () => void): this;
146 once(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
147 once(event: "pipe", listener: (src: stream.Readable) => void): this;
148 once(event: "unpipe", listener: (src: stream.Readable) => void): this;
149 once(event: "streamClosed", listener: (code: number) => void): this;
150 once(event: "timeout", listener: () => void): this;
151 once(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
152 once(event: "wantTrailers", listener: () => void): this;
153 once(event: string | symbol, listener: (...args: any[]) => void): this;
154
155 prependListener(event: "aborted", listener: () => void): this;
156 prependListener(event: "close", listener: () => void): this;
157 prependListener(event: "data", listener: (chunk: Buffer | string) => void): this;
158 prependListener(event: "drain", listener: () => void): this;
159 prependListener(event: "end", listener: () => void): this;
160 prependListener(event: "error", listener: (err: Error) => void): this;
161 prependListener(event: "finish", listener: () => void): this;
162 prependListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
163 prependListener(event: "pipe", listener: (src: stream.Readable) => void): this;
164 prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
165 prependListener(event: "streamClosed", listener: (code: number) => void): this;
166 prependListener(event: "timeout", listener: () => void): this;
167 prependListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
168 prependListener(event: "wantTrailers", listener: () => void): this;
169 prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
170
171 prependOnceListener(event: "aborted", listener: () => void): this;
172 prependOnceListener(event: "close", listener: () => void): this;
173 prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this;
174 prependOnceListener(event: "drain", listener: () => void): this;
175 prependOnceListener(event: "end", listener: () => void): this;
176 prependOnceListener(event: "error", listener: (err: Error) => void): this;
177 prependOnceListener(event: "finish", listener: () => void): this;
178 prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
179 prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this;
180 prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
181 prependOnceListener(event: "streamClosed", listener: (code: number) => void): this;
182 prependOnceListener(event: "timeout", listener: () => void): this;
183 prependOnceListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
184 prependOnceListener(event: "wantTrailers", listener: () => void): this;
185 prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
186 }
187
188 export interface ClientHttp2Stream extends Http2Stream {
189 addListener(event: "continue", listener: () => {}): this;
190 addListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
191 addListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
192 addListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
193 addListener(event: string | symbol, listener: (...args: any[]) => void): this;
194
195 emit(event: "continue"): boolean;
196 emit(event: "headers", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean;
197 emit(event: "push", headers: IncomingHttpHeaders, flags: number): boolean;
198 emit(event: "response", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean;
199 emit(event: string | symbol, ...args: any[]): boolean;
200
201 on(event: "continue", listener: () => {}): this;
202 on(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
203 on(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
204 on(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
205 on(event: string | symbol, listener: (...args: any[]) => void): this;
206
207 once(event: "continue", listener: () => {}): this;
208 once(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
209 once(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
210 once(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
211 once(event: string | symbol, listener: (...args: any[]) => void): this;
212
213 prependListener(event: "continue", listener: () => {}): this;
214 prependListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
215 prependListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
216 prependListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
217 prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
218
219 prependOnceListener(event: "continue", listener: () => {}): this;
220 prependOnceListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
221 prependOnceListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
222 prependOnceListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
223 prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
224 }
225
226 export interface ServerHttp2Stream extends Http2Stream {
227 readonly headersSent: boolean;
228 readonly pushAllowed: boolean;
229 additionalHeaders(headers: OutgoingHttpHeaders): void;
230 pushStream(headers: OutgoingHttpHeaders, callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void): void;
231 pushStream(headers: OutgoingHttpHeaders, options?: StreamPriorityOptions, callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void): void;
232 respond(headers?: OutgoingHttpHeaders, options?: ServerStreamResponseOptions): void;
233 respondWithFD(fd: number | fs.promises.FileHandle, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptions): void;
234 respondWithFile(path: string, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptionsWithError): void;
235 }
236
237 // Http2Session
238
239 export interface Settings {
240 headerTableSize?: number;
241 enablePush?: boolean;
242 initialWindowSize?: number;
243 maxFrameSize?: number;
244 maxConcurrentStreams?: number;
245 maxHeaderListSize?: number;
246 enableConnectProtocol?: boolean;
247 }
248
249 export interface ClientSessionRequestOptions {
250 endStream?: boolean;
251 exclusive?: boolean;
252 parent?: number;
253 weight?: number;
254 waitForTrailers?: boolean;
255 }
256
257 export interface SessionState {
258 effectiveLocalWindowSize?: number;
259 effectiveRecvDataLength?: number;
260 nextStreamID?: number;
261 localWindowSize?: number;
262 lastProcStreamID?: number;
263 remoteWindowSize?: number;
264 outboundQueueSize?: number;
265 deflateDynamicTableSize?: number;
266 inflateDynamicTableSize?: number;
267 }
268
269 export interface Http2Session extends EventEmitter {
270 readonly alpnProtocol?: string;
271 readonly closed: boolean;
272 readonly connecting: boolean;
273 readonly destroyed: boolean;
274 readonly encrypted?: boolean;
275 readonly localSettings: Settings;
276 readonly originSet?: string[];
277 readonly pendingSettingsAck: boolean;
278 readonly remoteSettings: Settings;
279 readonly socket: net.Socket | tls.TLSSocket;
280 readonly state: SessionState;
281 readonly type: number;
282
283 close(callback?: () => void): void;
284 destroy(error?: Error, code?: number): void;
285 goaway(code?: number, lastStreamID?: number, opaqueData?: NodeJS.ArrayBufferView): void;
286 ping(callback: (err: Error | null, duration: number, payload: Buffer) => void): boolean;
287 ping(payload: NodeJS.ArrayBufferView, callback: (err: Error | null, duration: number, payload: Buffer) => void): boolean;
288 ref(): void;
289 setLocalWindowSize(windowSize: number): void;
290 setTimeout(msecs: number, callback?: () => void): void;
291 settings(settings: Settings): void;
292 unref(): void;
293
294 addListener(event: "close", listener: () => void): this;
295 addListener(event: "error", listener: (err: Error) => void): this;
296 addListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
297 addListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
298 addListener(event: "localSettings", listener: (settings: Settings) => void): this;
299 addListener(event: "ping", listener: () => void): this;
300 addListener(event: "remoteSettings", listener: (settings: Settings) => void): this;
301 addListener(event: "timeout", listener: () => void): this;
302 addListener(event: string | symbol, listener: (...args: any[]) => void): this;
303
304 emit(event: "close"): boolean;
305 emit(event: "error", err: Error): boolean;
306 emit(event: "frameError", frameType: number, errorCode: number, streamID: number): boolean;
307 emit(event: "goaway", errorCode: number, lastStreamID: number, opaqueData: Buffer): boolean;
308 emit(event: "localSettings", settings: Settings): boolean;
309 emit(event: "ping"): boolean;
310 emit(event: "remoteSettings", settings: Settings): boolean;
311 emit(event: "timeout"): boolean;
312 emit(event: string | symbol, ...args: any[]): boolean;
313
314 on(event: "close", listener: () => void): this;
315 on(event: "error", listener: (err: Error) => void): this;
316 on(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
317 on(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
318 on(event: "localSettings", listener: (settings: Settings) => void): this;
319 on(event: "ping", listener: () => void): this;
320 on(event: "remoteSettings", listener: (settings: Settings) => void): this;
321 on(event: "timeout", listener: () => void): this;
322 on(event: string | symbol, listener: (...args: any[]) => void): this;
323
324 once(event: "close", listener: () => void): this;
325 once(event: "error", listener: (err: Error) => void): this;
326 once(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
327 once(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
328 once(event: "localSettings", listener: (settings: Settings) => void): this;
329 once(event: "ping", listener: () => void): this;
330 once(event: "remoteSettings", listener: (settings: Settings) => void): this;
331 once(event: "timeout", listener: () => void): this;
332 once(event: string | symbol, listener: (...args: any[]) => void): this;
333
334 prependListener(event: "close", listener: () => void): this;
335 prependListener(event: "error", listener: (err: Error) => void): this;
336 prependListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
337 prependListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
338 prependListener(event: "localSettings", listener: (settings: Settings) => void): this;
339 prependListener(event: "ping", listener: () => void): this;
340 prependListener(event: "remoteSettings", listener: (settings: Settings) => void): this;
341 prependListener(event: "timeout", listener: () => void): this;
342 prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
343
344 prependOnceListener(event: "close", listener: () => void): this;
345 prependOnceListener(event: "error", listener: (err: Error) => void): this;
346 prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
347 prependOnceListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
348 prependOnceListener(event: "localSettings", listener: (settings: Settings) => void): this;
349 prependOnceListener(event: "ping", listener: () => void): this;
350 prependOnceListener(event: "remoteSettings", listener: (settings: Settings) => void): this;
351 prependOnceListener(event: "timeout", listener: () => void): this;
352 prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
353 }
354
355 export interface ClientHttp2Session extends Http2Session {
356 request(headers?: OutgoingHttpHeaders, options?: ClientSessionRequestOptions): ClientHttp2Stream;
357
358 addListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
359 addListener(event: "origin", listener: (origins: string[]) => void): this;
360 addListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
361 addListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
362 addListener(event: string | symbol, listener: (...args: any[]) => void): this;
363
364 emit(event: "altsvc", alt: string, origin: string, stream: number): boolean;
365 emit(event: "origin", origins: ReadonlyArray<string>): boolean;
366 emit(event: "connect", session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket): boolean;
367 emit(event: "stream", stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean;
368 emit(event: string | symbol, ...args: any[]): boolean;
369
370 on(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
371 on(event: "origin", listener: (origins: string[]) => void): this;
372 on(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
373 on(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
374 on(event: string | symbol, listener: (...args: any[]) => void): this;
375
376 once(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
377 once(event: "origin", listener: (origins: string[]) => void): this;
378 once(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
379 once(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
380 once(event: string | symbol, listener: (...args: any[]) => void): this;
381
382 prependListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
383 prependListener(event: "origin", listener: (origins: string[]) => void): this;
384 prependListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
385 prependListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
386 prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
387
388 prependOnceListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
389 prependOnceListener(event: "origin", listener: (origins: string[]) => void): this;
390 prependOnceListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
391 prependOnceListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
392 prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
393 }
394
395 export interface AlternativeServiceOptions {
396 origin: number | string | url.URL;
397 }
398
399 export interface ServerHttp2Session extends Http2Session {
400 readonly server: Http2Server | Http2SecureServer;
401
402 altsvc(alt: string, originOrStream: number | string | url.URL | AlternativeServiceOptions): void;
403 origin(...args: Array<string | url.URL | { origin: string }>): void;
404
405 addListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
406 addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
407 addListener(event: string | symbol, listener: (...args: any[]) => void): this;
408
409 emit(event: "connect", session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket): boolean;
410 emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;
411 emit(event: string | symbol, ...args: any[]): boolean;
412
413 on(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
414 on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
415 on(event: string | symbol, listener: (...args: any[]) => void): this;
416
417 once(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
418 once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
419 once(event: string | symbol, listener: (...args: any[]) => void): this;
420
421 prependListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
422 prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
423 prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
424
425 prependOnceListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
426 prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
427 prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
428 }
429
430 // Http2Server
431
432 export interface SessionOptions {
433 maxDeflateDynamicTableSize?: number;
434 maxSessionMemory?: number;
435 maxHeaderListPairs?: number;
436 maxOutstandingPings?: number;
437 maxSendHeaderBlockLength?: number;
438 paddingStrategy?: number;
439 peerMaxConcurrentStreams?: number;
440 settings?: Settings;
441 /**
442 * Specifies a timeout in milliseconds that
443 * a server should wait when an [`'unknownProtocol'`][] is emitted. If the
444 * socket has not been destroyed by that time the server will destroy it.
445 * @default 100000
446 */
447 unknownProtocolTimeout?: number;
448
449 selectPadding?(frameLen: number, maxFrameLen: number): number;
450 createConnection?(authority: url.URL, option: SessionOptions): stream.Duplex;
451 }
452
453 export interface ClientSessionOptions extends SessionOptions {
454 maxReservedRemoteStreams?: number;
455 createConnection?: (authority: url.URL, option: SessionOptions) => stream.Duplex;
456 protocol?: 'http:' | 'https:';
457 }
458
459 export interface ServerSessionOptions extends SessionOptions {
460 Http1IncomingMessage?: typeof IncomingMessage;
461 Http1ServerResponse?: typeof ServerResponse;
462 Http2ServerRequest?: typeof Http2ServerRequest;
463 Http2ServerResponse?: typeof Http2ServerResponse;
464 }
465
466 export interface SecureClientSessionOptions extends ClientSessionOptions, tls.ConnectionOptions { }
467 export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsOptions { }
468
469 export interface ServerOptions extends ServerSessionOptions { }
470
471 export interface SecureServerOptions extends SecureServerSessionOptions {
472 allowHTTP1?: boolean;
473 origins?: string[];
474 }
475
476 interface HTTP2ServerCommon {
477 setTimeout(msec?: number, callback?: () => void): this;
478 /**
479 * Throws ERR_HTTP2_INVALID_SETTING_VALUE for invalid settings values.
480 * Throws ERR_INVALID_ARG_TYPE for invalid settings argument.
481 */
482 updateSettings(settings: Settings): void;
483 }
484
485 export interface Http2Server extends net.Server, HTTP2ServerCommon {
486 addListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
487 addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
488 addListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
489 addListener(event: "sessionError", listener: (err: Error) => void): this;
490 addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
491 addListener(event: "timeout", listener: () => void): this;
492 addListener(event: string | symbol, listener: (...args: any[]) => void): this;
493
494 emit(event: "checkContinue", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
495 emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
496 emit(event: "session", session: ServerHttp2Session): boolean;
497 emit(event: "sessionError", err: Error): boolean;
498 emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;
499 emit(event: "timeout"): boolean;
500 emit(event: string | symbol, ...args: any[]): boolean;
501
502 on(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
503 on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
504 on(event: "session", listener: (session: ServerHttp2Session) => void): this;
505 on(event: "sessionError", listener: (err: Error) => void): this;
506 on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
507 on(event: "timeout", listener: () => void): this;
508 on(event: string | symbol, listener: (...args: any[]) => void): this;
509
510 once(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
511 once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
512 once(event: "session", listener: (session: ServerHttp2Session) => void): this;
513 once(event: "sessionError", listener: (err: Error) => void): this;
514 once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
515 once(event: "timeout", listener: () => void): this;
516 once(event: string | symbol, listener: (...args: any[]) => void): this;
517
518 prependListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
519 prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
520 prependListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
521 prependListener(event: "sessionError", listener: (err: Error) => void): this;
522 prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
523 prependListener(event: "timeout", listener: () => void): this;
524 prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
525
526 prependOnceListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
527 prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
528 prependOnceListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
529 prependOnceListener(event: "sessionError", listener: (err: Error) => void): this;
530 prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
531 prependOnceListener(event: "timeout", listener: () => void): this;
532 prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
533 }
534
535 export interface Http2SecureServer extends tls.Server, HTTP2ServerCommon {
536 addListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
537 addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
538 addListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
539 addListener(event: "sessionError", listener: (err: Error) => void): this;
540 addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
541 addListener(event: "timeout", listener: () => void): this;
542 addListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
543 addListener(event: string | symbol, listener: (...args: any[]) => void): this;
544
545 emit(event: "checkContinue", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
546 emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
547 emit(event: "session", session: ServerHttp2Session): boolean;
548 emit(event: "sessionError", err: Error): boolean;
549 emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;
550 emit(event: "timeout"): boolean;
551 emit(event: "unknownProtocol", socket: tls.TLSSocket): boolean;
552 emit(event: string | symbol, ...args: any[]): boolean;
553
554 on(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
555 on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
556 on(event: "session", listener: (session: ServerHttp2Session) => void): this;
557 on(event: "sessionError", listener: (err: Error) => void): this;
558 on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
559 on(event: "timeout", listener: () => void): this;
560 on(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
561 on(event: string | symbol, listener: (...args: any[]) => void): this;
562
563 once(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
564 once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
565 once(event: "session", listener: (session: ServerHttp2Session) => void): this;
566 once(event: "sessionError", listener: (err: Error) => void): this;
567 once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
568 once(event: "timeout", listener: () => void): this;
569 once(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
570 once(event: string | symbol, listener: (...args: any[]) => void): this;
571
572 prependListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
573 prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
574 prependListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
575 prependListener(event: "sessionError", listener: (err: Error) => void): this;
576 prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
577 prependListener(event: "timeout", listener: () => void): this;
578 prependListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
579 prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
580
581 prependOnceListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
582 prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
583 prependOnceListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
584 prependOnceListener(event: "sessionError", listener: (err: Error) => void): this;
585 prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
586 prependOnceListener(event: "timeout", listener: () => void): this;
587 prependOnceListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
588 prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
589 }
590
591 export class Http2ServerRequest extends stream.Readable {
592 constructor(stream: ServerHttp2Stream, headers: IncomingHttpHeaders, options: stream.ReadableOptions, rawHeaders: ReadonlyArray<string>);
593
594 readonly aborted: boolean;
595 readonly authority: string;
596 readonly connection: net.Socket | tls.TLSSocket;
597 readonly complete: boolean;
598 readonly headers: IncomingHttpHeaders;
599 readonly httpVersion: string;
600 readonly httpVersionMinor: number;
601 readonly httpVersionMajor: number;
602 readonly method: string;
603 readonly rawHeaders: string[];
604 readonly rawTrailers: string[];
605 readonly scheme: string;
606 readonly socket: net.Socket | tls.TLSSocket;
607 readonly stream: ServerHttp2Stream;
608 readonly trailers: IncomingHttpHeaders;
609 readonly url: string;
610
611 setTimeout(msecs: number, callback?: () => void): void;
612 read(size?: number): Buffer | string | null;
613
614 addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
615 addListener(event: "close", listener: () => void): this;
616 addListener(event: "data", listener: (chunk: Buffer | string) => void): this;
617 addListener(event: "end", listener: () => void): this;
618 addListener(event: "readable", listener: () => void): this;
619 addListener(event: "error", listener: (err: Error) => void): this;
620 addListener(event: string | symbol, listener: (...args: any[]) => void): this;
621
622 emit(event: "aborted", hadError: boolean, code: number): boolean;
623 emit(event: "close"): boolean;
624 emit(event: "data", chunk: Buffer | string): boolean;
625 emit(event: "end"): boolean;
626 emit(event: "readable"): boolean;
627 emit(event: "error", err: Error): boolean;
628 emit(event: string | symbol, ...args: any[]): boolean;
629
630 on(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
631 on(event: "close", listener: () => void): this;
632 on(event: "data", listener: (chunk: Buffer | string) => void): this;
633 on(event: "end", listener: () => void): this;
634 on(event: "readable", listener: () => void): this;
635 on(event: "error", listener: (err: Error) => void): this;
636 on(event: string | symbol, listener: (...args: any[]) => void): this;
637
638 once(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
639 once(event: "close", listener: () => void): this;
640 once(event: "data", listener: (chunk: Buffer | string) => void): this;
641 once(event: "end", listener: () => void): this;
642 once(event: "readable", listener: () => void): this;
643 once(event: "error", listener: (err: Error) => void): this;
644 once(event: string | symbol, listener: (...args: any[]) => void): this;
645
646 prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
647 prependListener(event: "close", listener: () => void): this;
648 prependListener(event: "data", listener: (chunk: Buffer | string) => void): this;
649 prependListener(event: "end", listener: () => void): this;
650 prependListener(event: "readable", listener: () => void): this;
651 prependListener(event: "error", listener: (err: Error) => void): this;
652 prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
653
654 prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
655 prependOnceListener(event: "close", listener: () => void): this;
656 prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this;
657 prependOnceListener(event: "end", listener: () => void): this;
658 prependOnceListener(event: "readable", listener: () => void): this;
659 prependOnceListener(event: "error", listener: (err: Error) => void): this;
660 prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
661 }
662
663 export class Http2ServerResponse extends stream.Writable {
664 constructor(stream: ServerHttp2Stream);
665
666 readonly connection: net.Socket | tls.TLSSocket;
667 readonly finished: boolean;
668 readonly headersSent: boolean;
669 readonly socket: net.Socket | tls.TLSSocket;
670 readonly stream: ServerHttp2Stream;
671 sendDate: boolean;
672 statusCode: number;
673 statusMessage: '';
674 addTrailers(trailers: OutgoingHttpHeaders): void;
675 end(callback?: () => void): void;
676 end(data: string | Uint8Array, callback?: () => void): void;
677 end(data: string | Uint8Array, encoding: BufferEncoding, callback?: () => void): void;
678 getHeader(name: string): string;
679 getHeaderNames(): string[];
680 getHeaders(): OutgoingHttpHeaders;
681 hasHeader(name: string): boolean;
682 removeHeader(name: string): void;
683 setHeader(name: string, value: number | string | ReadonlyArray<string>): void;
684 setTimeout(msecs: number, callback?: () => void): void;
685 write(chunk: string | Uint8Array, callback?: (err: Error) => void): boolean;
686 write(chunk: string | Uint8Array, encoding: BufferEncoding, callback?: (err: Error) => void): boolean;
687 writeContinue(): void;
688 writeHead(statusCode: number, headers?: OutgoingHttpHeaders): this;
689 writeHead(statusCode: number, statusMessage: string, headers?: OutgoingHttpHeaders): this;
690 createPushResponse(headers: OutgoingHttpHeaders, callback: (err: Error | null, res: Http2ServerResponse) => void): void;
691
692 addListener(event: "close", listener: () => void): this;
693 addListener(event: "drain", listener: () => void): this;
694 addListener(event: "error", listener: (error: Error) => void): this;
695 addListener(event: "finish", listener: () => void): this;
696 addListener(event: "pipe", listener: (src: stream.Readable) => void): this;
697 addListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
698 addListener(event: string | symbol, listener: (...args: any[]) => void): this;
699
700 emit(event: "close"): boolean;
701 emit(event: "drain"): boolean;
702 emit(event: "error", error: Error): boolean;
703 emit(event: "finish"): boolean;
704 emit(event: "pipe", src: stream.Readable): boolean;
705 emit(event: "unpipe", src: stream.Readable): boolean;
706 emit(event: string | symbol, ...args: any[]): boolean;
707
708 on(event: "close", listener: () => void): this;
709 on(event: "drain", listener: () => void): this;
710 on(event: "error", listener: (error: Error) => void): this;
711 on(event: "finish", listener: () => void): this;
712 on(event: "pipe", listener: (src: stream.Readable) => void): this;
713 on(event: "unpipe", listener: (src: stream.Readable) => void): this;
714 on(event: string | symbol, listener: (...args: any[]) => void): this;
715
716 once(event: "close", listener: () => void): this;
717 once(event: "drain", listener: () => void): this;
718 once(event: "error", listener: (error: Error) => void): this;
719 once(event: "finish", listener: () => void): this;
720 once(event: "pipe", listener: (src: stream.Readable) => void): this;
721 once(event: "unpipe", listener: (src: stream.Readable) => void): this;
722 once(event: string | symbol, listener: (...args: any[]) => void): this;
723
724 prependListener(event: "close", listener: () => void): this;
725 prependListener(event: "drain", listener: () => void): this;
726 prependListener(event: "error", listener: (error: Error) => void): this;
727 prependListener(event: "finish", listener: () => void): this;
728 prependListener(event: "pipe", listener: (src: stream.Readable) => void): this;
729 prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
730 prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
731
732 prependOnceListener(event: "close", listener: () => void): this;
733 prependOnceListener(event: "drain", listener: () => void): this;
734 prependOnceListener(event: "error", listener: (error: Error) => void): this;
735 prependOnceListener(event: "finish", listener: () => void): this;
736 prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this;
737 prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
738 prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
739 }
740
741 // Public API
742
743 export namespace constants {
744 const NGHTTP2_SESSION_SERVER: number;
745 const NGHTTP2_SESSION_CLIENT: number;
746 const NGHTTP2_STREAM_STATE_IDLE: number;
747 const NGHTTP2_STREAM_STATE_OPEN: number;
748 const NGHTTP2_STREAM_STATE_RESERVED_LOCAL: number;
749 const NGHTTP2_STREAM_STATE_RESERVED_REMOTE: number;
750 const NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL: number;
751 const NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE: number;
752 const NGHTTP2_STREAM_STATE_CLOSED: number;
753 const NGHTTP2_NO_ERROR: number;
754 const NGHTTP2_PROTOCOL_ERROR: number;
755 const NGHTTP2_INTERNAL_ERROR: number;
756 const NGHTTP2_FLOW_CONTROL_ERROR: number;
757 const NGHTTP2_SETTINGS_TIMEOUT: number;
758 const NGHTTP2_STREAM_CLOSED: number;
759 const NGHTTP2_FRAME_SIZE_ERROR: number;
760 const NGHTTP2_REFUSED_STREAM: number;
761 const NGHTTP2_CANCEL: number;
762 const NGHTTP2_COMPRESSION_ERROR: number;
763 const NGHTTP2_CONNECT_ERROR: number;
764 const NGHTTP2_ENHANCE_YOUR_CALM: number;
765 const NGHTTP2_INADEQUATE_SECURITY: number;
766 const NGHTTP2_HTTP_1_1_REQUIRED: number;
767 const NGHTTP2_ERR_FRAME_SIZE_ERROR: number;
768 const NGHTTP2_FLAG_NONE: number;
769 const NGHTTP2_FLAG_END_STREAM: number;
770 const NGHTTP2_FLAG_END_HEADERS: number;
771 const NGHTTP2_FLAG_ACK: number;
772 const NGHTTP2_FLAG_PADDED: number;
773 const NGHTTP2_FLAG_PRIORITY: number;
774 const DEFAULT_SETTINGS_HEADER_TABLE_SIZE: number;
775 const DEFAULT_SETTINGS_ENABLE_PUSH: number;
776 const DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE: number;
777 const DEFAULT_SETTINGS_MAX_FRAME_SIZE: number;
778 const MAX_MAX_FRAME_SIZE: number;
779 const MIN_MAX_FRAME_SIZE: number;
780 const MAX_INITIAL_WINDOW_SIZE: number;
781 const NGHTTP2_DEFAULT_WEIGHT: number;
782 const NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: number;
783 const NGHTTP2_SETTINGS_ENABLE_PUSH: number;
784 const NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS: number;
785 const NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: number;
786 const NGHTTP2_SETTINGS_MAX_FRAME_SIZE: number;
787 const NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE: number;
788 const PADDING_STRATEGY_NONE: number;
789 const PADDING_STRATEGY_MAX: number;
790 const PADDING_STRATEGY_CALLBACK: number;
791 const HTTP2_HEADER_STATUS: string;
792 const HTTP2_HEADER_METHOD: string;
793 const HTTP2_HEADER_AUTHORITY: string;
794 const HTTP2_HEADER_SCHEME: string;
795 const HTTP2_HEADER_PATH: string;
796 const HTTP2_HEADER_ACCEPT_CHARSET: string;
797 const HTTP2_HEADER_ACCEPT_ENCODING: string;
798 const HTTP2_HEADER_ACCEPT_LANGUAGE: string;
799 const HTTP2_HEADER_ACCEPT_RANGES: string;
800 const HTTP2_HEADER_ACCEPT: string;
801 const HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: string;
802 const HTTP2_HEADER_AGE: string;
803 const HTTP2_HEADER_ALLOW: string;
804 const HTTP2_HEADER_AUTHORIZATION: string;
805 const HTTP2_HEADER_CACHE_CONTROL: string;
806 const HTTP2_HEADER_CONNECTION: string;
807 const HTTP2_HEADER_CONTENT_DISPOSITION: string;
808 const HTTP2_HEADER_CONTENT_ENCODING: string;
809 const HTTP2_HEADER_CONTENT_LANGUAGE: string;
810 const HTTP2_HEADER_CONTENT_LENGTH: string;
811 const HTTP2_HEADER_CONTENT_LOCATION: string;
812 const HTTP2_HEADER_CONTENT_MD5: string;
813 const HTTP2_HEADER_CONTENT_RANGE: string;
814 const HTTP2_HEADER_CONTENT_TYPE: string;
815 const HTTP2_HEADER_COOKIE: string;
816 const HTTP2_HEADER_DATE: string;
817 const HTTP2_HEADER_ETAG: string;
818 const HTTP2_HEADER_EXPECT: string;
819 const HTTP2_HEADER_EXPIRES: string;
820 const HTTP2_HEADER_FROM: string;
821 const HTTP2_HEADER_HOST: string;
822 const HTTP2_HEADER_IF_MATCH: string;
823 const HTTP2_HEADER_IF_MODIFIED_SINCE: string;
824 const HTTP2_HEADER_IF_NONE_MATCH: string;
825 const HTTP2_HEADER_IF_RANGE: string;
826 const HTTP2_HEADER_IF_UNMODIFIED_SINCE: string;
827 const HTTP2_HEADER_LAST_MODIFIED: string;
828 const HTTP2_HEADER_LINK: string;
829 const HTTP2_HEADER_LOCATION: string;
830 const HTTP2_HEADER_MAX_FORWARDS: string;
831 const HTTP2_HEADER_PREFER: string;
832 const HTTP2_HEADER_PROXY_AUTHENTICATE: string;
833 const HTTP2_HEADER_PROXY_AUTHORIZATION: string;
834 const HTTP2_HEADER_RANGE: string;
835 const HTTP2_HEADER_REFERER: string;
836 const HTTP2_HEADER_REFRESH: string;
837 const HTTP2_HEADER_RETRY_AFTER: string;
838 const HTTP2_HEADER_SERVER: string;
839 const HTTP2_HEADER_SET_COOKIE: string;
840 const HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: string;
841 const HTTP2_HEADER_TRANSFER_ENCODING: string;
842 const HTTP2_HEADER_TE: string;
843 const HTTP2_HEADER_UPGRADE: string;
844 const HTTP2_HEADER_USER_AGENT: string;
845 const HTTP2_HEADER_VARY: string;
846 const HTTP2_HEADER_VIA: string;
847 const HTTP2_HEADER_WWW_AUTHENTICATE: string;
848 const HTTP2_HEADER_HTTP2_SETTINGS: string;
849 const HTTP2_HEADER_KEEP_ALIVE: string;
850 const HTTP2_HEADER_PROXY_CONNECTION: string;
851 const HTTP2_METHOD_ACL: string;
852 const HTTP2_METHOD_BASELINE_CONTROL: string;
853 const HTTP2_METHOD_BIND: string;
854 const HTTP2_METHOD_CHECKIN: string;
855 const HTTP2_METHOD_CHECKOUT: string;
856 const HTTP2_METHOD_CONNECT: string;
857 const HTTP2_METHOD_COPY: string;
858 const HTTP2_METHOD_DELETE: string;
859 const HTTP2_METHOD_GET: string;
860 const HTTP2_METHOD_HEAD: string;
861 const HTTP2_METHOD_LABEL: string;
862 const HTTP2_METHOD_LINK: string;
863 const HTTP2_METHOD_LOCK: string;
864 const HTTP2_METHOD_MERGE: string;
865 const HTTP2_METHOD_MKACTIVITY: string;
866 const HTTP2_METHOD_MKCALENDAR: string;
867 const HTTP2_METHOD_MKCOL: string;
868 const HTTP2_METHOD_MKREDIRECTREF: string;
869 const HTTP2_METHOD_MKWORKSPACE: string;
870 const HTTP2_METHOD_MOVE: string;
871 const HTTP2_METHOD_OPTIONS: string;
872 const HTTP2_METHOD_ORDERPATCH: string;
873 const HTTP2_METHOD_PATCH: string;
874 const HTTP2_METHOD_POST: string;
875 const HTTP2_METHOD_PRI: string;
876 const HTTP2_METHOD_PROPFIND: string;
877 const HTTP2_METHOD_PROPPATCH: string;
878 const HTTP2_METHOD_PUT: string;
879 const HTTP2_METHOD_REBIND: string;
880 const HTTP2_METHOD_REPORT: string;
881 const HTTP2_METHOD_SEARCH: string;
882 const HTTP2_METHOD_TRACE: string;
883 const HTTP2_METHOD_UNBIND: string;
884 const HTTP2_METHOD_UNCHECKOUT: string;
885 const HTTP2_METHOD_UNLINK: string;
886 const HTTP2_METHOD_UNLOCK: string;
887 const HTTP2_METHOD_UPDATE: string;
888 const HTTP2_METHOD_UPDATEREDIRECTREF: string;
889 const HTTP2_METHOD_VERSION_CONTROL: string;
890 const HTTP_STATUS_CONTINUE: number;
891 const HTTP_STATUS_SWITCHING_PROTOCOLS: number;
892 const HTTP_STATUS_PROCESSING: number;
893 const HTTP_STATUS_OK: number;
894 const HTTP_STATUS_CREATED: number;
895 const HTTP_STATUS_ACCEPTED: number;
896 const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION: number;
897 const HTTP_STATUS_NO_CONTENT: number;
898 const HTTP_STATUS_RESET_CONTENT: number;
899 const HTTP_STATUS_PARTIAL_CONTENT: number;
900 const HTTP_STATUS_MULTI_STATUS: number;
901 const HTTP_STATUS_ALREADY_REPORTED: number;
902 const HTTP_STATUS_IM_USED: number;
903 const HTTP_STATUS_MULTIPLE_CHOICES: number;
904 const HTTP_STATUS_MOVED_PERMANENTLY: number;
905 const HTTP_STATUS_FOUND: number;
906 const HTTP_STATUS_SEE_OTHER: number;
907 const HTTP_STATUS_NOT_MODIFIED: number;
908 const HTTP_STATUS_USE_PROXY: number;
909 const HTTP_STATUS_TEMPORARY_REDIRECT: number;
910 const HTTP_STATUS_PERMANENT_REDIRECT: number;
911 const HTTP_STATUS_BAD_REQUEST: number;
912 const HTTP_STATUS_UNAUTHORIZED: number;
913 const HTTP_STATUS_PAYMENT_REQUIRED: number;
914 const HTTP_STATUS_FORBIDDEN: number;
915 const HTTP_STATUS_NOT_FOUND: number;
916 const HTTP_STATUS_METHOD_NOT_ALLOWED: number;
917 const HTTP_STATUS_NOT_ACCEPTABLE: number;
918 const HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED: number;
919 const HTTP_STATUS_REQUEST_TIMEOUT: number;
920 const HTTP_STATUS_CONFLICT: number;
921 const HTTP_STATUS_GONE: number;
922 const HTTP_STATUS_LENGTH_REQUIRED: number;
923 const HTTP_STATUS_PRECONDITION_FAILED: number;
924 const HTTP_STATUS_PAYLOAD_TOO_LARGE: number;
925 const HTTP_STATUS_URI_TOO_LONG: number;
926 const HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: number;
927 const HTTP_STATUS_RANGE_NOT_SATISFIABLE: number;
928 const HTTP_STATUS_EXPECTATION_FAILED: number;
929 const HTTP_STATUS_TEAPOT: number;
930 const HTTP_STATUS_MISDIRECTED_REQUEST: number;
931 const HTTP_STATUS_UNPROCESSABLE_ENTITY: number;
932 const HTTP_STATUS_LOCKED: number;
933 const HTTP_STATUS_FAILED_DEPENDENCY: number;
934 const HTTP_STATUS_UNORDERED_COLLECTION: number;
935 const HTTP_STATUS_UPGRADE_REQUIRED: number;
936 const HTTP_STATUS_PRECONDITION_REQUIRED: number;
937 const HTTP_STATUS_TOO_MANY_REQUESTS: number;
938 const HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE: number;
939 const HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS: number;
940 const HTTP_STATUS_INTERNAL_SERVER_ERROR: number;
941 const HTTP_STATUS_NOT_IMPLEMENTED: number;
942 const HTTP_STATUS_BAD_GATEWAY: number;
943 const HTTP_STATUS_SERVICE_UNAVAILABLE: number;
944 const HTTP_STATUS_GATEWAY_TIMEOUT: number;
945 const HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED: number;
946 const HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: number;
947 const HTTP_STATUS_INSUFFICIENT_STORAGE: number;
948 const HTTP_STATUS_LOOP_DETECTED: number;
949 const HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED: number;
950 const HTTP_STATUS_NOT_EXTENDED: number;
951 const HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED: number;
952 }
953
954 /**
955 * This symbol can be set as a property on the HTTP/2 headers object with
956 * an array value in order to provide a list of headers considered sensitive.
957 */
958 export const sensitiveHeaders: symbol;
959
960 export function getDefaultSettings(): Settings;
961 export function getPackedSettings(settings: Settings): Buffer;
962 export function getUnpackedSettings(buf: Uint8Array): Settings;
963
964 export function createServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server;
965 export function createServer(options: ServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server;
966
967 export function createSecureServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer;
968 export function createSecureServer(options: SecureServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer;
969
970 export function connect(authority: string | url.URL, listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): ClientHttp2Session;
971 export function connect(
972 authority: string | url.URL,
973 options?: ClientSessionOptions | SecureClientSessionOptions,
974 listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void
975 ): ClientHttp2Session;
976}