tempmail-sdk 1.0.1 → 1.0.3

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 (43) hide show
  1. package/README.md +162 -72
  2. package/demo/poll-emails.ts +25 -40
  3. package/dist/index.d.ts +96 -2
  4. package/dist/index.js +186 -21
  5. package/dist/logger.d.ts +73 -0
  6. package/dist/logger.js +100 -0
  7. package/dist/normalize.d.ts +12 -0
  8. package/dist/normalize.js +132 -0
  9. package/dist/providers/awamail.d.ts +15 -0
  10. package/dist/providers/awamail.js +91 -0
  11. package/dist/providers/chatgpt-org-uk.js +4 -2
  12. package/dist/providers/dropmail.d.ts +13 -0
  13. package/dist/providers/dropmail.js +86 -0
  14. package/dist/providers/linshi-email.js +4 -2
  15. package/dist/providers/mail-tm.d.ts +11 -0
  16. package/dist/providers/mail-tm.js +172 -0
  17. package/dist/providers/temp-mail-io.d.ts +13 -0
  18. package/dist/providers/temp-mail-io.js +99 -0
  19. package/dist/providers/tempmail-la.d.ts +15 -0
  20. package/dist/providers/tempmail-la.js +89 -0
  21. package/dist/providers/tempmail-lol.d.ts +1 -1
  22. package/dist/providers/tempmail-lol.js +5 -3
  23. package/dist/providers/tempmail.js +4 -2
  24. package/dist/retry.d.ts +38 -0
  25. package/dist/retry.js +121 -0
  26. package/dist/types.d.ts +118 -28
  27. package/dist/types.js +1 -1
  28. package/package.json +1 -1
  29. package/src/index.ts +182 -25
  30. package/src/logger.ts +106 -0
  31. package/src/normalize.ts +125 -0
  32. package/src/providers/awamail.ts +101 -0
  33. package/src/providers/chatgpt-org-uk.ts +3 -1
  34. package/src/providers/dropmail.ts +98 -0
  35. package/src/providers/linshi-email.ts +3 -1
  36. package/src/providers/mail-tm.ts +193 -0
  37. package/src/providers/temp-mail-io.ts +108 -0
  38. package/src/providers/tempmail-la.ts +99 -0
  39. package/src/providers/tempmail-lol.ts +4 -2
  40. package/src/providers/tempmail.ts +3 -1
  41. package/src/retry.ts +146 -0
  42. package/src/types.ts +120 -28
  43. package/test/example.ts +16 -1
