tempmail-sdk 1.0.1 → 1.0.2

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.
@@ -0,0 +1,69 @@
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 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
+ 'Content-Type': 'application/json',
11
+ 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
12
+ 'application-name': 'web',
13
+ 'application-version': '4.0.0',
14
+ 'cache-control': 'no-cache',
15
+ 'dnt': '1',
16
+ 'origin': 'https://temp-mail.io',
17
+ 'pragma': 'no-cache',
18
+ 'referer': 'https://temp-mail.io/',
19
+ 'sec-ch-ua': '"Not(A:Brand";v="8", "Chromium";v="144", "Microsoft Edge";v="144"',
20
+ 'sec-ch-ua-mobile': '?0',
21
+ 'sec-ch-ua-platform': '"Windows"',
22
+ 'sec-fetch-dest': 'empty',
23
+ 'sec-fetch-mode': 'cors',
24
+ 'sec-fetch-site': 'same-site',
25
+ };
26
+ /**
27
+ * 创建临时邮箱
28
+ * API: POST /api/v3/email/new
29
+ * 返回: { email, token }
30
+ */
31
+ async function generateEmail() {
32
+ const response = await fetch(`${BASE_URL}/email/new`, {
33
+ method: 'POST',
34
+ headers: DEFAULT_HEADERS,
35
+ body: JSON.stringify({ min_name_length: 100, max_name_length: 100 }),
36
+ });
37
+ if (!response.ok) {
38
+ throw new Error(`Failed to generate email: ${response.status}`);
39
+ }
40
+ const data = await response.json();
41
+ if (!data.email || !data.token) {
42
+ throw new Error('Failed to generate email');
43
+ }
44
+ return {
45
+ channel: CHANNEL,
46
+ email: data.email,
47
+ token: data.token,
48
+ };
49
+ }
50
+ /**
51
+ * 获取邮件列表
52
+ * API: GET /api/v3/email/{email}/messages
53
+ * 返回: [ { id, from, to, cc, subject, body_text, body_html, created_at, attachments } ]
54
+ */
55
+ async function getEmails(email) {
56
+ const encodedEmail = encodeURIComponent(email);
57
+ const response = await fetch(`${BASE_URL}/email/${encodedEmail}/messages`, {
58
+ method: 'GET',
59
+ headers: DEFAULT_HEADERS,
60
+ });
61
+ if (!response.ok) {
62
+ throw new Error(`Failed to get emails: ${response.status}`);
63
+ }
64
+ const data = await response.json();
65
+ // API 直接返回邮件数组
66
+ const rawEmails = Array.isArray(data) ? data : [];
67
+ return rawEmails.map((raw) => (0, normalize_1.normalizeEmail)(raw, email));
68
+ }
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcC1tYWlsLWlvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90ZW1wLW1haWwtaW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE4QkEsc0NBc0JDO0FBT0QsOEJBZ0JDO0FBMUVELDRDQUE4QztBQUU5QyxNQUFNLE9BQU8sR0FBWSxjQUFjLENBQUM7QUFDeEMsTUFBTSxRQUFRLEdBQUcsMENBQTBDLENBQUM7QUFFNUQsTUFBTSxlQUFlLEdBQTJCO0lBQzlDLFlBQVksRUFBRSwrSEFBK0g7SUFDN0ksY0FBYyxFQUFFLGtCQUFrQjtJQUNsQyxpQkFBaUIsRUFBRSxpREFBaUQ7SUFDcEUsa0JBQWtCLEVBQUUsS0FBSztJQUN6QixxQkFBcUIsRUFBRSxPQUFPO0lBQzlCLGVBQWUsRUFBRSxVQUFVO0lBQzNCLEtBQUssRUFBRSxHQUFHO0lBQ1YsUUFBUSxFQUFFLHNCQUFzQjtJQUNoQyxRQUFRLEVBQUUsVUFBVTtJQUNwQixTQUFTLEVBQUUsdUJBQXVCO0lBQ2xDLFdBQVcsRUFBRSxtRUFBbUU7SUFDaEYsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixvQkFBb0IsRUFBRSxXQUFXO0lBQ2pDLGdCQUFnQixFQUFFLE9BQU87SUFDekIsZ0JBQWdCLEVBQUUsTUFBTTtJQUN4QixnQkFBZ0IsRUFBRSxXQUFXO0NBQzlCLENBQUM7QUFFRjs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLGFBQWE7SUFDakMsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLFlBQVksRUFBRTtRQUNwRCxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLENBQUM7S0FDckUsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztLQUNsQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsU0FBUyxDQUFDLEtBQWE7SUFDM0MsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLFVBQVUsWUFBWSxXQUFXLEVBQUU7UUFDekUsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUUsZUFBZTtLQUN6QixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxlQUFlO0lBQ2YsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbEQsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFBLDBCQUFjLEVBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVtYWlsSW5mbywgRW1haWwsIENoYW5uZWwgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVFbWFpbCB9IGZyb20gJy4uL25vcm1hbGl6ZSc7XG5cbmNvbnN0IENIQU5ORUw6IENoYW5uZWwgPSAndGVtcC1tYWlsLWlvJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vYXBpLmludGVybmFsLnRlbXAtbWFpbC5pby9hcGkvdjMnO1xuXG5jb25zdCBERUZBVUxUX0hFQURFUlM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDQuMC4wLjAgU2FmYXJpLzUzNy4zNiBFZGcvMTQ0LjAuMC4wJyxcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgJ2FjY2VwdC1sYW5ndWFnZSc6ICd6aC1DTix6aDtxPTAuOSxlbjtxPTAuOCxlbi1HQjtxPTAuNyxlbi1VUztxPTAuNicsXG4gICdhcHBsaWNhdGlvbi1uYW1lJzogJ3dlYicsXG4gICdhcHBsaWNhdGlvbi12ZXJzaW9uJzogJzQuMC4wJyxcbiAgJ2NhY2hlLWNvbnRyb2wnOiAnbm8tY2FjaGUnLFxuICAnZG50JzogJzEnLFxuICAnb3JpZ2luJzogJ2h0dHBzOi8vdGVtcC1tYWlsLmlvJyxcbiAgJ3ByYWdtYSc6ICduby1jYWNoZScsXG4gICdyZWZlcmVyJzogJ2h0dHBzOi8vdGVtcC1tYWlsLmlvLycsXG4gICdzZWMtY2gtdWEnOiAnXCJOb3QoQTpCcmFuZFwiO3Y9XCI4XCIsIFwiQ2hyb21pdW1cIjt2PVwiMTQ0XCIsIFwiTWljcm9zb2Z0IEVkZ2VcIjt2PVwiMTQ0XCInLFxuICAnc2VjLWNoLXVhLW1vYmlsZSc6ICc/MCcsXG4gICdzZWMtY2gtdWEtcGxhdGZvcm0nOiAnXCJXaW5kb3dzXCInLFxuICAnc2VjLWZldGNoLWRlc3QnOiAnZW1wdHknLFxuICAnc2VjLWZldGNoLW1vZGUnOiAnY29ycycsXG4gICdzZWMtZmV0Y2gtc2l0ZSc6ICdzYW1lLXNpdGUnLFxufTtcblxuLyoqXG4gKiDliJvlu7rkuLTml7bpgq7nrrFcbiAqIEFQSTogUE9TVCAvYXBpL3YzL2VtYWlsL25ld1xuICog6L+U5ZueOiB7IGVtYWlsLCB0b2tlbiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKCk6IFByb21pc2U8RW1haWxJbmZvPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2VtYWlsL25ld2AsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiBERUZBVUxUX0hFQURFUlMsXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBtaW5fbmFtZV9sZW5ndGg6IDEwMCwgbWF4X25hbWVfbGVuZ3RoOiAxMDAgfSksXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZW5lcmF0ZSBlbWFpbDogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gIGlmICghZGF0YS5lbWFpbCB8fCAhZGF0YS50b2tlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoYW5uZWw6IENIQU5ORUwsXG4gICAgZW1haWw6IGRhdGEuZW1haWwsXG4gICAgdG9rZW46IGRhdGEudG9rZW4sXG4gIH07XG59XG5cbi8qKlxuICog6I635Y+W6YKu5Lu25YiX6KGoXG4gKiBBUEk6IEdFVCAvYXBpL3YzL2VtYWlsL3tlbWFpbH0vbWVzc2FnZXNcbiAqIOi/lOWbnjogWyB7IGlkLCBmcm9tLCB0bywgY2MsIHN1YmplY3QsIGJvZHlfdGV4dCwgYm9keV9odG1sLCBjcmVhdGVkX2F0LCBhdHRhY2htZW50cyB9IF1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyhlbWFpbDogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIGNvbnN0IGVuY29kZWRFbWFpbCA9IGVuY29kZVVSSUNvbXBvbmVudChlbWFpbCk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2VtYWlsLyR7ZW5jb2RlZEVtYWlsfS9tZXNzYWdlc2AsIHtcbiAgICBtZXRob2Q6ICdHRVQnLFxuICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdldCBlbWFpbHM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAvLyBBUEkg55u05o6l6L+U5Zue6YKu5Lu25pWw57uEXG4gIGNvbnN0IHJhd0VtYWlscyA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogW107XG4gIHJldHVybiByYXdFbWFpbHMubWFwKChyYXc6IGFueSkgPT4gbm9ybWFsaXplRW1haWwocmF3LCBlbWFpbCkpO1xufVxuIl19
@@ -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==
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type Channel = 'tempmail' | 'linshi-email' | 'tempmail-lol' | 'chatgpt-org-uk';
1
+ export type Channel = 'tempmail' | 'linshi-email' | 'tempmail-lol' | 'chatgpt-org-uk' | 'tempmail-la' | 'temp-mail-io' | 'awamail' | 'mail-tm' | 'dropmail';
2
2
  export interface EmailInfo {
3
3
  channel: Channel;
4
4
  email: string;
@@ -6,34 +6,37 @@ export interface EmailInfo {
6
6
  expiresAt?: string | number;
7
7
  createdAt?: string;
8
8
  }
9
+ /**
10
+ * 标准化邮件附件
11
+ */
12
+ export interface EmailAttachment {
13
+ filename: string;
14
+ size?: number;
15
+ contentType?: string;
16
+ url?: string;
17
+ }
18
+ /**
19
+ * 标准化邮件格式 - 所有提供商返回统一结构
20
+ */
9
21
  export interface Email {
10
- id?: string | number;
11
- eid?: string;
12
- _id?: string;
13
- from?: string;
14
- from_address?: string;
15
- from_name?: string;
16
- address_from?: string;
17
- name_from?: string;
18
- to?: string;
19
- name_to?: string;
20
- email_address?: string;
21
- subject?: string;
22
- e_subject?: string;
23
- body?: string;
24
- text?: string;
25
- content?: string;
26
- html?: string;
27
- html_content?: string;
28
- date?: string | number;
29
- e_date?: number;
30
- timestamp?: number;
31
- received_at?: string;
32
- created_at?: string;
33
- createdAt?: string;
34
- is_read?: number;
35
- has_html?: boolean;
36
- [key: string]: any;
22
+ /** 邮件唯一标识 */
23
+ id: string;
24
+ /** 发件人邮箱地址 */
25
+ from: string;
26
+ /** 收件人邮箱地址 */
27
+ to: string;
28
+ /** 邮件主题 */
29
+ subject: string;
30
+ /** 纯文本内容 */
31
+ text: string;
32
+ /** HTML 内容 */
33
+ html: string;
34
+ /** ISO 8601 格式的日期字符串 */
35
+ date: string;
36
+ /** 是否已读 */
37
+ isRead: boolean;
38
+ /** 附件列表 */
39
+ attachments: EmailAttachment[];
37
40
  }
38
41
  export interface GetEmailsResult {
39
42
  channel: Channel;
package/dist/types.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIENoYW5uZWwgPSAndGVtcG1haWwnIHwgJ2xpbnNoaS1lbWFpbCcgfCAndGVtcG1haWwtbG9sJyB8ICdjaGF0Z3B0LW9yZy11ayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1haWxJbmZvIHtcbiAgY2hhbm5lbDogQ2hhbm5lbDtcbiAgZW1haWw6IHN0cmluZztcbiAgdG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyZXNBdD86IHN0cmluZyB8IG51bWJlcjtcbiAgY3JlYXRlZEF0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsIHtcbiAgaWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIGVpZD86IHN0cmluZztcbiAgX2lkPzogc3RyaW5nO1xuICBmcm9tPzogc3RyaW5nO1xuICBmcm9tX2FkZHJlc3M/OiBzdHJpbmc7XG4gIGZyb21fbmFtZT86IHN0cmluZztcbiAgYWRkcmVzc19mcm9tPzogc3RyaW5nO1xuICBuYW1lX2Zyb20/OiBzdHJpbmc7XG4gIHRvPzogc3RyaW5nO1xuICBuYW1lX3RvPzogc3RyaW5nO1xuICBlbWFpbF9hZGRyZXNzPzogc3RyaW5nO1xuICBzdWJqZWN0Pzogc3RyaW5nO1xuICBlX3N1YmplY3Q/OiBzdHJpbmc7XG4gIGJvZHk/OiBzdHJpbmc7XG4gIHRleHQ/OiBzdHJpbmc7XG4gIGNvbnRlbnQ/OiBzdHJpbmc7XG4gIGh0bWw/OiBzdHJpbmc7XG4gIGh0bWxfY29udGVudD86IHN0cmluZztcbiAgZGF0ZT86IHN0cmluZyB8IG51bWJlcjtcbiAgZV9kYXRlPzogbnVtYmVyO1xuICB0aW1lc3RhbXA/OiBudW1iZXI7XG4gIHJlY2VpdmVkX2F0Pzogc3RyaW5nO1xuICBjcmVhdGVkX2F0Pzogc3RyaW5nO1xuICBjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gIGlzX3JlYWQ/OiBudW1iZXI7XG4gIGhhc19odG1sPzogYm9vbGVhbjtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldEVtYWlsc1Jlc3VsdCB7XG4gIGNoYW5uZWw6IENoYW5uZWw7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGVtYWlsczogRW1haWxbXTtcbiAgc3VjY2VzczogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZUVtYWlsT3B0aW9ucyB7XG4gIGNoYW5uZWw/OiBDaGFubmVsO1xuICBkdXJhdGlvbj86IG51bWJlcjtcbiAgZG9tYWluPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRFbWFpbHNPcHRpb25zIHtcbiAgY2hhbm5lbDogQ2hhbm5lbDtcbiAgZW1haWw6IHN0cmluZztcbiAgdG9rZW4/OiBzdHJpbmc7XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIENoYW5uZWwgPSAndGVtcG1haWwnIHwgJ2xpbnNoaS1lbWFpbCcgfCAndGVtcG1haWwtbG9sJyB8ICdjaGF0Z3B0LW9yZy11aycgfCAndGVtcG1haWwtbGEnIHwgJ3RlbXAtbWFpbC1pbycgfCAnYXdhbWFpbCcgfCAnbWFpbC10bScgfCAnZHJvcG1haWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsSW5mbyB7XG4gIGNoYW5uZWw6IENoYW5uZWw7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHRva2VuPzogc3RyaW5nO1xuICBleHBpcmVzQXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbn1cblxuLyoqXG4gKiDmoIflh4bljJbpgq7ku7bpmYTku7ZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWFpbEF0dGFjaG1lbnQge1xuICBmaWxlbmFtZTogc3RyaW5nO1xuICBzaXplPzogbnVtYmVyO1xuICBjb250ZW50VHlwZT86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIOagh+WHhuWMlumCruS7tuagvOW8jyAtIOaJgOacieaPkOS+m+WVhui/lOWbnue7n+S4gOe7k+aehFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsIHtcbiAgLyoqIOmCruS7tuWUr+S4gOagh+ivhiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiog5Y+R5Lu25Lq66YKu566x5Zyw5Z2AICovXG4gIGZyb206IHN0cmluZztcbiAgLyoqIOaUtuS7tuS6uumCrueuseWcsOWdgCAqL1xuICB0bzogc3RyaW5nO1xuICAvKiog6YKu5Lu25Li76aKYICovXG4gIHN1YmplY3Q6IHN0cmluZztcbiAgLyoqIOe6r+aWh+acrOWGheWuuSAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBIVE1MIOWGheWuuSAqL1xuICBodG1sOiBzdHJpbmc7XG4gIC8qKiBJU08gODYwMSDmoLzlvI/nmoTml6XmnJ/lrZfnrKbkuLIgKi9cbiAgZGF0ZTogc3RyaW5nO1xuICAvKiog5piv5ZCm5bey6K+7ICovXG4gIGlzUmVhZDogYm9vbGVhbjtcbiAgLyoqIOmZhOS7tuWIl+ihqCAqL1xuICBhdHRhY2htZW50czogRW1haWxBdHRhY2htZW50W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RW1haWxzUmVzdWx0IHtcbiAgY2hhbm5lbDogQ2hhbm5lbDtcbiAgZW1haWw6IHN0cmluZztcbiAgZW1haWxzOiBFbWFpbFtdO1xuICBzdWNjZXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlRW1haWxPcHRpb25zIHtcbiAgY2hhbm5lbD86IENoYW5uZWw7XG4gIGR1cmF0aW9uPzogbnVtYmVyO1xuICBkb21haW4/OiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldEVtYWlsc09wdGlvbnMge1xuICBjaGFubmVsOiBDaGFubmVsO1xuICBlbWFpbDogc3RyaW5nO1xuICB0b2tlbj86IHN0cmluZztcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tempmail-sdk",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "临时邮箱 SDK - 支持多个临时邮箱服务商",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/index.ts CHANGED
@@ -2,18 +2,29 @@ import * as tempmail from './providers/tempmail';
2
2
  import * as linshiEmail from './providers/linshi-email';
3
3
  import * as tempmailLol from './providers/tempmail-lol';
4
4
  import * as chatgptOrgUk from './providers/chatgpt-org-uk';
5
- import { Channel, EmailInfo, Email, GetEmailsResult, GenerateEmailOptions, GetEmailsOptions } from './types';
5
+ import * as tempmailLa from './providers/tempmail-la';
6
+ import * as tempMailIO from './providers/temp-mail-io';
7
+ import * as awamail from './providers/awamail';
8
+ import * as mailTm from './providers/mail-tm';
9
+ import * as dropmail from './providers/dropmail';
10
+ import { Channel, EmailInfo, Email, EmailAttachment, GetEmailsResult, GenerateEmailOptions, GetEmailsOptions } from './types';
6
11
 
7
- export { Channel, EmailInfo, Email, GetEmailsResult, GenerateEmailOptions, GetEmailsOptions } from './types';
12
+ export { Channel, EmailInfo, Email, EmailAttachment, GetEmailsResult, GenerateEmailOptions, GetEmailsOptions } from './types';
13
+ export { normalizeEmail } from './normalize';
8
14
 
9
15
  const providers = {
10
16
  'tempmail': tempmail,
11
17
  'linshi-email': linshiEmail,
12
18
  'tempmail-lol': tempmailLol,
13
19
  'chatgpt-org-uk': chatgptOrgUk,
20
+ 'tempmail-la': tempmailLa,
21
+ 'temp-mail-io': tempMailIO,
22
+ 'awamail': awamail,
23
+ 'mail-tm': mailTm,
24
+ 'dropmail': dropmail,
14
25
  };
15
26
 
16
- const allChannels: Channel[] = ['tempmail', 'linshi-email', 'tempmail-lol', 'chatgpt-org-uk'];
27
+ const allChannels: Channel[] = ['tempmail', 'linshi-email', 'tempmail-lol', 'chatgpt-org-uk', 'tempmail-la', 'temp-mail-io', 'awamail', 'mail-tm', 'dropmail'];
17
28
 
18
29
  export interface ChannelInfo {
19
30
  channel: Channel;
@@ -26,6 +37,11 @@ const channelInfoMap: Record<Channel, ChannelInfo> = {
26
37
  'linshi-email': { channel: 'linshi-email', name: '临时邮箱', website: 'linshi-email.com' },
27
38
  'tempmail-lol': { channel: 'tempmail-lol', name: 'TempMail LOL', website: 'tempmail.lol' },
28
39
  'chatgpt-org-uk': { channel: 'chatgpt-org-uk', name: 'ChatGPT Mail', website: 'mail.chatgpt.org.uk' },
40
+ 'tempmail-la': { channel: 'tempmail-la', name: 'TempMail LA', website: 'tempmail.la' },
41
+ 'temp-mail-io': { channel: 'temp-mail-io', name: 'Temp Mail IO', website: 'temp-mail.io' },
42
+ 'awamail': { channel: 'awamail', name: 'AwaMail', website: 'awamail.com' },
43
+ 'mail-tm': { channel: 'mail-tm', name: 'Mail.tm', website: 'mail.tm' },
44
+ 'dropmail': { channel: 'dropmail', name: 'DropMail', website: 'dropmail.me' },
29
45
  };
30
46
 
31
47
  /**
@@ -54,6 +70,16 @@ export async function generateEmail(options: GenerateEmailOptions = {}): Promise
54
70
  return tempmailLol.generateEmail(options.domain || null);
55
71
  case 'chatgpt-org-uk':
56
72
  return chatgptOrgUk.generateEmail();
73
+ case 'tempmail-la':
74
+ return tempmailLa.generateEmail();
75
+ case 'temp-mail-io':
76
+ return tempMailIO.generateEmail();
77
+ case 'awamail':
78
+ return awamail.generateEmail();
79
+ case 'mail-tm':
80
+ return mailTm.generateEmail();
81
+ case 'dropmail':
82
+ return dropmail.generateEmail();
57
83
  default:
58
84
  throw new Error(`Unknown channel: ${channel}`);
59
85
  }
@@ -82,11 +108,35 @@ export async function getEmails(options: GetEmailsOptions): Promise<GetEmailsRes
82
108
  if (!token) {
83
109
  throw new Error('Token is required for tempmail-lol channel');
84
110
  }
85
- emails = await tempmailLol.getEmails(token);
111
+ emails = await tempmailLol.getEmails(token, email);
86
112
  break;
87
113
  case 'chatgpt-org-uk':
88
114
  emails = await chatgptOrgUk.getEmails(email);
89
115
  break;
116
+ case 'tempmail-la':
117
+ emails = await tempmailLa.getEmails(email);
118
+ break;
119
+ case 'temp-mail-io':
120
+ emails = await tempMailIO.getEmails(email);
121
+ break;
122
+ case 'awamail':
123
+ if (!token) {
124
+ throw new Error('Token is required for awamail channel');
125
+ }
126
+ emails = await awamail.getEmails(token, email);
127
+ break;
128
+ case 'mail-tm':
129
+ if (!token) {
130
+ throw new Error('Token is required for mail-tm channel');
131
+ }
132
+ emails = await mailTm.getEmails(token, email);
133
+ break;
134
+ case 'dropmail':
135
+ if (!token) {
136
+ throw new Error('Token is required for dropmail channel');
137
+ }
138
+ emails = await dropmail.getEmails(token, email);
139
+ break;
90
140
  default:
91
141
  throw new Error(`Unknown channel: ${channel}`);
92
142
  }
@@ -0,0 +1,80 @@
1
+ import { Email, EmailAttachment } from './types';
2
+
3
+ /**
4
+ * 将各提供商返回的原始邮件数据标准化为统一的 Email 格式
5
+ */
6
+ export function normalizeEmail(raw: any, recipientEmail: string = ''): Email {
7
+ return {
8
+ id: normalizeId(raw),
9
+ from: normalizeFrom(raw),
10
+ to: normalizeTo(raw, recipientEmail),
11
+ subject: normalizeSubject(raw),
12
+ text: normalizeText(raw),
13
+ html: normalizeHtml(raw),
14
+ date: normalizeDate(raw),
15
+ isRead: normalizeIsRead(raw),
16
+ attachments: normalizeAttachments(raw.attachments),
17
+ };
18
+ }
19
+
20
+ function normalizeId(raw: any): string {
21
+ const id = raw.id ?? raw.eid ?? raw._id ?? raw.mailboxId ?? raw.messageId ?? raw.mail_id ?? '';
22
+ return String(id);
23
+ }
24
+
25
+ function normalizeFrom(raw: any): string {
26
+ return raw.from_address || raw.address_from || raw.from || raw.messageFrom || raw.sender || '';
27
+ }
28
+
29
+ function normalizeTo(raw: any, recipientEmail: string): string {
30
+ return raw.to || raw.to_address || raw.name_to || raw.email_address || raw.address || recipientEmail || '';
31
+ }
32
+
33
+ function normalizeSubject(raw: any): string {
34
+ return raw.subject || raw.e_subject || '';
35
+ }
36
+
37
+ function normalizeText(raw: any): string {
38
+ return raw.text || raw.body || raw.content || raw.body_text || raw.text_content || '';
39
+ }
40
+
41
+ function normalizeHtml(raw: any): string {
42
+ return raw.html || raw.html_content || raw.body_html || '';
43
+ }
44
+
45
+ function normalizeDate(raw: any): string {
46
+ try {
47
+ if (raw.received_at) return new Date(raw.received_at).toISOString();
48
+ if (raw.created_at) return new Date(raw.created_at).toISOString();
49
+ if (raw.createdAt) return new Date(raw.createdAt).toISOString();
50
+ if (raw.date) {
51
+ if (typeof raw.date === 'number') return new Date(raw.date).toISOString();
52
+ return new Date(raw.date).toISOString();
53
+ }
54
+ if (raw.timestamp) return new Date(raw.timestamp * 1000).toISOString();
55
+ if (raw.e_date) return new Date(raw.e_date).toISOString();
56
+ } catch {
57
+ // 日期解析失败,返回空字符串
58
+ }
59
+ return '';
60
+ }
61
+
62
+ function normalizeIsRead(raw: any): boolean {
63
+ if (typeof raw.seen === 'boolean') return raw.seen;
64
+ if (typeof raw.read === 'boolean') return raw.read;
65
+ if (typeof raw.isRead === 'boolean') return raw.isRead;
66
+ if (typeof raw.is_read === 'number') return raw.is_read === 1;
67
+ if (typeof raw.is_read === 'string') return raw.is_read === '1';
68
+ if (typeof raw.is_read === 'boolean') return raw.is_read;
69
+ return false;
70
+ }
71
+
72
+ function normalizeAttachments(attachments: any): EmailAttachment[] {
73
+ if (!attachments || !Array.isArray(attachments)) return [];
74
+ return attachments.map((a: any) => ({
75
+ filename: a.filename || a.name || '',
76
+ size: a.size || a.filesize || undefined,
77
+ contentType: a.contentType || a.content_type || a.mimeType || a.mime_type || undefined,
78
+ url: a.url || a.download_url || a.downloadUrl || undefined,
79
+ }));
80
+ }