@bobfrankston/rmfmail 1.2.172 → 1.2.175
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/TODO.md +4 -3
- package/bin/build-rmfshare-exe.js +79 -0
- package/bin/mailx.js +52 -1
- package/bin/mailx.js.map +1 -1
- package/bin/mailx.ts +51 -1
- package/bin/rmfshare-src/Program.cs +225 -0
- package/bin/rmfshare-src/rmfshare.csproj +36 -0
- package/bin/rmfshare.exe +0 -0
- package/bin/share-target.js +314 -0
- package/bin/share-target.js.map +1 -0
- package/bin/share-target.ts +331 -0
- package/client/app.bundle.js +120 -0
- package/client/app.bundle.js.map +3 -3
- package/client/app.js +69 -0
- package/client/app.js.map +1 -1
- package/client/app.ts +72 -0
- package/client/components/message-viewer.js +60 -0
- package/client/components/message-viewer.js.map +1 -1
- package/client/components/message-viewer.ts +60 -0
- package/client/compose/compose.bundle.js +11 -0
- package/client/compose/compose.bundle.js.map +2 -2
- package/client/lib/api-client.js +16 -0
- package/client/lib/api-client.js.map +1 -1
- package/client/lib/api-client.ts +21 -0
- package/client/lib/mailxapi.js +6 -0
- package/client/package.json +1 -1
- package/package.json +6 -6
- package/packages/mailx-imap/index.d.ts.map +1 -1
- package/packages/mailx-imap/index.js +22 -0
- package/packages/mailx-imap/index.js.map +1 -1
- package/packages/mailx-imap/index.ts +22 -0
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-service/index.d.ts +45 -0
- package/packages/mailx-service/index.d.ts.map +1 -1
- package/packages/mailx-service/index.js +288 -0
- package/packages/mailx-service/index.js.map +1 -1
- package/packages/mailx-service/index.ts +274 -0
- package/packages/mailx-service/jsonrpc.js +4 -0
- package/packages/mailx-service/jsonrpc.js.map +1 -1
- package/packages/mailx-service/jsonrpc.ts +4 -0
- package/packages/mailx-service/package.json +1 -1
- package/packages/mailx-settings/package.json +1 -1
- package/packages/mailx-store/db.d.ts +3 -0
- package/packages/mailx-store/db.d.ts.map +1 -1
- package/packages/mailx-store/db.js +5 -0
- package/packages/mailx-store/db.js.map +1 -1
- package/packages/mailx-store/db.ts +8 -0
- package/packages/mailx-store/package.json +1 -1
- package/packages/mailx-store-web/package.json +1 -1
- package/packages/mailx-types/mailx-api.d.ts +11 -0
- package/packages/mailx-types/mailx-api.d.ts.map +1 -1
- package/packages/mailx-types/mailx-api.ts +7 -0
- package/packages/mailx-types/package.json +1 -1
- /package/packages/mailx-imap/{node_modules.npmglobalize-stash-74140 → node_modules.npmglobalize-stash-33656}/.package-lock.json +0 -0
|
@@ -4252,6 +4252,28 @@ export class ImapManager extends EventEmitter {
|
|
|
4252
4252
|
this.syncFolder(accountId, target.id).catch(() => { /* next sweep picks it up */ });
|
|
4253
4253
|
break;
|
|
4254
4254
|
}
|
|
4255
|
+
|
|
4256
|
+
case "replaceMessage": {
|
|
4257
|
+
// Attachment strip: swap the server copy for the
|
|
4258
|
+
// modified raw. Ordering is load-bearing — APPEND
|
|
4259
|
+
// first, and only delete the original once the
|
|
4260
|
+
// server confirmed the new copy (APPENDUID). A
|
|
4261
|
+
// failure at any point leaves at least one intact
|
|
4262
|
+
// copy on the server, never zero.
|
|
4263
|
+
if (!action.rawMessage) break;
|
|
4264
|
+
const keepFlags = (action.flags || []).filter((f: string) => f !== "\\Recent");
|
|
4265
|
+
const newUid = await client.appendMessage(folder.path, action.rawMessage, keepFlags);
|
|
4266
|
+
if (!newUid || newUid <= 0) {
|
|
4267
|
+
throw new Error("replace: server gave no APPENDUID — original kept, will retry");
|
|
4268
|
+
}
|
|
4269
|
+
// Rebind the local row BEFORE deleting the old server
|
|
4270
|
+
// copy: a crash between the two leaves a harmless
|
|
4271
|
+
// duplicate (old + new), never a missing message.
|
|
4272
|
+
this.db.updateMessageUid(accountId, folder.id, action.uid, newUid);
|
|
4273
|
+
await client.deleteMessageByUid(folder.path, action.uid);
|
|
4274
|
+
console.log(` [sync] replaced UID ${action.uid} → ${newUid} in ${folder.path} (attachment strip)`);
|
|
4275
|
+
break;
|
|
4276
|
+
}
|
|
4255
4277
|
}
|
|
4256
4278
|
// Success: the local action reached the server. Lift the
|
|
4257
4279
|
// in-flight delete/move suppression so the destination
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bobfrankston/mailx-imap",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.129",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bobfrankston/mailx-imap",
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.129",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@bobfrankston/iflow-direct": "^0.1.27",
|
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
* Pure business logic — no HTTP, no Express.
|
|
4
4
|
* Both the Express API (mailx-api) and the Android bridge call these functions.
|
|
5
5
|
*/
|
|
6
|
+
interface MimeLeafPart {
|
|
7
|
+
start: number;
|
|
8
|
+
end: number;
|
|
9
|
+
filename: string;
|
|
10
|
+
contentType: string;
|
|
11
|
+
decoded: Buffer | null;
|
|
12
|
+
}
|
|
13
|
+
export declare function enumerateMimeLeafParts(raw: string): MimeLeafPart[];
|
|
6
14
|
import { ImapManager } from "@bobfrankston/mailx-imap";
|
|
7
15
|
import { Store } from "@bobfrankston/mailx-store";
|
|
8
16
|
export { spawnSyncWorker, type SpawnedSyncWorker } from "./sync-worker-client.js";
|
|
@@ -373,6 +381,28 @@ export declare class MailxService implements MailxApi {
|
|
|
373
381
|
body: string;
|
|
374
382
|
inReplyTo: string;
|
|
375
383
|
} | null;
|
|
384
|
+
/** Read + delete the pending Windows-share file (C46). Client calls
|
|
385
|
+
* this on startup so a share that spawned the daemon (rmfshare.exe →
|
|
386
|
+
* `node mailx.js`) isn't lost to the fires-before-app-registers race —
|
|
387
|
+
* same contract as consumePendingMailto above. Staged files are
|
|
388
|
+
* returned base64-encoded (the WebView can't read disk) and their
|
|
389
|
+
* staging dirs reaped afterwards. Mirrors bin/share-target.ts, which
|
|
390
|
+
* serves the daemon's live fs.watch path — packages/ can't import
|
|
391
|
+
* bin/, so the two implementations stay in lockstep by hand. */
|
|
392
|
+
consumePendingShare(): {
|
|
393
|
+
title: string;
|
|
394
|
+
text: string;
|
|
395
|
+
url: string;
|
|
396
|
+
attachments: {
|
|
397
|
+
filename: string;
|
|
398
|
+
mimeType: string;
|
|
399
|
+
dataBase64: string;
|
|
400
|
+
}[];
|
|
401
|
+
skipped: {
|
|
402
|
+
name: string;
|
|
403
|
+
reason: string;
|
|
404
|
+
}[];
|
|
405
|
+
} | null;
|
|
376
406
|
/** End external editing. Stops the watcher, removes the temp file.
|
|
377
407
|
* Caller is the compose UI when the user closes the window or sends. */
|
|
378
408
|
closeWordEdit(editId: string): Promise<void>;
|
|
@@ -643,6 +673,21 @@ export declare class MailxService implements MailxApi {
|
|
|
643
673
|
contentType: string;
|
|
644
674
|
filename: string;
|
|
645
675
|
}>;
|
|
676
|
+
/** Delete attachment(s) from a RECEIVED message — local-first message
|
|
677
|
+
* surgery. The raw .eml is rewritten without the selected MIME parts
|
|
678
|
+
* (original kept next to it as .pre-strip.bak), the DB row updates, and
|
|
679
|
+
* a `replaceMessage` sync action queues the server-side swap, which
|
|
680
|
+
* appends the modified copy and only deletes the original after the
|
|
681
|
+
* server confirms the append (never the other order). IMAP accounts
|
|
682
|
+
* only for now — Gmail's REST path needs its own insert+trash pass.
|
|
683
|
+
* `ids` are the viewer's chip ids (= mailparser attachment indexes);
|
|
684
|
+
* "all" means every chip-visible attachment. Every strip is verified by
|
|
685
|
+
* re-parsing the result before anything is written. */
|
|
686
|
+
deleteAttachments(accountId: string, uid: number, folderId: number | undefined, ids: number[] | "all"): Promise<{
|
|
687
|
+
ok: boolean;
|
|
688
|
+
removed: number;
|
|
689
|
+
remaining: number;
|
|
690
|
+
}>;
|
|
646
691
|
/** Raw RFC 822 source of a message — for "Save message as .eml". Reads the
|
|
647
692
|
* on-disk body file (same resolution as getAttachment), falling back to a
|
|
648
693
|
* server fetch. Returned base64 so it survives the IPC JSON channel. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,89 @@ import * as os from "node:os";
|
|
|
10
10
|
import * as path from "node:path";
|
|
11
11
|
import { parseSerial } from "@bobfrankston/mailx-store";
|
|
12
12
|
const __dirname = import.meta.dirname;
|
|
13
|
+
function decodeMimeBody(body, encoding) {
|
|
14
|
+
try {
|
|
15
|
+
const enc = encoding.toLowerCase().trim();
|
|
16
|
+
if (enc === "base64")
|
|
17
|
+
return Buffer.from(body.replace(/[\r\n\s]/g, ""), "base64");
|
|
18
|
+
if (enc === "quoted-printable") {
|
|
19
|
+
const cleaned = body.replace(/=\r?\n/g, "");
|
|
20
|
+
const out = [];
|
|
21
|
+
for (let i = 0; i < cleaned.length; i++) {
|
|
22
|
+
const ch = cleaned[i];
|
|
23
|
+
if (ch === "=" && i + 2 < cleaned.length && /^[0-9A-Fa-f]{2}$/.test(cleaned.substr(i + 1, 2))) {
|
|
24
|
+
out.push(parseInt(cleaned.substr(i + 1, 2), 16));
|
|
25
|
+
i += 2;
|
|
26
|
+
}
|
|
27
|
+
else
|
|
28
|
+
out.push(ch.charCodeAt(0) & 0xff);
|
|
29
|
+
}
|
|
30
|
+
return Buffer.from(out);
|
|
31
|
+
}
|
|
32
|
+
return Buffer.from(body, "binary");
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function mimeHeaderBlock(section) {
|
|
39
|
+
const m = section.match(/\r?\n\r?\n/);
|
|
40
|
+
if (!m || m.index === undefined)
|
|
41
|
+
return { headers: section, bodyStart: section.length };
|
|
42
|
+
return { headers: section.slice(0, m.index), bodyStart: m.index + m[0].length };
|
|
43
|
+
}
|
|
44
|
+
function mimeHeader(headers, name) {
|
|
45
|
+
const unfolded = headers.replace(/\r?\n[ \t]+/g, " ");
|
|
46
|
+
const re = new RegExp(`^${name}:\\s*(.*)$`, "im");
|
|
47
|
+
return unfolded.match(re)?.[1]?.trim() || "";
|
|
48
|
+
}
|
|
49
|
+
export function enumerateMimeLeafParts(raw) {
|
|
50
|
+
const out = [];
|
|
51
|
+
const walk = (absStart, section) => {
|
|
52
|
+
const { headers, bodyStart } = mimeHeaderBlock(section);
|
|
53
|
+
const ct = mimeHeader(headers, "Content-Type");
|
|
54
|
+
const boundary = ct.match(/boundary="?([^";\r\n]+)"?/i)?.[1];
|
|
55
|
+
if (!boundary || !/multipart\//i.test(ct))
|
|
56
|
+
return;
|
|
57
|
+
const body = section.slice(bodyStart);
|
|
58
|
+
// Find delimiter LINES ("--boundary" at line start), collect part ranges.
|
|
59
|
+
const delimRe = new RegExp(`(^|\\r?\\n)--${boundary.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}(--)?[ \\t]*(\\r?\\n|$)`, "g");
|
|
60
|
+
const delims = [];
|
|
61
|
+
for (let m = delimRe.exec(body); m; m = delimRe.exec(body)) {
|
|
62
|
+
delims.push({ lineStart: m.index + m[1].length, contentStart: m.index + m[0].length, final: !!m[2] });
|
|
63
|
+
if (m[2])
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
for (let i = 0; i < delims.length - 1; i++) {
|
|
67
|
+
if (delims[i].final)
|
|
68
|
+
break;
|
|
69
|
+
const partStart = delims[i].contentStart; // first byte of part headers
|
|
70
|
+
const partEnd = delims[i + 1].lineStart; // start of next delimiter line
|
|
71
|
+
const part = body.slice(partStart, partEnd);
|
|
72
|
+
const ph = mimeHeaderBlock(part);
|
|
73
|
+
const pct = mimeHeader(ph.headers, "Content-Type");
|
|
74
|
+
if (/multipart\//i.test(pct)) {
|
|
75
|
+
walk(absStart + bodyStart + partStart, part);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
const enc = mimeHeader(ph.headers, "Content-Transfer-Encoding");
|
|
79
|
+
const disp = mimeHeader(ph.headers, "Content-Disposition");
|
|
80
|
+
const filename = (disp.match(/filename="?([^";\r\n]+)"?/i)?.[1]
|
|
81
|
+
|| pct.match(/name="?([^";\r\n]+)"?/i)?.[1] || "").trim();
|
|
82
|
+
out.push({
|
|
83
|
+
// Range includes the LEADING delimiter line → clean splice.
|
|
84
|
+
start: absStart + bodyStart + delims[i].lineStart,
|
|
85
|
+
end: absStart + bodyStart + partEnd,
|
|
86
|
+
filename,
|
|
87
|
+
contentType: pct.split(";")[0].trim().toLowerCase(),
|
|
88
|
+
decoded: decodeMimeBody(part.slice(ph.bodyStart).replace(/\r?\n$/, ""), enc),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
walk(0, raw);
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
13
96
|
import * as gsync from "./google-sync.js";
|
|
14
97
|
import { SyncQueue } from "./sync-queue.js";
|
|
15
98
|
import { Reconciler } from "./reconciler.js";
|
|
@@ -1358,6 +1441,88 @@ export class MailxService {
|
|
|
1358
1441
|
return null;
|
|
1359
1442
|
}
|
|
1360
1443
|
}
|
|
1444
|
+
/** Read + delete the pending Windows-share file (C46). Client calls
|
|
1445
|
+
* this on startup so a share that spawned the daemon (rmfshare.exe →
|
|
1446
|
+
* `node mailx.js`) isn't lost to the fires-before-app-registers race —
|
|
1447
|
+
* same contract as consumePendingMailto above. Staged files are
|
|
1448
|
+
* returned base64-encoded (the WebView can't read disk) and their
|
|
1449
|
+
* staging dirs reaped afterwards. Mirrors bin/share-target.ts, which
|
|
1450
|
+
* serves the daemon's live fs.watch path — packages/ can't import
|
|
1451
|
+
* bin/, so the two implementations stay in lockstep by hand. */
|
|
1452
|
+
consumePendingShare() {
|
|
1453
|
+
try {
|
|
1454
|
+
const home = process.env.USERPROFILE || process.env.HOME || ".";
|
|
1455
|
+
const target = path.join(home, ".rmfmail", "pending-share.json");
|
|
1456
|
+
if (!fs.existsSync(target))
|
|
1457
|
+
return null;
|
|
1458
|
+
const raw = fs.readFileSync(target, "utf-8");
|
|
1459
|
+
try {
|
|
1460
|
+
fs.unlinkSync(target);
|
|
1461
|
+
}
|
|
1462
|
+
catch { /* */ }
|
|
1463
|
+
const parsed = JSON.parse(raw);
|
|
1464
|
+
// Same 10-min staleness rule as bin/share-target.ts.
|
|
1465
|
+
if (Date.now() - (parsed.writtenAt || 0) > 10 * 60_000)
|
|
1466
|
+
return null;
|
|
1467
|
+
const maxBytes = 25 * 1024 * 1024;
|
|
1468
|
+
const mimeByExt = {
|
|
1469
|
+
".pdf": "application/pdf", ".png": "image/png",
|
|
1470
|
+
".jpg": "image/jpeg", ".jpeg": "image/jpeg", ".gif": "image/gif",
|
|
1471
|
+
".webp": "image/webp", ".bmp": "image/bmp", ".svg": "image/svg+xml",
|
|
1472
|
+
".heic": "image/heic", ".txt": "text/plain", ".log": "text/plain",
|
|
1473
|
+
".md": "text/plain", ".html": "text/html", ".htm": "text/html",
|
|
1474
|
+
".csv": "text/csv", ".json": "application/json", ".xml": "application/xml",
|
|
1475
|
+
".zip": "application/zip", ".7z": "application/x-7z-compressed",
|
|
1476
|
+
".doc": "application/msword",
|
|
1477
|
+
".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
1478
|
+
".xls": "application/vnd.ms-excel",
|
|
1479
|
+
".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
1480
|
+
".ppt": "application/vnd.ms-powerpoint",
|
|
1481
|
+
".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
1482
|
+
".eml": "message/rfc822", ".ics": "text/calendar",
|
|
1483
|
+
".mp3": "audio/mpeg", ".mp4": "video/mp4", ".mov": "video/quicktime",
|
|
1484
|
+
};
|
|
1485
|
+
const attachments = [];
|
|
1486
|
+
const skipped = [];
|
|
1487
|
+
const dirs = new Set();
|
|
1488
|
+
for (const f of Array.isArray(parsed.files) ? parsed.files : []) {
|
|
1489
|
+
try {
|
|
1490
|
+
const st = fs.statSync(f.path);
|
|
1491
|
+
if (st.size > maxBytes) {
|
|
1492
|
+
skipped.push({ name: f.name, reason: "larger than 25 MB" });
|
|
1493
|
+
}
|
|
1494
|
+
else {
|
|
1495
|
+
attachments.push({
|
|
1496
|
+
filename: f.name,
|
|
1497
|
+
mimeType: mimeByExt[path.extname(f.name || "").toLowerCase()] || "application/octet-stream",
|
|
1498
|
+
dataBase64: fs.readFileSync(f.path).toString("base64"),
|
|
1499
|
+
});
|
|
1500
|
+
}
|
|
1501
|
+
dirs.add(path.dirname(f.path));
|
|
1502
|
+
}
|
|
1503
|
+
catch (e) {
|
|
1504
|
+
skipped.push({ name: f?.name || "?", reason: e?.message || "unreadable" });
|
|
1505
|
+
}
|
|
1506
|
+
}
|
|
1507
|
+
const stagingRoot = path.join(home, ".rmfmail", "share-staging") + path.sep;
|
|
1508
|
+
for (const d of dirs) {
|
|
1509
|
+
if (d.startsWith(stagingRoot)) {
|
|
1510
|
+
try {
|
|
1511
|
+
fs.rmSync(d, { recursive: true, force: true });
|
|
1512
|
+
}
|
|
1513
|
+
catch { /* startup sweep */ }
|
|
1514
|
+
}
|
|
1515
|
+
}
|
|
1516
|
+
return {
|
|
1517
|
+
title: parsed.title || "", text: parsed.text || "", url: parsed.url || "",
|
|
1518
|
+
attachments, skipped,
|
|
1519
|
+
};
|
|
1520
|
+
}
|
|
1521
|
+
catch (e) {
|
|
1522
|
+
console.error(` [share] consume failed: ${e.message}`);
|
|
1523
|
+
return null;
|
|
1524
|
+
}
|
|
1525
|
+
}
|
|
1361
1526
|
/** End external editing. Stops the watcher, removes the temp file.
|
|
1362
1527
|
* Caller is the compose UI when the user closes the window or sends. */
|
|
1363
1528
|
async closeWordEdit(editId) {
|
|
@@ -2976,6 +3141,129 @@ export class MailxService {
|
|
|
2976
3141
|
filename: (att.filename || "attachment").replace(/"/g, ""),
|
|
2977
3142
|
};
|
|
2978
3143
|
}
|
|
3144
|
+
/** Delete attachment(s) from a RECEIVED message — local-first message
|
|
3145
|
+
* surgery. The raw .eml is rewritten without the selected MIME parts
|
|
3146
|
+
* (original kept next to it as .pre-strip.bak), the DB row updates, and
|
|
3147
|
+
* a `replaceMessage` sync action queues the server-side swap, which
|
|
3148
|
+
* appends the modified copy and only deletes the original after the
|
|
3149
|
+
* server confirms the append (never the other order). IMAP accounts
|
|
3150
|
+
* only for now — Gmail's REST path needs its own insert+trash pass.
|
|
3151
|
+
* `ids` are the viewer's chip ids (= mailparser attachment indexes);
|
|
3152
|
+
* "all" means every chip-visible attachment. Every strip is verified by
|
|
3153
|
+
* re-parsing the result before anything is written. */
|
|
3154
|
+
async deleteAttachments(accountId, uid, folderId, ids) {
|
|
3155
|
+
const envelope = this.db.getMessageByUid(accountId, uid, folderId);
|
|
3156
|
+
if (!envelope)
|
|
3157
|
+
throw new Error("Message not found");
|
|
3158
|
+
if (this.imapManager.isApiAccount?.(accountId)) {
|
|
3159
|
+
throw new Error("Attachment delete isn't supported for Gmail accounts yet — nothing was changed.");
|
|
3160
|
+
}
|
|
3161
|
+
const bodyStore = this.imapManager.getBodyStore();
|
|
3162
|
+
const storedPath = envelope.bodyPath || this.db.getMessageBodyPath(accountId, uid, folderId ?? envelope.folderId) || "";
|
|
3163
|
+
if (!storedPath || !(await bodyStore.hasByPath(storedPath))) {
|
|
3164
|
+
throw new Error("Message body not downloaded yet — open the message first, then retry.");
|
|
3165
|
+
}
|
|
3166
|
+
const rawBuf = await bodyStore.readByPath(storedPath);
|
|
3167
|
+
const raw = rawBuf.toString("binary"); // byte-faithful: offsets = byte offsets
|
|
3168
|
+
const parsed = await parseSerial(rawBuf);
|
|
3169
|
+
const all = parsed.attachments || [];
|
|
3170
|
+
// Chip rule mirrors LocalStore.getMessage: spurious inline text parts
|
|
3171
|
+
// aren't chips and must never be strip targets via "all".
|
|
3172
|
+
const chipIds = all
|
|
3173
|
+
.map((a, i) => ({ a, i }))
|
|
3174
|
+
.filter(({ a }) => {
|
|
3175
|
+
const mime = (a.contentType || "application/octet-stream").toLowerCase();
|
|
3176
|
+
const disp = (a.contentDisposition || "").toLowerCase();
|
|
3177
|
+
return !(mime.startsWith("text/") && !a.filename && (disp === "inline" || disp === ""));
|
|
3178
|
+
})
|
|
3179
|
+
.map(({ i }) => i);
|
|
3180
|
+
const targetIds = ids === "all" ? chipIds : ids.filter(i => chipIds.includes(i));
|
|
3181
|
+
if (targetIds.length === 0)
|
|
3182
|
+
throw new Error("No matching attachments to delete");
|
|
3183
|
+
const targets = targetIds.map(i => {
|
|
3184
|
+
const a = all[i];
|
|
3185
|
+
if (!a)
|
|
3186
|
+
throw new Error(`Attachment ${i} not found`);
|
|
3187
|
+
return a;
|
|
3188
|
+
});
|
|
3189
|
+
// Locate each target's MIME part in the raw text by CONTENT match —
|
|
3190
|
+
// no fragile re-implementation of mailparser's classification.
|
|
3191
|
+
const leafs = enumerateMimeLeafParts(raw);
|
|
3192
|
+
const used = new Set();
|
|
3193
|
+
const ranges = [];
|
|
3194
|
+
for (const t of targets) {
|
|
3195
|
+
const want = t.content;
|
|
3196
|
+
let hit = -1;
|
|
3197
|
+
for (let li = 0; li < leafs.length; li++) {
|
|
3198
|
+
if (used.has(li))
|
|
3199
|
+
continue;
|
|
3200
|
+
const dec = leafs[li].decoded;
|
|
3201
|
+
if (dec && want && dec.length === want.length && dec.equals(want)) {
|
|
3202
|
+
hit = li;
|
|
3203
|
+
break;
|
|
3204
|
+
}
|
|
3205
|
+
}
|
|
3206
|
+
if (hit === -1) {
|
|
3207
|
+
// Fallback: filename + decoded size (content compare can miss
|
|
3208
|
+
// when mailparser normalized line endings in text attachments).
|
|
3209
|
+
for (let li = 0; li < leafs.length; li++) {
|
|
3210
|
+
if (used.has(li))
|
|
3211
|
+
continue;
|
|
3212
|
+
const fn = leafs[li].filename;
|
|
3213
|
+
if (fn && t.filename && fn === t.filename && Math.abs((leafs[li].decoded?.length || 0) - (t.size || 0)) <= 2 * ((t.size || 1) / 100 + 2)) {
|
|
3214
|
+
hit = li;
|
|
3215
|
+
break;
|
|
3216
|
+
}
|
|
3217
|
+
}
|
|
3218
|
+
}
|
|
3219
|
+
if (hit === -1)
|
|
3220
|
+
throw new Error(`Could not locate "${t.filename || "attachment"}" in the raw message — nothing was changed.`);
|
|
3221
|
+
used.add(hit);
|
|
3222
|
+
ranges.push({ start: leafs[hit].start, end: leafs[hit].end });
|
|
3223
|
+
}
|
|
3224
|
+
// Splice out the parts, highest offset first.
|
|
3225
|
+
ranges.sort((a, b) => b.start - a.start);
|
|
3226
|
+
let newRaw = raw;
|
|
3227
|
+
for (const r of ranges)
|
|
3228
|
+
newRaw = newRaw.slice(0, r.start) + newRaw.slice(r.end);
|
|
3229
|
+
const newBuf = Buffer.from(newRaw, "binary");
|
|
3230
|
+
// VERIFY before anything is written: re-parse; the targets must be
|
|
3231
|
+
// gone, the bodies must survive byte-for-byte.
|
|
3232
|
+
const reparsed = await parseSerial(newBuf);
|
|
3233
|
+
const newCount = (reparsed.attachments || []).length;
|
|
3234
|
+
if (newCount !== all.length - targets.length) {
|
|
3235
|
+
throw new Error(`Strip verification failed (expected ${all.length - targets.length} attachments, got ${newCount}) — nothing was changed.`);
|
|
3236
|
+
}
|
|
3237
|
+
if ((reparsed.text || "") !== (parsed.text || "")) {
|
|
3238
|
+
throw new Error("Strip verification failed (message text would change) — nothing was changed.");
|
|
3239
|
+
}
|
|
3240
|
+
// HTML check is skipped when a target is cid-referenced: mailparser
|
|
3241
|
+
// inlines such images into parsed.html as data URIs, so deleting one
|
|
3242
|
+
// legitimately changes the parsed HTML (the <img> keeps its cid: ref
|
|
3243
|
+
// and renders as a broken image — that IS the deletion, verified on
|
|
3244
|
+
// real messages 2026-07-23).
|
|
3245
|
+
const anyCid = targets.some(t => (t.contentId || "").length > 0);
|
|
3246
|
+
if (!anyCid && (reparsed.html || "") !== (parsed.html || "")) {
|
|
3247
|
+
throw new Error("Strip verification failed (message HTML would change) — nothing was changed.");
|
|
3248
|
+
}
|
|
3249
|
+
// Commit locally: original preserved as .pre-strip.bak beside the .eml.
|
|
3250
|
+
const absPath = bodyStore.absolutePath?.(storedPath);
|
|
3251
|
+
if (!absPath)
|
|
3252
|
+
throw new Error("Body path did not resolve inside the store — nothing was changed.");
|
|
3253
|
+
try {
|
|
3254
|
+
fs.copyFileSync(absPath, absPath + ".pre-strip.bak");
|
|
3255
|
+
}
|
|
3256
|
+
catch { /* backup is best-effort */ }
|
|
3257
|
+
fs.writeFileSync(absPath, newBuf);
|
|
3258
|
+
const remainingChips = chipIds.length - targetIds.length;
|
|
3259
|
+
this.db.updateMessageAfterStrip(accountId, envelope.folderId, uid, remainingChips > 0, newBuf.length);
|
|
3260
|
+
// Server swap via the sync queue (append-verify-then-delete).
|
|
3261
|
+
this.db.queueSyncAction(accountId, "replaceMessage", uid, envelope.folderId, {
|
|
3262
|
+
rawMessage: newRaw, flags: (envelope.flags || []).filter((f) => f !== "\\Recent"),
|
|
3263
|
+
});
|
|
3264
|
+
this.imapManager.processSyncActions(accountId).catch(() => { });
|
|
3265
|
+
return { ok: true, removed: targets.length, remaining: remainingChips };
|
|
3266
|
+
}
|
|
2979
3267
|
/** Raw RFC 822 source of a message — for "Save message as .eml". Reads the
|
|
2980
3268
|
* on-disk body file (same resolution as getAttachment), falling back to a
|
|
2981
3269
|
* server fetch. Returned base64 so it survives the IPC JSON channel. */
|