@fluxmail/core 0.21.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/errors.d.ts +2 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +15 -3
- package/dist/errors.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.generated.d.ts.map +1 -1
- package/dist/mcp/tools.generated.js +72 -4
- package/dist/mcp/tools.generated.js.map +1 -1
- package/dist/mcp/tools.js +6 -3
- package/dist/mcp/tools.js.map +1 -1
- package/dist/provider.d.ts +7 -0
- package/dist/provider.d.ts.map +1 -1
- package/dist/quotedHtml.d.ts +12 -0
- package/dist/quotedHtml.d.ts.map +1 -0
- package/dist/quotedHtml.js +324 -0
- package/dist/quotedHtml.js.map +1 -0
- package/dist/reply.d.ts +44 -3
- package/dist/reply.d.ts.map +1 -1
- package/dist/reply.js +277 -13
- package/dist/reply.js.map +1 -1
- package/package.json +4 -1
package/dist/reply.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { sanitizeQuotedHtml } from './quotedHtml.js';
|
|
2
|
+
import { htmlToReadableText } from './searchContext.js';
|
|
1
3
|
function sameAddress(a, b) {
|
|
2
4
|
return a.email.trim().toLowerCase() === b.email.trim().toLowerCase();
|
|
3
5
|
}
|
|
@@ -63,28 +65,290 @@ export function selectReplySender(original, identities) {
|
|
|
63
65
|
function escapeHtml(s) {
|
|
64
66
|
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
65
67
|
}
|
|
66
|
-
/**
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
68
|
+
/** An address as Gmail writes it in a forwarded message's header: "Ann <ann@example.com>" or "<ann@example.com>". */
|
|
69
|
+
function headerAddress(address) {
|
|
70
|
+
return address.name ? `${address.name} <${address.email}>` : `<${address.email}>`;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The body of a forward, as Gmail writes one: an optional comment, a "Forwarded message" header
|
|
74
|
+
* with the original's sender, date, subject and recipients, then the original's text and sanitized
|
|
75
|
+
* HTML.
|
|
76
|
+
*/
|
|
77
|
+
export function buildForwardBody(original, comment, options = {}) {
|
|
78
|
+
const list = (addresses) => addresses.map(headerAddress).join(', ');
|
|
79
|
+
const from = original.from;
|
|
80
|
+
const fields = [
|
|
81
|
+
['From', from ? headerAddress(from) : '(unknown sender)'],
|
|
82
|
+
['Date', replyDate(original, options.timeZone)],
|
|
83
|
+
['Subject', original.subject],
|
|
84
|
+
['To', list(original.to)],
|
|
85
|
+
...(original.cc?.length ? [['Cc', list(original.cc)]] : []),
|
|
86
|
+
];
|
|
87
|
+
const divider = '---------- Forwarded message ---------';
|
|
76
88
|
const body = {};
|
|
77
89
|
const originalText = original.body?.text;
|
|
78
90
|
const originalHtml = original.body?.html;
|
|
79
91
|
if (originalText !== undefined || originalHtml === undefined) {
|
|
80
|
-
|
|
92
|
+
const header = [divider, ...fields.map(([name, value]) => `${name}: ${value}`)].join('\n');
|
|
93
|
+
body.text = [comment, header, originalText ?? '']
|
|
94
|
+
.filter((part) => part !== undefined)
|
|
95
|
+
.join('\n\n')
|
|
96
|
+
.trimEnd();
|
|
81
97
|
}
|
|
82
98
|
if (originalHtml !== undefined) {
|
|
83
|
-
|
|
99
|
+
// Gmail shows the sender's name in bold.
|
|
100
|
+
const htmlValue = (name, value) => name === 'From' && from?.name
|
|
101
|
+
? `<strong>${escapeHtml(from.name)}</strong> ${escapeHtml(`<${from.email}>`)}`
|
|
102
|
+
: escapeHtml(value);
|
|
103
|
+
const header = [divider, ...fields.map(([name, value]) => `${name}: ${htmlValue(name, value)}`)].join('<br>');
|
|
84
104
|
body.html =
|
|
85
105
|
(comment ? `<p>${escapeHtml(comment)}</p>` : '') +
|
|
86
|
-
`<
|
|
106
|
+
`<div class="fluxmail_forward"><div>${header}</div><br>${sanitizeQuotedHtml(originalHtml) ?? textAsHtml(originalText ?? readableText(originalHtml))}</div>`;
|
|
87
107
|
}
|
|
88
108
|
return body;
|
|
89
109
|
}
|
|
110
|
+
/** Whether `timeZone` is an IANA time zone name the runtime can format dates in. */
|
|
111
|
+
export function isValidTimeZone(timeZone) {
|
|
112
|
+
try {
|
|
113
|
+
new Intl.DateTimeFormat('en-US', { timeZone });
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Zones that are UTC under another name. The line says "UTC" for them, as it does when no zone is set.
|
|
121
|
+
const UTC_ZONES = /^(?:Etc\/)?(?:UTC|UCT|Universal|Zulu|Greenwich|GMT(?:[+-]?0)?)$/i;
|
|
122
|
+
/**
|
|
123
|
+
* "Tue, Nov 3, 2026 at 10:26 PM" in the reader's time zone, as Gmail writes it. In UTC, or without a
|
|
124
|
+
* usable time zone, the time is in UTC and says so.
|
|
125
|
+
*/
|
|
126
|
+
function replyDate(original, timeZone) {
|
|
127
|
+
const date = new Date(original.date);
|
|
128
|
+
if (Number.isNaN(date.getTime()))
|
|
129
|
+
return original.date;
|
|
130
|
+
const zone = timeZone && isValidTimeZone(timeZone) && !UTC_ZONES.test(timeZone) ? timeZone : undefined;
|
|
131
|
+
const parts = Object.fromEntries(new Intl.DateTimeFormat('en-US', {
|
|
132
|
+
timeZone: zone ?? 'UTC',
|
|
133
|
+
weekday: 'short',
|
|
134
|
+
year: 'numeric',
|
|
135
|
+
month: 'short',
|
|
136
|
+
day: 'numeric',
|
|
137
|
+
hour: 'numeric',
|
|
138
|
+
minute: '2-digit',
|
|
139
|
+
hour12: true,
|
|
140
|
+
})
|
|
141
|
+
.formatToParts(date)
|
|
142
|
+
.map((part) => [part.type, part.value]));
|
|
143
|
+
return (`${parts.weekday}, ${parts.month} ${parts.day}, ${parts.year} at ` +
|
|
144
|
+
`${parts.hour}:${parts.minute} ${String(parts.dayPeriod).toUpperCase()}${zone ? '' : ' UTC'}`);
|
|
145
|
+
}
|
|
146
|
+
function senderLabel(original) {
|
|
147
|
+
return original.from ? formatAddress(original.from) : '(unknown sender)';
|
|
148
|
+
}
|
|
149
|
+
function quoteText(text) {
|
|
150
|
+
return text
|
|
151
|
+
.replace(/\r\n?/g, '\n')
|
|
152
|
+
.replace(/[\t ]+$/gm, '')
|
|
153
|
+
.replace(/\n{3,}/g, '\n\n')
|
|
154
|
+
.trim()
|
|
155
|
+
.split('\n')
|
|
156
|
+
.map((line) => (line ? `> ${line}` : '>'))
|
|
157
|
+
.join('\n');
|
|
158
|
+
}
|
|
159
|
+
function readableText(html) {
|
|
160
|
+
return htmlToReadableText(html)
|
|
161
|
+
.split('\n')
|
|
162
|
+
.map((line) => line.replace(/[\t ]+/g, ' ').trim())
|
|
163
|
+
.join('\n');
|
|
164
|
+
}
|
|
165
|
+
function textAsHtml(text) {
|
|
166
|
+
return escapeHtml(text.replace(/\r\n?/g, '\n').trim()).replace(/\n/g, '<br>');
|
|
167
|
+
}
|
|
168
|
+
/** Plain text as HTML paragraphs: blank lines separate paragraphs, and other line breaks stay. */
|
|
169
|
+
function paragraphsAsHtml(text) {
|
|
170
|
+
return text
|
|
171
|
+
.replace(/\r\n?/g, '\n')
|
|
172
|
+
.split(/\n\s*\n/)
|
|
173
|
+
.map((paragraph) => paragraph.trim())
|
|
174
|
+
.filter(Boolean)
|
|
175
|
+
.map((paragraph) => `<p>${escapeHtml(paragraph).replace(/\n/g, '<br>')}</p>`)
|
|
176
|
+
.join('');
|
|
177
|
+
}
|
|
178
|
+
/** The first `length` characters of `text`, without splitting a surrogate pair, marked as cut. */
|
|
179
|
+
function truncated(text, length) {
|
|
180
|
+
const end = /[\ud800-\udbff]/.test(text.charAt(length - 1)) ? length - 1 : length;
|
|
181
|
+
return `${text.slice(0, end).trimEnd()}\n…`;
|
|
182
|
+
}
|
|
183
|
+
// Marks the quote Fluxmail adds, so a later update replaces it instead of adding another.
|
|
184
|
+
const QUOTE_CLASS = 'fluxmail_quote';
|
|
185
|
+
const QUOTE_START = new RegExp(`<div class="${QUOTE_CLASS}"`, 'i');
|
|
186
|
+
/** Where the quote element that opens at `start` ends, counting nested divs, or -1 if it never closes. */
|
|
187
|
+
function quoteEnd(html, start) {
|
|
188
|
+
const tags = /<(\/?)div\b[^>]*>/gi;
|
|
189
|
+
tags.lastIndex = start;
|
|
190
|
+
let depth = 0;
|
|
191
|
+
for (let tag = tags.exec(html); tag; tag = tags.exec(html)) {
|
|
192
|
+
depth += tag[1] ? -1 : 1;
|
|
193
|
+
if (depth === 0)
|
|
194
|
+
return tags.lastIndex;
|
|
195
|
+
}
|
|
196
|
+
return -1;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* The reply without the quotes of this original that Fluxmail added earlier, for example to a draft
|
|
200
|
+
* being edited. Anything the user wrote after a quote stays.
|
|
201
|
+
*/
|
|
202
|
+
function withoutEarlierQuote(original, body) {
|
|
203
|
+
const result = { reply: { ...body } };
|
|
204
|
+
let html = body.html;
|
|
205
|
+
for (let start = html?.search(QUOTE_START) ?? -1; html !== undefined && start !== -1; start = html.search(QUOTE_START)) {
|
|
206
|
+
const end = quoteEnd(html, start);
|
|
207
|
+
// An edit that broke the quote's markup leaves no way to tell where it ends, so the rest goes with it.
|
|
208
|
+
const after = end === -1 ? (/<\/body\s*>[\s\S]*$/i.exec(html.slice(start))?.[0] ?? '') : html.slice(end);
|
|
209
|
+
const before = html.slice(0, start).replace(/(?:<br\s*\/?>\s*)+$/i, '');
|
|
210
|
+
html = before + after;
|
|
211
|
+
result.htmlAt ??= before.length;
|
|
212
|
+
}
|
|
213
|
+
if (html !== undefined)
|
|
214
|
+
result.reply.html = html;
|
|
215
|
+
if (body.text !== undefined) {
|
|
216
|
+
const lines = body.text.split(/\r?\n/);
|
|
217
|
+
const ending = ` ${senderLabel(original)} wrote:`;
|
|
218
|
+
let removedAt;
|
|
219
|
+
for (let index = 0; index < lines.length; index++) {
|
|
220
|
+
const line = lines[index];
|
|
221
|
+
if (!line.startsWith('On ') || !line.endsWith(ending) || !lines[index + 1]?.startsWith('>'))
|
|
222
|
+
continue;
|
|
223
|
+
let end = index + 1;
|
|
224
|
+
while (lines[end]?.startsWith('>'))
|
|
225
|
+
end++;
|
|
226
|
+
const start = lines[index - 1] === '' ? index - 1 : index;
|
|
227
|
+
lines.splice(start, end - start);
|
|
228
|
+
removedAt ??= start;
|
|
229
|
+
index = start - 1;
|
|
230
|
+
}
|
|
231
|
+
if (removedAt !== undefined) {
|
|
232
|
+
const before = lines.slice(0, removedAt).join('\n').trimEnd();
|
|
233
|
+
const after = lines.slice(removedAt);
|
|
234
|
+
result.reply.text = after.length ? `${before}\n${after.join('\n')}` : before;
|
|
235
|
+
result.textAt = before.length;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return result;
|
|
239
|
+
}
|
|
240
|
+
/** `html` with `addition` at `at`, or at the end of the document's body. */
|
|
241
|
+
function insertHtml(html, addition, at) {
|
|
242
|
+
const lastClose = html.search(/<\/body\s*>(?![\s\S]*<\/body\s*>)/i);
|
|
243
|
+
const position = at ?? (lastClose === -1 ? html.length : lastClose);
|
|
244
|
+
const content = html.slice(0, position);
|
|
245
|
+
// A closing paragraph already ends with a blank line's margin, as in Gmail's replies.
|
|
246
|
+
const gap = !content.trim() || /<\/(?:p|ul|ol|h[1-6]|pre|blockquote)>\s*$/i.test(content) ? '' : '<br>';
|
|
247
|
+
return `${content}${gap}${addition}${html.slice(position)}`;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* The body of a reply: the new content, then an "On <date> <sender> wrote:" line, as Gmail writes it,
|
|
251
|
+
* and the quoted original. A plain-text reply to an HTML original also gets an HTML part. Otherwise
|
|
252
|
+
* only the parts the reply has are quoted, and a quote of the same original
|
|
253
|
+
* that Fluxmail added earlier is replaced. The original's HTML is sanitized first. If the quote is
|
|
254
|
+
* too large, the HTML part quotes the original's text instead, then the text is shortened; if even a
|
|
255
|
+
* short quote doesn't fit, the body is returned unquoted.
|
|
256
|
+
*/
|
|
257
|
+
export function buildReplyBody(original, body, options = {}) {
|
|
258
|
+
const { reply, textAt, ...earlier } = withoutEarlierQuote(original, body);
|
|
259
|
+
let htmlAt = earlier.htmlAt;
|
|
260
|
+
// A plain-text reply to an HTML message also gets an HTML part, as mail clients reply, so the quote
|
|
261
|
+
// keeps the original's formatting and images.
|
|
262
|
+
if (reply.html === undefined && reply.text !== undefined && original.body?.html?.trim()) {
|
|
263
|
+
const at = textAt ?? reply.text.length;
|
|
264
|
+
const before = paragraphsAsHtml(reply.text.slice(0, at));
|
|
265
|
+
reply.html = before + paragraphsAsHtml(reply.text.slice(at));
|
|
266
|
+
if (textAt !== undefined)
|
|
267
|
+
htmlAt = before.length;
|
|
268
|
+
}
|
|
269
|
+
const originalHtml = original.body?.html?.trim() ? sanitizeQuotedHtml(original.body.html) : undefined;
|
|
270
|
+
const originalText = original.body?.text?.trim()
|
|
271
|
+
? original.body.text
|
|
272
|
+
: original.body?.html === undefined
|
|
273
|
+
? ''
|
|
274
|
+
: readableText(original.body.html);
|
|
275
|
+
const hasText = originalText.trim() !== '';
|
|
276
|
+
// An image-only original, such as a scanned receipt, can still be quoted in an HTML reply.
|
|
277
|
+
const quotesHtmlOnly = !hasText && reply.html !== undefined && /<img\b/i.test(originalHtml ?? '');
|
|
278
|
+
if (!hasText && !quotesHtmlOnly)
|
|
279
|
+
return reply;
|
|
280
|
+
const header = `On ${replyDate(original, options.timeZone)} ${senderLabel(original)} wrote:`;
|
|
281
|
+
const withQuote = (quotedText, quotedHtml) => {
|
|
282
|
+
const quoted = {};
|
|
283
|
+
if (reply.text !== undefined || reply.html === undefined) {
|
|
284
|
+
if (!hasText)
|
|
285
|
+
quoted.text = reply.text;
|
|
286
|
+
else {
|
|
287
|
+
const text = reply.text ?? '';
|
|
288
|
+
const at = textAt ?? text.length;
|
|
289
|
+
quoted.text =
|
|
290
|
+
`${text.slice(0, at).trimEnd()}\n\n${header}\n${quoteText(quotedText)}${text.slice(at)}`.trimStart();
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
if (reply.html !== undefined) {
|
|
294
|
+
quoted.html = insertHtml(reply.html, `<div class="${QUOTE_CLASS}"><div>${escapeHtml(header)}</div>` +
|
|
295
|
+
`<blockquote type="cite" style="margin:0 0 0 0.8ex;border-left:1px solid #ccc;padding-left:1ex">${quotedHtml}</blockquote></div>`, htmlAt);
|
|
296
|
+
}
|
|
297
|
+
return quoted;
|
|
298
|
+
};
|
|
299
|
+
const fits = (candidate) => options.fits?.(candidate) ?? true;
|
|
300
|
+
const full = withQuote(originalText, originalHtml ?? textAsHtml(originalText));
|
|
301
|
+
if (fits(full))
|
|
302
|
+
return full;
|
|
303
|
+
if (!hasText)
|
|
304
|
+
return reply;
|
|
305
|
+
if (reply.html !== undefined && originalHtml !== undefined) {
|
|
306
|
+
const plain = withQuote(originalText, textAsHtml(originalText));
|
|
307
|
+
if (fits(plain))
|
|
308
|
+
return plain;
|
|
309
|
+
}
|
|
310
|
+
for (let length = Math.floor(originalText.length / 2); length >= 200; length = Math.floor(length / 2)) {
|
|
311
|
+
const short = truncated(originalText, length);
|
|
312
|
+
const candidate = withQuote(short, textAsHtml(short));
|
|
313
|
+
if (fits(candidate))
|
|
314
|
+
return candidate;
|
|
315
|
+
}
|
|
316
|
+
return reply;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* The original's attachments that `html` shows through cid: references, such as images embedded in a
|
|
320
|
+
* quoted or forwarded message, ready to send with it. Without them those images show as missing.
|
|
321
|
+
* An image that would go over the limits is left out, so the message still goes out.
|
|
322
|
+
*/
|
|
323
|
+
export async function quotedImages(original, html, options) {
|
|
324
|
+
if (!html)
|
|
325
|
+
return [];
|
|
326
|
+
const referenced = new Set([...html.matchAll(/\bcid:([^"'\s>)]+)/gi)].map((match) => match[1]));
|
|
327
|
+
const existing = options.attachments ?? [];
|
|
328
|
+
const present = new Set(existing.map((attachment) => attachment.contentId).filter(Boolean));
|
|
329
|
+
let count = existing.length;
|
|
330
|
+
let bytes = existing.reduce((total, attachment) => total + Buffer.byteLength(attachment.content, 'base64'), 0);
|
|
331
|
+
const images = [];
|
|
332
|
+
for (const attachment of original.attachments ?? []) {
|
|
333
|
+
const contentId = attachment.contentId;
|
|
334
|
+
if (!contentId || !referenced.has(contentId) || present.has(contentId))
|
|
335
|
+
continue;
|
|
336
|
+
if (count >= options.maxCount || bytes + attachment.sizeBytes > options.maxBytes)
|
|
337
|
+
continue;
|
|
338
|
+
const content = await options.download(attachment, options.maxBytes - bytes);
|
|
339
|
+
if (!content || bytes + content.byteLength > options.maxBytes)
|
|
340
|
+
continue;
|
|
341
|
+
present.add(contentId);
|
|
342
|
+
count++;
|
|
343
|
+
bytes += content.byteLength;
|
|
344
|
+
images.push({
|
|
345
|
+
filename: attachment.filename,
|
|
346
|
+
mimeType: attachment.mimeType,
|
|
347
|
+
content: Buffer.from(content).toString('base64'),
|
|
348
|
+
contentId,
|
|
349
|
+
disposition: 'inline',
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
return images;
|
|
353
|
+
}
|
|
90
354
|
//# sourceMappingURL=reply.js.map
|
package/dist/reply.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reply.js","sourceRoot":"","sources":["../src/reply.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reply.js","sourceRoot":"","sources":["../src/reply.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluxmail/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "Unified email types and provider interface for Fluxmail",
|
|
5
5
|
"license": "Elastic-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -39,6 +39,9 @@
|
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^22.15.0"
|
|
41
41
|
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"htmlparser2": "^12.0.0"
|
|
44
|
+
},
|
|
42
45
|
"scripts": {
|
|
43
46
|
"build": "tsc -p tsconfig.json",
|
|
44
47
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|