tempmail-sdk 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +43 -38
  2. package/demo/poll-emails.ts +290 -28
  3. package/dist/config.d.ts +16 -0
  4. package/dist/config.js +4 -1
  5. package/dist/index.d.ts +4 -1
  6. package/dist/index.js +33 -16
  7. package/dist/providers/awamail.js +4 -3
  8. package/dist/providers/chatgpt-org-uk.d.ts +1 -1
  9. package/dist/providers/chatgpt-org-uk.js +188 -20
  10. package/dist/providers/dropmail.js +135 -3
  11. package/dist/providers/guerrillamail.js +4 -3
  12. package/dist/providers/linshi-email.d.ts +1 -1
  13. package/dist/providers/linshi-email.js +19 -7
  14. package/dist/providers/linshi-token.d.ts +25 -0
  15. package/dist/providers/linshi-token.js +69 -0
  16. package/dist/providers/mail-tm.js +43 -25
  17. package/dist/providers/maildrop.js +3 -2
  18. package/dist/providers/smail-pw.d.ts +9 -0
  19. package/dist/providers/smail-pw.js +356 -0
  20. package/dist/providers/temp-mail-io.js +5 -4
  21. package/dist/providers/tempmail-lol.js +4 -3
  22. package/dist/providers/tempmail.js +4 -3
  23. package/dist/retry.d.ts +2 -10
  24. package/dist/retry.js +41 -10
  25. package/dist/types.d.ts +6 -1
  26. package/dist/types.js +1 -1
  27. package/package.json +1 -1
  28. package/src/config.ts +16 -0
  29. package/src/index.ts +31 -14
  30. package/src/providers/awamail.ts +3 -2
  31. package/src/providers/chatgpt-org-uk.ts +213 -22
  32. package/src/providers/dropmail.ts +162 -2
  33. package/src/providers/guerrillamail.ts +3 -2
  34. package/src/providers/linshi-email.ts +24 -7
  35. package/src/providers/linshi-token.ts +86 -0
  36. package/src/providers/mail-tm.ts +43 -24
  37. package/src/providers/maildrop.ts +2 -1
  38. package/src/providers/smail-pw.ts +382 -0
  39. package/src/providers/temp-mail-io.ts +4 -3
  40. package/src/providers/tempmail-lol.ts +3 -2
  41. package/src/providers/tempmail.ts +3 -2
  42. package/src/retry.ts +42 -9
  43. package/src/types.ts +6 -1
  44. package/test/example.ts +183 -4
  45. package/dist/providers/tempmail-la.d.ts +0 -15
  46. package/dist/providers/tempmail-la.js +0 -89
  47. package/src/providers/tempmail-la.ts +0 -99
