-
Notifications
You must be signed in to change notification settings - Fork 36
/
index.d.ts
119 lines (109 loc) · 2.79 KB
/
index.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import 'egg';
import { Readable } from 'stream';
interface EggFile {
field: string;
filename: string;
encoding: string;
mime: string;
filepath: string;
}
interface MultipartOptions {
autoFields?: boolean;
requireFile?: boolean; // required file submit, default is true
defaultCharset?: string;
defaultParamCharset?: string;
defCharset?: string; // compatible with defaultCharset, use `defaultCharset` instead
limits?: {
fieldNameSize?: number;
fieldSize?: number;
fields?: number;
fileSize?: number;
files?: number;
parts?: number;
headerPairs?: number;
};
checkFile?(
fieldname: string,
file: any,
filename: string,
encoding: string,
mimetype: string
): void | Error;
}
interface MultipartFileStream extends Readable {
fields: any;
filename: string;
fieldname: string;
mime: string;
mimeType: string;
transferEncoding: string;
encoding: string;
truncated: boolean;
}
interface ScheduleOptions {
type?: string;
cron?: string;
cronOptions?: {
tz?: string;
utc?: boolean;
iterator?: boolean;
currentDate?: string|number|Date;
endDate?: string|number|Date;
};
interval?: number|string;
immediate?: boolean;
disable?: boolean;
env?: string[];
}
declare module 'egg' {
interface Context {
/**
* clean up request tmp files helper
* @param {EggFile[]} files file paths need to clenup, default is `ctx.request.files`.
* @return {Promise<void>}
*/
cleanupRequestFiles(files?: EggFile[]): Promise<void>;
/**
* save request multipart data and files to `ctx.request`
* @return {Promise<void>}
*/
saveRequestFiles(): Promise<void>;
/**
* create multipart.parts instance, to get separated files.
* @param {MultipartOptions} options
* @return {Function} return a function which return a Promise
*/
multipart(options?: MultipartOptions): (fn?: Function) => Promise<any>;
/**
* get upload file stream
* @param {MultipartOptions} options
* @return {Promise<MultipartFileStream>}
*/
getFileStream(options?: MultipartOptions): Promise<MultipartFileStream>
}
interface Request {
/**
* Files Object Array
*/
files: EggFile[];
}
type MatchItem = string | RegExp | ((ctx: Context) => boolean);
interface EggAppConfig {
multipart: {
mode?: string;
fileModeMatch?: MatchItem | MatchItem[];
autoFields?: boolean;
defaultCharset?: string;
defaultParamCharset?: string;
fieldNameSize?: number;
fieldSize?: string|number;
fields?: number;
fileSize?: string|number;
files?: number;
whitelist?: ((filename: string) => boolean)|string[];
fileExtensions?: string[];
tmpdir?: string;
cleanSchedule?: ScheduleOptions;
}
}
}