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.
- package/README.md +43 -38
- package/demo/poll-emails.ts +290 -28
- package/dist/config.d.ts +16 -0
- package/dist/config.js +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +33 -16
- package/dist/providers/awamail.js +4 -3
- package/dist/providers/chatgpt-org-uk.d.ts +1 -1
- package/dist/providers/chatgpt-org-uk.js +188 -20
- package/dist/providers/dropmail.js +135 -3
- package/dist/providers/guerrillamail.js +4 -3
- package/dist/providers/linshi-email.d.ts +1 -1
- package/dist/providers/linshi-email.js +19 -7
- package/dist/providers/linshi-token.d.ts +25 -0
- package/dist/providers/linshi-token.js +69 -0
- package/dist/providers/mail-tm.js +43 -25
- package/dist/providers/maildrop.js +3 -2
- package/dist/providers/smail-pw.d.ts +9 -0
- package/dist/providers/smail-pw.js +356 -0
- package/dist/providers/temp-mail-io.js +5 -4
- package/dist/providers/tempmail-lol.js +4 -3
- package/dist/providers/tempmail.js +4 -3
- package/dist/retry.d.ts +2 -10
- package/dist/retry.js +41 -10
- package/dist/types.d.ts +6 -1
- package/dist/types.js +1 -1
- package/package.json +1 -1
- package/src/config.ts +16 -0
- package/src/index.ts +31 -14
- package/src/providers/awamail.ts +3 -2
- package/src/providers/chatgpt-org-uk.ts +213 -22
- package/src/providers/dropmail.ts +162 -2
- package/src/providers/guerrillamail.ts +3 -2
- package/src/providers/linshi-email.ts +24 -7
- package/src/providers/linshi-token.ts +86 -0
- package/src/providers/mail-tm.ts +43 -24
- package/src/providers/maildrop.ts +2 -1
- package/src/providers/smail-pw.ts +382 -0
- package/src/providers/temp-mail-io.ts +4 -3
- package/src/providers/tempmail-lol.ts +3 -2
- package/src/providers/tempmail.ts +3 -2
- package/src/retry.ts +42 -9
- package/src/types.ts +6 -1
- package/test/example.ts +183 -4
- package/dist/providers/tempmail-la.d.ts +0 -15
- package/dist/providers/tempmail-la.js +0 -89
- 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
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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
|
-
* - 不可恢复的错误(
|
|
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>;
|