@@ -0,0 +1,172 @@
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 CHANNEL = 'mail-tm';
7
+ const BASE_URL = 'https://api.mail.tm';
8
+ const DEFAULT_HEADERS = {
9
+ 'Content-Type': 'application/json',
10
+ 'Accept': 'application/json',
11
+ };
12
+ /**
13
+ * 生成随机字符串
14
+ */
15
+ function randomString(length) {
16
+ const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
17
+ let result = '';
18
+ for (let i = 0; i < length; i++) {
19
+ result += chars[Math.floor(Math.random() * chars.length)];
20
+ }
21
+ return result;
22
+ }
23
+ /**
24
+ * 获取可用域名列表
25
+ * API: GET /domains
26
+ */
27
+ async function getDomains() {
28
+ const response = await fetch(`${BASE_URL}/domains`, {
29
+ method: 'GET',
30
+ headers: DEFAULT_HEADERS,
31
+ });
32
+ if (!response.ok) {
33
+ throw new Error(`Failed to get domains: ${response.status}`);
34
+ }
35
+ const data = await response.json();
36
+ /* 兼容两种响应格式:
37
+ * - Accept: application/ld+json → Hydra 格式 { "hydra:member": [...] }
38
+ * - Accept: application/json → 纯数组 [...]
39
+ */
40
+ const members = Array.isArray(data) ? data : (data['hydra:member'] || []);
41
+ return members
42
+ .filter((d) => d.isActive)
43
+ .map((d) => d.domain);
44
+ }
45
+ /**
46
+ * 创建账号
47
+ * API: POST /accounts
48
+ */
49
+ async function createAccount(address, password) {
50
+ const response = await fetch(`${BASE_URL}/accounts`, {
51
+ method: 'POST',
52
+ headers: { ...DEFAULT_HEADERS, 'Content-Type': 'application/ld+json' },
53
+ body: JSON.stringify({ address, password }),
54
+ });
55
+ if (!response.ok) {
56
+ const text = await response.text();
57
+ throw new Error(`Failed to create account: ${response.status} ${text}`);
58
+ }
59
+ return response.json();
60
+ }
61
+ /**
62
+ * 获取 Bearer Token
63
+ * API: POST /token
64
+ */
65
+ async function getToken(address, password) {
66
+ const response = await fetch(`${BASE_URL}/token`, {
67
+ method: 'POST',
68
+ headers: DEFAULT_HEADERS,
69
+ body: JSON.stringify({ address, password }),
70
+ });
71
+ if (!response.ok) {
72
+ throw new Error(`Failed to get token: ${response.status}`);
73
+ }
74
+ const data = await response.json();
75
+ return data.token;
76
+ }
77
+ /**
78
+ * 创建临时邮箱
79
+ * 流程: 获取域名 → 生成随机邮箱/密码 → 创建账号 → 获取 Token
80
+ */
81
+ async function generateEmail() {
82
+ // 1. 获取可用域名
83
+ const domains = await getDomains();
84
+ if (domains.length === 0) {
85
+ throw new Error('No available domains');
86
+ }
87
+ // 2. 生成随机邮箱和密码
88
+ const domain = domains[Math.floor(Math.random() * domains.length)];
89
+ const username = randomString(12);
90
+ const address = `${username}@${domain}`;
91
+ const password = randomString(16);
92
+ // 3. 创建账号
93
+ const account = await createAccount(address, password);
94
+ // 4. 获取 Bearer Token
95
+ const token = await getToken(address, password);
96
+ return {
97
+ channel: CHANNEL,
98
+ email: address,
99
+ token: token,
100
+ createdAt: account.createdAt,
101
+ };
102
+ }
103
+ /**
104
+ * 将 mail.tm 的消息格式扁平化为 normalizeEmail 可处理的格式
105
+ * mail.tm 的 from 是 {name, address} 对象,to 是数组,html 是字符串数组
106
+ */
107
+ function flattenMessage(msg, recipientEmail) {
108
+ return {
109
+ id: msg.id || '',
110
+ from: msg.from?.address || '',
111
+ to: msg.to?.[0]?.address || recipientEmail,
112
+ subject: msg.subject || '',
113
+ text: msg.text || '',
114
+ html: Array.isArray(msg.html) ? msg.html.join('') : (msg.html || ''),
115
+ createdAt: msg.createdAt || '',
116
+ seen: msg.seen ?? false,
117
+ attachments: (msg.attachments || []).map((a) => ({
118
+ filename: a.filename || '',
119
+ size: a.size || undefined,
120
+ contentType: a.contentType || undefined,
121
+ downloadUrl: a.downloadUrl ? `${BASE_URL}${a.downloadUrl}` : undefined,
122
+ })),
123
+ };
124
+ }
125
+ /**
126
+ * 获取邮件列表
127
+ * 流程: GET /messages 获取列表 → 对每封邮件 GET /messages/{id} 获取详情(含 text/html)
128
+ */
129
+ async function getEmails(token, email) {
130
+ // 1. 获取邮件列表
131
+ const listResponse = await fetch(`${BASE_URL}/messages`, {
132
+ method: 'GET',
133
+ headers: {
134
+ ...DEFAULT_HEADERS,
135
+ 'Authorization': `Bearer ${token}`,
136
+ },
137
+ });
138
+ if (!listResponse.ok) {
139
+ throw new Error(`Failed to get emails: ${listResponse.status}`);
140
+ }
141
+ const listData = await listResponse.json();
142
+ /* 兼容 Hydra 格式和纯数组格式 */
143
+ const messages = Array.isArray(listData) ? listData : (listData['hydra:member'] || []);
144
+ if (messages.length === 0) {
145
+ return [];
146
+ }
147
+ // 2. 并行获取每封邮件的详情(含 text/html/attachments)
148
+ const detailPromises = messages.map(async (msg) => {
149
+ try {
150
+ const detailResponse = await fetch(`${BASE_URL}/messages/${msg.id}`, {
151
+ method: 'GET',
152
+ headers: {
153
+ ...DEFAULT_HEADERS,
154
+ 'Authorization': `Bearer ${token}`,
155
+ },
156
+ });
157
+ if (!detailResponse.ok) {
158
+ // 如果详情获取失败,退回使用列表数据
159
+ return flattenMessage(msg, email);
160
+ }
161
+ const detail = await detailResponse.json();
162
+ return flattenMessage(detail, email);
163
+ }
164
+ catch {
165
+ // 出错时退回使用列表数据
166
+ return flattenMessage(msg, email);
167
+ }
168
+ });
169
+ const flatMessages = await Promise.all(detailPromises);
170
+ return flatMessages.map((raw) => (0, normalize_1.normalizeEmail)(raw, email));
171
+ }
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbC10bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aWRlcnMvbWFpbC10bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTBGQSxzQ0F5QkM7QUE2QkQsOEJBZ0RDO0FBL0xELDRDQUE4QztBQUU5QyxNQUFNLE9BQU8sR0FBWSxTQUFTLENBQUM7QUFDbkMsTUFBTSxRQUFRLEdBQUcscUJBQXFCLENBQUM7QUFFdkMsTUFBTSxlQUFlLEdBQTJCO0lBQzlDLGNBQWMsRUFBRSxrQkFBa0I7SUFDbEMsUUFBUSxFQUFFLGtCQUFrQjtDQUM3QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxNQUFjO0lBQ2xDLE1BQU0sS0FBSyxHQUFHLHNDQUFzQyxDQUFDO0lBQ3JELElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7R0FHRztBQUNILEtBQUssVUFBVSxVQUFVO0lBQ3ZCLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsUUFBUSxVQUFVLEVBQUU7UUFDbEQsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUUsZUFBZTtLQUN6QixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxN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QUFHLFFBQVEsYUFBYSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUU7Z0JBQ25FLE1BQU0sRUFBRSxLQUFLO2dCQUNiLE9BQU8sRUFBRTtvQkFDUCxHQUFHLGVBQWU7b0JBQ2xCLGVBQWUsRUFBRSxVQUFVLEtBQUssRUFBRTtpQkFDbkM7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN2QixvQkFBb0I7Z0JBQ3BCLE9BQU8sY0FBYyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0MsT0FBTyxjQUFjLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxjQUFjO1lBQ2QsT0FBTyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sWUFBWSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2RCxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLElBQUEsMEJBQWMsRUFBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW1haWxJbmZvLCBFbWFpbCwgQ2hhbm5lbCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZUVtYWlsIH0gZnJvbSAnLi4vbm9ybWFsaXplJztcblxuY29uc3QgQ0hBTk5FTDogQ2hhbm5lbCA9ICdtYWlsLXRtJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vYXBpLm1haWwudG0nO1xuXG5jb25zdCBERUZBVUxUX0hFQURFUlM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicsXG59O1xuXG4vKipcbiAqIOeUn+aIkOmaj+acuuWtl+espuS4slxuICovXG5mdW5jdGlvbiByYW5kb21TdHJpbmcobGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBjaGFycyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xuICBsZXQgcmVzdWx0ID0gJyc7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICByZXN1bHQgKz0gY2hhcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKV07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiDojrflj5blj6/nlKjln5/lkI3liJfooahcbiAqIEFQSTogR0VUIC9kb21haW5zXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldERvbWFpbnMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9kb21haW5zYCwge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgaGVhZGVyczogREVGQVVMVF9IRUFERVJTLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2V0IGRvbWFpbnM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgLyog5YW85a655Lik56eN5ZON5bqU5qC85byP77yaXG4gICAqIC0gQWNjZXB0OiBhcHBsaWNhdGlvbi9sZCtqc29uIOKGkiBIeWRyYSDmoLzlvI8geyBcImh5ZHJhOm1lbWJlclwiOiBbLi4uXSB9XG4gICAqIC0gQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uICAg4oaSIOe6r+aVsOe7hCBbLi4uXVxuICAgKi9cbiAgY29uc3QgbWVtYmVycyA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogKGRhdGFbJ2h5ZHJhOm1lbWJlciddIHx8IFtdKTtcbiAgcmV0dXJuIG1lbWJlcnNcbiAgICAuZmlsdGVyKChkOiBhbnkpID0+IGQuaXNBY3RpdmUpXG4gICAgLm1hcCgoZDogYW55KSA9PiBkLmRvbWFpbik7XG59XG5cbi8qKlxuICog5Yib5bu66LSm5Y+3XG4gKiBBUEk6IFBPU1QgL2FjY291bnRzXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUFjY291bnQoYWRkcmVzczogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vYWNjb3VudHNgLCB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczogeyAuLi5ERUZBVUxUX0hFQURFUlMsICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vbGQranNvbicgfSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGFkZHJlc3MsIHBhc3N3b3JkIH0pLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgYWNjb3VudDogJHtyZXNwb25zZS5zdGF0dXN9ICR7dGV4dH1gKTtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZS5qc29uKCk7XG59XG5cbi8qKlxuICog6I635Y+WIEJlYXJlciBUb2tlblxuICogQVBJOiBQT1NUIC90b2tlblxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRUb2tlbihhZGRyZXNzOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS90b2tlbmAsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiBERUZBVUxUX0hFQURFUlMsXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBhZGRyZXNzLCBwYXNzd29yZCB9KSxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdldCB0b2tlbjogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICByZXR1cm4gZGF0YS50b2tlbjtcbn1cblxuLyoqXG4gKiDliJvlu7rkuLTml7bpgq7nrrFcbiAqIOa1geeoizog6I635Y+W5Z+f5ZCNIOKGkiDnlJ/miJDpmo/mnLrpgq7nrrEv5a+G56CBIOKGkiDliJvlu7rotKblj7cg4oaSIOiOt+WPliBUb2tlblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVFbWFpbCgpOiBQcm9taXNlPEVtYWlsSW5mbz4ge1xuICAvLyAxLiDojrflj5blj6/nlKjln5/lkI1cbiAgY29uc3QgZG9tYWlucyA9IGF3YWl0IGdldERvbWFpbnMoKTtcbiAgaWYgKGRvbWFpbnMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBhdmFpbGFibGUgZG9tYWlucycpO1xuICB9XG5cbiAgLy8gMi4g55Sf5oiQ6ZqP5py66YKu566x5ZKM5a+G56CBXG4gIGNvbnN0IGRvbWFpbiA9IGRvbWFpbnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogZG9tYWlucy5sZW5ndGgpXTtcbiAgY29uc3QgdXNlcm5hbWUgPSByYW5kb21TdHJpbmcoMTIpO1xuICBjb25zdCBhZGRyZXNzID0gYCR7dXNlcm5hbWV9QCR7ZG9tYWlufWA7XG4gIGNvbnN0IHBhc3N3b3JkID0gcmFuZG9tU3RyaW5nKDE2KTtcblxuICAvLyAzLiDliJvlu7rotKblj7dcbiAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGNyZWF0ZUFjY291bnQoYWRkcmVzcywgcGFzc3dvcmQpO1xuXG4gIC8vIDQuIOiOt+WPliBCZWFyZXIgVG9rZW5cbiAgY29uc3QgdG9rZW4gPSBhd2FpdCBnZXRUb2tlbihhZGRyZXNzLCBwYXNzd29yZCk7XG5cbiAgcmV0dXJuIHtcbiAgICBjaGFubmVsOiBDSEFOTkVMLFxuICAgIGVtYWlsOiBhZGRyZXNzLFxuICAgIHRva2VuOiB0b2tlbixcbiAgICBjcmVhdGVkQXQ6IGFjY291bnQuY3JlYXRlZEF0LFxuICB9O1xufVxuXG4vKipcbiAqIOWwhiBtYWlsLnRtIOeahOa2iOaBr+agvOW8j+aJgeW5s+WMluS4uiBub3JtYWxpemVFbWFpbCDlj6/lpITnkIbnmoTmoLzlvI9cbiAqIG1haWwudG0g55qEIGZyb20g5pivIHtuYW1lLCBhZGRyZXNzfSDlr7nosaHvvIx0byDmmK/mlbDnu4TvvIxodG1sIOaYr+Wtl+espuS4suaVsOe7hFxuICovXG5mdW5jdGlvbiBmbGF0dGVuTWVzc2FnZShtc2c6IGFueSwgcmVjaXBpZW50RW1haWw6IHN0cmluZyk6IGFueSB7XG4gIHJldHVybiB7XG4gICAgaWQ6IG1zZy5pZCB8fCAnJyxcbiAgICBmcm9tOiBtc2cuZnJvbT8uYWRkcmVzcyB8fCAnJyxcbiAgICB0bzogbXNnLnRvPy5bMF0/LmFkZHJlc3MgfHwgcmVjaXBpZW50RW1haWwsXG4gICAgc3ViamVjdDogbXNnLnN1YmplY3QgfHwgJycsXG4gICAgdGV4dDogbXNnLnRleHQgfHwgJycsXG4gICAgaHRtbDogQXJyYXkuaXNBcnJheShtc2cuaHRtbCkgPyBtc2cuaHRtbC5qb2luKCcnKSA6IChtc2cuaHRtbCB8fCAnJyksXG4gICAgY3JlYXRlZEF0OiBtc2cuY3JlYXRlZEF0IHx8ICcnLFxuICAgIHNlZW46IG1zZy5zZWVuID8/IGZhbHNlLFxuICAgIGF0dGFjaG1lbnRzOiAobXNnLmF0dGFjaG1lbnRzIHx8IFtdKS5tYXAoKGE6IGFueSkgPT4gKHtcbiAgICAgIGZpbGVuYW1lOiBhLmZpbGVuYW1lIHx8ICcnLFxuICAgICAgc2l6ZTogYS5zaXplIHx8IHVuZGVmaW5lZCxcbiAgICAgIGNvbnRlbnRUeXBlOiBhLmNvbnRlbnRUeXBlIHx8IHVuZGVmaW5lZCxcbiAgICAgIGRvd25sb2FkVXJsOiBhLmRvd25sb2FkVXJsID8gYCR7QkFTRV9VUkx9JHthLmRvd25sb2FkVXJsfWAgOiB1bmRlZmluZWQsXG4gICAgfSkpLFxuICB9O1xufVxuXG4vKipcbiAqIOiOt+WPlumCruS7tuWIl+ihqFxuICog5rWB56iLOiBHRVQgL21lc3NhZ2VzIOiOt+WPluWIl+ihqCDihpIg5a+55q+P5bCB6YKu5Lu2IEdFVCAvbWVzc2FnZXMve2lkfSDojrflj5bor6bmg4XvvIjlkKsgdGV4dC9odG1s77yJXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRFbWFpbHModG9rZW46IHN0cmluZywgZW1haWw6IHN0cmluZyk6IFByb21pc2U8RW1haWxbXT4ge1xuICAvLyAxLiDojrflj5bpgq7ku7bliJfooahcbiAgY29uc3QgbGlzdFJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L21lc3NhZ2VzYCwge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgaGVhZGVyczoge1xuICAgICAgLi4uREVGQVVMVF9IRUFERVJTLFxuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YCxcbiAgICB9LFxuICB9KTtcblxuICBpZiAoIWxpc3RSZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdldCBlbWFpbHM6ICR7bGlzdFJlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGxpc3REYXRhID0gYXdhaXQgbGlzdFJlc3BvbnNlLmpzb24oKTtcbiAgLyog5YW85a65IEh5ZHJhIOagvOW8j+WSjOe6r+aVsOe7hOagvOW8jyAqL1xuICBjb25zdCBtZXNzYWdlcyA9IEFycmF5LmlzQXJyYXkobGlzdERhdGEpID8gbGlzdERhdGEgOiAobGlzdERhdGFbJ2h5ZHJhOm1lbWJlciddIHx8IFtdKTtcblxuICBpZiAobWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gMi4g5bm26KGM6I635Y+W5q+P5bCB6YKu5Lu255qE6K+m5oOF77yI5ZCrIHRleHQvaHRtbC9hdHRhY2htZW50c++8iVxuICBjb25zdCBkZXRhaWxQcm9taXNlcyA9IG1lc3NhZ2VzLm1hcChhc3luYyAobXNnOiBhbnkpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGV0YWlsUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vbWVzc2FnZXMvJHttc2cuaWR9YCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgLi4uREVGQVVMVF9IRUFERVJTLFxuICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWAsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKCFkZXRhaWxSZXNwb25zZS5vaykge1xuICAgICAgICAvLyDlpoLmnpzor6bmg4Xojrflj5blpLHotKXvvIzpgIDlm57kvb/nlKjliJfooajmlbDmja5cbiAgICAgICAgcmV0dXJuIGZsYXR0ZW5NZXNzYWdlKG1zZywgZW1haWwpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkZXRhaWwgPSBhd2FpdCBkZXRhaWxSZXNwb25zZS5qc29uKCk7XG4gICAgICByZXR1cm4gZmxhdHRlbk1lc3NhZ2UoZGV0YWlsLCBlbWFpbCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyDlh7rplJnml7bpgIDlm57kvb/nlKjliJfooajmlbDmja5cbiAgICAgIHJldHVybiBmbGF0dGVuTWVzc2FnZShtc2csIGVtYWlsKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGZsYXRNZXNzYWdlcyA9IGF3YWl0IFByb21pc2UuYWxsKGRldGFpbFByb21pc2VzKTtcbiAgcmV0dXJuIGZsYXRNZXNzYWdlcy5tYXAoKHJhdzogYW55KSA9PiBub3JtYWxpemVFbWFpbChyYXcsIGVtYWlsKSk7XG59XG4iXX0=
@@ -0,0 +1,13 @@
1
+ import { EmailInfo, Email } from '../types';
2
+ /**
3
+ * 创建临时邮箱
4
+ * API: POST /api/v3/email/new
5
+ * 返回: { email, token }
6
+ */
7
+ export declare function generateEmail(): Promise<EmailInfo>;
8
+ /**
9
+ * 获取邮件列表
10
+ * API: GET /api/v3/email/{email}/messages
11
+ * 返回: [ { id, from, to, cc, subject, body_text, body_html, created_at, attachments } ]
12
+ */
13
+ export declare function getEmails(email: string): Promise<Email[]>;
@@ -0,0 +1,99 @@
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 CHANNEL = 'temp-mail-io';
7
+ const BASE_URL = 'https://api.internal.temp-mail.io/api/v3';
8
+ const PAGE_URL = 'https://temp-mail.io/en';
9
+ /**
10
+ * 缓存从页面动态获取的 mobileTestingHeader 值(用于 X-CORS-Header)
11
+ */
12
+ let cachedCorsHeader = null;
13
+ /**
14
+ * 从 temp-mail.io 页面的 __NUXT__ 运行时配置中提取 mobileTestingHeader
15
+ * 该值用于 API 请求的 X-CORS-Header 头,缺少此头会导致 400 错误
16
+ */
17
+ async function fetchCorsHeader() {
18
+ if (cachedCorsHeader)
19
+ return cachedCorsHeader;
20
+ try {
21
+ const response = await fetch(PAGE_URL, {
22
+ headers: {
23
+ '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
+ });
26
+ const html = await response.text();
27
+ const match = html.match(/mobileTestingHeader\s*:\s*"([^"]+)"/);
28
+ if (match) {
29
+ cachedCorsHeader = match[1];
30
+ return cachedCorsHeader;
31
+ }
32
+ }
33
+ catch {
34
+ /* 提取失败时使用默认值 */
35
+ }
36
+ cachedCorsHeader = '1';
37
+ return cachedCorsHeader;
38
+ }
39
+ /**
40
+ * 构建 API 请求头
41
+ * 关键头: Content-Type, Application-Name, Application-Version, X-CORS-Header
42
+ */
43
+ async function getApiHeaders() {
44
+ const corsHeader = await fetchCorsHeader();
45
+ return {
46
+ 'Content-Type': 'application/json',
47
+ 'Application-Name': 'web',
48
+ 'Application-Version': '4.0.0',
49
+ 'X-CORS-Header': corsHeader,
50
+ '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 Edg/144.0.0.0',
51
+ 'origin': 'https://temp-mail.io',
52
+ 'referer': 'https://temp-mail.io/',
53
+ };
54
+ }
55
+ /**
56
+ * 创建临时邮箱
57
+ * API: POST /api/v3/email/new
58
+ * 返回: { email, token }
59
+ */
60
+ async function generateEmail() {
61
+ const headers = await getApiHeaders();
62
+ const response = await fetch(`${BASE_URL}/email/new`, {
63
+ method: 'POST',
64
+ headers,
65
+ body: JSON.stringify({ min_name_length: 10, max_name_length: 10 }),
66
+ });
67
+ if (!response.ok) {
68
+ throw new Error(`Failed to generate email: ${response.status}`);
69
+ }
70
+ const data = await response.json();
71
+ if (!data.email || !data.token) {
72
+ throw new Error('Failed to generate email');
73
+ }
74
+ return {
75
+ channel: CHANNEL,
76
+ email: data.email,
77
+ token: data.token,
78
+ };
79
+ }
80
+ /**
81
+ * 获取邮件列表
82
+ * API: GET /api/v3/email/{email}/messages
83
+ * 返回: [ { id, from, to, cc, subject, body_text, body_html, created_at, attachments } ]
84
+ */
85
+ async function getEmails(email) {
86
+ const headers = await getApiHeaders();
87
+ const response = await fetch(`${BASE_URL}/email/${email}/messages`, {
88
+ method: 'GET',
89
+ headers,
90
+ });
91
+ if (!response.ok) {
92
+ throw new Error(`Failed to get emails: ${response.status}`);
93
+ }
94
+ const data = await response.json();
95
+ // API 直接返回邮件数组
96
+ const rawEmails = Array.isArray(data) ? data : [];
97
+ return rawEmails.map((raw) => (0, normalize_1.normalizeEmail)(raw, email));
98
+ }
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcC1tYWlsLWlvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90ZW1wLW1haWwtaW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE2REEsc0NBdUJDO0FBT0QsOEJBZ0JDO0FBMUdELDRDQUE4QztBQUU5QyxNQUFNLE9BQU8sR0FBWSxjQUFjLENBQUM7QUFDeEMsTUFBTSxRQUFRLEdBQUcsMENBQTBDLENBQUM7QUFDNUQsTUFBTSxRQUFRLEdBQUcseUJBQXlCLENBQUM7QUFFM0M7O0dBRUc7QUFDSCxJQUFJLGdCQUFnQixHQUFrQixJQUFJLENBQUM7QUFFM0M7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLGVBQWU7SUFDNUIsSUFBSSxnQkFBZ0I7UUFBRSxPQUFPLGdCQUFnQixDQUFDO0lBRTlDLElBQUksQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNyQyxPQUFPLEVBQUU7Z0JBQ1AsWUFBWSxFQUFFLGlIQUFpSDthQUNoSTtTQUNGLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUNoRSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLE9BQU8sZ0JBQWdCLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxnQkFBZ0I7SUFDbEIsQ0FBQztJQUVELGdCQUFnQixHQUFHLEdBQUcsQ0FBQztJQUN2QixPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxLQUFLLFVBQVUsYUFBYTtJQUMxQixNQUFNLFVBQVUsR0FBRyxNQUFNLGVBQWUsRUFBRSxDQUFDO0lBQzNDLE9BQU87UUFDTCxjQUFjLEVBQUUsa0JBQWtCO1FBQ2xDLGtCQUFrQixFQUFFLEtBQUs7UUFDekIscUJBQXFCLEVBQUUsT0FBTztRQUM5QixlQUFlLEVBQUUsVUFBVTtRQUMzQixZQUFZLEVBQUUsK0hBQStIO1FBQzdJLFFBQVEsRUFBRSxzQkFBc0I7UUFDaEMsU0FBUyxFQUFFLHVCQUF1QjtLQUNuQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsYUFBYTtJQUNqQyxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsRUFBRSxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsUUFBUSxZQUFZLEVBQUU7UUFDcEQsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPO1FBQ1AsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsQ0FBQztLQUNuRSxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO0tBQ2xCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxTQUFTLENBQUMsS0FBYTtJQUMzQyxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsRUFBRSxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsUUFBUSxVQUFVLEtBQUssV0FBVyxFQUFFO1FBQ2xFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsT0FBTztLQUNSLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRW5DLGVBQWU7SUFDZixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNsRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLElBQUEsMEJBQWMsRUFBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW1haWxJbmZvLCBFbWFpbCwgQ2hhbm5lbCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZUVtYWlsIH0gZnJvbSAnLi4vbm9ybWFsaXplJztcblxuY29uc3QgQ0hBTk5FTDogQ2hhbm5lbCA9ICd0ZW1wLW1haWwtaW8nO1xuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9hcGkuaW50ZXJuYWwudGVtcC1tYWlsLmlvL2FwaS92Myc7XG5jb25zdCBQQUdFX1VSTCA9ICdodHRwczovL3RlbXAtbWFpbC5pby9lbic7XG5cbi8qKlxuICog57yT5a2Y5LuO6aG16Z2i5Yqo5oCB6I635Y+W55qEIG1vYmlsZVRlc3RpbmdIZWFkZXIg5YC877yI55So5LqOIFgtQ09SUy1IZWFkZXLvvIlcbiAqL1xubGV0IGNhY2hlZENvcnNIZWFkZXI6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4vKipcbiAqIOS7jiB0ZW1wLW1haWwuaW8g6aG16Z2i55qEIF9fTlVYVF9fIOi/kOihjOaXtumFjee9ruS4reaPkOWPliBtb2JpbGVUZXN0aW5nSGVhZGVyXG4gKiDor6XlgLznlKjkuo4gQVBJIOivt+axgueahCBYLUNPUlMtSGVhZGVyIOWktO+8jOe8uuWwkeatpOWktOS8muWvvOiHtCA0MDAg6ZSZ6K+vXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQ29yc0hlYWRlcigpOiBQcm9taXNlPHN0cmluZz4ge1xuICBpZiAoY2FjaGVkQ29yc0hlYWRlcikgcmV0dXJuIGNhY2hlZENvcnNIZWFkZXI7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKFBBR0VfVVJMLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDQuMC4wLjAgU2FmYXJpLzUzNy4zNicsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGh0bWwgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgY29uc3QgbWF0Y2ggPSBodG1sLm1hdGNoKC9tb2JpbGVUZXN0aW5nSGVhZGVyXFxzKjpcXHMqXCIoW15cIl0rKVwiLyk7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBjYWNoZWRDb3JzSGVhZGVyID0gbWF0Y2hbMV07XG4gICAgICByZXR1cm4gY2FjaGVkQ29yc0hlYWRlcjtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8qIOaPkOWPluWksei0peaXtuS9v+eUqOm7mOiupOWAvCAqL1xuICB9XG5cbiAgY2FjaGVkQ29yc0hlYWRlciA9ICcxJztcbiAgcmV0dXJuIGNhY2hlZENvcnNIZWFkZXI7XG59XG5cbi8qKlxuICog5p6E5bu6IEFQSSDor7fmsYLlpLRcbiAqIOWFs+mUruWktDogQ29udGVudC1UeXBlLCBBcHBsaWNhdGlvbi1OYW1lLCBBcHBsaWNhdGlvbi1WZXJzaW9uLCBYLUNPUlMtSGVhZGVyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEFwaUhlYWRlcnMoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIGNvbnN0IGNvcnNIZWFkZXIgPSBhd2FpdCBmZXRjaENvcnNIZWFkZXIoKTtcbiAgcmV0dXJuIHtcbiAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICdBcHBsaWNhdGlvbi1OYW1lJzogJ3dlYicsXG4gICAgJ0FwcGxpY2F0aW9uLVZlcnNpb24nOiAnNC4wLjAnLFxuICAgICdYLUNPUlMtSGVhZGVyJzogY29yc0hlYWRlcixcbiAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTQ0LjAuMC4wIFNhZmFyaS81MzcuMzYgRWRnLzE0NC4wLjAuMCcsXG4gICAgJ29yaWdpbic6ICdodHRwczovL3RlbXAtbWFpbC5pbycsXG4gICAgJ3JlZmVyZXInOiAnaHR0cHM6Ly90ZW1wLW1haWwuaW8vJyxcbiAgfTtcbn1cblxuLyoqXG4gKiDliJvlu7rkuLTml7bpgq7nrrFcbiAqIEFQSTogUE9TVCAvYXBpL3YzL2VtYWlsL25ld1xuICog6L+U5ZueOiB7IGVtYWlsLCB0b2tlbiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKCk6IFByb21pc2U8RW1haWxJbmZvPiB7XG4gIGNvbnN0IGhlYWRlcnMgPSBhd2FpdCBnZXRBcGlIZWFkZXJzKCk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2VtYWlsL25ld2AsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzLFxuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgbWluX25hbWVfbGVuZ3RoOiAxMCwgbWF4X25hbWVfbGVuZ3RoOiAxMCB9KSxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG5cbiAgaWYgKCFkYXRhLmVtYWlsIHx8ICFkYXRhLnRva2VuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWwnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2hhbm5lbDogQ0hBTk5FTCxcbiAgICBlbWFpbDogZGF0YS5lbWFpbCxcbiAgICB0b2tlbjogZGF0YS50b2tlbixcbiAgfTtcbn1cblxuLyoqXG4gKiDojrflj5bpgq7ku7bliJfooahcbiAqIEFQSTogR0VUIC9hcGkvdjMvZW1haWwve2VtYWlsfS9tZXNzYWdlc1xuICog6L+U5ZueOiBbIHsgaWQsIGZyb20sIHRvLCBjYywgc3ViamVjdCwgYm9keV90ZXh0LCBib2R5X2h0bWwsIGNyZWF0ZWRfYXQsIGF0dGFjaG1lbnRzIH0gXVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RW1haWxzKGVtYWlsOiBzdHJpbmcpOiBQcm9taXNlPEVtYWlsW10+IHtcbiAgY29uc3QgaGVhZGVycyA9IGF3YWl0IGdldEFwaUhlYWRlcnMoKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vZW1haWwvJHtlbWFpbH0vbWVzc2FnZXNgLCB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2V0IGVtYWlsczogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gIC8vIEFQSSDnm7TmjqXov5Tlm57pgq7ku7bmlbDnu4RcbiAgY29uc3QgcmF3RW1haWxzID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEgOiBbXTtcbiAgcmV0dXJuIHJhd0VtYWlscy5tYXAoKHJhdzogYW55KSA9PiBub3JtYWxpemVFbWFpbChyYXcsIGVtYWlsKSk7XG59XG4iXX0=
@@ -0,0 +1,15 @@
1
+ import { EmailInfo, Email } from '../types';
2
+ /**
3
+ * 创建临时邮箱
4
+ * API: POST /api/mail/create
5
+ * 返回: { code: 0, data: { mailId, address, type, startAt, endAt } }
6
+ */
7
+ export declare function generateEmail(): Promise<EmailInfo>;
8
+ /**
9
+ * 获取邮件列表
10
+ * API: POST /api/mail/box
11
+ * 请求: { address, cursor }
12
+ * 返回: { code: 0, data: { rows: [...], cursor, hasMore } }
13
+ * 每封邮件: { mailboxId, messageFrom, subject, createdAt, html, attachments, read }
14
+ */
15
+ export declare function getEmails(email: string): Promise<Email[]>;
@@ -0,0 +1,89 @@
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 CHANNEL = 'tempmail-la';
7
+ const BASE_URL = 'https://tempmail.la/api';
8
+ const DEFAULT_HEADERS = {
9
+ '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 Edg/144.0.0.0',
10
+ 'Accept': 'application/json, text/plain, */*',
11
+ 'Content-Type': 'application/json',
12
+ 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
13
+ 'cache-control': 'no-cache',
14
+ 'dnt': '1',
15
+ 'locale': 'zh-CN',
16
+ 'origin': 'https://tempmail.la',
17
+ 'platform': 'PC',
18
+ 'pragma': 'no-cache',
19
+ 'product': 'TEMP_MAIL',
20
+ 'referer': 'https://tempmail.la/zh-CN/tempmail',
21
+ 'sec-ch-ua': '"Not(A:Brand";v="8", "Chromium";v="144", "Microsoft Edge";v="144"',
22
+ 'sec-ch-ua-mobile': '?0',
23
+ 'sec-ch-ua-platform': '"Windows"',
24
+ 'sec-fetch-dest': 'empty',
25
+ 'sec-fetch-mode': 'cors',
26
+ 'sec-fetch-site': 'same-origin',
27
+ };
28
+ /**
29
+ * 创建临时邮箱
30
+ * API: POST /api/mail/create
31
+ * 返回: { code: 0, data: { mailId, address, type, startAt, endAt } }
32
+ */
33
+ async function generateEmail() {
34
+ const response = await fetch(`${BASE_URL}/mail/create`, {
35
+ method: 'POST',
36
+ headers: DEFAULT_HEADERS,
37
+ body: JSON.stringify({ turnstile: '' }),
38
+ });
39
+ if (!response.ok) {
40
+ throw new Error(`Failed to generate email: ${response.status}`);
41
+ }
42
+ const data = await response.json();
43
+ if (data.code !== 0 || !data.data) {
44
+ throw new Error('Failed to generate email');
45
+ }
46
+ return {
47
+ channel: CHANNEL,
48
+ email: data.data.address,
49
+ expiresAt: data.data.endAt,
50
+ createdAt: data.data.startAt,
51
+ };
52
+ }
53
+ /**
54
+ * 获取邮件列表
55
+ * API: POST /api/mail/box
56
+ * 请求: { address, cursor }
57
+ * 返回: { code: 0, data: { rows: [...], cursor, hasMore } }
58
+ * 每封邮件: { mailboxId, messageFrom, subject, createdAt, html, attachments, read }
59
+ */
60
+ async function getEmails(email) {
61
+ const allEmails = [];
62
+ let cursor = null;
63
+ let hasMore = true;
64
+ // 支持分页,循环获取所有邮件
65
+ while (hasMore) {
66
+ const response = await fetch(`${BASE_URL}/mail/box`, {
67
+ method: 'POST',
68
+ headers: DEFAULT_HEADERS,
69
+ body: JSON.stringify({ address: email, cursor }),
70
+ });
71
+ if (!response.ok) {
72
+ throw new Error(`Failed to get emails: ${response.status}`);
73
+ }
74
+ const data = await response.json();
75
+ if (data.code !== 0 || !data.data) {
76
+ throw new Error('Failed to get emails');
77
+ }
78
+ const rows = data.data.rows || [];
79
+ allEmails.push(...rows);
80
+ if (data.data.hasMore && data.data.cursor) {
81
+ cursor = data.data.cursor;
82
+ }
83
+ else {
84
+ hasMore = false;
85
+ }
86
+ }
87
+ return allEmails.map((raw) => (0, normalize_1.normalizeEmail)(raw, email));
88
+ }
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWwtbGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL3RlbXBtYWlsLWxhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0NBLHNDQXVCQztBQVNELDhCQWtDQztBQWpHRCw0Q0FBOEM7QUFFOUMsTUFBTSxPQUFPLEdBQVksYUFBYSxDQUFDO0FBQ3ZDLE1BQU0sUUFBUSxHQUFHLHlCQUF5QixDQUFDO0FBRTNDLE1BQU0sZUFBZSxHQUEyQjtJQUM5QyxZQUFZLEVBQUUsK0hBQStIO0lBQzdJLFFBQVEsRUFBRSxtQ0FBbUM7SUFDN0MsY0FBYyxFQUFFLGtCQUFrQjtJQUNsQyxpQkFBaUIsRUFBRSxpREFBaUQ7SUFDcEUsZUFBZSxFQUFFLFVBQVU7SUFDM0IsS0FBSyxFQUFFLEdBQUc7SUFDVixRQUFRLEVBQUUsT0FBTztJQUNqQixRQUFRLEVBQUUscUJBQXFCO0lBQy9CLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFNBQVMsRUFBRSxvQ0FBb0M7SUFDL0MsV0FBVyxFQUFFLG1FQUFtRTtJQUNoRixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLG9CQUFvQixFQUFFLFdBQVc7SUFDakMsZ0JBQWdCLEVBQUUsT0FBTztJQUN6QixnQkFBZ0IsRUFBRSxNQUFNO0lBQ3hCLGdCQUFnQixFQUFFLGFBQWE7Q0FDaEMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsYUFBYTtJQUNqQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLFFBQVEsY0FBYyxFQUFFO1FBQ3RELE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFLGVBQWU7UUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7S0FDeEMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1FBQ3hCLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7UUFDMUIsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztLQUM3QixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNJLEtBQUssVUFBVSxTQUFTLENBQUMsS0FBYTtJQUMzQyxNQUFNLFNBQVMsR0FBVSxFQUFFLENBQUM7SUFDNUIsSUFBSSxNQUFNLEdBQWtCLElBQUksQ0FBQztJQUNqQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFFbkIsZ0JBQWdCO0lBQ2hCLE9BQU8sT0FBTyxFQUFFLENBQUM7UUFDZixNQUFNLFFBQVEsR0FBYSxNQUFNLEtBQUssQ0FBQyxHQUFHLFFBQVEsV0FBVyxFQUFFO1lBQzdELE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1NBQ2pELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFRLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXhDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbEMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFBLDBCQUFjLEVBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVtYWlsSW5mbywgRW1haWwsIENoYW5uZWwgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVFbWFpbCB9IGZyb20gJy4uL25vcm1hbGl6ZSc7XG5cbmNvbnN0IENIQU5ORUw6IENoYW5uZWwgPSAndGVtcG1haWwtbGEnO1xuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly90ZW1wbWFpbC5sYS9hcGknO1xuXG5jb25zdCBERUZBVUxUX0hFQURFUlM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDQuMC4wLjAgU2FmYXJpLzUzNy4zNiBFZGcvMTQ0LjAuMC4wJyxcbiAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonLFxuICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAnYWNjZXB0LWxhbmd1YWdlJzogJ3poLUNOLHpoO3E9MC45LGVuO3E9MC44LGVuLUdCO3E9MC43LGVuLVVTO3E9MC42JyxcbiAgJ2NhY2hlLWNvbnRyb2wnOiAnbm8tY2FjaGUnLFxuICAnZG50JzogJzEnLFxuICAnbG9jYWxlJzogJ3poLUNOJyxcbiAgJ29yaWdpbic6ICdodHRwczovL3RlbXBtYWlsLmxhJyxcbiAgJ3BsYXRmb3JtJzogJ1BDJyxcbiAgJ3ByYWdtYSc6ICduby1jYWNoZScsXG4gICdwcm9kdWN0JzogJ1RFTVBfTUFJTCcsXG4gICdyZWZlcmVyJzogJ2h0dHBzOi8vdGVtcG1haWwubGEvemgtQ04vdGVtcG1haWwnLFxuICAnc2VjLWNoLXVhJzogJ1wiTm90KEE6QnJhbmRcIjt2PVwiOFwiLCBcIkNocm9taXVtXCI7dj1cIjE0NFwiLCBcIk1pY3Jvc29mdCBFZGdlXCI7dj1cIjE0NFwiJyxcbiAgJ3NlYy1jaC11YS1tb2JpbGUnOiAnPzAnLFxuICAnc2VjLWNoLXVhLXBsYXRmb3JtJzogJ1wiV2luZG93c1wiJyxcbiAgJ3NlYy1mZXRjaC1kZXN0JzogJ2VtcHR5JyxcbiAgJ3NlYy1mZXRjaC1tb2RlJzogJ2NvcnMnLFxuICAnc2VjLWZldGNoLXNpdGUnOiAnc2FtZS1vcmlnaW4nLFxufTtcblxuLyoqXG4gKiDliJvlu7rkuLTml7bpgq7nrrFcbiAqIEFQSTogUE9TVCAvYXBpL21haWwvY3JlYXRlXG4gKiDov5Tlm546IHsgY29kZTogMCwgZGF0YTogeyBtYWlsSWQsIGFkZHJlc3MsIHR5cGUsIHN0YXJ0QXQsIGVuZEF0IH0gfVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVFbWFpbCgpOiBQcm9taXNlPEVtYWlsSW5mbz4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9tYWlsL2NyZWF0ZWAsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiBERUZBVUxUX0hFQURFUlMsXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyB0dXJuc3RpbGU6ICcnIH0pLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWw6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICBpZiAoZGF0YS5jb2RlICE9PSAwIHx8ICFkYXRhLmRhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBnZW5lcmF0ZSBlbWFpbCcpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjaGFubmVsOiBDSEFOTkVMLFxuICAgIGVtYWlsOiBkYXRhLmRhdGEuYWRkcmVzcyxcbiAgICBleHBpcmVzQXQ6IGRhdGEuZGF0YS5lbmRBdCxcbiAgICBjcmVhdGVkQXQ6IGRhdGEuZGF0YS5zdGFydEF0LFxuICB9O1xufVxuXG4vKipcbiAqIOiOt+WPlumCruS7tuWIl+ihqFxuICogQVBJOiBQT1NUIC9hcGkvbWFpbC9ib3hcbiAqIOivt+axgjogeyBhZGRyZXNzLCBjdXJzb3IgfVxuICog6L+U5ZueOiB7IGNvZGU6IDAsIGRhdGE6IHsgcm93czogWy4uLl0sIGN1cnNvciwgaGFzTW9yZSB9IH1cbiAqIOavj+WwgemCruS7tjogeyBtYWlsYm94SWQsIG1lc3NhZ2VGcm9tLCBzdWJqZWN0LCBjcmVhdGVkQXQsIGh0bWwsIGF0dGFjaG1lbnRzLCByZWFkIH1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyhlbWFpbDogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIGNvbnN0IGFsbEVtYWlsczogYW55W10gPSBbXTtcbiAgbGV0IGN1cnNvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGxldCBoYXNNb3JlID0gdHJ1ZTtcblxuICAvLyDmlK/mjIHliIbpobXvvIzlvqrnjq/ojrflj5bmiYDmnInpgq7ku7ZcbiAgd2hpbGUgKGhhc01vcmUpIHtcbiAgICBjb25zdCByZXNwb25zZTogUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vbWFpbC9ib3hgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgYWRkcmVzczogZW1haWwsIGN1cnNvciB9KSxcbiAgICB9KTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdldCBlbWFpbHM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGE6IGFueSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAgIGlmIChkYXRhLmNvZGUgIT09IDAgfHwgIWRhdGEuZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2V0IGVtYWlscycpO1xuICAgIH1cblxuICAgIGNvbnN0IHJvd3MgPSBkYXRhLmRhdGEucm93cyB8fCBbXTtcbiAgICBhbGxFbWFpbHMucHVzaCguLi5yb3dzKTtcblxuICAgIGlmIChkYXRhLmRhdGEuaGFzTW9yZSAmJiBkYXRhLmRhdGEuY3Vyc29yKSB7XG4gICAgICBjdXJzb3IgPSBkYXRhLmRhdGEuY3Vyc29yO1xuICAgIH0gZWxzZSB7XG4gICAgICBoYXNNb3JlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFsbEVtYWlscy5tYXAoKHJhdzogYW55KSA9PiBub3JtYWxpemVFbWFpbChyYXcsIGVtYWlsKSk7XG59XG4iXX0=
@@ -1,3 +1,3 @@
1
1
  import { EmailInfo, Email } from '../types';
