@rndmjoker/proton-mcp 0.4.7 → 0.4.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -21
- package/dist/bridge/certificate.d.ts +33 -1
- package/dist/bridge/certificate.js +82 -9
- package/dist/bridge/certificate.js.map +1 -1
- package/dist/bridge/connection.js +31 -6
- package/dist/bridge/connection.js.map +1 -1
- package/dist/bridge/errors.d.ts +8 -0
- package/dist/bridge/errors.js +28 -3
- package/dist/bridge/errors.js.map +1 -1
- package/dist/config.d.ts +6 -0
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/credentials/availability.d.ts +5 -0
- package/dist/credentials/availability.js +7 -0
- package/dist/credentials/availability.js.map +1 -1
- package/dist/credentials/encrypted-file.js +7 -2
- package/dist/credentials/encrypted-file.js.map +1 -1
- package/dist/credentials/keyring.d.ts +12 -2
- package/dist/credentials/keyring.js +44 -6
- package/dist/credentials/keyring.js.map +1 -1
- package/dist/credentials/plain-file.js +8 -2
- package/dist/credentials/plain-file.js.map +1 -1
- package/dist/credentials/session-bus.d.ts +38 -0
- package/dist/credentials/session-bus.js +68 -0
- package/dist/credentials/session-bus.js.map +1 -0
- package/dist/credentials/store.d.ts +5 -1
- package/dist/credentials/store.js.map +1 -1
- package/dist/in-flight.d.ts +6 -3
- package/dist/in-flight.js +6 -3
- package/dist/in-flight.js.map +1 -1
- package/dist/mail/actions.d.ts +0 -2
- package/dist/mail/actions.js +8 -7
- package/dist/mail/actions.js.map +1 -1
- package/dist/mail/attachments.d.ts +12 -2
- package/dist/mail/attachments.js +19 -11
- package/dist/mail/attachments.js.map +1 -1
- package/dist/mail/compose.d.ts +70 -15
- package/dist/mail/compose.js +147 -11
- package/dist/mail/compose.js.map +1 -1
- package/dist/mail/drafts.d.ts +28 -2
- package/dist/mail/drafts.js +91 -21
- package/dist/mail/drafts.js.map +1 -1
- package/dist/mail/ids.d.ts +10 -0
- package/dist/mail/ids.js +16 -4
- package/dist/mail/ids.js.map +1 -1
- package/dist/mail/labels.js +9 -4
- package/dist/mail/labels.js.map +1 -1
- package/dist/mail/messages.d.ts +50 -10
- package/dist/mail/messages.js +94 -6
- package/dist/mail/messages.js.map +1 -1
- package/dist/mail/saved-attachments.d.ts +128 -0
- package/dist/mail/saved-attachments.js +448 -0
- package/dist/mail/saved-attachments.js.map +1 -0
- package/dist/mail/search.d.ts +73 -5
- package/dist/mail/search.js +150 -27
- package/dist/mail/search.js.map +1 -1
- package/dist/mail/send.js +24 -9
- package/dist/mail/send.js.map +1 -1
- package/dist/mail/uid-search.d.ts +17 -0
- package/dist/mail/uid-search.js +25 -0
- package/dist/mail/uid-search.js.map +1 -0
- package/dist/mime/filenames.d.ts +24 -0
- package/dist/mime/filenames.js +58 -0
- package/dist/mime/filenames.js.map +1 -0
- package/dist/mime/parts.d.ts +34 -0
- package/dist/mime/parts.js +92 -0
- package/dist/mime/parts.js.map +1 -0
- package/dist/server.js +39 -8
- package/dist/server.js.map +1 -1
- package/dist/session.d.ts +15 -3
- package/dist/session.js +35 -8
- package/dist/session.js.map +1 -1
- package/dist/tools/actions.js +2 -1
- package/dist/tools/actions.js.map +1 -1
- package/dist/tools/confirm.js +47 -11
- package/dist/tools/confirm.js.map +1 -1
- package/dist/tools/drafts.d.ts +3 -0
- package/dist/tools/drafts.js +31 -10
- package/dist/tools/drafts.js.map +1 -1
- package/dist/tools/format.d.ts +8 -0
- package/dist/tools/format.js +44 -6
- package/dist/tools/format.js.map +1 -1
- package/dist/tools/guidance.js +27 -3
- package/dist/tools/guidance.js.map +1 -1
- package/dist/tools/messages.js +41 -13
- package/dist/tools/messages.js.map +1 -1
- package/dist/tools/pending-view.d.ts +7 -0
- package/dist/tools/pending-view.js +4 -1
- package/dist/tools/pending-view.js.map +1 -1
- package/dist/tools/saved.d.ts +15 -0
- package/dist/tools/saved.js +107 -0
- package/dist/tools/saved.js.map +1 -0
- package/dist/tools/send.js +12 -4
- package/dist/tools/send.js.map +1 -1
- package/dist/web/layout.js +2 -0
- package/dist/web/layout.js.map +1 -1
- package/dist/web/pages.js +1 -0
- package/dist/web/pages.js.map +1 -1
- package/dist/web/pending.d.ts +4 -0
- package/dist/web/pending.js +32 -4
- package/dist/web/pending.js.map +1 -1
- package/dist/web/server.d.ts +16 -5
- package/dist/web/server.js +12 -8
- package/dist/web/server.js.map +1 -1
- package/package.json +21 -18
package/dist/mail/actions.js
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* keeps it in "All Mail", which the measurement confirmed.
|
|
31
31
|
*/
|
|
32
32
|
import { BridgeError } from '../bridge/errors.js';
|
|
33
|
-
import { normaliseMessageId, ALL_MAIL } from './ids.js';
|
|
33
|
+
import { normaliseMessageId, findByMessageId, ALL_MAIL, TRASH } from './ids.js';
|
|
34
34
|
import { LABEL_PREFIX } from './labels.js';
|
|
35
35
|
/**
|
|
36
36
|
* How many messages one call may touch.
|
|
@@ -104,10 +104,13 @@ export async function findHomeFolder(connection, rawId, hint) {
|
|
|
104
104
|
// The Bridge answers a fetch on an empty mailbox with BAD.
|
|
105
105
|
if (status.messages === 0)
|
|
106
106
|
return undefined;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
// findByMessageId rather than a search written out here. It makes the
|
|
108
|
+
// second attempt without the angle brackets and verifies every hit of
|
|
109
|
+
// it, which real mail needs: an identifier is not always bracketed, and
|
|
110
|
+
// the incident behind that fallback was "marking 67 messages left that
|
|
111
|
+
// one behind" - marking goes through setFlags to this function, so the
|
|
112
|
+
// path the incident happened in was the one without the fallback.
|
|
113
|
+
return findByMessageId(client, messageId);
|
|
111
114
|
})
|
|
112
115
|
.catch(() => undefined);
|
|
113
116
|
return found;
|
|
@@ -250,8 +253,6 @@ export async function setFlags(connection, readOnly, messageIds, changes, hint)
|
|
|
250
253
|
}
|
|
251
254
|
return summarise(outcomes);
|
|
252
255
|
}
|
|
253
|
-
/** The mailbox Proton puts discarded messages in. Nothing here empties it. */
|
|
254
|
-
export const TRASH = 'Trash';
|
|
255
256
|
/**
|
|
256
257
|
* Moves messages to the trash.
|
|
257
258
|
*
|
package/dist/mail/actions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/mail/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/mail/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,12 +27,22 @@ export interface AttachmentContent {
|
|
|
27
27
|
/** Set when the content cannot be handed over as text. */
|
|
28
28
|
unsupportedReason?: string;
|
|
29
29
|
}
|
|
30
|
+
/** One attachment of a message, picked by index, with its bytes. */
|
|
31
|
+
export interface PickedAttachment {
|
|
32
|
+
filename: string;
|
|
33
|
+
contentType: string;
|
|
34
|
+
size: number;
|
|
35
|
+
content: Buffer;
|
|
36
|
+
}
|
|
30
37
|
/**
|
|
31
|
-
*
|
|
38
|
+
* Picks one attachment of a message by index.
|
|
32
39
|
*
|
|
33
40
|
* The index refers to the list from get_message, which already excludes
|
|
34
|
-
* Proton's own public key. The same filter runs here so both stay aligned
|
|
41
|
+
* Proton's own public key. The same filter runs here so both stay aligned, and
|
|
42
|
+
* reading an attachment as text and saving it as a file pick the same one.
|
|
35
43
|
*/
|
|
44
|
+
export declare function pickAttachment(connection: Connection, messageId: string, index: number, hint?: string): Promise<PickedAttachment>;
|
|
45
|
+
/** Reads one attachment of a message by index, as text where it is text. */
|
|
36
46
|
export declare function getAttachment(connection: Connection, messageId: string, index: number, options?: {
|
|
37
47
|
hint?: string;
|
|
38
48
|
offset?: number;
|
package/dist/mail/attachments.js
CHANGED
|
@@ -30,16 +30,17 @@ export function isTextual(contentType) {
|
|
|
30
30
|
return TEXTUAL.some((p) => p.test(contentType));
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
|
-
*
|
|
33
|
+
* Picks one attachment of a message by index.
|
|
34
34
|
*
|
|
35
35
|
* The index refers to the list from get_message, which already excludes
|
|
36
|
-
* Proton's own public key. The same filter runs here so both stay aligned
|
|
36
|
+
* Proton's own public key. The same filter runs here so both stay aligned, and
|
|
37
|
+
* reading an attachment as text and saving it as a file pick the same one.
|
|
37
38
|
*/
|
|
38
|
-
export async function
|
|
39
|
+
export async function pickAttachment(connection, messageId, index, hint) {
|
|
39
40
|
if (!Number.isInteger(index) || index < 0) {
|
|
40
41
|
throw new BridgeError(`"${index}" is not a valid attachment index. Expected 0 or higher.`);
|
|
41
42
|
}
|
|
42
|
-
const resolved = await resolveMessageId(connection, messageId,
|
|
43
|
+
const resolved = await resolveMessageId(connection, messageId, hint);
|
|
43
44
|
const source = await connection.withMailbox(resolved.path, async (client) => {
|
|
44
45
|
const message = await client.fetchOne(String(resolved.uid), { source: true }, { uid: true });
|
|
45
46
|
return message && message.source ? message.source : undefined;
|
|
@@ -56,20 +57,27 @@ export async function getAttachment(connection, messageId, index, options = {})
|
|
|
56
57
|
? `The message ${resolved.messageId} has no attachments.`
|
|
57
58
|
: `Attachment index ${index} does not exist. The message has ${available}, so valid indices are 0 to ${available - 1}.`);
|
|
58
59
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
return {
|
|
61
|
+
contentType: wanted.contentType ?? 'application/octet-stream',
|
|
62
|
+
filename: wanted.filename ?? `attachment-${index}`,
|
|
63
|
+
size: wanted.size ?? wanted.content?.length ?? 0,
|
|
64
|
+
content: wanted.content ?? Buffer.alloc(0),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/** Reads one attachment of a message by index, as text where it is text. */
|
|
68
|
+
export async function getAttachment(connection, messageId, index, options = {}) {
|
|
69
|
+
const { filename, contentType, size, content } = await pickAttachment(connection, messageId, index, options.hint);
|
|
62
70
|
if (!isTextual(contentType)) {
|
|
63
71
|
return {
|
|
64
72
|
filename,
|
|
65
73
|
contentType,
|
|
66
74
|
size,
|
|
67
|
-
unsupportedReason: `This attachment is ${contentType} and cannot be returned as text
|
|
68
|
-
'
|
|
69
|
-
'
|
|
75
|
+
unsupportedReason: `This attachment is ${contentType} and cannot be returned as text, because that would mean ` +
|
|
76
|
+
'base64 in the context. save_attachment saves it as a file on this machine where the user ' +
|
|
77
|
+
'has set that up; otherwise open the message in a mail client.',
|
|
70
78
|
};
|
|
71
79
|
}
|
|
72
|
-
const raw =
|
|
80
|
+
const raw = content.toString('utf8');
|
|
73
81
|
const excerpt = truncate(raw, MAX_ATTACHMENT_CHARS, options.offset ?? 0);
|
|
74
82
|
const result = {
|
|
75
83
|
filename,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/mail/attachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE9D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAA;AAE1C,+CAA+C;AAC/C,MAAM,OAAO,GAAG;IACd,UAAU;IACV,sBAAsB;IACtB,qBAAqB;IACrB,wBAAwB;IACxB,4BAA4B;IAC5B,SAAS;IACT,UAAU;CACX,CAAA;AAED,MAAM,UAAU,SAAS,CAAC,WAAmB;IAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;AACjD,CAAC;
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/mail/attachments.ts"],"names":[],"mappings":"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"}
|
package/dist/mail/compose.d.ts
CHANGED
|
@@ -5,13 +5,14 @@
|
|
|
5
5
|
* same thing and must not drift: the recipients a confirmation shows have to
|
|
6
6
|
* be the recipients that are written or sent, or the confirmation is theatre.
|
|
7
7
|
*
|
|
8
|
-
* No attachment can be read from disk here, and that is deliberate
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* side effect of being able to write a draft.
|
|
8
|
+
* No attachment can be read from disk here, and that is deliberate. An
|
|
9
|
+
* attachment taken from a path would mean the model names a file, the server
|
|
10
|
+
* reads it, and the next confirmation the user waves through carries it
|
|
11
|
+
* outside. Which paths may be reached is its own decision, made in #17 rather
|
|
12
|
+
* than as a side effect of being able to write a draft.
|
|
13
13
|
*/
|
|
14
14
|
import { type MarkupUrl, type MarkupLevel, type StyleNote } from './markup.js';
|
|
15
|
+
import type { CarriedFile } from '../mime/parts.js';
|
|
15
16
|
/** An address, optionally with a display name. */
|
|
16
17
|
export interface Recipient {
|
|
17
18
|
name?: string;
|
|
@@ -36,18 +37,23 @@ export interface Draft {
|
|
|
36
37
|
* Part of the draft rather than a parameter beside it, because it decides
|
|
37
38
|
* what the message is allowed to contain.
|
|
38
39
|
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* first.
|
|
40
|
+
* Covered by the digest, alongside the markup itself. The level does not
|
|
41
|
+
* change the bytes that go out, but it changes what the question says: at
|
|
42
|
+
* `extended` the confirmation warns and the preview lists every property
|
|
43
|
+
* used. Binding it means a yes given to the warned version cannot be
|
|
44
|
+
* replayed for the unwarned one.
|
|
45
45
|
*/
|
|
46
46
|
markupLevel?: MarkupLevel;
|
|
47
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* A whole message carried along, used when forwarding.
|
|
49
|
+
*
|
|
50
|
+
* `carries` names the attachments travelling inside it. Only for telling the
|
|
51
|
+
* assistant what the original held; the bytes are in `raw`.
|
|
52
|
+
*/
|
|
48
53
|
attachedMessage?: {
|
|
49
54
|
filename: string;
|
|
50
55
|
raw: Buffer;
|
|
56
|
+
carries?: string[];
|
|
51
57
|
};
|
|
52
58
|
/**
|
|
53
59
|
* The message as markup, when it has any.
|
|
@@ -77,6 +83,21 @@ export interface Draft {
|
|
|
77
83
|
quotedHtml?: string;
|
|
78
84
|
/** Files referenced from the markup by content id. */
|
|
79
85
|
inlineParts?: InlinePart[];
|
|
86
|
+
/**
|
|
87
|
+
* The markup body of a stored draft, read back to be sent or kept, and kept
|
|
88
|
+
* apart from `html` on purpose.
|
|
89
|
+
*
|
|
90
|
+
* It is not held to the permitted set again. It was held to it when it was
|
|
91
|
+
* written through this server, or a person wrote it in Proton. Once stored,
|
|
92
|
+
* the composed part and a quote can no longer be told apart, and the level
|
|
93
|
+
* it was written at is recorded nowhere, so a second check refused every
|
|
94
|
+
* formatted reply on the <style> of its quote. It is read the way a quote
|
|
95
|
+
* is instead: the confirmation counts and the preview names everything in
|
|
96
|
+
* it, and anything beyond `standard` carries the same warning as `extended`.
|
|
97
|
+
*/
|
|
98
|
+
storedHtml?: string;
|
|
99
|
+
/** Files read back from a stored draft, carried along as they were stored. */
|
|
100
|
+
carriedFiles?: CarriedFile[];
|
|
80
101
|
}
|
|
81
102
|
/** A file carried inside the message and referenced from the markup. */
|
|
82
103
|
export interface InlinePart {
|
|
@@ -86,14 +107,25 @@ export interface InlinePart {
|
|
|
86
107
|
contentType: string;
|
|
87
108
|
content: Buffer;
|
|
88
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Refuses a recipient that reads one way in the confirmation and goes somewhere
|
|
112
|
+
* else, or nowhere, once the message is sent.
|
|
113
|
+
*
|
|
114
|
+
* Applied to every recipient a message can carry, whether a caller typed it or
|
|
115
|
+
* it was read back from a stored draft. The confirmation is only worth
|
|
116
|
+
* something if what it shows is what the envelope carries.
|
|
117
|
+
*/
|
|
118
|
+
export declare function assertDeliverable(recipient: Recipient): void;
|
|
89
119
|
/**
|
|
90
120
|
* Checks an address well enough to catch the mistakes that matter.
|
|
91
121
|
*
|
|
92
122
|
* Not a full RFC 5322 parser, and not trying to be: the point is to refuse a
|
|
93
123
|
* string that would end up somewhere unintended, not to adjudicate exotic but
|
|
94
|
-
* legal forms. A newline is the one that has to be caught, because a
|
|
95
|
-
* injected through an address field would let the sender of a mail the
|
|
96
|
-
* just read add a recipient the confirmation never showed.
|
|
124
|
+
* legal forms. A newline is the one that has to be caught first, because a
|
|
125
|
+
* header injected through an address field would let the sender of a mail the
|
|
126
|
+
* model just read add a recipient the confirmation never showed. Everything
|
|
127
|
+
* else that would make the confirmation and the envelope disagree is
|
|
128
|
+
* assertDeliverable's.
|
|
97
129
|
*/
|
|
98
130
|
export declare function parseRecipient(input: string): Recipient;
|
|
99
131
|
export declare function parseRecipients(list: string[] | undefined): Recipient[];
|
|
@@ -264,6 +296,20 @@ export interface QuoteSummary {
|
|
|
264
296
|
* is visible as the recipient will see it.
|
|
265
297
|
*/
|
|
266
298
|
export declare function summariseQuote(draft: Draft): QuoteSummary | undefined;
|
|
299
|
+
/** The line this server writes above every forwarded message, in text and in markup. */
|
|
300
|
+
export declare const FORWARD_HEADER = "---------- Forwarded message ----------";
|
|
301
|
+
/**
|
|
302
|
+
* Whether the message carries a quoted one, for the count line of the
|
|
303
|
+
* confirmation.
|
|
304
|
+
*
|
|
305
|
+
* summariseQuote only sees a quote that is still held apart from the body,
|
|
306
|
+
* which is the case while a reply or a forward is composed with markup. Once a
|
|
307
|
+
* draft is stored, and in a plain text reply, the quote is part of the body,
|
|
308
|
+
* and up to 0.4.11 the confirmation said nothing about it. It is recognised
|
|
309
|
+
* there by what quotes it: the forward header this server writes, the "wrote:"
|
|
310
|
+
* line followed by quoted lines, or a blockquote, which is how Proton quotes.
|
|
311
|
+
*/
|
|
312
|
+
export declare function carriesQuote(draft: Draft): boolean;
|
|
267
313
|
/**
|
|
268
314
|
* Everything the message points at or carries, for the confirmation.
|
|
269
315
|
*
|
|
@@ -288,3 +334,12 @@ export declare function fingerprintPart(content: Buffer): string;
|
|
|
288
334
|
* "what did it use" is a list rather than a promise.
|
|
289
335
|
*/
|
|
290
336
|
export declare function styleNotesOf(draft: Draft): StyleNote[];
|
|
337
|
+
/**
|
|
338
|
+
* What a stored body carries that no composed message may: style blocks,
|
|
339
|
+
* scripts, event handlers, data: addresses, comments.
|
|
340
|
+
*
|
|
341
|
+
* Empty for anything that is not a stored draft, because composed markup with
|
|
342
|
+
* such a thing never gets this far. For a stored draft it is part of what the
|
|
343
|
+
* confirmation warns about, since it was not checked again on the way out.
|
|
344
|
+
*/
|
|
345
|
+
export declare function storedBeyondOf(draft: Draft): string[];
|
package/dist/mail/compose.js
CHANGED
|
@@ -5,26 +5,82 @@
|
|
|
5
5
|
* same thing and must not drift: the recipients a confirmation shows have to
|
|
6
6
|
* be the recipients that are written or sent, or the confirmation is theatre.
|
|
7
7
|
*
|
|
8
|
-
* No attachment can be read from disk here, and that is deliberate
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* side effect of being able to write a draft.
|
|
8
|
+
* No attachment can be read from disk here, and that is deliberate. An
|
|
9
|
+
* attachment taken from a path would mean the model names a file, the server
|
|
10
|
+
* reads it, and the next confirmation the user waves through carries it
|
|
11
|
+
* outside. Which paths may be reached is its own decision, made in #17 rather
|
|
12
|
+
* than as a side effect of being able to write a draft.
|
|
13
13
|
*/
|
|
14
14
|
import MailComposer from 'nodemailer/lib/mail-composer/index.js';
|
|
15
|
+
import MimeNode from 'nodemailer/lib/mime-node';
|
|
15
16
|
import { createHash, randomUUID } from 'node:crypto';
|
|
16
17
|
import { BridgeError } from '../bridge/errors.js';
|
|
17
18
|
import { assertSendableMarkup, readMarkup, } from './markup.js';
|
|
18
19
|
import { prepareQuotedMarkup } from './quote.js';
|
|
19
20
|
import { htmlToText } from '../mime/parse.js';
|
|
21
|
+
/**
|
|
22
|
+
* Control characters, and the formatting ones that reorder text or take up no
|
|
23
|
+
* space. In a display name they change how a recipient reads in the
|
|
24
|
+
* confirmation without changing where the message goes: U+202E reverses
|
|
25
|
+
* everything after it.
|
|
26
|
+
*/
|
|
27
|
+
const INVISIBLE = /[\p{Cc}\p{Cf}]/u;
|
|
28
|
+
/** Names each invisible character by its code point, so a refusal can show it. */
|
|
29
|
+
function showInvisible(value) {
|
|
30
|
+
return value.replace(/[\p{Cc}\p{Cf}]/gu, (c) => `U+${c.codePointAt(0).toString(16).toUpperCase().padStart(4, '0')}`);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Refuses a recipient that reads one way in the confirmation and goes somewhere
|
|
34
|
+
* else, or nowhere, once the message is sent.
|
|
35
|
+
*
|
|
36
|
+
* Applied to every recipient a message can carry, whether a caller typed it or
|
|
37
|
+
* it was read back from a stored draft. The confirmation is only worth
|
|
38
|
+
* something if what it shows is what the envelope carries.
|
|
39
|
+
*/
|
|
40
|
+
export function assertDeliverable(recipient) {
|
|
41
|
+
const { name, address } = recipient;
|
|
42
|
+
if (name !== undefined && INVISIBLE.test(name)) {
|
|
43
|
+
throw new BridgeError(`The display name "${showInvisible(name)}" contains a control or formatting character. Such ` +
|
|
44
|
+
'a character can change how a recipient reads in the confirmation, for example by reversing ' +
|
|
45
|
+
'the text after it, so it is refused rather than removed.');
|
|
46
|
+
}
|
|
47
|
+
// Letters from another script can spell a familiar domain, and the envelope
|
|
48
|
+
// then carries its punycode form, which is a different domain anyone can
|
|
49
|
+
// register. Measured with nodemailer 10.1.7: ceo@\u0430\u0440\u0440\u04cf\u0435.com, all Cyrillic,
|
|
50
|
+
// reads as apple.com and goes to ceo@xn--80ak6aa92e.com.
|
|
51
|
+
if (/[^\x21-\x7e]/.test(address)) {
|
|
52
|
+
throw new BridgeError(`"${showInvisible(address)}" contains a character outside ASCII. Letters from another script ` +
|
|
53
|
+
'can spell a familiar domain while the message goes to a different one, so such an address ' +
|
|
54
|
+
'is refused. A domain that really is written with such letters can be given in its ASCII ' +
|
|
55
|
+
'form, which starts with xn--, and that is then exactly what the confirmation shows.');
|
|
56
|
+
}
|
|
57
|
+
// nodemailer reads the address again, with its own parser, when it builds the
|
|
58
|
+
// envelope, and the two readings disagree. Measured with 10.1.7:
|
|
59
|
+
// "x@example.com:y" leaves the envelope empty, "a:b@example.com" goes to
|
|
60
|
+
// b@example.com. So the address has to come back out of the very code that
|
|
61
|
+
// builds the envelope as itself. Only the domain may change, to lower case.
|
|
62
|
+
const at = address.lastIndexOf('@');
|
|
63
|
+
const expected = address.slice(0, at) + address.slice(at).toLowerCase();
|
|
64
|
+
const envelope = new MimeNode()
|
|
65
|
+
.setEnvelope({ from: 'check@example.invalid', to: [address] })
|
|
66
|
+
.getEnvelope().to;
|
|
67
|
+
if (envelope.length !== 1 || envelope[0] !== expected) {
|
|
68
|
+
const outcome = envelope.length === 0 ? 'names no recipient at all' : `goes to ${envelope.join(', ')}`;
|
|
69
|
+
throw new BridgeError(`"${showInvisible(address)}" would not reach that address: read the way the message is sent, ` +
|
|
70
|
+
`it ${outcome}. Give the address on its own, without a comment in parentheses, a group ` +
|
|
71
|
+
'name or a colon.');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
20
74
|
/**
|
|
21
75
|
* Checks an address well enough to catch the mistakes that matter.
|
|
22
76
|
*
|
|
23
77
|
* Not a full RFC 5322 parser, and not trying to be: the point is to refuse a
|
|
24
78
|
* string that would end up somewhere unintended, not to adjudicate exotic but
|
|
25
|
-
* legal forms. A newline is the one that has to be caught, because a
|
|
26
|
-
* injected through an address field would let the sender of a mail the
|
|
27
|
-
* just read add a recipient the confirmation never showed.
|
|
79
|
+
* legal forms. A newline is the one that has to be caught first, because a
|
|
80
|
+
* header injected through an address field would let the sender of a mail the
|
|
81
|
+
* model just read add a recipient the confirmation never showed. Everything
|
|
82
|
+
* else that would make the confirmation and the envelope disagree is
|
|
83
|
+
* assertDeliverable's.
|
|
28
84
|
*/
|
|
29
85
|
export function parseRecipient(input) {
|
|
30
86
|
const raw = input.trim();
|
|
@@ -42,7 +98,9 @@ export function parseRecipient(input) {
|
|
|
42
98
|
throw new BridgeError(`"${address}" is not a usable email address. Expected something of the form name@example.com, ` +
|
|
43
99
|
'optionally as "Display Name <name@example.com>".');
|
|
44
100
|
}
|
|
45
|
-
|
|
101
|
+
const recipient = name ? { name, address } : { address };
|
|
102
|
+
assertDeliverable(recipient);
|
|
103
|
+
return recipient;
|
|
46
104
|
}
|
|
47
105
|
export function parseRecipients(list) {
|
|
48
106
|
return (list ?? []).map(parseRecipient);
|
|
@@ -93,7 +151,26 @@ export async function buildMessage(draft, options = {}) {
|
|
|
93
151
|
messageId: draft.messageId,
|
|
94
152
|
date: new Date(),
|
|
95
153
|
};
|
|
96
|
-
if (draft.html
|
|
154
|
+
if (draft.html !== undefined && draft.storedHtml !== undefined) {
|
|
155
|
+
// One body or the other. Both would mean the composed part had been checked
|
|
156
|
+
// and the stored part would go out beside it unread.
|
|
157
|
+
throw new BridgeError('A message cannot carry composed markup and a stored body at once.');
|
|
158
|
+
}
|
|
159
|
+
if (draft.storedHtml !== undefined) {
|
|
160
|
+
// Not checked against the permitted set, see Draft.storedHtml. What is
|
|
161
|
+
// still checked is that every picture it shows arrived with it.
|
|
162
|
+
const provided = new Set([
|
|
163
|
+
...(draft.inlineParts ?? []).map((part) => part.contentId),
|
|
164
|
+
...(draft.carriedFiles ?? []).flatMap((file) => (file.contentId ? [file.contentId] : [])),
|
|
165
|
+
]);
|
|
166
|
+
const missing = readMarkup(draft.storedHtml, 'extended').contentIds.filter((id) => !provided.has(id));
|
|
167
|
+
if (missing.length) {
|
|
168
|
+
throw new BridgeError(`The stored draft refers to ${missing.map((id) => `"cid:${id}"`).join(', ')}, but no such ` +
|
|
169
|
+
'file is stored with it. Open the draft in Proton and attach the picture again.');
|
|
170
|
+
}
|
|
171
|
+
fields.html = draft.storedHtml;
|
|
172
|
+
}
|
|
173
|
+
else if (draft.html === undefined) {
|
|
97
174
|
fields.text = draft.text;
|
|
98
175
|
}
|
|
99
176
|
else {
|
|
@@ -103,7 +180,10 @@ export async function buildMessage(draft, options = {}) {
|
|
|
103
180
|
// Every content id the markup points at has to have arrived with it. A
|
|
104
181
|
// reference to a part that is not there shows the recipient a broken image
|
|
105
182
|
// where the sender saw a picture, and neither of them finds out why.
|
|
106
|
-
const provided = new Set(
|
|
183
|
+
const provided = new Set([
|
|
184
|
+
...(draft.inlineParts ?? []).map((part) => part.contentId),
|
|
185
|
+
...(draft.carriedFiles ?? []).flatMap((file) => (file.contentId ? [file.contentId] : [])),
|
|
186
|
+
]);
|
|
107
187
|
const missing = reading.contentIds.filter((id) => !provided.has(id));
|
|
108
188
|
if (missing.length) {
|
|
109
189
|
throw new BridgeError(`The markup refers to ${missing.map((id) => `"cid:${id}"`).join(', ')}, but no such file ` +
|
|
@@ -137,6 +217,14 @@ export async function buildMessage(draft, options = {}) {
|
|
|
137
217
|
cid: part.contentId,
|
|
138
218
|
});
|
|
139
219
|
}
|
|
220
|
+
for (const file of draft.carriedFiles ?? []) {
|
|
221
|
+
attachments.push({
|
|
222
|
+
filename: file.filename,
|
|
223
|
+
content: file.content,
|
|
224
|
+
contentType: file.contentType,
|
|
225
|
+
...(file.contentId ? { cid: file.contentId } : {}),
|
|
226
|
+
});
|
|
227
|
+
}
|
|
140
228
|
if (attachments.length)
|
|
141
229
|
fields.attachments = attachments;
|
|
142
230
|
// keepBcc is not an option MailComposer understands. It lives on the MimeNode
|
|
@@ -335,6 +423,8 @@ export const PLAIN_TEXT_NOTE = 'The body is plain text and markup is not interpr
|
|
|
335
423
|
* to, and that is exactly the difference a person confirming a send has to see.
|
|
336
424
|
*/
|
|
337
425
|
export function readableBody(draft) {
|
|
426
|
+
if (draft.storedHtml !== undefined)
|
|
427
|
+
return htmlToText(draft.storedHtml);
|
|
338
428
|
return draft.html === undefined
|
|
339
429
|
? draft.text
|
|
340
430
|
: htmlToText(draft.html + (draft.quotedHtml ?? ''));
|
|
@@ -348,6 +438,8 @@ export function readableBody(draft) {
|
|
|
348
438
|
* before their own words appear.
|
|
349
439
|
*/
|
|
350
440
|
export function composedBody(draft) {
|
|
441
|
+
if (draft.storedHtml !== undefined)
|
|
442
|
+
return htmlToText(draft.storedHtml);
|
|
351
443
|
return draft.html === undefined ? draft.text : htmlToText(draft.html);
|
|
352
444
|
}
|
|
353
445
|
/**
|
|
@@ -376,6 +468,27 @@ export function summariseQuote(draft) {
|
|
|
376
468
|
hiddenText: reading.hiddenText,
|
|
377
469
|
};
|
|
378
470
|
}
|
|
471
|
+
/** The line this server writes above every forwarded message, in text and in markup. */
|
|
472
|
+
export const FORWARD_HEADER = '---------- Forwarded message ----------';
|
|
473
|
+
/**
|
|
474
|
+
* Whether the message carries a quoted one, for the count line of the
|
|
475
|
+
* confirmation.
|
|
476
|
+
*
|
|
477
|
+
* summariseQuote only sees a quote that is still held apart from the body,
|
|
478
|
+
* which is the case while a reply or a forward is composed with markup. Once a
|
|
479
|
+
* draft is stored, and in a plain text reply, the quote is part of the body,
|
|
480
|
+
* and up to 0.4.11 the confirmation said nothing about it. It is recognised
|
|
481
|
+
* there by what quotes it: the forward header this server writes, the "wrote:"
|
|
482
|
+
* line followed by quoted lines, or a blockquote, which is how Proton quotes.
|
|
483
|
+
*/
|
|
484
|
+
export function carriesQuote(draft) {
|
|
485
|
+
if (draft.quotedHtml)
|
|
486
|
+
return true;
|
|
487
|
+
if (draft.storedHtml !== undefined) {
|
|
488
|
+
return /<blockquote\b/i.test(draft.storedHtml) || draft.storedHtml.includes(FORWARD_HEADER);
|
|
489
|
+
}
|
|
490
|
+
return draft.text.includes(FORWARD_HEADER) || /^On .+ wrote:\n>/m.test(draft.text);
|
|
491
|
+
}
|
|
379
492
|
/**
|
|
380
493
|
* Everything the message points at or carries, for the confirmation.
|
|
381
494
|
*
|
|
@@ -392,16 +505,24 @@ export function describeAttachments(draft) {
|
|
|
392
505
|
for (const part of draft.inlineParts ?? []) {
|
|
393
506
|
lines.push(`${part.filename} (${part.contentType}, ${part.content.length} bytes, in the message body)`);
|
|
394
507
|
}
|
|
508
|
+
for (const file of draft.carriedFiles ?? []) {
|
|
509
|
+
const where = file.contentId ? ', in the message body' : '';
|
|
510
|
+
lines.push(`${file.filename} (${file.contentType}, ${file.content.length} bytes, stored with the draft${where})`);
|
|
511
|
+
}
|
|
395
512
|
return lines;
|
|
396
513
|
}
|
|
397
514
|
/** The addresses in a message's markup, with the text they are shown as. */
|
|
398
515
|
export function describeUrls(draft) {
|
|
516
|
+
if (draft.storedHtml !== undefined)
|
|
517
|
+
return readMarkup(draft.storedHtml, 'extended').urls;
|
|
399
518
|
return draft.html === undefined
|
|
400
519
|
? []
|
|
401
520
|
: assertSendableMarkup(draft.html, draft.markupLevel ?? 'standard').urls;
|
|
402
521
|
}
|
|
403
522
|
/** Text a recipient can read that the readable body leaves out. */
|
|
404
523
|
export function hiddenTextOf(draft) {
|
|
524
|
+
if (draft.storedHtml !== undefined)
|
|
525
|
+
return readMarkup(draft.storedHtml, 'extended').hiddenText;
|
|
405
526
|
return draft.html === undefined
|
|
406
527
|
? []
|
|
407
528
|
: assertSendableMarkup(draft.html, draft.markupLevel ?? 'standard').hiddenText;
|
|
@@ -419,8 +540,23 @@ export function fingerprintPart(content) {
|
|
|
419
540
|
* "what did it use" is a list rather than a promise.
|
|
420
541
|
*/
|
|
421
542
|
export function styleNotesOf(draft) {
|
|
543
|
+
if (draft.storedHtml !== undefined)
|
|
544
|
+
return readMarkup(draft.storedHtml, 'extended').styleNotes;
|
|
422
545
|
if (draft.html === undefined)
|
|
423
546
|
return [];
|
|
424
547
|
return assertSendableMarkup(draft.html, draft.markupLevel ?? 'standard').styleNotes;
|
|
425
548
|
}
|
|
549
|
+
/**
|
|
550
|
+
* What a stored body carries that no composed message may: style blocks,
|
|
551
|
+
* scripts, event handlers, data: addresses, comments.
|
|
552
|
+
*
|
|
553
|
+
* Empty for anything that is not a stored draft, because composed markup with
|
|
554
|
+
* such a thing never gets this far. For a stored draft it is part of what the
|
|
555
|
+
* confirmation warns about, since it was not checked again on the way out.
|
|
556
|
+
*/
|
|
557
|
+
export function storedBeyondOf(draft) {
|
|
558
|
+
if (draft.storedHtml === undefined)
|
|
559
|
+
return [];
|
|
560
|
+
return readMarkup(draft.storedHtml, 'extended').problems.map((problem) => problem.found);
|
|
561
|
+
}
|
|
426
562
|
//# sourceMappingURL=compose.js.map
|
package/dist/mail/compose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/mail/compose.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/mail/compose.ts"],"names":[],"mappings":"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"}
|