-
-
Notifications
You must be signed in to change notification settings - Fork 10
/
index.d.ts
293 lines (293 loc) · 6.76 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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
/// <reference types="node" />
export = mailhog;
/**
* Returns the mailhog API interface.
*
* @param {Options} [options] API options
* @returns {API} API object
*/
declare function mailhog(options?: Options): API;
declare namespace mailhog {
export { Attachment, MIME, Message, Messages, Options, API, SMTPConfig };
}
/**
* API options
*/
type Options = {
/**
* API protocol
*/
protocol?: string;
/**
* API host
*/
host?: string;
/**
* API port
*/
port?: number;
/**
* API basic authentication
*/
auth?: string;
/**
* API base path
*/
basePath?: string;
};
type API = {
/**
* API options
*/
options: Options;
/**
* Gets all messages
*/
messages: typeof messages;
/**
* Gets messages matching a query
*/
search: typeof search;
/**
* Gets latest message from sender
*/
latestFrom: typeof latestFrom;
/**
* Gets latest message to recipient
*/
latestTo: typeof latestTo;
/**
* Gets latest with content
*/
latestContaining: typeof latestContaining;
/**
* Releases given message
*/
releaseMessage: typeof releaseMessage;
/**
* Deletes given message
*/
deleteMessage: typeof deleteMessage;
/**
* Deletes all messages
*/
deleteAll: typeof deleteAll;
/**
* Encodes given content
*/
encode: typeof encode;
/**
* Decodes given content
*/
decode: typeof decode;
};
type Attachment = {
/**
* Filename
*/
name: string;
/**
* Content-Type
*/
type: string;
/**
* Content-Transfer-Encoding
*/
encoding: string;
/**
* Encoded content
*/
Body: string;
/**
* Encoded headers
*/
Headers: Array<string>;
};
type MIME = {
/**
* Attachment parts
*/
Parts: Array<Attachment>;
};
type Message = {
/**
* Message ID
*/
ID: string;
/**
* Decoded mail text content
*/
text: string;
/**
* Decoded mail HTML content
*/
html: string;
/**
* Decoded mail Subject header
*/
subject: string;
/**
* Decoded mail From header
*/
from: string;
/**
* Decoded mail To header
*/
to: string;
/**
* Decoded mail Cc header
*/
cc: string;
/**
* Decoded mail Bcc header
*/
bcc: string;
/**
* Decoded mail Reply-To header
*/
replyTo: string;
/**
* Mail Date header
*/
date: Date;
/**
* Mail Delivery-Date header
*/
deliveryDate: Date;
/**
* List of mail attachments
*/
attachments: Array<Attachment>;
/**
* Mail Created property
*/
Created: string;
/**
* Mail Mime property
*/
MIME: MIME;
};
type Messages = {
/**
* Number of results available
*/
total: number;
/**
* Number of results returned
*/
count: number;
/**
* Offset for the range of results returned
*/
start: number;
/**
* List of mail object items
*/
items: Array<Message>;
};
type SMTPConfig = {
/**
* SMTP host
*/
host: string;
/**
* SMTP port
*/
port: string;
/**
* recipient email
*/
email: string;
/**
* SMTP username
*/
username?: string;
/**
* SMTP password
*/
password?: string;
/**
* SMTP auth mechanism (PLAIN or CRAM-MD5)
*/
mechanism?: string;
};
/**
* Requests mail objects from the MailHog API.
*
* @param {number} [start=0] defines the offset for the messages query
* @param {number} [limit=50] defines the max number of results
* @returns {Promise<Messages?>} resolves with object listing the mail items
*/
declare function messages(start?: number, limit?: number): Promise<Messages | null>;
/**
* Sends a search request to the MailHog API.
*
* @param {string} query search query
* @param {string} [kind=containing] query kind, can be from|to|containing
* @param {number} [start=0] defines the offset for the search query
* @param {number} [limit=50] defines the max number of results
* @returns {Promise<Messages?>} resolves with object listing the mail items
*/
declare function search(query: string, kind?: string, start?: number, limit?: number): Promise<Messages | null>;
/**
* Sends a search request for the latest mail matching the "from" query.
*
* @param {string} query from address
* @returns {Promise<Message?>} resolves latest mail object for the "from" query
*/
declare function latestFrom(query: string): Promise<Message | null>;
/**
* Sends a search request for the latest mail matching the "to" query.
*
* @param {string} query to address
* @returns {Promise<Message?>} resolves latest mail object for the "to" query
*/
declare function latestTo(query: string): Promise<Message | null>;
/**
* Sends a search request for the latest mail matching the "containing" query.
*
* @param {string} query search query
* @returns {Promise<Message?>} resolves latest mail object "containing" query
*/
declare function latestContaining(query: string): Promise<Message | null>;
/**
* Releases the mail with the given ID using the provided SMTP config.
*
* @param {string} id message ID
* @param {SMTPConfig} config SMTP configuration
* @returns {Promise<http.IncomingMessage>} resolves with http.IncomingMessage
*/
declare function releaseMessage(id: string, config: SMTPConfig): Promise<http.IncomingMessage>;
/**
* Deletes the mail with the given ID from MailHog.
*
* @param {string} id message ID
* @returns {Promise<http.IncomingMessage>} resolves with http.IncomingMessage
*/
declare function deleteMessage(id: string): Promise<http.IncomingMessage>;
/**
* Deletes all mails stored in MailHog.
*
* @returns {Promise<http.IncomingMessage>} resolves with http.IncomingMessage
*/
declare function deleteAll(): Promise<http.IncomingMessage>;
/**
* Encodes a String in the given charset to base64 or quoted-printable encoding.
*
* @param {string} str String to encode
* @param {string} [encoding] base64|quoted-printable
* @param {string} [charset=utf8] Charset of the input string
* @param {number} [lineLength=76] Soft line break limit
* @returns {string} Encoded String
*/
declare function encode(str: string, encoding?: string, charset?: string, lineLength?: number): string;
/**
* Decodes a String from the given encoding and outputs it in the given charset.
*
* @param {string} str String to decode
* @param {string} [encoding=utf8] input encoding, e.g. base64|quoted-printable
* @param {string} [charset=utf8] Charset to use for the output
* @returns {string} Decoded String
*/
declare function decode(str: string, encoding?: string, charset?: string): string;
import http = require("http");