@@ -0,0 +1,356 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateEmail = generateEmail;
4
+ exports.getEmails = getEmails;
5
+ const normalize_1 = require("../normalize");
6
+ const retry_1 = require("../retry");
7
+ const CHANNEL = 'smail-pw';
8
+ const ROOT_DATA_URL = 'https://smail.pw/_root.data';
9
+ const DEFAULT_HEADERS = {
10
+ Accept: '*/*',
11
+ 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
12
+ 'cache-control': 'no-cache',
13
+ dnt: '1',
14
+ origin: 'https://smail.pw',
15
+ pragma: 'no-cache',
16
+ referer: 'https://smail.pw/',
17
+ 'sec-ch-ua': '"Chromium";v="146", "Not-A.Brand";v="24", "Microsoft Edge";v="146"',
18
+ 'sec-ch-ua-mobile': '?0',
19
+ 'sec-ch-ua-platform': '"Windows"',
20
+ 'sec-fetch-dest': 'empty',
21
+ 'sec-fetch-mode': 'cors',
22
+ 'sec-fetch-site': 'same-origin',
23
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0',
24
+ };
25
+ /** Flight/RSC 根为数组时,按出现顺序展开嵌套数组,保留标量与对象(不展开对象键),用于解析交错键值 */
26
+ function flightLinearLeaves(node) {
27
+ if (!Array.isArray(node)) {
28
+ return [];
29
+ }
30
+ const out = [];
31
+ for (const el of node) {
32
+ if (Array.isArray(el)) {
33
+ out.push(...flightLinearLeaves(el));
34
+ }
35
+ else {
36
+ out.push(el);
37
+ }
38
+ }
39
+ return out;
40
+ }
41
+ const MAIL_KV_KEYS = new Set(['id', 'to_address', 'from_name', 'from_address']);
42
+ /**
43
+ * 在线性序列中查找 ... "subject", <str>, "time", <num>,再向前成对读取已知字段。
44
+ * 比纯正则更耐受 emails 与 id 之间的 {"_23":4,...} 引用块。
45
+ */
46
+ function parseSmailEmailsFromLinear(leaves, recipientEmail) {
47
+ const mails = [];
48
+ for (let i = 0; i + 3 < leaves.length; i++) {
49
+ if (leaves[i] !== 'subject') {
50
+ continue;
51
+ }
52
+ const subj = leaves[i + 1];
53
+ if (typeof subj !== 'string') {
54
+ continue;
55
+ }
56
+ if (leaves[i + 2] !== 'time') {
57
+ continue;
58
+ }
59
+ const timeRaw = leaves[i + 3];
60
+ const timeMs = typeof timeRaw === 'number'
61
+ ? timeRaw
62
+ : typeof timeRaw === 'string' && /^\d+$/.test(timeRaw)
63
+ ? parseInt(timeRaw, 10)
64
+ : NaN;
65
+ if (!Number.isFinite(timeMs)) {
66
+ continue;
67
+ }
68
+ const fields = {};
69
+ for (let k = i - 2; k >= 1; k -= 2) {
70
+ const key = leaves[k];
71
+ const val = leaves[k + 1];
72
+ if (typeof key !== 'string' || typeof val !== 'string') {
73
+ break;
74
+ }
75
+ if (MAIL_KV_KEYS.has(key)) {
76
+ fields[key] = val;
77
+ }
78
+ /* 未知键值对跳过(RSC 可能在 subject 前插入其它字符串字段) */
79
+ }
80
+ mails.push({
81
+ id: fields.id || '',
82
+ to_address: fields.to_address || recipientEmail,
83
+ from_name: fields.from_name || '',
84
+ from_address: fields.from_address || '',
85
+ subject: subj,
86
+ date: timeMs,
87
+ text: '',
88
+ html: '',
89
+ attachments: [],
90
+ });
91
+ }
92
+ return mails;
93
+ }
94
+ function extractSessionCookie(response) {
95
+ const h = response.headers;
96
+ if (typeof h.getSetCookie === 'function') {
97
+ for (const line of h.getSetCookie()) {
98
+ const m = line.match(/^__session=([^;]+)/);
99
+ if (m)
100
+ return `__session=${m[1]}`;
101
+ }
102
+ }
103
+ const single = response.headers.get('set-cookie');
104
+ if (single) {
105
+ const m = single.match(/__session=([^;]+)/);
106
+ if (m)
107
+ return `__session=${m[1]}`;
108
+ }
109
+ return '';
110
+ }
111
+ /** RSC/Flight 风格 JSON 文本中提取 @smail.pw 收件地址 */
112
+ function extractInboxEmail(text) {
113
+ const quoted = text.match(/"([a-z0-9][a-z0-9.-]*@smail\.pw)"/i);
114
+ if (quoted)
115
+ return quoted[1];
116
+ const plain = text.match(/\b([a-z0-9][a-z0-9.-]*@smail\.pw)\b/i);
117
+ return plain ? plain[1] : null;
118
+ }
119
+ /** 从响应体解析邮件条目(正则路径,与早期 curl 样本一致) */
120
+ function parseSmailEmailsRegex(text, recipientEmail) {
121
+ const out = [];
122
+ const re = /"id","([^"]+)","to_address","([^"]*)","from_name","([^"]*)","from_address","([^"]*)","subject","([^"]*)","time",(\d+)/g;
123
+ let m;
124
+ while ((m = re.exec(text)) !== null) {
125
+ out.push({
126
+ id: m[1],
127
+ to_address: m[2] || recipientEmail,
128
+ from_name: m[3],
129
+ from_address: m[4],
130
+ subject: m[5],
131
+ date: parseInt(m[6], 10),
132
+ text: '',
133
+ html: '',
134
+ attachments: [],
135
+ });
136
+ }
137
+ if (out.length > 0) {
138
+ return out;
139
+ }
140
+ const re2 = /"id","([^"]+)","from_name","([^"]*)","from_address","([^"]*)","subject","([^"]*)","time",(\d+)/g;
141
+ while ((m = re2.exec(text)) !== null) {
142
+ out.push({
143
+ id: m[1],
144
+ to_address: recipientEmail,
145
+ from_name: m[2],
146
+ from_address: m[3],
147
+ subject: m[4],
148
+ date: parseInt(m[5], 10),
149
+ text: '',
150
+ html: '',
151
+ attachments: [],
152
+ });
153
+ }
154
+ return out;
155
+ }
156
+ function mergeMailsById(lists) {
157
+ const map = new Map();
158
+ let anon = 0;
159
+ for (const list of lists) {
160
+ for (const mail of list) {
161
+ let id = String(mail?.id || '');
162
+ if (!id) {
163
+ id = `__smail_${anon++}_${mail?.date ?? ''}_${String(mail?.subject ?? '').slice(0, 48)}`;
164
+ mail.id = id;
165
+ }
166
+ if (!map.has(id)) {
167
+ map.set(id, mail);
168
+ }
169
+ }
170
+ }
171
+ return [...map.values()];
172
+ }
173
+ /**
174
+ * 官方 loader 返回 D1 行:{ id, to_address, from_name, from_address, subject, time }(见 akazwz/smail app/types/email.ts)。
175
+ * Flight 序列化后多为普通 JSON 对象,而非 "id","…" 交错字符串元组,须在整棵树递归收集。
176
+ */
177
+ function collectPlainRowEmails(root, recipientEmail) {
178
+ const mails = [];
179
+ const seen = new WeakSet();
180
+ function walk(node) {
181
+ if (node === null || node === undefined) {
182
+ return;
183
+ }
184
+ if (typeof node !== 'object') {
185
+ return;
186
+ }
187
+ if (seen.has(node)) {
188
+ return;
189
+ }
190
+ seen.add(node);
191
+ if (Array.isArray(node)) {
192
+ for (const el of node) {
193
+ walk(el);
194
+ }
195
+ return;
196
+ }
197
+ const o = node;
198
+ if (typeof o.subject === 'string') {
199
+ const tr = o.time;
200
+ const timeMs = typeof tr === 'number' && Number.isFinite(tr)
201
+ ? tr
202
+ : typeof tr === 'string' && /^\d+$/.test(tr)
203
+ ? parseInt(tr, 10)
204
+ : NaN;
205
+ if (Number.isFinite(timeMs)) {
206
+ mails.push({
207
+ id: String(o.id ?? ''),
208
+ to_address: String(o.to_address ?? recipientEmail),
209
+ from_name: String(o.from_name ?? ''),
210
+ from_address: String(o.from_address ?? ''),
211
+ subject: o.subject,
212
+ date: timeMs,
213
+ text: '',
214
+ html: '',
215
+ attachments: [],
216
+ });
217
+ }
218
+ }
219
+ for (const v of Object.values(o)) {
220
+ if (v !== null && typeof v === 'object') {
221
+ walk(v);
222
+ }
223
+ }
224
+ }
225
+ walk(root);
226
+ return mails;
227
+ }
228
+ /**
229
+ * Flight 风格 payload:根为数组,"addresses",[i] 表示 root[i] 为邮箱字符串;
230
+ * "emails",[a,b,...] 中每项为下标,指向 root[idx] 的邮件行(常为嵌套数组,内含 id/to_address/subject/time 键值序列)。
231
+ */
232
+ function resolveFlightSlot(root, idx, visited) {
233
+ if (idx < 0 || idx >= root.length || visited.has(idx)) {
234
+ return undefined;
235
+ }
236
+ visited.add(idx);
237
+ const val = root[idx];
238
+ if (typeof val === 'number' && Number.isInteger(val) && val >= 0 && val < root.length) {
239
+ return resolveFlightSlot(root, val, visited);
240
+ }
241
+ return val;
242
+ }
243
+ function flattenFlightIndices(refs) {
244
+ const out = [];
245
+ for (const r of refs) {
246
+ if (typeof r === 'number' && Number.isInteger(r)) {
247
+ out.push(r);
248
+ }
249
+ else if (typeof r === 'string' && /^\d+$/.test(r)) {
250
+ out.push(parseInt(r, 10));
251
+ }
252
+ else if (Array.isArray(r)) {
253
+ for (const x of r) {
254
+ if (typeof x === 'number' && Number.isInteger(x)) {
255
+ out.push(x);
256
+ }
257
+ else if (typeof x === 'string' && /^\d+$/.test(x)) {
258
+ out.push(parseInt(x, 10));
259
+ }
260
+ }
261
+ }
262
+ }
263
+ return out;
264
+ }
265
+ function parseSmailEmailsFromFlightRoot(root, recipientEmail) {
266
+ const mails = [];
267
+ for (let i = 0; i < root.length - 1; i++) {
268
+ if (root[i] !== 'emails') {
269
+ continue;
270
+ }
271
+ const refs = root[i + 1];
272
+ if (!Array.isArray(refs)) {
273
+ break;
274
+ }
275
+ for (const r of flattenFlightIndices(refs)) {
276
+ const node = resolveFlightSlot(root, r, new Set());
277
+ if (Array.isArray(node)) {
278
+ const leaves = flightLinearLeaves(node);
279
+ mails.push(...parseSmailEmailsFromLinear(leaves, recipientEmail));
280
+ }
281
+ else if (node !== null && typeof node === 'object') {
282
+ mails.push(...collectPlainRowEmails(node, recipientEmail));
283
+ }
284
+ }
285
+ break;
286
+ }
287
+ return mails;
288
+ }
289
+ function parseSmailEmailsFromPayload(text, recipientEmail) {
290
+ const regexMails = parseSmailEmailsRegex(text, recipientEmail);
291
+ let linearMails = [];
292
+ let flightMails = [];
293
+ let plainMails = [];
294
+ try {
295
+ const root = JSON.parse(text);
296
+ plainMails = collectPlainRowEmails(root, recipientEmail);
297
+ if (Array.isArray(root)) {
298
+ flightMails = parseSmailEmailsFromFlightRoot(root, recipientEmail);
299
+ const leaves = flightLinearLeaves(root);
300
+ linearMails = parseSmailEmailsFromLinear(leaves, recipientEmail);
301
+ }
302
+ }
303
+ catch {
304
+ /* 非 JSON 或结构异常时仅用正则 */
305
+ }
306
+ return mergeMailsById([regexMails, linearMails, flightMails, plainMails]);
307
+ }
308
+ /**
309
+ * POST intent=generate,保存 Set-Cookie __session,从 RSC 响应中解析邮箱
310
+ */
311
+ async function generateEmail() {
312
+ const response = await (0, retry_1.fetchWithTimeout)(ROOT_DATA_URL, {
313
+ method: 'POST',
314
+ headers: {
315
+ ...DEFAULT_HEADERS,
316
+ 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
317
+ },
318
+ body: 'intent=generate',
319
+ });
320
+ if (!response.ok) {
321
+ throw new Error(`smail.pw generate failed: ${response.status}`);
322
+ }
323
+ const cookie = extractSessionCookie(response);
324
+ if (!cookie) {
325
+ throw new Error('Failed to extract __session cookie');
326
+ }
327
+ const text = await response.text();
328
+ const email = extractInboxEmail(text);
329
+ if (!email) {
330
+ throw new Error('Failed to parse inbox address from smail.pw response');
331
+ }
332
+ return {
333
+ channel: CHANNEL,
334
+ email,
335
+ token: cookie,
336
+ };
337
+ }
338
+ /**
339
+ * GET _root.data,携带 __session Cookie,解析邮件列表
340
+ */
341
+ async function getEmails(token, email) {
342
+ const response = await (0, retry_1.fetchWithTimeout)(ROOT_DATA_URL, {
343
+ method: 'GET',
344
+ headers: {
345
+ ...DEFAULT_HEADERS,
346
+ Cookie: token,
347
+ },
348
+ });
349
+ if (!response.ok) {
350
+ throw new Error(`smail.pw get emails failed: ${response.status}`);
351
+ }
352
+ const text = await response.text();
353
+ const rawList = parseSmailEmailsFromPayload(text, email);
354
+ return rawList.map((raw) => (0, normalize_1.normalizeEmail)(raw, email));
355
+ }
356
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21haWwtcHcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL3NtYWlsLXB3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBMFVBLHNDQThCQztBQUtELDhCQWdCQztBQTVYRCw0Q0FBOEM7QUFDOUMsb0NBQTRDO0FBRTVDLE1BQU0sT0FBTyxHQUFZLFVBQVUsQ0FBQztBQUNwQyxNQUFNLGFBQWEsR0FBRyw2QkFBNkIsQ0FBQztBQUVwRCxNQUFNLGVBQWUsR0FBMkI7SUFDOUMsTUFBTSxFQUFFLEtBQUs7SUFDYixpQkFBaUIsRUFBRSxpREFBaUQ7SUFDcEUsZUFBZSxFQUFFLFVBQVU7SUFDM0IsR0FBRyxFQUFFLEdBQUc7SUFDUixNQUFNLEVBQUUsa0JBQWtCO0lBQzFCLE1BQU0sRUFBRSxVQUFVO0lBQ2xCLE9BQU8sRUFBRSxtQkFBbUI7SUFDNUIsV0FBVyxFQUNULG9FQUFvRTtJQUN0RSxrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLG9CQUFvQixFQUFFLFdBQVc7SUFDakMsZ0JBQWdCLEVBQUUsT0FBTztJQUN6QixnQkFBZ0IsRUFBRSxNQUFNO0lBQ3hCLGdCQUFnQixFQUFFLGFBQWE7SUFDL0IsWUFBWSxFQUNWLCtIQUErSDtDQUNsSSxDQUFDO0FBRUYsNERBQTREO0FBQzVELFNBQVMsa0JBQWtCLENBQUMsSUFBYTtJQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFjLEVBQUUsQ0FBQztJQUMxQixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RD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QUFDLCtCQUErQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkMsTUFBTSxPQUFPLEdBQUcsMkJBQTJCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBQSwwQkFBYyxFQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcm5hbEVtYWlsSW5mbywgRW1haWwsIENoYW5uZWwgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVFbWFpbCB9IGZyb20gJy4uL25vcm1hbGl6ZSc7XG5pbXBvcnQgeyBmZXRjaFdpdGhUaW1lb3V0IH0gZnJvbSAnLi4vcmV0cnknO1xuXG5jb25zdCBDSEFOTkVMOiBDaGFubmVsID0gJ3NtYWlsLXB3JztcbmNvbnN0IFJPT1RfREFUQV9VUkwgPSAnaHR0cHM6Ly9zbWFpbC5wdy9fcm9vdC5kYXRhJztcblxuY29uc3QgREVGQVVMVF9IRUFERVJTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBBY2NlcHQ6ICcqLyonLFxuICAnYWNjZXB0LWxhbmd1YWdlJzogJ3poLUNOLHpoO3E9MC45LGVuO3E9MC44LGVuLUdCO3E9MC43LGVuLVVTO3E9MC42JyxcbiAgJ2NhY2hlLWNvbnRyb2wnOiAnbm8tY2FjaGUnLFxuICBkbnQ6ICcxJyxcbiAgb3JpZ2luOiAnaHR0cHM6Ly9zbWFpbC5wdycsXG4gIHByYWdtYTogJ25vLWNhY2hlJyxcbiAgcmVmZXJlcjogJ2h0dHBzOi8vc21haWwucHcvJyxcbiAgJ3NlYy1jaC11YSc6XG4gICAgJ1wiQ2hyb21pdW1cIjt2PVwiMTQ2XCIsIFwiTm90LUEuQnJhbmRcIjt2PVwiMjRcIiwgXCJNaWNyb3NvZnQgRWRnZVwiO3Y9XCIxNDZcIicsXG4gICdzZWMtY2gtdWEtbW9iaWxlJzogJz8wJyxcbiAgJ3NlYy1jaC11YS1wbGF0Zm9ybSc6ICdcIldpbmRvd3NcIicsXG4gICdzZWMtZmV0Y2gtZGVzdCc6ICdlbXB0eScsXG4gICdzZWMtZmV0Y2gtbW9kZSc6ICdjb3JzJyxcbiAgJ3NlYy1mZXRjaC1zaXRlJzogJ3NhbWUtb3JpZ2luJyxcbiAgJ1VzZXItQWdlbnQnOlxuICAgICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTQ2LjAuMC4wIFNhZmFyaS81MzcuMzYgRWRnLzE0Ni4wLjAuMCcsXG59O1xuXG4vKiogRmxpZ2h0L1JTQyDmoLnkuLrmlbDnu4Tml7bvvIzmjInlh7rnjrDpobrluo/lsZXlvIDltYzlpZfmlbDnu4TvvIzkv53nlZnmoIfph4/kuI7lr7nosaHvvIjkuI3lsZXlvIDlr7nosaHplK7vvInvvIznlKjkuo7op6PmnpDkuqTplJnplK7lgLwgKi9cbmZ1bmN0aW9uIGZsaWdodExpbmVhckxlYXZlcyhub2RlOiB1bmtub3duKTogdW5rbm93bltdIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IG91dDogdW5rbm93bltdID0gW107XG4gIGZvciAoY29uc3QgZWwgb2Ygbm9kZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGVsKSkge1xuICAgICAgb3V0LnB1c2goLi4uZmxpZ2h0TGluZWFyTGVhdmVzKGVsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5wdXNoKGVsKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuY29uc3QgTUFJTF9LVl9LRVlTID0gbmV3IFNldChbJ2lkJywgJ3RvX2FkZHJlc3MnLCAnZnJvbV9uYW1lJywgJ2Zyb21fYWRkcmVzcyddKTtcblxuLyoqXG4gKiDlnKjnur/mgKfluo/liJfkuK3mn6Xmib4gLi4uIFwic3ViamVjdFwiLCA8c3RyPiwgXCJ0aW1lXCIsIDxudW0+77yM5YaN5ZCR5YmN5oiQ5a+56K+75Y+W5bey55+l5a2X5q6144CCXG4gKiDmr5Tnuq/mraPliJnmm7TogJDlj5cgZW1haWxzIOS4jiBpZCDkuYvpl7TnmoQge1wiXzIzXCI6NCwuLi59IOW8leeUqOWdl+OAglxuICovXG5mdW5jdGlvbiBwYXJzZVNtYWlsRW1haWxzRnJvbUxpbmVhcihcbiAgbGVhdmVzOiB1bmtub3duW10sXG4gIHJlY2lwaWVudEVtYWlsOiBzdHJpbmcsXG4pOiBhbnlbXSB7XG4gIGNvbnN0IG1haWxzOiBhbnlbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSArIDMgPCBsZWF2ZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobGVhdmVzW2ldICE9PSAnc3ViamVjdCcpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBzdWJqID0gbGVhdmVzW2kgKyAxXTtcbiAgICBpZiAodHlwZW9mIHN1YmogIT09ICdzdHJpbmcnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGxlYXZlc1tpICsgMl0gIT09ICd0aW1lJykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHRpbWVSYXcgPSBsZWF2ZXNbaSArIDNdO1xuICAgIGNvbnN0IHRpbWVNcyA9XG4gICAgICB0eXBlb2YgdGltZVJhdyA9PT0gJ251bWJlcidcbiAgICAgICAgPyB0aW1lUmF3XG4gICAgICAgIDogdHlwZW9mIHRpbWVSYXcgPT09ICdzdHJpbmcnICYmIC9eXFxkKyQvLnRlc3QodGltZVJhdylcbiAgICAgICAgICA/IHBhcnNlSW50KHRpbWVSYXcsIDEwKVxuICAgICAgICAgIDogTmFOO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHRpbWVNcykpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGZpZWxkczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGZvciAobGV0IGsgPSBpIC0gMjsgayA+PSAxOyBrIC09IDIpIHtcbiAgICAgIGNvbnN0IGtleSA9IGxlYXZlc1trXTtcbiAgICAgIGNvbnN0IHZhbCA9IGxlYXZlc1trICsgMV07XG4gICAgICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoTUFJTF9LVl9LRVlTLmhhcyhrZXkpKSB7XG4gICAgICAgIGZpZWxkc1trZXldID0gdmFsO1xuICAgICAgfVxuICAgICAgLyog5pyq55+l6ZSu5YC85a+56Lez6L+H77yIUlNDIOWPr+iDveWcqCBzdWJqZWN0IOWJjeaPkuWFpeWFtuWug+Wtl+espuS4suWtl+aute+8iSAqL1xuICAgIH1cblxuICAgIG1haWxzLnB1c2goe1xuICAgICAgaWQ6IGZpZWxkcy5pZCB8fCAnJyxcbiAgICAgIHRvX2FkZHJlc3M6IGZpZWxkcy50b19hZGRyZXNzIHx8IHJlY2lwaWVudEVtYWlsLFxuICAgICAgZnJvbV9uYW1lOiBmaWVsZHMuZnJvbV9uYW1lIHx8ICcnLFxuICAgICAgZnJvbV9hZGRyZXNzOiBmaWVsZHMuZnJvbV9hZGRyZXNzIHx8ICcnLFxuICAgICAgc3ViamVjdDogc3ViaixcbiAgICAgIGRhdGU6IHRpbWVNcyxcbiAgICAgIHRleHQ6ICcnLFxuICAgICAgaHRtbDogJycsXG4gICAgICBhdHRhY2htZW50czogW10sXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG1haWxzO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0U2Vzc2lvbkNvb2tpZShyZXNwb25zZTogUmVzcG9uc2UpOiBzdHJpbmcge1xuICBjb25zdCBoID0gcmVzcG9uc2UuaGVhZGVycyBhcyBIZWFkZXJzICYgeyBnZXRTZXRDb29raWU/OiAoKSA9PiBzdHJpbmdbXSB9O1xuICBpZiAodHlwZW9mIGguZ2V0U2V0Q29va2llID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGguZ2V0U2V0Q29va2llKCkpIHtcbiAgICAgIGNvbnN0IG0gPSBsaW5lLm1hdGNoKC9eX19zZXNzaW9uPShbXjtdKykvKTtcbiAgICAgIGlmIChtKSByZXR1cm4gYF9fc2Vzc2lvbj0ke21bMV19YDtcbiAgICB9XG4gIH1cbiAgY29uc3Qgc2luZ2xlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ3NldC1jb29raWUnKTtcbiAgaWYgKHNpbmdsZSkge1xuICAgIGNvbnN0IG0gPSBzaW5nbGUubWF0Y2goL19fc2Vzc2lvbj0oW147XSspLyk7XG4gICAgaWYgKG0pIHJldHVybiBgX19zZXNzaW9uPSR7bVsxXX1gO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuLyoqIFJTQy9GbGlnaHQg6aOO5qC8IEpTT04g5paH5pys5Lit5o+Q5Y+WIEBzbWFpbC5wdyDmlLbku7blnLDlnYAgKi9cbmZ1bmN0aW9uIGV4dHJhY3RJbmJveEVtYWlsKHRleHQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBxdW90ZWQgPSB0ZXh0Lm1hdGNoKC9cIihbYS16MC05XVthLXowLTkuLV0qQHNtYWlsXFwucHcpXCIvaSk7XG4gIGlmIChxdW90ZWQpIHJldHVybiBxdW90ZWRbMV07XG4gIGNvbnN0IHBsYWluID0gdGV4dC5tYXRjaCgvXFxiKFthLXowLTldW2EtejAtOS4tXSpAc21haWxcXC5wdylcXGIvaSk7XG4gIHJldHVybiBwbGFpbiA/IHBsYWluWzFdIDogbnVsbDtcbn1cblxuLyoqIOS7juWTjeW6lOS9k+ino+aekOmCruS7tuadoeebru+8iOato+WImei3r+W+hO+8jOS4juaXqeacnyBjdXJsIOagt+acrOS4gOiHtO+8iSAqL1xuZnVuY3Rpb24gcGFyc2VTbWFpbEVtYWlsc1JlZ2V4KHRleHQ6IHN0cmluZywgcmVjaXBpZW50RW1haWw6IHN0cmluZyk6IGFueVtdIHtcbiAgY29uc3Qgb3V0OiBhbnlbXSA9IFtdO1xuICBjb25zdCByZSA9XG4gICAgL1wiaWRcIixcIihbXlwiXSspXCIsXCJ0b19hZGRyZXNzXCIsXCIoW15cIl0qKVwiLFwiZnJvbV9uYW1lXCIsXCIoW15cIl0qKVwiLFwiZnJvbV9hZGRyZXNzXCIsXCIoW15cIl0qKVwiLFwic3ViamVjdFwiLFwiKFteXCJdKilcIixcInRpbWVcIiwoXFxkKykvZztcbiAgbGV0IG06IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XG4gIHdoaWxlICgobSA9IHJlLmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgb3V0LnB1c2goe1xuICAgICAgaWQ6IG1bMV0sXG4gICAgICB0b19hZGRyZXNzOiBtWzJdIHx8IHJlY2lwaWVudEVtYWlsLFxuICAgICAgZnJvbV9uYW1lOiBtWzNdLFxuICAgICAgZnJvbV9hZGRyZXNzOiBtWzRdLFxuICAgICAgc3ViamVjdDogbVs1XSxcbiAgICAgIGRhdGU6IHBhcnNlSW50KG1bNl0sIDEwKSxcbiAgICAgIHRleHQ6ICcnLFxuICAgICAgaHRtbDogJycsXG4gICAgICBhdHRhY2htZW50czogW10sXG4gICAgfSk7XG4gIH1cbiAgaWYgKG91dC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIGNvbnN0IHJlMiA9XG4gICAgL1wiaWRcIixcIihbXlwiXSspXCIsXCJmcm9tX25hbWVcIixcIihbXlwiXSopXCIsXCJmcm9tX2FkZHJlc3NcIixcIihbXlwiXSopXCIsXCJzdWJqZWN0XCIsXCIoW15cIl0qKVwiLFwidGltZVwiLChcXGQrKS9nO1xuICB3aGlsZSAoKG0gPSByZTIuZXhlYyh0ZXh0KSkgIT09IG51bGwpIHtcbiAgICBvdXQucHVzaCh7XG4gICAgICBpZDogbVsxXSxcbiAgICAgIHRvX2FkZHJlc3M6IHJlY2lwaWVudEVtYWlsLFxuICAgICAgZnJvbV9uYW1lOiBtWzJdLFxuICAgICAgZnJvbV9hZGRyZXNzOiBtWzNdLFxuICAgICAgc3ViamVjdDogbVs0XSxcbiAgICAgIGRhdGU6IHBhcnNlSW50KG1bNV0sIDEwKSxcbiAgICAgIHRleHQ6ICcnLFxuICAgICAgaHRtbDogJycsXG4gICAgICBhdHRhY2htZW50czogW10sXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gbWVyZ2VNYWlsc0J5SWQobGlzdHM6IGFueVtdW10pOiBhbnlbXSB7XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIGxldCBhbm9uID0gMDtcbiAgZm9yIChjb25zdCBsaXN0IG9mIGxpc3RzKSB7XG4gICAgZm9yIChjb25zdCBtYWlsIG9mIGxpc3QpIHtcbiAgICAgIGxldCBpZCA9IFN0cmluZyhtYWlsPy5pZCB8fCAnJyk7XG4gICAgICBpZiAoIWlkKSB7XG4gICAgICAgIGlkID0gYF9fc21haWxfJHthbm9uKyt9XyR7bWFpbD8uZGF0ZSA/PyAnJ31fJHtTdHJpbmcobWFpbD8uc3ViamVjdCA/PyAnJykuc2xpY2UoMCwgNDgpfWA7XG4gICAgICAgIG1haWwuaWQgPSBpZDtcbiAgICAgIH1cbiAgICAgIGlmICghbWFwLmhhcyhpZCkpIHtcbiAgICAgICAgbWFwLnNldChpZCwgbWFpbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBbLi4ubWFwLnZhbHVlcygpXTtcbn1cblxuLyoqXG4gKiDlrpjmlrkgbG9hZGVyIOi/lOWbniBEMSDooYzvvJp7IGlkLCB0b19hZGRyZXNzLCBmcm9tX25hbWUsIGZyb21fYWRkcmVzcywgc3ViamVjdCwgdGltZSB977yI6KeBIGFrYXp3ei9zbWFpbCBhcHAvdHlwZXMvZW1haWwudHPvvInjgIJcbiAqIEZsaWdodCDluo/liJfljJblkI7lpJrkuLrmma7pgJogSlNPTiDlr7nosaHvvIzogIzpnZ4gXCJpZFwiLFwi4oCmXCIg5Lqk6ZSZ5a2X56ym5Liy5YWD57uE77yM6aG75Zyo5pW05qO15qCR6YCS5b2S5pS26ZuG44CCXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RQbGFpblJvd0VtYWlscyhyb290OiB1bmtub3duLCByZWNpcGllbnRFbWFpbDogc3RyaW5nKTogYW55W10ge1xuICBjb25zdCBtYWlsczogYW55W10gPSBbXTtcbiAgY29uc3Qgc2VlbiA9IG5ldyBXZWFrU2V0PG9iamVjdD4oKTtcblxuICBmdW5jdGlvbiB3YWxrKG5vZGU6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc2Vlbi5oYXMobm9kZSBhcyBvYmplY3QpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNlZW4uYWRkKG5vZGUgYXMgb2JqZWN0KTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgICBmb3IgKGNvbnN0IGVsIG9mIG5vZGUpIHtcbiAgICAgICAgd2FsayhlbCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbyA9IG5vZGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgaWYgKHR5cGVvZiBvLnN1YmplY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCB0ciA9IG8udGltZTtcbiAgICAgIGNvbnN0IHRpbWVNcyA9XG4gICAgICAgIHR5cGVvZiB0ciA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHRyKVxuICAgICAgICAgID8gdHJcbiAgICAgICAgICA6IHR5cGVvZiB0ciA9PT0gJ3N0cmluZycgJiYgL15cXGQrJC8udGVzdCh0cilcbiAgICAgICAgICAgID8gcGFyc2VJbnQodHIsIDEwKVxuICAgICAgICAgICAgOiBOYU47XG4gICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHRpbWVNcykpIHtcbiAgICAgICAgbWFpbHMucHVzaCh7XG4gICAgICAgICAgaWQ6IFN0cmluZyhvLmlkID8/ICcnKSxcbiAgICAgICAgICB0b19hZGRyZXNzOiBTdHJpbmcoby50b19hZGRyZXNzID8/IHJlY2lwaWVudEVtYWlsKSxcbiAgICAgICAgICBmcm9tX25hbWU6IFN0cmluZyhvLmZyb21fbmFtZSA/PyAnJyksXG4gICAgICAgICAgZnJvbV9hZGRyZXNzOiBTdHJpbmcoby5mcm9tX2FkZHJlc3MgPz8gJycpLFxuICAgICAgICAgIHN1YmplY3Q6IG8uc3ViamVjdCxcbiAgICAgICAgICBkYXRlOiB0aW1lTXMsXG4gICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgaHRtbDogJycsXG4gICAgICAgICAgYXR0YWNobWVudHM6IFtdLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHYgb2YgT2JqZWN0LnZhbHVlcyhvKSkge1xuICAgICAgaWYgKHYgIT09IG51bGwgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHdhbGsodik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgd2Fsayhyb290KTtcbiAgcmV0dXJuIG1haWxzO1xufVxuXG4vKipcbiAqIEZsaWdodCDpo47moLwgcGF5bG9hZO+8muagueS4uuaVsOe7hO+8jFwiYWRkcmVzc2VzXCIsW2ldIOihqOekuiByb290W2ldIOS4uumCrueuseWtl+espuS4su+8m1xuICogXCJlbWFpbHNcIixbYSxiLC4uLl0g5Lit5q+P6aG55Li65LiL5qCH77yM5oyH5ZCRIHJvb3RbaWR4XSDnmoTpgq7ku7booYzvvIjluLjkuLrltYzlpZfmlbDnu4TvvIzlhoXlkKsgaWQvdG9fYWRkcmVzcy9zdWJqZWN0L3RpbWUg6ZSu5YC85bqP5YiX77yJ44CCXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVGbGlnaHRTbG90KHJvb3Q6IHVua25vd25bXSwgaWR4OiBudW1iZXIsIHZpc2l0ZWQ6IFNldDxudW1iZXI+KTogdW5rbm93biB7XG4gIGlmIChpZHggPCAwIHx8IGlkeCA+PSByb290Lmxlbmd0aCB8fCB2aXNpdGVkLmhhcyhpZHgpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICB2aXNpdGVkLmFkZChpZHgpO1xuICBjb25zdCB2YWwgPSByb290W2lkeF07XG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNJbnRlZ2VyKHZhbCkgJiYgdmFsID49IDAgJiYgdmFsIDwgcm9vdC5sZW5ndGgpIHtcbiAgICByZXR1cm4gcmVzb2x2ZUZsaWdodFNsb3Qocm9vdCwgdmFsLCB2aXNpdGVkKTtcbiAgfVxuICByZXR1cm4gdmFsO1xufVxuXG5mdW5jdGlvbiBmbGF0dGVuRmxpZ2h0SW5kaWNlcyhyZWZzOiB1bmtub3duW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IG91dDogbnVtYmVyW10gPSBbXTtcbiAgZm9yIChjb25zdCByIG9mIHJlZnMpIHtcbiAgICBpZiAodHlwZW9mIHIgPT09ICdudW1iZXInICYmIE51bWJlci5pc0ludGVnZXIocikpIHtcbiAgICAgIG91dC5wdXNoKHIpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHIgPT09ICdzdHJpbmcnICYmIC9eXFxkKyQvLnRlc3QocikpIHtcbiAgICAgIG91dC5wdXNoKHBhcnNlSW50KHIsIDEwKSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHIpKSB7XG4gICAgICBmb3IgKGNvbnN0IHggb2Ygcikge1xuICAgICAgICBpZiAodHlwZW9mIHggPT09ICdudW1iZXInICYmIE51bWJlci5pc0ludGVnZXIoeCkpIHtcbiAgICAgICAgICBvdXQucHVzaCh4KTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgeCA9PT0gJ3N0cmluZycgJiYgL15cXGQrJC8udGVzdCh4KSkge1xuICAgICAgICAgIG91dC5wdXNoKHBhcnNlSW50KHgsIDEwKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gcGFyc2VTbWFpbEVtYWlsc0Zyb21GbGlnaHRSb290KHJvb3Q6IHVua25vd25bXSwgcmVjaXBpZW50RW1haWw6IHN0cmluZyk6IGFueVtdIHtcbiAgY29uc3QgbWFpbHM6IGFueVtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC5sZW5ndGggLSAxOyBpKyspIHtcbiAgICBpZiAocm9vdFtpXSAhPT0gJ2VtYWlscycpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCByZWZzID0gcm9vdFtpICsgMV07XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHJlZnMpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZm9yIChjb25zdCByIG9mIGZsYXR0ZW5GbGlnaHRJbmRpY2VzKHJlZnMpKSB7XG4gICAgICBjb25zdCBub2RlID0gcmVzb2x2ZUZsaWdodFNsb3Qocm9vdCwgciwgbmV3IFNldCgpKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgICAgIGNvbnN0IGxlYXZlcyA9IGZsaWdodExpbmVhckxlYXZlcyhub2RlKTtcbiAgICAgICAgbWFpbHMucHVzaCguLi5wYXJzZVNtYWlsRW1haWxzRnJvbUxpbmVhcihsZWF2ZXMsIHJlY2lwaWVudEVtYWlsKSk7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUgIT09IG51bGwgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIG1haWxzLnB1c2goLi4uY29sbGVjdFBsYWluUm93RW1haWxzKG5vZGUsIHJlY2lwaWVudEVtYWlsKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBtYWlscztcbn1cblxuZnVuY3Rpb24gcGFyc2VTbWFpbEVtYWlsc0Zyb21QYXlsb2FkKHRleHQ6IHN0cmluZywgcmVjaXBpZW50RW1haWw6IHN0cmluZyk6IGFueVtdIHtcbiAgY29uc3QgcmVnZXhNYWlscyA9IHBhcnNlU21haWxFbWFpbHNSZWdleCh0ZXh0LCByZWNpcGllbnRFbWFpbCk7XG4gIGxldCBsaW5lYXJNYWlsczogYW55W10gPSBbXTtcbiAgbGV0IGZsaWdodE1haWxzOiBhbnlbXSA9IFtdO1xuICBsZXQgcGxhaW5NYWlsczogYW55W10gPSBbXTtcbiAgdHJ5IHtcbiAgICBjb25zdCByb290ID0gSlNPTi5wYXJzZSh0ZXh0KSBhcyB1bmtub3duO1xuICAgIHBsYWluTWFpbHMgPSBjb2xsZWN0UGxhaW5Sb3dFbWFpbHMocm9vdCwgcmVjaXBpZW50RW1haWwpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJvb3QpKSB7XG4gICAgICBmbGlnaHRNYWlscyA9IHBhcnNlU21haWxFbWFpbHNGcm9tRmxpZ2h0Um9vdChyb290LCByZWNpcGllbnRFbWFpbCk7XG4gICAgICBjb25zdCBsZWF2ZXMgPSBmbGlnaHRMaW5lYXJMZWF2ZXMocm9vdCk7XG4gICAgICBsaW5lYXJNYWlscyA9IHBhcnNlU21haWxFbWFpbHNGcm9tTGluZWFyKGxlYXZlcywgcmVjaXBpZW50RW1haWwpO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLyog6Z2eIEpTT04g5oiW57uT5p6E5byC5bi45pe25LuF55So5q2j5YiZICovXG4gIH1cbiAgcmV0dXJuIG1lcmdlTWFpbHNCeUlkKFtyZWdleE1haWxzLCBsaW5lYXJNYWlscywgZmxpZ2h0TWFpbHMsIHBsYWluTWFpbHNdKTtcbn1cblxuLyoqXG4gKiBQT1NUIGludGVudD1nZW5lcmF0Ze+8jOS/neWtmCBTZXQtQ29va2llIF9fc2Vzc2lvbu+8jOS7jiBSU0Mg5ZON5bqU5Lit6Kej5p6Q6YKu566xXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKCk6IFByb21pc2U8SW50ZXJuYWxFbWFpbEluZm8+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFdpdGhUaW1lb3V0KFJPT1RfREFUQV9VUkwsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAuLi5ERUZBVUxUX0hFQURFUlMsXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04JyxcbiAgICB9LFxuICAgIGJvZHk6ICdpbnRlbnQ9Z2VuZXJhdGUnLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBzbWFpbC5wdyBnZW5lcmF0ZSBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgY29va2llID0gZXh0cmFjdFNlc3Npb25Db29raWUocmVzcG9uc2UpO1xuICBpZiAoIWNvb2tpZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGV4dHJhY3QgX19zZXNzaW9uIGNvb2tpZScpO1xuICB9XG5cbiAgY29uc3QgdGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgY29uc3QgZW1haWwgPSBleHRyYWN0SW5ib3hFbWFpbCh0ZXh0KTtcbiAgaWYgKCFlbWFpbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHBhcnNlIGluYm94IGFkZHJlc3MgZnJvbSBzbWFpbC5wdyByZXNwb25zZScpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjaGFubmVsOiBDSEFOTkVMLFxuICAgIGVtYWlsLFxuICAgIHRva2VuOiBjb29raWUsXG4gIH07XG59XG5cbi8qKlxuICogR0VUIF9yb290LmRhdGHvvIzmkLrluKYgX19zZXNzaW9uIENvb2tpZe+8jOino+aekOmCruS7tuWIl+ihqFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RW1haWxzKHRva2VuOiBzdHJpbmcsIGVtYWlsOiBzdHJpbmcpOiBQcm9taXNlPEVtYWlsW10+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFdpdGhUaW1lb3V0KFJPT1RfREFUQV9VUkwsIHtcbiAgICBtZXRob2Q6ICdHRVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgIC4uLkRFRkFVTFRfSEVBREVSUyxcbiAgICAgIENvb2tpZTogdG9rZW4sXG4gICAgfSxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgc21haWwucHcgZ2V0IGVtYWlscyBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgdGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgY29uc3QgcmF3TGlzdCA9IHBhcnNlU21haWxFbWFpbHNGcm9tUGF5bG9hZCh0ZXh0LCBlbWFpbCk7XG4gIHJldHVybiByYXdMaXN0Lm1hcCgocmF3KSA9PiBub3JtYWxpemVFbWFpbChyYXcsIGVtYWlsKSk7XG59XG4iXX0=
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateEmail = generateEmail;
4
4
  exports.getEmails = getEmails;
5
5
  const normalize_1 = require("../normalize");
6
+ const retry_1 = require("../retry");
6
7
  const CHANNEL = 'temp-mail-io';
7
8
  const BASE_URL = 'https://api.internal.temp-mail.io/api/v3';
8
9
  const PAGE_URL = 'https://temp-mail.io/en';
@@ -18,7 +19,7 @@ async function fetchCorsHeader() {
18
19
  if (cachedCorsHeader)
19
20
  return cachedCorsHeader;
20
21
  try {
21
- const response = await fetch(PAGE_URL, {
22
+ const response = await (0, retry_1.fetchWithTimeout)(PAGE_URL, {
22
23
  headers: {
23
24
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36',
24
25
  },
@@ -59,7 +60,7 @@ async function getApiHeaders() {
59
60
  */
60
61
  async function generateEmail() {
61
62
  const headers = await getApiHeaders();
62
- const response = await fetch(`${BASE_URL}/email/new`, {
63
+ const response = await (0, retry_1.fetchWithTimeout)(`${BASE_URL}/email/new`, {
63
64
  method: 'POST',
64
65
  headers,
65
66
  body: JSON.stringify({ min_name_length: 10, max_name_length: 10 }),
@@ -84,7 +85,7 @@ async function generateEmail() {
84
85
  */
85
86
  async function getEmails(email) {
86
87
  const headers = await getApiHeaders();
87
- const response = await fetch(`${BASE_URL}/email/${email}/messages`, {
88
+ const response = await (0, retry_1.fetchWithTimeout)(`${BASE_URL}/email/${email}/messages`, {
88
89
  method: 'GET',
89
90
  headers,
90
91
  });
@@ -96,4 +97,4 @@ async function getEmails(email) {
96
97
  const rawEmails = Array.isArray(data) ? data : [];
97
98
  return rawEmails.map((raw) => (0, normalize_1.normalizeEmail)(raw, email));
98
99
  }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcC1tYWlsLWlvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90ZW1wLW1haWwtaW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE2REEsc0NBdUJDO0FBT0QsOEJBZ0JDO0FBMUdELDRDQUE4QztBQUU5QyxNQUFNLE9BQU8sR0FBWSxjQUFjLENBQUM7QUFDeEMsTUFBTSxRQUFRLEdBQUcsMENBQTBDLENBQUM7QUFDNUQsTUFBTSxRQUFRLEdBQUcseUJBQXlCLENBQUM7QUFFM0M7O0dBRUc7QUFDSCxJQUFJLGdCQUFnQixHQUFrQixJQUFJLENBQUM7QUFFM0M7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLGVBQWU7SUFDNUIsSUFBSSxnQkFBZ0I7UUFBRSxPQUFPLGdCQUFnQixDQUFDO0lBRTlDLElBQUksQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNyQyxPQUFPLEVBQUU7Z0JBQ1AsWUFBWSxFQUFFLGlIQUFpSDthQUNoSTtTQUNGLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUNoRSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLE9BQU8sZ0JBQWdCLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxnQkFBZ0I7SUFDbEIsQ0FBQztJQUVELGdCQUFnQixHQUFHLEdBQUcsQ0FBQztJQUN2QixPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxLQUFLLFVBQVUsYUFBYTtJQUMxQixNQUFNLFVBQVUsR0FBRyxNQUFNLGVBQWUsRUFBRSxDQUFDO0lBQzNDLE9BQU87UUFDTCxjQUFjLEVBQUUsa0JBQWtCO1FBQ2xDLGtCQUFrQixFQUFFLEtBQUs7UUFDekIscUJBQXFCLEVBQUUsT0FBTztRQUM5QixlQUFlLEVBQUUsVUFBVTtRQUMzQixZQUFZLEVBQUUsK0hBQStIO1FBQzdJLFFBQVEsRUFBRSxzQkFBc0I7UUFDaEMsU0FBUyxFQUFFLHVCQUF1QjtLQUNuQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsYUFBYTtJQUNqQyxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsRUFBRSxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsUUFBUSxZQUFZLEVBQUU7UUFDcEQsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPO1FBQ1AsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsQ0FBQztLQUNuRSxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO0tBQ2xCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxTQUFTLENBQUMsS0FBYTtJQUMzQyxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsRUFBRSxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsUUFBUSxVQUFVLEtBQUssV0FBVyxFQUFFO1FBQ2xFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsT0FBTztLQUNSLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRW5DLGVBQWU7SUFDZixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNsRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLElBQUEsMEJBQWMsRUFBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW50ZXJuYWxFbWFpbEluZm8sIEVtYWlsLCBDaGFubmVsIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplRW1haWwgfSBmcm9tICcuLi9ub3JtYWxpemUnO1xuXG5jb25zdCBDSEFOTkVMOiBDaGFubmVsID0gJ3RlbXAtbWFpbC1pbyc7XG5jb25zdCBCQVNFX1VSTCA9ICdodHRwczovL2FwaS5pbnRlcm5hbC50ZW1wLW1haWwuaW8vYXBpL3YzJztcbmNvbnN0IFBBR0VfVVJMID0gJ2h0dHBzOi8vdGVtcC1tYWlsLmlvL2VuJztcblxuLyoqXG4gKiDnvJPlrZjku47pobXpnaLliqjmgIHojrflj5bnmoQgbW9iaWxlVGVzdGluZ0hlYWRlciDlgLzvvIjnlKjkuo4gWC1DT1JTLUhlYWRlcu+8iVxuICovXG5sZXQgY2FjaGVkQ29yc0hlYWRlcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbi8qKlxuICog5LuOIHRlbXAtbWFpbC5pbyDpobXpnaLnmoQgX19OVVhUX18g6L+Q6KGM5pe26YWN572u5Lit5o+Q5Y+WIG1vYmlsZVRlc3RpbmdIZWFkZXJcbiAqIOivpeWAvOeUqOS6jiBBUEkg6K+35rGC55qEIFgtQ09SUy1IZWFkZXIg5aS077yM57y65bCR5q2k5aS05Lya5a+86Ie0IDQwMCDplJnor69cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZmV0Y2hDb3JzSGVhZGVyKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGlmIChjYWNoZWRDb3JzSGVhZGVyKSByZXR1cm4gY2FjaGVkQ29yc0hlYWRlcjtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goUEFHRV9VUkwsIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzE0NC4wLjAuMCBTYWZhcmkvNTM3LjM2JyxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgY29uc3QgaHRtbCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICBjb25zdCBtYXRjaCA9IGh0bWwubWF0Y2goL21vYmlsZVRlc3RpbmdIZWFkZXJcXHMqOlxccypcIihbXlwiXSspXCIvKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIGNhY2hlZENvcnNIZWFkZXIgPSBtYXRjaFsxXTtcbiAgICAgIHJldHVybiBjYWNoZWRDb3JzSGVhZGVyO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLyog5o+Q5Y+W5aSx6LSl5pe25L2/55So6buY6K6k5YC8ICovXG4gIH1cblxuICBjYWNoZWRDb3JzSGVhZGVyID0gJzEnO1xuICByZXR1cm4gY2FjaGVkQ29yc0hlYWRlcjtcbn1cblxuLyoqXG4gKiDmnoTlu7ogQVBJIOivt+axguWktFxuICog5YWz6ZSu5aS0OiBDb250ZW50LVR5cGUsIEFwcGxpY2F0aW9uLU5hbWUsIEFwcGxpY2F0aW9uLVZlcnNpb24sIFgtQ09SUy1IZWFkZXJcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0QXBpSGVhZGVycygpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgY29uc3QgY29yc0hlYWRlciA9IGF3YWl0IGZldGNoQ29yc0hlYWRlcigpO1xuICByZXR1cm4ge1xuICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgJ0FwcGxpY2F0aW9uLU5hbWUnOiAnd2ViJyxcbiAgICAnQXBwbGljYXRpb24tVmVyc2lvbic6ICc0LjAuMCcsXG4gICAgJ1gtQ09SUy1IZWFkZXInOiBjb3JzSGVhZGVyLFxuICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDQuMC4wLjAgU2FmYXJpLzUzNy4zNiBFZGcvMTQ0LjAuMC4wJyxcbiAgICAnb3JpZ2luJzogJ2h0dHBzOi8vdGVtcC1tYWlsLmlvJyxcbiAgICAncmVmZXJlcic6ICdodHRwczovL3RlbXAtbWFpbC5pby8nLFxuICB9O1xufVxuXG4vKipcbiAqIOWIm+W7uuS4tOaXtumCrueusVxuICogQVBJOiBQT1NUIC9hcGkvdjMvZW1haWwvbmV3XG4gKiDov5Tlm546IHsgZW1haWwsIHRva2VuIH1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRW1haWwoKTogUHJvbWlzZTxJbnRlcm5hbEVtYWlsSW5mbz4ge1xuICBjb25zdCBoZWFkZXJzID0gYXdhaXQgZ2V0QXBpSGVhZGVycygpO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9lbWFpbC9uZXdgLCB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVycyxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IG1pbl9uYW1lX2xlbmd0aDogMTAsIG1heF9uYW1lX2xlbmd0aDogMTAgfSksXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZW5lcmF0ZSBlbWFpbDogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gIGlmICghZGF0YS5lbWFpbCB8fCAhZGF0YS50b2tlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoYW5uZWw6IENIQU5ORUwsXG4gICAgZW1haWw6IGRhdGEuZW1haWwsXG4gICAgdG9rZW46IGRhdGEudG9rZW4sXG4gIH07XG59XG5cbi8qKlxuICog6I635Y+W6YKu5Lu25YiX6KGoXG4gKiBBUEk6IEdFVCAvYXBpL3YzL2VtYWlsL3tlbWFpbH0vbWVzc2FnZXNcbiAqIOi/lOWbnjogWyB7IGlkLCBmcm9tLCB0bywgY2MsIHN1YmplY3QsIGJvZHlfdGV4dCwgYm9keV9odG1sLCBjcmVhdGVkX2F0LCBhdHRhY2htZW50cyB9IF1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyhlbWFpbDogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIGNvbnN0IGhlYWRlcnMgPSBhd2FpdCBnZXRBcGlIZWFkZXJzKCk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2VtYWlsLyR7ZW1haWx9L21lc3NhZ2VzYCwge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgaGVhZGVycyxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdldCBlbWFpbHM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAvLyBBUEkg55u05o6l6L+U5Zue6YKu5Lu25pWw57uEXG4gIGNvbnN0IHJhd0VtYWlscyA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogW107XG4gIHJldHVybiByYXdFbWFpbHMubWFwKChyYXc6IGFueSkgPT4gbm9ybWFsaXplRW1haWwocmF3LCBlbWFpbCkpO1xufVxuIl19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcC1tYWlsLWlvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90ZW1wLW1haWwtaW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE4REEsc0NBdUJDO0FBT0QsOEJBZ0JDO0FBM0dELDRDQUE4QztBQUM5QyxvQ0FBNEM7QUFFNUMsTUFBTSxPQUFPLEdBQVksY0FBYyxDQUFDO0FBQ3hDLE1BQU0sUUFBUSxHQUFHLDBDQUEwQyxDQUFDO0FBQzVELE1BQU0sUUFBUSxHQUFHLHlCQUF5QixDQUFDO0FBRTNDOztHQUVHO0FBQ0gsSUFBSSxnQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO0FBRTNDOzs7R0FHRztBQUNILEtBQUssVUFBVSxlQUFlO0lBQzVCLElBQUksZ0JBQWdCO1FBQUUsT0FBTyxnQkFBZ0IsQ0FBQztJQUU5QyxJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsd0JBQWdCLEVBQUMsUUFBUSxFQUFFO1lBQ2hELE9BQU8sRUFBRTtnQkFDUCxZQUFZLEVBQUUsaUhBQWlIO2FBQ2hJO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ2hFLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsT0FBTyxnQkFBZ0IsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLGdCQUFnQjtJQUNsQixDQUFDO0lBRUQsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO0lBQ3ZCLE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQztBQUVEOzs7R0FHRztBQUNILEtBQUssVUFBVSxhQUFhO0lBQzFCLE1BQU0sVUFBVSxHQUFHLE1BQU0sZUFBZSxFQUFFLENBQUM7SUFDM0MsT0FBTztRQUNMLGNBQWMsRUFBRSxrQkFBa0I7UUFDbEMsa0JBQWtCLEVBQUUsS0FBSztRQUN6QixxQkFBcUIsRUFBRSxPQUFPO1FBQzlCLGVBQWUsRUFBRSxVQUFVO1FBQzNCLFlBQVksRUFBRSwrSEFBK0g7UUFDN0ksUUFBUSxFQUFFLHNCQUFzQjtRQUNoQyxTQUFTLEVBQUUsdUJBQXVCO0tBQ25DLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxhQUFhO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBYSxFQUFFLENBQUM7SUFDdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLHdCQUFnQixFQUFDLEdBQUcsUUFBUSxZQUFZLEVBQUU7UUFDL0QsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPO1FBQ1AsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsQ0FBQztLQUNuRSxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO0tBQ2xCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxTQUFTLENBQUMsS0FBYTtJQUMzQyxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsRUFBRSxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSx3QkFBZ0IsRUFBQyxHQUFHLFFBQVEsVUFBVSxLQUFLLFdBQVcsRUFBRTtRQUM3RSxNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU87S0FDUixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxlQUFlO0lBQ2YsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbEQsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFBLDBCQUFjLEVBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVybmFsRW1haWxJbmZvLCBFbWFpbCwgQ2hhbm5lbCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZUVtYWlsIH0gZnJvbSAnLi4vbm9ybWFsaXplJztcbmltcG9ydCB7IGZldGNoV2l0aFRpbWVvdXQgfSBmcm9tICcuLi9yZXRyeSc7XG5cbmNvbnN0IENIQU5ORUw6IENoYW5uZWwgPSAndGVtcC1tYWlsLWlvJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vYXBpLmludGVybmFsLnRlbXAtbWFpbC5pby9hcGkvdjMnO1xuY29uc3QgUEFHRV9VUkwgPSAnaHR0cHM6Ly90ZW1wLW1haWwuaW8vZW4nO1xuXG4vKipcbiAqIOe8k+WtmOS7jumhtemdouWKqOaAgeiOt+WPlueahCBtb2JpbGVUZXN0aW5nSGVhZGVyIOWAvO+8iOeUqOS6jiBYLUNPUlMtSGVhZGVy77yJXG4gKi9cbmxldCBjYWNoZWRDb3JzSGVhZGVyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuLyoqXG4gKiDku44gdGVtcC1tYWlsLmlvIOmhtemdoueahCBfX05VWFRfXyDov5DooYzml7bphY3nva7kuK3mj5Dlj5YgbW9iaWxlVGVzdGluZ0hlYWRlclxuICog6K+l5YC855So5LqOIEFQSSDor7fmsYLnmoQgWC1DT1JTLUhlYWRlciDlpLTvvIznvLrlsJHmraTlpLTkvJrlr7zoh7QgNDAwIOmUmeivr1xuICovXG5hc3luYyBmdW5jdGlvbiBmZXRjaENvcnNIZWFkZXIoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgaWYgKGNhY2hlZENvcnNIZWFkZXIpIHJldHVybiBjYWNoZWRDb3JzSGVhZGVyO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFdpdGhUaW1lb3V0KFBBR0VfVVJMLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDQuMC4wLjAgU2FmYXJpLzUzNy4zNicsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGh0bWwgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgY29uc3QgbWF0Y2ggPSBodG1sLm1hdGNoKC9tb2JpbGVUZXN0aW5nSGVhZGVyXFxzKjpcXHMqXCIoW15cIl0rKVwiLyk7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBjYWNoZWRDb3JzSGVhZGVyID0gbWF0Y2hbMV07XG4gICAgICByZXR1cm4gY2FjaGVkQ29yc0hlYWRlcjtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8qIOaPkOWPluWksei0peaXtuS9v+eUqOm7mOiupOWAvCAqL1xuICB9XG5cbiAgY2FjaGVkQ29yc0hlYWRlciA9ICcxJztcbiAgcmV0dXJuIGNhY2hlZENvcnNIZWFkZXI7XG59XG5cbi8qKlxuICog5p6E5bu6IEFQSSDor7fmsYLlpLRcbiAqIOWFs+mUruWktDogQ29udGVudC1UeXBlLCBBcHBsaWNhdGlvbi1OYW1lLCBBcHBsaWNhdGlvbi1WZXJzaW9uLCBYLUNPUlMtSGVhZGVyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEFwaUhlYWRlcnMoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIGNvbnN0IGNvcnNIZWFkZXIgPSBhd2FpdCBmZXRjaENvcnNIZWFkZXIoKTtcbiAgcmV0dXJuIHtcbiAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICdBcHBsaWNhdGlvbi1OYW1lJzogJ3dlYicsXG4gICAgJ0FwcGxpY2F0aW9uLVZlcnNpb24nOiAnNC4wLjAnLFxuICAgICdYLUNPUlMtSGVhZGVyJzogY29yc0hlYWRlcixcbiAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTQ0LjAuMC4wIFNhZmFyaS81MzcuMzYgRWRnLzE0NC4wLjAuMCcsXG4gICAgJ29yaWdpbic6ICdodHRwczovL3RlbXAtbWFpbC5pbycsXG4gICAgJ3JlZmVyZXInOiAnaHR0cHM6Ly90ZW1wLW1haWwuaW8vJyxcbiAgfTtcbn1cblxuLyoqXG4gKiDliJvlu7rkuLTml7bpgq7nrrFcbiAqIEFQSTogUE9TVCAvYXBpL3YzL2VtYWlsL25ld1xuICog6L+U5ZueOiB7IGVtYWlsLCB0b2tlbiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKCk6IFByb21pc2U8SW50ZXJuYWxFbWFpbEluZm8+IHtcbiAgY29uc3QgaGVhZGVycyA9IGF3YWl0IGdldEFwaUhlYWRlcnMoKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFdpdGhUaW1lb3V0KGAke0JBU0VfVVJMfS9lbWFpbC9uZXdgLCB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVycyxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IG1pbl9uYW1lX2xlbmd0aDogMTAsIG1heF9uYW1lX2xlbmd0aDogMTAgfSksXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZW5lcmF0ZSBlbWFpbDogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gIGlmICghZGF0YS5lbWFpbCB8fCAhZGF0YS50b2tlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoYW5uZWw6IENIQU5ORUwsXG4gICAgZW1haWw6IGRhdGEuZW1haWwsXG4gICAgdG9rZW46IGRhdGEudG9rZW4sXG4gIH07XG59XG5cbi8qKlxuICog6I635Y+W6YKu5Lu25YiX6KGoXG4gKiBBUEk6IEdFVCAvYXBpL3YzL2VtYWlsL3tlbWFpbH0vbWVzc2FnZXNcbiAqIOi/lOWbnjogWyB7IGlkLCBmcm9tLCB0bywgY2MsIHN1YmplY3QsIGJvZHlfdGV4dCwgYm9keV9odG1sLCBjcmVhdGVkX2F0LCBhdHRhY2htZW50cyB9IF1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyhlbWFpbDogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIGNvbnN0IGhlYWRlcnMgPSBhd2FpdCBnZXRBcGlIZWFkZXJzKCk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hXaXRoVGltZW91dChgJHtCQVNFX1VSTH0vZW1haWwvJHtlbWFpbH0vbWVzc2FnZXNgLCB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2V0IGVtYWlsczogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gIC8vIEFQSSDnm7TmjqXov5Tlm57pgq7ku7bmlbDnu4RcbiAgY29uc3QgcmF3RW1haWxzID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEgOiBbXTtcbiAgcmV0dXJuIHJhd0VtYWlscy5tYXAoKHJhdzogYW55KSA9PiBub3JtYWxpemVFbWFpbChyYXcsIGVtYWlsKSk7XG59XG4iXX0=
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateEmail = generateEmail;
4
4
  exports.getEmails = getEmails;
5
5
  const normalize_1 = require("../normalize");
6
+ const retry_1 = require("../retry");
6
7
  const CHANNEL = 'tempmail-lol';
7
8
  const BASE_URL = 'https://api.tempmail.lol/v2';
8
9
  const DEFAULT_HEADERS = {
@@ -15,7 +16,7 @@ const DEFAULT_HEADERS = {
15
16
  'DNT': '1',
16
17
  };
17
18
  async function generateEmail(domain = null) {
18
- const response = await fetch(`${BASE_URL}/inbox/create`, {
19
+ const response = await (0, retry_1.fetchWithTimeout)(`${BASE_URL}/inbox/create`, {
19
20
  method: 'POST',
20
21
  headers: DEFAULT_HEADERS,
21
22
  body: JSON.stringify({ domain, captcha: null }),
@@ -34,7 +35,7 @@ async function generateEmail(domain = null) {
34
35
  };
35
36
  }
36
37
  async function getEmails(token, recipientEmail = '') {
37
- const response = await fetch(`${BASE_URL}/inbox?token=${encodeURIComponent(token)}`, {
38
+ const response = await (0, retry_1.fetchWithTimeout)(`${BASE_URL}/inbox?token=${encodeURIComponent(token)}`, {
38
39
  method: 'GET',
39
40
  headers: DEFAULT_HEADERS,
40
41
  });
@@ -45,4 +46,4 @@ async function getEmails(token, recipientEmail = '') {
45
46
  const rawEmails = data.emails || [];
46
47
  return rawEmails.map((raw) => (0, normalize_1.normalizeEmail)(raw, recipientEmail));
47
48
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWwtbG9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90ZW1wbWFpbC1sb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsc0NBc0JDO0FBRUQsOEJBY0M7QUFyREQsNENBQThDO0FBRTlDLE1BQU0sT0FBTyxHQUFZLGNBQWMsQ0FBQztBQUN4QyxNQUFNLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQztBQUUvQyxNQUFNLGVBQWUsR0FBRztJQUN0QixZQUFZLEVBQUUsaUhBQWlIO0lBQy9ILGNBQWMsRUFBRSxrQkFBa0I7SUFDbEMsUUFBUSxFQUFFLHNCQUFzQjtJQUNoQyxXQUFXLEVBQUUsb0VBQW9FO0lBQ2pGLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsb0JBQW9CLEVBQUUsV0FBVztJQUNqQyxLQUFLLEVBQUUsR0FBRztDQUNYLENBQUM7QUFFSyxLQUFLLFVBQVUsYUFBYSxDQUFDLFNBQXdCLElBQUk7SUFDOUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLGVBQWUsRUFBRTtRQUN2RCxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUNoRCxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO0tBQ2xCLENBQUM7QUFDSixDQUFDO0FBRU0sS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFhLEVBQUUsaUJBQXlCLEVBQUU7SUFDeEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLGdCQUFnQixrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQ25GLE1BQU0sRUFBRSxLQUFLO1FBQ2IsT0FBTyxFQUFFLGVBQWU7S0FDekIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDcEMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFBLDBCQUFjLEVBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVybmFsRW1haWxJbmZvLCBFbWFpbCwgQ2hhbm5lbCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZUVtYWlsIH0gZnJvbSAnLi4vbm9ybWFsaXplJztcblxuY29uc3QgQ0hBTk5FTDogQ2hhbm5lbCA9ICd0ZW1wbWFpbC1sb2wnO1xuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9hcGkudGVtcG1haWwubG9sL3YyJztcblxuY29uc3QgREVGQVVMVF9IRUFERVJTID0ge1xuICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTQzLjAuMC4wIFNhZmFyaS81MzcuMzYnLFxuICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAnT3JpZ2luJzogJ2h0dHBzOi8vdGVtcG1haWwubG9sJyxcbiAgJ3NlYy1jaC11YSc6ICdcIk1pY3Jvc29mdCBFZGdlXCI7dj1cIjE0M1wiLCBcIkNocm9taXVtXCI7dj1cIjE0M1wiLCBcIk5vdCBBKEJyYW5kXCI7dj1cIjI0XCInLFxuICAnc2VjLWNoLXVhLW1vYmlsZSc6ICc/MCcsXG4gICdzZWMtY2gtdWEtcGxhdGZvcm0nOiAnXCJXaW5kb3dzXCInLFxuICAnRE5UJzogJzEnLFxufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRW1haWwoZG9tYWluOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IFByb21pc2U8SW50ZXJuYWxFbWFpbEluZm8+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vaW5ib3gvY3JlYXRlYCwge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGRvbWFpbiwgY2FwdGNoYTogbnVsbCB9KSxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gIFxuICBpZiAoIWRhdGEuYWRkcmVzcyB8fCAhZGF0YS50b2tlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoYW5uZWw6IENIQU5ORUwsXG4gICAgZW1haWw6IGRhdGEuYWRkcmVzcyxcbiAgICB0b2tlbjogZGF0YS50b2tlbixcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyh0b2tlbjogc3RyaW5nLCByZWNpcGllbnRFbWFpbDogc3RyaW5nID0gJycpOiBQcm9taXNlPEVtYWlsW10+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vaW5ib3g/dG9rZW49JHtlbmNvZGVVUklDb21wb25lbnQodG9rZW4pfWAsIHtcbiAgICBtZXRob2Q6ICdHRVQnLFxuICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdldCBlbWFpbHM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgXG4gIGNvbnN0IHJhd0VtYWlscyA9IGRhdGEuZW1haWxzIHx8IFtdO1xuICByZXR1cm4gcmF3RW1haWxzLm1hcCgocmF3OiBhbnkpID0+IG5vcm1hbGl6ZUVtYWlsKHJhdywgcmVjaXBpZW50RW1haWwpKTtcbn1cbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWwtbG9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90ZW1wbWFpbC1sb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsc0NBc0JDO0FBRUQsOEJBY0M7QUF0REQsNENBQThDO0FBQzlDLG9DQUE0QztBQUU1QyxNQUFNLE9BQU8sR0FBWSxjQUFjLENBQUM7QUFDeEMsTUFBTSxRQUFRLEdBQUcsNkJBQTZCLENBQUM7QUFFL0MsTUFBTSxlQUFlLEdBQUc7SUFDdEIsWUFBWSxFQUFFLGlIQUFpSDtJQUMvSCxjQUFjLEVBQUUsa0JBQWtCO0lBQ2xDLFFBQVEsRUFBRSxzQkFBc0I7SUFDaEMsV0FBVyxFQUFFLG9FQUFvRTtJQUNqRixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLG9CQUFvQixFQUFFLFdBQVc7SUFDakMsS0FBSyxFQUFFLEdBQUc7Q0FDWCxDQUFDO0FBRUssS0FBSyxVQUFVLGFBQWEsQ0FBQyxTQUF3QixJQUFJO0lBQzlELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSx3QkFBZ0IsRUFBQyxHQUFHLFFBQVEsZUFBZSxFQUFFO1FBQ2xFLE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFLGVBQWU7UUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0tBQ2hELENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRW5DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTztRQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7S0FDbEIsQ0FBQztBQUNKLENBQUM7QUFFTSxLQUFLLFVBQVUsU0FBUyxDQUFDLEtBQWEsRUFBRSxpQkFBeUIsRUFBRTtJQUN4RSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsd0JBQWdCLEVBQUMsR0FBRyxRQUFRLGdCQUFnQixrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQzlGLE1BQU0sRUFBRSxLQUFLO1FBQ2IsT0FBTyxFQUFFLGVBQWU7S0FDekIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDcEMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFBLDBCQUFjLEVBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVybmFsRW1haWxJbmZvLCBFbWFpbCwgQ2hhbm5lbCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZUVtYWlsIH0gZnJvbSAnLi4vbm9ybWFsaXplJztcbmltcG9ydCB7IGZldGNoV2l0aFRpbWVvdXQgfSBmcm9tICcuLi9yZXRyeSc7XG5cbmNvbnN0IENIQU5ORUw6IENoYW5uZWwgPSAndGVtcG1haWwtbG9sJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vYXBpLnRlbXBtYWlsLmxvbC92Mic7XG5cbmNvbnN0IERFRkFVTFRfSEVBREVSUyA9IHtcbiAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzE0My4wLjAuMCBTYWZhcmkvNTM3LjM2JyxcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgJ09yaWdpbic6ICdodHRwczovL3RlbXBtYWlsLmxvbCcsXG4gICdzZWMtY2gtdWEnOiAnXCJNaWNyb3NvZnQgRWRnZVwiO3Y9XCIxNDNcIiwgXCJDaHJvbWl1bVwiO3Y9XCIxNDNcIiwgXCJOb3QgQShCcmFuZFwiO3Y9XCIyNFwiJyxcbiAgJ3NlYy1jaC11YS1tb2JpbGUnOiAnPzAnLFxuICAnc2VjLWNoLXVhLXBsYXRmb3JtJzogJ1wiV2luZG93c1wiJyxcbiAgJ0ROVCc6ICcxJyxcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKGRvbWFpbjogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiBQcm9taXNlPEludGVybmFsRW1haWxJbmZvPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hXaXRoVGltZW91dChgJHtCQVNFX1VSTH0vaW5ib3gvY3JlYXRlYCwge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGRvbWFpbiwgY2FwdGNoYTogbnVsbCB9KSxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gIFxuICBpZiAoIWRhdGEuYWRkcmVzcyB8fCAhZGF0YS50b2tlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoYW5uZWw6IENIQU5ORUwsXG4gICAgZW1haWw6IGRhdGEuYWRkcmVzcyxcbiAgICB0b2tlbjogZGF0YS50b2tlbixcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyh0b2tlbjogc3RyaW5nLCByZWNpcGllbnRFbWFpbDogc3RyaW5nID0gJycpOiBQcm9taXNlPEVtYWlsW10+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFdpdGhUaW1lb3V0KGAke0JBU0VfVVJMfS9pbmJveD90b2tlbj0ke2VuY29kZVVSSUNvbXBvbmVudCh0b2tlbil9YCwge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgaGVhZGVyczogREVGQVVMVF9IRUFERVJTLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2V0IGVtYWlsczogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICBcbiAgY29uc3QgcmF3RW1haWxzID0gZGF0YS5lbWFpbHMgfHwgW107XG4gIHJldHVybiByYXdFbWFpbHMubWFwKChyYXc6IGFueSkgPT4gbm9ybWFsaXplRW1haWwocmF3LCByZWNpcGllbnRFbWFpbCkpO1xufVxuIl19
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateEmail = generateEmail;
4
4
  exports.getEmails = getEmails;
5
5
  const normalize_1 = require("../normalize");
6
+ const retry_1 = require("../retry");
6
7
  const CHANNEL = 'tempmail';
7
8
  const BASE_URL = 'https://api.tempmail.ing/api';
8
9
  const DEFAULT_HEADERS = {
@@ -15,7 +16,7 @@ const DEFAULT_HEADERS = {
15
16
  'DNT': '1',
16
17
  };
17
18
  async function generateEmail(duration = 30) {
18
- const response = await fetch(`${BASE_URL}/generate`, {
19
+ const response = await (0, retry_1.fetchWithTimeout)(`${BASE_URL}/generate`, {
19
20
  method: 'POST',
20
21
  headers: DEFAULT_HEADERS,
21
22
  body: JSON.stringify({ duration }),
@@ -36,7 +37,7 @@ async function generateEmail(duration = 30) {
36
37
  }
37
38
  async function getEmails(email) {
38
39
  const encodedEmail = encodeURIComponent(email);
39
- const response = await fetch(`${BASE_URL}/emails/${encodedEmail}`, {
40
+ const response = await (0, retry_1.fetchWithTimeout)(`${BASE_URL}/emails/${encodedEmail}`, {
40
41
  method: 'GET',
41
42
  headers: DEFAULT_HEADERS,
42
43
  });
@@ -73,4 +74,4 @@ function flattenMessage(raw, recipientEmail) {
73
74
  attachments: raw.attachments || [],
74
75
  };
75
76
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL3RlbXBtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0JBLHNDQXVCQztBQUVELDhCQW1CQztBQTNERCw0Q0FBOEM7QUFFOUMsTUFBTSxPQUFPLEdBQVksVUFBVSxDQUFDO0FBQ3BDLE1BQU0sUUFBUSxHQUFHLDhCQUE4QixDQUFDO0FBRWhELE1BQU0sZUFBZSxHQUFHO0lBQ3RCLFlBQVksRUFBRSxpSEFBaUg7SUFDL0gsY0FBYyxFQUFFLGtCQUFrQjtJQUNsQyxTQUFTLEVBQUUsdUJBQXVCO0lBQ2xDLFdBQVcsRUFBRSxvRUFBb0U7SUFDakYsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixvQkFBb0IsRUFBRSxXQUFXO0lBQ2pDLEtBQUssRUFBRSxHQUFHO0NBQ1gsQ0FBQztBQUVLLEtBQUssVUFBVSxhQUFhLENBQUMsV0FBbUIsRUFBRTtJQUN2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLFFBQVEsV0FBVyxFQUFFO1FBQ25ELE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFLGVBQWU7UUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQztLQUNuQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87UUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztRQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO0tBQ2hDLENBQUM7QUFDSixDQUFDO0FBRU0sS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFhO0lBQzNDLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsUUFBUSxXQUFXLFlBQVksRUFBRSxFQUFFO1FBQ2pFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsT0FBTyxFQUFFLGVBQWU7S0FDekIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3BDLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsSUFBQSwwQkFBYyxFQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN4RixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxjQUFjLENBQUMsR0FBUSxFQUFFLGNBQXNCO0lBQ3RELE9BQU87UUFDTCxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFO1FBQ2hCLElBQUksRUFBRSxHQUFHLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRTtRQUN4QyxFQUFFLEVBQUUsY0FBYztRQUNsQixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFO1FBQzFCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUU7UUFDcEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFO1FBQ25DLElBQUksRUFBRSxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRTtRQUN2QyxNQUFNLEVBQUUsR0FBRyxDQUFDLE9BQU8sS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sS0FBSyxJQUFJO1FBQ2pELFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUU7S0FDbkMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcm5hbEVtYWlsSW5mbywgRW1haWwsIENoYW5uZWwgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVFbWFpbCB9IGZyb20gJy4uL25vcm1hbGl6ZSc7XG5cbmNvbnN0IENIQU5ORUw6IENoYW5uZWwgPSAndGVtcG1haWwnO1xuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9hcGkudGVtcG1haWwuaW5nL2FwaSc7XG5cbmNvbnN0IERFRkFVTFRfSEVBREVSUyA9IHtcbiAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzE0My4wLjAuMCBTYWZhcmkvNTM3LjM2JyxcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgJ1JlZmVyZXInOiAnaHR0cHM6Ly90ZW1wbWFpbC5pbmcvJyxcbiAgJ3NlYy1jaC11YSc6ICdcIk1pY3Jvc29mdCBFZGdlXCI7dj1cIjE0M1wiLCBcIkNocm9taXVtXCI7dj1cIjE0M1wiLCBcIk5vdCBBKEJyYW5kXCI7dj1cIjI0XCInLFxuICAnc2VjLWNoLXVhLW1vYmlsZSc6ICc/MCcsXG4gICdzZWMtY2gtdWEtcGxhdGZvcm0nOiAnXCJXaW5kb3dzXCInLFxuICAnRE5UJzogJzEnLFxufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRW1haWwoZHVyYXRpb246IG51bWJlciA9IDMwKTogUHJvbWlzZTxJbnRlcm5hbEVtYWlsSW5mbz4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9nZW5lcmF0ZWAsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiBERUZBVUxUX0hFQURFUlMsXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBkdXJhdGlvbiB9KSxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gIFxuICBpZiAoIWRhdGEuc3VjY2Vzcykge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoYW5uZWw6IENIQU5ORUwsXG4gICAgZW1haWw6IGRhdGEuZW1haWwuYWRkcmVzcyxcbiAgICBleHBpcmVzQXQ6IGRhdGEuZW1haWwuZXhwaXJlc0F0LFxuICAgIGNyZWF0ZWRBdDogZGF0YS5lbWFpbC5jcmVhdGVkQXQsXG4gIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRFbWFpbHMoZW1haWw6IHN0cmluZyk6IFByb21pc2U8RW1haWxbXT4ge1xuICBjb25zdCBlbmNvZGVkRW1haWwgPSBlbmNvZGVVUklDb21wb25lbnQoZW1haWwpO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9lbWFpbHMvJHtlbmNvZGVkRW1haWx9YCwge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgaGVhZGVyczogREVGQVVMVF9IRUFERVJTLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2V0IGVtYWlsczogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICBcbiAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBnZXQgZW1haWxzJyk7XG4gIH1cblxuICBjb25zdCByYXdFbWFpbHMgPSBkYXRhLmVtYWlscyB8fCBbXTtcbiAgcmV0dXJuIHJhd0VtYWlscy5tYXAoKHJhdzogYW55KSA9PiBub3JtYWxpemVFbWFpbChmbGF0dGVuTWVzc2FnZShyYXcsIGVtYWlsKSwgZW1haWwpKTtcbn1cblxuLyoqXG4gKiDlsIYgdGVtcG1haWwuaW5nIOeahOWOn+Wni+mCruS7tuagvOW8j+aJgeW5s+WMllxuICpcbiAqIEFQSSDov5Tlm57moLzlvI86XG4gKiAgIGZyb21fYWRkcmVzczog5Y+R5Lu25Lq66YKu566xXG4gKiAgIGNvbnRlbnQ6IEhUTUwg5YaF5a6577yI6Z2e57qv5paH5pys77yJXG4gKiAgIHRleHQ6IOe6r+aWh+acrO+8iOmAmuW4uOS4uuepuu+8iVxuICogICByZWNlaXZlZF9hdDog5o6l5pS25pe26Ze0XG4gKiAgIGlzX3JlYWQ6IDAvMVxuICovXG5mdW5jdGlvbiBmbGF0dGVuTWVzc2FnZShyYXc6IGFueSwgcmVjaXBpZW50RW1haWw6IHN0cmluZyk6IGFueSB7XG4gIHJldHVybiB7XG4gICAgaWQ6IHJhdy5pZCA/PyAnJyxcbiAgICBmcm9tOiByYXcuZnJvbV9hZGRyZXNzIHx8IHJhdy5mcm9tIHx8ICcnLFxuICAgIHRvOiByZWNpcGllbnRFbWFpbCxcbiAgICBzdWJqZWN0OiByYXcuc3ViamVjdCB8fCAnJyxcbiAgICB0ZXh0OiByYXcudGV4dCB8fCAnJyxcbiAgICBodG1sOiByYXcuY29udGVudCB8fCByYXcuaHRtbCB8fCAnJyxcbiAgICBkYXRlOiByYXcucmVjZWl2ZWRfYXQgfHwgcmF3LmRhdGUgfHwgJycsXG4gICAgaXNSZWFkOiByYXcuaXNfcmVhZCA9PT0gMSB8fCByYXcuaXNfcmVhZCA9PT0gdHJ1ZSxcbiAgICBhdHRhY2htZW50czogcmF3LmF0dGFjaG1lbnRzIHx8IFtdLFxuICB9O1xufVxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL3RlbXBtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaUJBLHNDQXVCQztBQUVELDhCQW1CQztBQTVERCw0Q0FBOEM7QUFDOUMsb0NBQTRDO0FBRTVDLE1BQU0sT0FBTyxHQUFZLFVBQVUsQ0FBQztBQUNwQyxNQUFNLFFBQVEsR0FBRyw4QkFBOEIsQ0FBQztBQUVoRCxNQUFNLGVBQWUsR0FBRztJQUN0QixZQUFZLEVBQUUsaUhBQWlIO0lBQy9ILGNBQWMsRUFBRSxrQkFBa0I7SUFDbEMsU0FBUyxFQUFFLHVCQUF1QjtJQUNsQyxXQUFXLEVBQUUsb0VBQW9FO0lBQ2pGLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsb0JBQW9CLEVBQUUsV0FBVztJQUNqQyxLQUFLLEVBQUUsR0FBRztDQUNYLENBQUM7QUFFSyxLQUFLLFVBQVUsYUFBYSxDQUFDLFdBQW1CLEVBQUU7SUFDdkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLHdCQUFnQixFQUFDLEdBQUcsUUFBUSxXQUFXLEVBQUU7UUFDOUQsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPLEVBQUUsZUFBZTtRQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDO0tBQ25DLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRW5DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztRQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO1FBQy9CLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7S0FDaEMsQ0FBQztBQUNKLENBQUM7QUFFTSxLQUFLLFVBQVUsU0FBUyxDQUFDLEtBQWE7SUFDM0MsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLHdCQUFnQixFQUFDLEdBQUcsUUFBUSxXQUFXLFlBQVksRUFBRSxFQUFFO1FBQzVFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsT0FBTyxFQUFFLGVBQWU7S0FDekIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3BDLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsSUFBQSwwQkFBYyxFQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN4RixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxjQUFjLENBQUMsR0FBUSxFQUFFLGNBQXNCO0lBQ3RELE9BQU87UUFDTCxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFO1FBQ2hCLElBQUksRUFBRSxHQUFHLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRTtRQUN4QyxFQUFFLEVBQUUsY0FBYztRQUNsQixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFO1FBQzFCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUU7UUFDcEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFO1FBQ25DLElBQUksRUFBRSxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRTtRQUN2QyxNQUFNLEVBQUUsR0FBRyxDQUFDLE9BQU8sS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sS0FBSyxJQUFJO1FBQ2pELFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUU7S0FDbkMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcm5hbEVtYWlsSW5mbywgRW1haWwsIENoYW5uZWwgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVFbWFpbCB9IGZyb20gJy4uL25vcm1hbGl6ZSc7XG5pbXBvcnQgeyBmZXRjaFdpdGhUaW1lb3V0IH0gZnJvbSAnLi4vcmV0cnknO1xuXG5jb25zdCBDSEFOTkVMOiBDaGFubmVsID0gJ3RlbXBtYWlsJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vYXBpLnRlbXBtYWlsLmluZy9hcGknO1xuXG5jb25zdCBERUZBVUxUX0hFQURFUlMgPSB7XG4gICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDMuMC4wLjAgU2FmYXJpLzUzNy4zNicsXG4gICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICdSZWZlcmVyJzogJ2h0dHBzOi8vdGVtcG1haWwuaW5nLycsXG4gICdzZWMtY2gtdWEnOiAnXCJNaWNyb3NvZnQgRWRnZVwiO3Y9XCIxNDNcIiwgXCJDaHJvbWl1bVwiO3Y9XCIxNDNcIiwgXCJOb3QgQShCcmFuZFwiO3Y9XCIyNFwiJyxcbiAgJ3NlYy1jaC11YS1tb2JpbGUnOiAnPzAnLFxuICAnc2VjLWNoLXVhLXBsYXRmb3JtJzogJ1wiV2luZG93c1wiJyxcbiAgJ0ROVCc6ICcxJyxcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKGR1cmF0aW9uOiBudW1iZXIgPSAzMCk6IFByb21pc2U8SW50ZXJuYWxFbWFpbEluZm8+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFdpdGhUaW1lb3V0KGAke0JBU0VfVVJMfS9nZW5lcmF0ZWAsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiBERUZBVUxUX0hFQURFUlMsXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBkdXJhdGlvbiB9KSxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gIFxuICBpZiAoIWRhdGEuc3VjY2Vzcykge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoYW5uZWw6IENIQU5ORUwsXG4gICAgZW1haWw6IGRhdGEuZW1haWwuYWRkcmVzcyxcbiAgICBleHBpcmVzQXQ6IGRhdGEuZW1haWwuZXhwaXJlc0F0LFxuICAgIGNyZWF0ZWRBdDogZGF0YS5lbWFpbC5jcmVhdGVkQXQsXG4gIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRFbWFpbHMoZW1haWw6IHN0cmluZyk6IFByb21pc2U8RW1haWxbXT4ge1xuICBjb25zdCBlbmNvZGVkRW1haWwgPSBlbmNvZGVVUklDb21wb25lbnQoZW1haWwpO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoV2l0aFRpbWVvdXQoYCR7QkFTRV9VUkx9L2VtYWlscy8ke2VuY29kZWRFbWFpbH1gLCB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzOiBERUZBVUxUX0hFQURFUlMsXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgZW1haWxzOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gIFxuICBpZiAoIWRhdGEuc3VjY2Vzcykge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdldCBlbWFpbHMnKTtcbiAgfVxuXG4gIGNvbnN0IHJhd0VtYWlscyA9IGRhdGEuZW1haWxzIHx8IFtdO1xuICByZXR1cm4gcmF3RW1haWxzLm1hcCgocmF3OiBhbnkpID0+IG5vcm1hbGl6ZUVtYWlsKGZsYXR0ZW5NZXNzYWdlKHJhdywgZW1haWwpLCBlbWFpbCkpO1xufVxuXG4vKipcbiAqIOWwhiB0ZW1wbWFpbC5pbmcg55qE5Y6f5aeL6YKu5Lu25qC85byP5omB5bmz5YyWXG4gKlxuICogQVBJIOi/lOWbnuagvOW8jzpcbiAqICAgZnJvbV9hZGRyZXNzOiDlj5Hku7bkurrpgq7nrrFcbiAqICAgY29udGVudDogSFRNTCDlhoXlrrnvvIjpnZ7nuq/mlofmnKzvvIlcbiAqICAgdGV4dDog57qv5paH5pys77yI6YCa5bi45Li656m677yJXG4gKiAgIHJlY2VpdmVkX2F0OiDmjqXmlLbml7bpl7RcbiAqICAgaXNfcmVhZDogMC8xXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW5NZXNzYWdlKHJhdzogYW55LCByZWNpcGllbnRFbWFpbDogc3RyaW5nKTogYW55IHtcbiAgcmV0dXJuIHtcbiAgICBpZDogcmF3LmlkID8/ICcnLFxuICAgIGZyb206IHJhdy5mcm9tX2FkZHJlc3MgfHwgcmF3LmZyb20gfHwgJycsXG4gICAgdG86IHJlY2lwaWVudEVtYWlsLFxuICAgIHN1YmplY3Q6IHJhdy5zdWJqZWN0IHx8ICcnLFxuICAgIHRleHQ6IHJhdy50ZXh0IHx8ICcnLFxuICAgIGh0bWw6IHJhdy5jb250ZW50IHx8IHJhdy5odG1sIHx8ICcnLFxuICAgIGRhdGU6IHJhdy5yZWNlaXZlZF9hdCB8fCByYXcuZGF0ZSB8fCAnJyxcbiAgICBpc1JlYWQ6IHJhdy5pc19yZWFkID09PSAxIHx8IHJhdy5pc19yZWFkID09PSB0cnVlLFxuICAgIGF0dGFjaG1lbnRzOiByYXcuYXR0YWNobWVudHMgfHwgW10sXG4gIH07XG59XG4iXX0=
package/dist/retry.d.ts CHANGED
@@ -19,20 +19,12 @@ export interface RetryOptions {
19
19
  }
20
20
  /**
21
21
  * 带重试的异步操作执行器
22
- * - 自动重试可恢复的错误(网络错误、超时、5xx)
22
+ * - 自动重试可恢复的错误(网络错误、超时、HTTP 4xx/5xx)
23
23
  * - 指数退避避免过度请求
24
- * - 不可恢复的错误(4xx 参数错误等)直接抛出不重试
24
+ * - 不可恢复的错误(SDK 内部参数校验错误等)直接抛出不重试
25
25
  *
26
26
  * @param fn 要执行的异步操作
27
27
  * @param options 重试配置
28
28
  */
29
29
  export declare function withRetry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
30
- /**
31
- * 带超时控制的 fetch 包装
32
- * 在原生 fetch 基础上添加超时中断能力
33
- *
34
- * @param url 请求 URL
35
- * @param init fetch 选项
36
- * @param timeoutMs 超时时间(毫秒)
37
- */
38
30
  export declare function fetchWithTimeout(url: string, init?: RequestInit, timeoutMs?: number): Promise<Response>;