2
2
  export declare function generateEmail(domain?: string | null): Promise<EmailInfo>;
3
- export declare function getEmails(token: string): Promise<Email[]>;
3
+ export declare function getEmails(token: string, recipientEmail?: string): Promise<Email[]>;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateEmail = generateEmail;
4
4
  exports.getEmails = getEmails;
5
+ const normalize_1 = require("../normalize");
5
6
  const CHANNEL = 'tempmail-lol';
6
7
  const BASE_URL = 'https://api.tempmail.lol/v2';
7
8
  const DEFAULT_HEADERS = {
@@ -32,7 +33,7 @@ async function generateEmail(domain = null) {
32
33
  token: data.token,
33
34
  };
34
35
  }
35
- async function getEmails(token) {
36
+ async function getEmails(token, recipientEmail = '') {
36
37
  const response = await fetch(`${BASE_URL}/inbox?token=${encodeURIComponent(token)}`, {
37
38
  method: 'GET',
38
39
  headers: DEFAULT_HEADERS,
@@ -41,6 +42,7 @@ async function getEmails(token) {
41
42
  throw new Error(`Failed to get emails: ${response.status}`);
42
43
  }
43
44
  const data = await response.json();
44
- return data.emails || [];
45
+ const rawEmails = data.emails || [];
46
+ return rawEmails.map((raw) => (0, normalize_1.normalizeEmail)(raw, recipientEmail));
45
47
  }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWwtbG9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90ZW1wbWFpbC1sb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFlQSxzQ0FzQkM7QUFFRCw4QkFhQztBQWxERCxNQUFNLE9BQU8sR0FBWSxjQUFjLENBQUM7QUFDeEMsTUFBTSxRQUFRLEdBQUcsNkJBQTZCLENBQUM7QUFFL0MsTUFBTSxlQUFlLEdBQUc7SUFDdEIsWUFBWSxFQUFFLGlIQUFpSDtJQUMvSCxjQUFjLEVBQUUsa0JBQWtCO0lBQ2xDLFFBQVEsRUFBRSxzQkFBc0I7SUFDaEMsV0FBVyxFQUFFLG9FQUFvRTtJQUNqRixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLG9CQUFvQixFQUFFLFdBQVc7SUFDakMsS0FBSyxFQUFFLEdBQUc7Q0FDWCxDQUFDO0FBRUssS0FBSyxVQUFVLGFBQWEsQ0FBQyxTQUF3QixJQUFJO0lBQzlELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsUUFBUSxlQUFlLEVBQUU7UUFDdkQsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPLEVBQUUsZUFBZTtRQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7S0FDaEQsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztLQUNsQixDQUFDO0FBQ0osQ0FBQztBQUVNLEtBQUssVUFBVSxTQUFTLENBQUMsS0FBYTtJQUMzQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLFFBQVEsZ0JBQWdCLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUU7UUFDbkYsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUUsZUFBZTtLQUN6QixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbWFpbEluZm8sIEVtYWlsLCBDaGFubmVsIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBDSEFOTkVMOiBDaGFubmVsID0gJ3RlbXBtYWlsLWxvbCc7XG5jb25zdCBCQVNFX1VSTCA9ICdodHRwczovL2FwaS50ZW1wbWFpbC5sb2wvdjInO1xuXG5jb25zdCBERUZBVUxUX0hFQURFUlMgPSB7XG4gICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDMuMC4wLjAgU2FmYXJpLzUzNy4zNicsXG4gICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICdPcmlnaW4nOiAnaHR0cHM6Ly90ZW1wbWFpbC5sb2wnLFxuICAnc2VjLWNoLXVhJzogJ1wiTWljcm9zb2Z0IEVkZ2VcIjt2PVwiMTQzXCIsIFwiQ2hyb21pdW1cIjt2PVwiMTQzXCIsIFwiTm90IEEoQnJhbmRcIjt2PVwiMjRcIicsXG4gICdzZWMtY2gtdWEtbW9iaWxlJzogJz8wJyxcbiAgJ3NlYy1jaC11YS1wbGF0Zm9ybSc6ICdcIldpbmRvd3NcIicsXG4gICdETlQnOiAnMScsXG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVFbWFpbChkb21haW46IHN0cmluZyB8IG51bGwgPSBudWxsKTogUHJvbWlzZTxFbWFpbEluZm8+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vaW5ib3gvY3JlYXRlYCwge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGRvbWFpbiwgY2FwdGNoYTogbnVsbCB9KSxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gIFxuICBpZiAoIWRhdGEuYWRkcmVzcyB8fCAhZGF0YS50b2tlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoYW5uZWw6IENIQU5ORUwsXG4gICAgZW1haWw6IGRhdGEuYWRkcmVzcyxcbiAgICB0b2tlbjogZGF0YS50b2tlbixcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyh0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2luYm94P3Rva2VuPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRva2VuKX1gLCB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzOiBERUZBVUxUX0hFQURFUlMsXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgZW1haWxzOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gIFxuICByZXR1cm4gZGF0YS5lbWFpbHMgfHwgW107XG59XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWwtbG9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90ZW1wbWFpbC1sb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsc0NBc0JDO0FBRUQsOEJBY0M7QUFyREQsNENBQThDO0FBRTlDLE1BQU0sT0FBTyxHQUFZLGNBQWMsQ0FBQztBQUN4QyxNQUFNLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQztBQUUvQyxNQUFNLGVBQWUsR0FBRztJQUN0QixZQUFZLEVBQUUsaUhBQWlIO0lBQy9ILGNBQWMsRUFBRSxrQkFBa0I7SUFDbEMsUUFBUSxFQUFFLHNCQUFzQjtJQUNoQyxXQUFXLEVBQUUsb0VBQW9FO0lBQ2pGLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsb0JBQW9CLEVBQUUsV0FBVztJQUNqQyxLQUFLLEVBQUUsR0FBRztDQUNYLENBQUM7QUFFSyxLQUFLLFVBQVUsYUFBYSxDQUFDLFNBQXdCLElBQUk7SUFDOUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLGVBQWUsRUFBRTtRQUN2RCxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUNoRCxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO0tBQ2xCLENBQUM7QUFDSixDQUFDO0FBRU0sS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFhLEVBQUUsaUJBQXlCLEVBQUU7SUFDeEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLGdCQUFnQixrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQ25GLE1BQU0sRUFBRSxLQUFLO1FBQ2IsT0FBTyxFQUFFLGVBQWU7S0FDekIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDcEMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFBLDBCQUFjLEVBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVtYWlsSW5mbywgRW1haWwsIENoYW5uZWwgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVFbWFpbCB9IGZyb20gJy4uL25vcm1hbGl6ZSc7XG5cbmNvbnN0IENIQU5ORUw6IENoYW5uZWwgPSAndGVtcG1haWwtbG9sJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vYXBpLnRlbXBtYWlsLmxvbC92Mic7XG5cbmNvbnN0IERFRkFVTFRfSEVBREVSUyA9IHtcbiAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzE0My4wLjAuMCBTYWZhcmkvNTM3LjM2JyxcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgJ09yaWdpbic6ICdodHRwczovL3RlbXBtYWlsLmxvbCcsXG4gICdzZWMtY2gtdWEnOiAnXCJNaWNyb3NvZnQgRWRnZVwiO3Y9XCIxNDNcIiwgXCJDaHJvbWl1bVwiO3Y9XCIxNDNcIiwgXCJOb3QgQShCcmFuZFwiO3Y9XCIyNFwiJyxcbiAgJ3NlYy1jaC11YS1tb2JpbGUnOiAnPzAnLFxuICAnc2VjLWNoLXVhLXBsYXRmb3JtJzogJ1wiV2luZG93c1wiJyxcbiAgJ0ROVCc6ICcxJyxcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKGRvbWFpbjogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiBQcm9taXNlPEVtYWlsSW5mbz4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9pbmJveC9jcmVhdGVgLCB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczogREVGQVVMVF9IRUFERVJTLFxuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZG9tYWluLCBjYXB0Y2hhOiBudWxsIH0pLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWw6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgXG4gIGlmICghZGF0YS5hZGRyZXNzIHx8ICFkYXRhLnRva2VuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWwnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2hhbm5lbDogQ0hBTk5FTCxcbiAgICBlbWFpbDogZGF0YS5hZGRyZXNzLFxuICAgIHRva2VuOiBkYXRhLnRva2VuLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RW1haWxzKHRva2VuOiBzdHJpbmcsIHJlY2lwaWVudEVtYWlsOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8RW1haWxbXT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9pbmJveD90b2tlbj0ke2VuY29kZVVSSUNvbXBvbmVudCh0b2tlbil9YCwge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgaGVhZGVyczogREVGQVVMVF9IRUFERVJTLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2V0IGVtYWlsczogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICBcbiAgY29uc3QgcmF3RW1haWxzID0gZGF0YS5lbWFpbHMgfHwgW107XG4gIHJldHVybiByYXdFbWFpbHMubWFwKChyYXc6IGFueSkgPT4gbm9ybWFsaXplRW1haWwocmF3LCByZWNpcGllbnRFbWFpbCkpO1xufVxuIl19
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateEmail = generateEmail;
4
4
  exports.getEmails = getEmails;
5
+ const normalize_1 = require("../normalize");
5
6
  const CHANNEL = 'tempmail';
6
7
  const BASE_URL = 'https://api.tempmail.ing/api';
7
8
  const DEFAULT_HEADERS = {
@@ -46,6 +47,7 @@ async function getEmails(email) {
46
47
  if (!data.success) {
47
48
  throw new Error('Failed to get emails');
48
49
  }
49
- return data.emails || [];
50
+ const rawEmails = data.emails || [];
51
+ return rawEmails.map((raw) => (0, normalize_1.normalizeEmail)(raw, email));
50
52
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL3RlbXBtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZUEsc0NBdUJDO0FBRUQsOEJBa0JDO0FBeERELE1BQU0sT0FBTyxHQUFZLFVBQVUsQ0FBQztBQUNwQyxNQUFNLFFBQVEsR0FBRyw4QkFBOEIsQ0FBQztBQUVoRCxNQUFNLGVBQWUsR0FBRztJQUN0QixZQUFZLEVBQUUsaUhBQWlIO0lBQy9ILGNBQWMsRUFBRSxrQkFBa0I7SUFDbEMsU0FBUyxFQUFFLHVCQUF1QjtJQUNsQyxXQUFXLEVBQUUsb0VBQW9FO0lBQ2pGLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsb0JBQW9CLEVBQUUsV0FBVztJQUNqQyxLQUFLLEVBQUUsR0FBRztDQUNYLENBQUM7QUFFSyxLQUFLLFVBQVUsYUFBYSxDQUFDLFdBQW1CLEVBQUU7SUFDdkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLFdBQVcsRUFBRTtRQUNuRCxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7S0FDbkMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO1FBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7UUFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztLQUNoQyxDQUFDO0FBQ0osQ0FBQztBQUVNLEtBQUssVUFBVSxTQUFTLENBQUMsS0FBYTtJQUMzQyxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLFFBQVEsV0FBVyxZQUFZLEVBQUUsRUFBRTtRQUNqRSxNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRSxlQUFlO0tBQ3pCLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRW5DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbWFpbEluZm8sIEVtYWlsLCBDaGFubmVsIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBDSEFOTkVMOiBDaGFubmVsID0gJ3RlbXBtYWlsJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vYXBpLnRlbXBtYWlsLmluZy9hcGknO1xuXG5jb25zdCBERUZBVUxUX0hFQURFUlMgPSB7XG4gICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDMuMC4wLjAgU2FmYXJpLzUzNy4zNicsXG4gICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICdSZWZlcmVyJzogJ2h0dHBzOi8vdGVtcG1haWwuaW5nLycsXG4gICdzZWMtY2gtdWEnOiAnXCJNaWNyb3NvZnQgRWRnZVwiO3Y9XCIxNDNcIiwgXCJDaHJvbWl1bVwiO3Y9XCIxNDNcIiwgXCJOb3QgQShCcmFuZFwiO3Y9XCIyNFwiJyxcbiAgJ3NlYy1jaC11YS1tb2JpbGUnOiAnPzAnLFxuICAnc2VjLWNoLXVhLXBsYXRmb3JtJzogJ1wiV2luZG93c1wiJyxcbiAgJ0ROVCc6ICcxJyxcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKGR1cmF0aW9uOiBudW1iZXIgPSAzMCk6IFByb21pc2U8RW1haWxJbmZvPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2dlbmVyYXRlYCwge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGR1cmF0aW9uIH0pLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWw6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgXG4gIGlmICghZGF0YS5zdWNjZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWwnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2hhbm5lbDogQ0hBTk5FTCxcbiAgICBlbWFpbDogZGF0YS5lbWFpbC5hZGRyZXNzLFxuICAgIGV4cGlyZXNBdDogZGF0YS5lbWFpbC5leHBpcmVzQXQsXG4gICAgY3JlYXRlZEF0OiBkYXRhLmVtYWlsLmNyZWF0ZWRBdCxcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyhlbWFpbDogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIGNvbnN0IGVuY29kZWRFbWFpbCA9IGVuY29kZVVSSUNvbXBvbmVudChlbWFpbCk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2VtYWlscy8ke2VuY29kZWRFbWFpbH1gLCB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzOiBERUZBVUxUX0hFQURFUlMsXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgZW1haWxzOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gIFxuICBpZiAoIWRhdGEuc3VjY2Vzcykge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdldCBlbWFpbHMnKTtcbiAgfVxuXG4gIHJldHVybiBkYXRhLmVtYWlscyB8fCBbXTtcbn1cbiJdfQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL3RlbXBtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0JBLHNDQXVCQztBQUVELDhCQW1CQztBQTNERCw0Q0FBOEM7QUFFOUMsTUFBTSxPQUFPLEdBQVksVUFBVSxDQUFDO0FBQ3BDLE1BQU0sUUFBUSxHQUFHLDhCQUE4QixDQUFDO0FBRWhELE1BQU0sZUFBZSxHQUFHO0lBQ3RCLFlBQVksRUFBRSxpSEFBaUg7SUFDL0gsY0FBYyxFQUFFLGtCQUFrQjtJQUNsQyxTQUFTLEVBQUUsdUJBQXVCO0lBQ2xDLFdBQVcsRUFBRSxvRUFBb0U7SUFDakYsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixvQkFBb0IsRUFBRSxXQUFXO0lBQ2pDLEtBQUssRUFBRSxHQUFHO0NBQ1gsQ0FBQztBQUVLLEtBQUssVUFBVSxhQUFhLENBQUMsV0FBbUIsRUFBRTtJQUN2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLFFBQVEsV0FBVyxFQUFFO1FBQ25ELE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFLGVBQWU7UUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQztLQUNuQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87UUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztRQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO0tBQ2hDLENBQUM7QUFDSixDQUFDO0FBRU0sS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFhO0lBQzNDLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsUUFBUSxXQUFXLFlBQVksRUFBRSxFQUFFO1FBQ2pFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsT0FBTyxFQUFFLGVBQWU7S0FDekIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3BDLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsSUFBQSwwQkFBYyxFQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbWFpbEluZm8sIEVtYWlsLCBDaGFubmVsIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplRW1haWwgfSBmcm9tICcuLi9ub3JtYWxpemUnO1xuXG5jb25zdCBDSEFOTkVMOiBDaGFubmVsID0gJ3RlbXBtYWlsJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vYXBpLnRlbXBtYWlsLmluZy9hcGknO1xuXG5jb25zdCBERUZBVUxUX0hFQURFUlMgPSB7XG4gICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDMuMC4wLjAgU2FmYXJpLzUzNy4zNicsXG4gICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICdSZWZlcmVyJzogJ2h0dHBzOi8vdGVtcG1haWwuaW5nLycsXG4gICdzZWMtY2gtdWEnOiAnXCJNaWNyb3NvZnQgRWRnZVwiO3Y9XCIxNDNcIiwgXCJDaHJvbWl1bVwiO3Y9XCIxNDNcIiwgXCJOb3QgQShCcmFuZFwiO3Y9XCIyNFwiJyxcbiAgJ3NlYy1jaC11YS1tb2JpbGUnOiAnPzAnLFxuICAnc2VjLWNoLXVhLXBsYXRmb3JtJzogJ1wiV2luZG93c1wiJyxcbiAgJ0ROVCc6ICcxJyxcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKGR1cmF0aW9uOiBudW1iZXIgPSAzMCk6IFByb21pc2U8RW1haWxJbmZvPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2dlbmVyYXRlYCwge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGR1cmF0aW9uIH0pLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWw6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgXG4gIGlmICghZGF0YS5zdWNjZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWwnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2hhbm5lbDogQ0hBTk5FTCxcbiAgICBlbWFpbDogZGF0YS5lbWFpbC5hZGRyZXNzLFxuICAgIGV4cGlyZXNBdDogZGF0YS5lbWFpbC5leHBpcmVzQXQsXG4gICAgY3JlYXRlZEF0OiBkYXRhLmVtYWlsLmNyZWF0ZWRBdCxcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyhlbWFpbDogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIGNvbnN0IGVuY29kZWRFbWFpbCA9IGVuY29kZVVSSUNvbXBvbmVudChlbWFpbCk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2VtYWlscy8ke2VuY29kZWRFbWFpbH1gLCB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzOiBERUZBVUxUX0hFQURFUlMsXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgZW1haWxzOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gIFxuICBpZiAoIWRhdGEuc3VjY2Vzcykge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdldCBlbWFpbHMnKTtcbiAgfVxuXG4gIGNvbnN0IHJhd0VtYWlscyA9IGRhdGEuZW1haWxzIHx8IFtdO1xuICByZXR1cm4gcmF3RW1haWxzLm1hcCgocmF3OiBhbnkpID0+IG5vcm1hbGl6ZUVtYWlsKHJhdywgZW1haWwpKTtcbn1cbiJdfQ==
@@ -0,0 +1,38 @@
1
+ /**
2
+ * 通用重试工具
3
+ * 提供请求重试、超时控制、指数退避等错误恢复机制
4
+ */
5
+ /**
6
+ * 重试配置选项
7
+ */
8
+ export interface RetryOptions {
9
+ /** 最大重试次数(不含首次请求),默认 2 */
10
+ maxRetries?: number;
11
+ /** 初始重试延迟(毫秒),默认 1000 */
12
+ initialDelay?: number;
13
+ /** 最大重试延迟(毫秒),默认 5000 */
14
+ maxDelay?: number;
15
+ /** 请求超时时间(毫秒),默认 15000 */
16
+ timeout?: number;
17
+ /** 是否对该错误进行重试的判断函数 */
18
+ shouldRetry?: (error: any) => boolean;
19
+ }
20
+ /**
21
+ * 带重试的异步操作执行器
22
+ * - 自动重试可恢复的错误(网络错误、超时、5xx)
23
+ * - 指数退避避免过度请求
24
+ * - 不可恢复的错误(4xx 参数错误等)直接抛出不重试
25
+ *
26
+ * @param fn 要执行的异步操作
27
+ * @param options 重试配置
28
+ */
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
+ export declare function fetchWithTimeout(url: string, init?: RequestInit, timeoutMs?: number): Promise<Response>;