1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | import * as events from 'events';
|
9 | import * as fs from 'fs';
|
10 | import * as http from 'http';
|
11 | import * as mime from 'mime';
|
12 |
|
13 | export interface Headers { [k: string]: any; }
|
14 | export type Finish = (status: number, headers?: Headers) => void;
|
15 | export type Callback = (e: Error) => void;
|
16 |
|
17 | export interface Options {
|
18 | headers?: Headers | undefined;
|
19 | indexFile?: string | undefined;
|
20 | cache?: number | boolean | undefined;
|
21 | serverInfo?: Buffer | undefined;
|
22 | server?: string | undefined;
|
23 | "cache-control"?: string | undefined;
|
24 | }
|
25 |
|
26 | export interface ByteRange {
|
27 | from: number;
|
28 | to: number;
|
29 | valid: boolean;
|
30 | }
|
31 |
|
32 | export class Server {
|
33 | root: string;
|
34 | options: Options;
|
35 | cache: number | boolean;
|
36 | defaultHeaders: Headers;
|
37 | serverInfo: string;
|
38 | constructor(root: string, options?: Options);
|
39 |
|
40 | serveDir: (pathname: string, req: http.IncomingMessage, res: http.ServerResponse, finish: Finish) => void;
|
41 | serveFile: (pathname: string, status: number, headers: Headers, req: http.IncomingMessage, res: http.ServerResponse) => events.EventEmitter;
|
42 | finish: (status: number, headers: Headers, req: http.IncomingMessage, res: http.ServerResponse, promise: events.EventEmitter, callback: Callback) => void;
|
43 | servePath: (pathname: string, status: number, headers: Headers, req: http.IncomingMessage, res: http.ServerResponse, finish: Finish) => events.EventEmitter;
|
44 | resolve: (pathname: string) => string;
|
45 | serve: (req: http.IncomingMessage, res: http.ServerResponse, callback?: Callback) => events.EventEmitter;
|
46 | gzipOk: (req: http.IncomingMessage, contentType: string) => boolean;
|
47 | respondGzip: (
|
48 | pathname: string,
|
49 | status: number,
|
50 | contentType: string,
|
51 | _headers: Headers,
|
52 | files: string[],
|
53 | stat: fs.Stats,
|
54 | req: http.IncomingMessage,
|
55 | res: http.ServerResponse,
|
56 | finish: Finish
|
57 | ) => void;
|
58 | parseByteRange: (req: http.IncomingMessage, stat: fs.Stats) => ByteRange;
|
59 | // tslint:disable-next-line max-line-length
|
60 | respondNoGzip: (pathname: string, status: number, contentType: string, _headers: Headers, files: string[], stat: fs.Stats, req: http.IncomingMessage, res: http.ServerResponse, finish: Finish) => void;
|
61 | respond: (pathname: string, status: number, _headers: Headers, files: string[], stat: fs.Stats, req: http.IncomingMessage, res: http.ServerResponse, finish: Finish) => void;
|
62 | stream: (pathname: string, files: string[], length: number, startByte: number, res: http.ServerResponse, callback: Callback) => void;
|
63 | }
|
64 |
|
65 | export const version: [number, number, number];
|
66 | export { mime };
|