proton-mail-bridge-client 2.0.2 → 2.0.4
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/index.d.ts.map +1 -1
- package/dist/index.js +164 -47
- package/dist/index.js.map +1 -1
- package/dist/services/audit-service.d.ts +2 -0
- package/dist/services/audit-service.d.ts.map +1 -1
- package/dist/services/audit-service.js +16 -0
- package/dist/services/audit-service.js.map +1 -1
- package/dist/services/delivery-queue-service.d.ts.map +1 -1
- package/dist/services/delivery-queue-service.js +88 -26
- package/dist/services/delivery-queue-service.js.map +1 -1
- package/dist/services/local-index-service.d.ts +1 -0
- package/dist/services/local-index-service.d.ts.map +1 -1
- package/dist/services/local-index-service.js +84 -10
- package/dist/services/local-index-service.js.map +1 -1
- package/dist/services/simple-imap-service.d.ts +12 -5
- package/dist/services/simple-imap-service.d.ts.map +1 -1
- package/dist/services/simple-imap-service.js +369 -76
- package/dist/services/simple-imap-service.js.map +1 -1
- package/dist/utils/account-identity.d.ts.map +1 -1
- package/dist/utils/account-identity.js +49 -22
- package/dist/utils/account-identity.js.map +1 -1
- package/dist/utils/helpers.d.ts +2 -1
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +65 -9
- package/dist/utils/helpers.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,8 +6,10 @@ export declare class AuditService {
|
|
|
6
6
|
private readonly archivePath2;
|
|
7
7
|
private _rotateLock;
|
|
8
8
|
private permissionsChecked;
|
|
9
|
+
private identityChecked;
|
|
9
10
|
constructor(config: ProtonMailConfig);
|
|
10
11
|
getPath(): string;
|
|
12
|
+
private ensureIdentity;
|
|
11
13
|
record(entry: AuditEntry): Promise<void>;
|
|
12
14
|
list(limit?: number): Promise<AuditEntry[]>;
|
|
13
15
|
private rotateIfNeeded;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-service.d.ts","sourceRoot":"","sources":["../../src/services/audit-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"audit-service.d.ts","sourceRoot":"","sources":["../../src/services/audit-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAMtE,qBAAa,YAAY;IAQX,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,eAAe,CAAS;gBAEH,MAAM,EAAE,gBAAgB;IAMrD,OAAO,IAAI,MAAM;YAUH,cAAc;IAOtB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BxC,IAAI,CAAC,KAAK,SAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YAWhC,cAAc;YAyBd,cAAc;IAS5B,OAAO,CAAC,UAAU;YAMJ,WAAW;CAwB1B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { appendFile, chmod, mkdir, readFile, rename, stat } from "node:fs/promises";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
|
+
import { ensureAccountIdentityMatches } from "../utils/account-identity.js";
|
|
3
4
|
const MAX_AUDIT_BYTES = 5 * 1024 * 1024;
|
|
4
5
|
const MAX_AUDIT_LINES = 10000;
|
|
5
6
|
export class AuditService {
|
|
@@ -9,6 +10,7 @@ export class AuditService {
|
|
|
9
10
|
archivePath2;
|
|
10
11
|
_rotateLock = Promise.resolve();
|
|
11
12
|
permissionsChecked = false;
|
|
13
|
+
identityChecked = false;
|
|
12
14
|
constructor(config) {
|
|
13
15
|
this.config = config;
|
|
14
16
|
this.auditPath = join(this.config.dataDir, "audit.log");
|
|
@@ -18,7 +20,20 @@ export class AuditService {
|
|
|
18
20
|
getPath() {
|
|
19
21
|
return this.auditPath;
|
|
20
22
|
}
|
|
23
|
+
// See DeliveryQueueService.loadUnlocked's identical guard: refuse to
|
|
24
|
+
// touch this dataDir's audit.log (or its rotated archives) if it belongs
|
|
25
|
+
// to a different account. AuditService is append-only-log-backed rather
|
|
26
|
+
// than JSON-blob-backed like the other stores, so there's no single
|
|
27
|
+
// loadUnlocked() choke point to hang this on — record() and list() are
|
|
28
|
+
// its two entry points that actually touch disk, so both call this.
|
|
29
|
+
async ensureIdentity() {
|
|
30
|
+
if (!this.identityChecked) {
|
|
31
|
+
await ensureAccountIdentityMatches(this.config.dataDir, this.config.smtp.username);
|
|
32
|
+
this.identityChecked = true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
21
35
|
async record(entry) {
|
|
36
|
+
await this.ensureIdentity();
|
|
22
37
|
await mkdir(dirname(this.auditPath), { recursive: true, mode: 0o700 });
|
|
23
38
|
// appendFile's `mode` option only applies when the file doesn't already
|
|
24
39
|
// exist — on every real upgrade (not a fresh install), audit.log already
|
|
@@ -46,6 +61,7 @@ export class AuditService {
|
|
|
46
61
|
});
|
|
47
62
|
}
|
|
48
63
|
async list(limit = 100) {
|
|
64
|
+
await this.ensureIdentity();
|
|
49
65
|
const cap = Math.min(limit, MAX_AUDIT_LINES);
|
|
50
66
|
const entries = [
|
|
51
67
|
...(await this.readEntries(this.archivePath2, cap)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-service.js","sourceRoot":"","sources":["../../src/services/audit-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"audit-service.js","sourceRoot":"","sources":["../../src/services/audit-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-queue-service.d.ts","sourceRoot":"","sources":["../../src/services/delivery-queue-service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIlH,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAyClE,qBAAa,oBAAoB;IAc7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAftB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,KAAK,CAAC,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAS;IAMhC,OAAO,CAAC,UAAU,CAAC,CAAoB;gBAGpB,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,WAAW,EACxB,GAAG,GAAE,MAAe;IAKvC,aAAa,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAI5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B,IAAI,IAAI,IAAI;IAQZ,OAAO,CAAC,YAAY;IAad,OAAO,CACX,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,mBAAmB,CAAC;IAkBzB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAgB9E,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAS7C,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAatC,QAAQ,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"delivery-queue-service.d.ts","sourceRoot":"","sources":["../../src/services/delivery-queue-service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIlH,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAyClE,qBAAa,oBAAoB;IAc7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAftB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,KAAK,CAAC,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAS;IAMhC,OAAO,CAAC,UAAU,CAAC,CAAoB;gBAGpB,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,WAAW,EACxB,GAAG,GAAE,MAAe;IAKvC,aAAa,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAI5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B,IAAI,IAAI,IAAI;IAQZ,OAAO,CAAC,YAAY;IAad,OAAO,CACX,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,mBAAmB,CAAC;IAkBzB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAgB9E,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAS7C,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAatC,QAAQ,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAqM3D,OAAO,CAAC,eAAe;YA4BT,uBAAuB;IAkCrC,OAAO,CAAC,gBAAgB;YAeV,QAAQ;YAUR,IAAI;YASJ,YAAY;YAkCZ,sBAAsB;YAoBtB,IAAI;CAUnB"}
|
|
@@ -160,6 +160,50 @@ export class DeliveryQueueService {
|
|
|
160
160
|
});
|
|
161
161
|
if (!claimed)
|
|
162
162
|
continue;
|
|
163
|
+
// Found live: this scheduled send's own queue record was claimed
|
|
164
|
+
// ("pending" -> "sending") above, but the DRAFT it came from stayed
|
|
165
|
+
// "draft" until AFTER SMTP had already succeeded — draftStore's own
|
|
166
|
+
// claimForSending() call used to live down in the success branch. That
|
|
167
|
+
// left a real window, for however long SMTP takes, where a concurrent
|
|
168
|
+
// manual send_draft on the same draft saw nothing blocking it, claimed
|
|
169
|
+
// the draft itself, and sent it too: two SMTP deliveries for one
|
|
170
|
+
// draft. The draft is now claimed BEFORE calling SMTP, mirroring
|
|
171
|
+
// exactly how send_draft's own handler in index.ts already does it —
|
|
172
|
+
// claim, then send, with a revert on failure — so the two paths race
|
|
173
|
+
// on the same lock instead of racing past each other.
|
|
174
|
+
let claimedDraft;
|
|
175
|
+
if (claimed.sourceDraftId && this.draftStore) {
|
|
176
|
+
try {
|
|
177
|
+
claimedDraft = await this.draftStore.claimForSending(claimed.sourceDraftId);
|
|
178
|
+
}
|
|
179
|
+
catch (draftClaimError) {
|
|
180
|
+
// Someone else — most likely a manual send_draft — already claimed
|
|
181
|
+
// or sent this draft first. This scheduled fire lost the race:
|
|
182
|
+
// sending now would duplicate whatever the other path already did
|
|
183
|
+
// or is doing, so this item must NOT proceed to SMTP. Its queue
|
|
184
|
+
// record did win its own claim above, though, so it can't be left
|
|
185
|
+
// "sending" forever either. There's no queue status that means
|
|
186
|
+
// "skipped, not actually a failure" — reusing "failed" (like the
|
|
187
|
+
// ambiguous-timeout case below already does) with a message that
|
|
188
|
+
// says plainly this was a lost race, not a delivery failure, is
|
|
189
|
+
// the least surprising fit: callers checking list_scheduled_sends
|
|
190
|
+
// see the item resolved rather than stuck, and the message makes
|
|
191
|
+
// clear no email was sent along this path.
|
|
192
|
+
this.log.warn("Scheduled send's source draft was already claimed or sent via another path — skipping this queued item without calling SMTP", "DeliveryQueueService", { id, draftId: claimed.sourceDraftId, error: draftClaimError });
|
|
193
|
+
await this.withLock(async () => {
|
|
194
|
+
const store = await this.loadUnlocked();
|
|
195
|
+
const record = store.items[id];
|
|
196
|
+
if (record && record.status === "sending") {
|
|
197
|
+
record.status = "failed";
|
|
198
|
+
record.failureReason =
|
|
199
|
+
"Skipped: the source draft was already sent (or is being sent) via another path, most likely a manual send_draft call that won the race. This scheduled send did not call SMTP and did not deliver a duplicate.";
|
|
200
|
+
await this.save(store);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
failed += 1;
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
163
207
|
try {
|
|
164
208
|
// Runtime policy (allowSend/readOnly/restrictOutboundToSelf) is only
|
|
165
209
|
// checked at enqueue time by the tool handler — re-check it here too,
|
|
@@ -184,37 +228,55 @@ export class DeliveryQueueService {
|
|
|
184
228
|
}
|
|
185
229
|
});
|
|
186
230
|
sent += 1;
|
|
187
|
-
//
|
|
188
|
-
//
|
|
189
|
-
// source
|
|
190
|
-
//
|
|
191
|
-
//
|
|
192
|
-
//
|
|
193
|
-
//
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
231
|
+
// The draft was already claimed above, before SMTP — mark it sent
|
|
232
|
+
// now that delivery has actually completed, so both this path and
|
|
233
|
+
// send_draft share one source of truth for "has this draft already
|
|
234
|
+
// been sent". This is deliberately its own try/catch, not part of
|
|
235
|
+
// the one above: SMTP already succeeded and the queue record above
|
|
236
|
+
// already got written "sent", so a markSent() failure here (e.g. a
|
|
237
|
+
// draft-store disk write error, unrelated to whether the email was
|
|
238
|
+
// delivered) must never fall into the catch below — that catch's
|
|
239
|
+
// revertSending() would put the draft back to "draft" and let a
|
|
240
|
+
// later send_draft duplicate an email that already went out, and
|
|
241
|
+
// its failure accounting would double-count this same item as both
|
|
242
|
+
// sent and failed. Retry a bounded number of times first, since
|
|
243
|
+
// nothing about the delivery itself is in doubt here — only the
|
|
244
|
+
// draft-store write is failing. If every attempt still fails, the
|
|
245
|
+
// draft is deliberately left stuck in "sending" rather than
|
|
246
|
+
// reverted: "sending" already blocks a fresh claimForSending() (see
|
|
247
|
+
// its status check), so no duplicate can go out, at the cost of the
|
|
248
|
+
// draft needing manual reconciliation — this queue record's "sent"
|
|
249
|
+
// status is the source of truth for what actually happened.
|
|
250
|
+
if (claimedDraft) {
|
|
251
|
+
const MARK_SENT_ATTEMPTS = 3;
|
|
252
|
+
let markSentError;
|
|
253
|
+
for (let attempt = 1; attempt <= MARK_SENT_ATTEMPTS; attempt += 1) {
|
|
254
|
+
try {
|
|
255
|
+
await this.draftStore.markSent(claimedDraft.id, {
|
|
256
|
+
messageId: result.messageId,
|
|
257
|
+
accepted: result.accepted,
|
|
258
|
+
rejected: result.rejected,
|
|
259
|
+
response: result.response,
|
|
260
|
+
});
|
|
261
|
+
markSentError = undefined;
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
markSentError = error;
|
|
266
|
+
}
|
|
203
267
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
// "sent" or "sending" — e.g. a manual send_draft raced this
|
|
207
|
-
// scheduled fire and won. That's a legitimate race the other
|
|
208
|
-
// direction (mail already went out through the manual path, or
|
|
209
|
-
// is about to), not this checkDue() pass's problem to fix —
|
|
210
|
-
// the delivery-queue record above is already correctly "sent"
|
|
211
|
-
// regardless. Log and move on rather than throwing, since the
|
|
212
|
-
// actual email send already succeeded.
|
|
213
|
-
this.log.warn("Scheduled send fired but its source draft could not be marked sent", "DeliveryQueueService", { draftId: claimed.sourceDraftId, error: draftError });
|
|
268
|
+
if (markSentError) {
|
|
269
|
+
this.log.error('Delivery succeeded and the queue record is marked "sent", but finalizing the source draft (markSent) failed after retries — leaving the draft in "sending" rather than reverting it, since reverting would make it resendable and risk a duplicate delivery. Needs manual reconciliation: flip the draft to "sent" using this queue record as the source of truth.', "DeliveryQueueService", { id, draftId: claimedDraft.id, error: markSentError });
|
|
214
270
|
}
|
|
215
271
|
}
|
|
216
272
|
}
|
|
217
273
|
catch (error) {
|
|
274
|
+
// SMTP failed (or timed out) after the draft claim succeeded above —
|
|
275
|
+
// revert it so the draft isn't stuck in "sending" forever, exactly
|
|
276
|
+
// like send_draft's own catch handler does for the same failure.
|
|
277
|
+
if (claimedDraft) {
|
|
278
|
+
await this.draftStore.revertSending(claimedDraft.id);
|
|
279
|
+
}
|
|
218
280
|
const rawMessage = error instanceof Error ? error.message : String(error);
|
|
219
281
|
// withTimeout() races the send against a timer — it can't actually
|
|
220
282
|
// cancel sendMail() (SMTP over a network socket has no cancellation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-queue-service.js","sourceRoot":"","sources":["../../src/services/delivery-queue-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"delivery-queue-service.js","sourceRoot":"","sources":["../../src/services/delivery-queue-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-index-service.d.ts","sourceRoot":"","sources":["../../src/services/local-index-service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,uBAAuB,EACvB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,cAAc,EAEd,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACd,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"local-index-service.d.ts","sourceRoot":"","sources":["../../src/services/local-index-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { chmodSync } from "node:fs";
|
|
|
3
3
|
import { mkdir, readFile, rm } from "node:fs/promises";
|
|
4
4
|
import { dirname, join } from "node:path";
|
|
5
5
|
import { ensureAccountIdentityMatches } from "../utils/account-identity.js";
|
|
6
|
-
import { dedupeEmails, extractDomain, extractMessageIdList, lowerCaseAddress, nextDay, normalizeMailboxLabel, normalizeMessageId, normalizeSubjectForThread, sortEmailsByNewest, } from "../utils/helpers.js";
|
|
6
|
+
import { createEmailId, dedupeEmails, extractDomain, extractMessageIdList, lowerCaseAddress, nextDay, normalizeMailboxLabel, normalizeMessageId, normalizeSubjectForThread, sortEmailsByNewest, } from "../utils/helpers.js";
|
|
7
7
|
import { logger } from "../utils/logger.js";
|
|
8
8
|
const DB_SCHEMA_VERSION = 3;
|
|
9
9
|
const STALE_THRESHOLD_MINUTES = 60;
|
|
@@ -639,9 +639,16 @@ export class LocalIndexService {
|
|
|
639
639
|
}
|
|
640
640
|
// Threads keyed off a References/In-Reply-To chain ("ref:...") or the
|
|
641
641
|
// participant-signature fallback have no persisted thread_id to query by —
|
|
642
|
-
// resolving them needs the cross-message reference graph
|
|
643
|
-
//
|
|
644
|
-
|
|
642
|
+
// resolving them needs the cross-message reference graph. Read the full,
|
|
643
|
+
// uncapped message set here (not the DEFAULT_SNAPSHOT_LIMIT-capped snapshot
|
|
644
|
+
// loadSnapshot() would give us) so a fallback thread entirely outside the
|
|
645
|
+
// newest 5000 messages — or one whose id only comes out right when its
|
|
646
|
+
// complete membership is considered — still resolves instead of throwing
|
|
647
|
+
// "Thread not found".
|
|
648
|
+
const { ownerEmail, updatedAt, folders, indexedFolders } = this.loadFoldersAndMetadata(db);
|
|
649
|
+
const syncCheckpoints = this.loadCheckpointsSync(db);
|
|
650
|
+
const messages = this.loadAllMessages(db);
|
|
651
|
+
const snapshot = { ownerEmail, updatedAt, folders, indexedFolders, syncCheckpoints, messages };
|
|
645
652
|
const thread = this.buildThreads(snapshot, true).find((entry) => entry.id === threadId);
|
|
646
653
|
if (!thread) {
|
|
647
654
|
throw new Error(`Thread not found for id ${threadId}`);
|
|
@@ -1102,6 +1109,20 @@ export class LocalIndexService {
|
|
|
1102
1109
|
email_id, subject, preview, folder, labels, participants, attachment_names
|
|
1103
1110
|
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
1104
1111
|
`);
|
|
1112
|
+
// The UIDVALIDITY-embedding id format is optional per-caller (createEmailId):
|
|
1113
|
+
// a message indexed before that fix lives here under the old 3-field id
|
|
1114
|
+
// (<folder>::<uid>::<checksum>, no uidValidity), while a sync running the
|
|
1115
|
+
// current code now mints a 4-field id (<folder>::<uidValidity>::<uid>::
|
|
1116
|
+
// <checksum>) for the exact same physical message. ON CONFLICT(email_id)
|
|
1117
|
+
// in upsertMessage never sees this — the id STRING changed even though
|
|
1118
|
+
// the message didn't — so left alone, the old row is never touched and a
|
|
1119
|
+
// second, disjoint row appears for one physical message (see the
|
|
1120
|
+
// migration loop below). This is a targeted single-row lookup by the
|
|
1121
|
+
// exact old-format id (computed directly from folder+uid, not searched
|
|
1122
|
+
// for), so it's a cheap indexed PK read on every sync and, once the old
|
|
1123
|
+
// row is migrated away below, a cheap negative lookup forever after.
|
|
1124
|
+
const findLegacyRow = db.prepare(`SELECT preview, attachment_text FROM messages WHERE email_id = ?`);
|
|
1125
|
+
const deleteLegacyRow = db.prepare(`DELETE FROM messages WHERE email_id = ?`);
|
|
1105
1126
|
const setMetadata = db.prepare(`
|
|
1106
1127
|
INSERT INTO metadata (key, value) VALUES (?, ?)
|
|
1107
1128
|
ON CONFLICT(key) DO UPDATE SET value = excluded.value
|
|
@@ -1187,6 +1208,31 @@ export class LocalIndexService {
|
|
|
1187
1208
|
});
|
|
1188
1209
|
}
|
|
1189
1210
|
for (const email of input.emails) {
|
|
1211
|
+
// Migration: reconcile an old-format row for this same physical
|
|
1212
|
+
// message (same folder+uid) before inserting under the incoming id.
|
|
1213
|
+
// createEmailId(folder, uid) with no uidValidity always reconstructs
|
|
1214
|
+
// what the pre-UIDVALIDITY-fix id for this folder+uid would have
|
|
1215
|
+
// been — no search required. When email.id itself is already that
|
|
1216
|
+
// old format (legacyEmailId === email.id), there's nothing to
|
|
1217
|
+
// migrate: the row below is written under that same id as always.
|
|
1218
|
+
// A genuine UIDVALIDITY change (different generation reusing this
|
|
1219
|
+
// UID) can't be misdetected here: the folder-wipe above already
|
|
1220
|
+
// deleted every row for this folder before this loop runs whenever
|
|
1221
|
+
// the server's UIDVALIDITY no longer matches what was stored, so any
|
|
1222
|
+
// old-format row still found at this point is guaranteed to be the
|
|
1223
|
+
// same generation, not a stale one.
|
|
1224
|
+
let legacyPreview = null;
|
|
1225
|
+
let legacyAttachmentText = null;
|
|
1226
|
+
const legacyEmailId = createEmailId(email.folder, email.uid);
|
|
1227
|
+
if (legacyEmailId !== email.id) {
|
|
1228
|
+
const legacyRow = findLegacyRow.get(legacyEmailId);
|
|
1229
|
+
if (legacyRow) {
|
|
1230
|
+
legacyPreview = legacyRow.preview;
|
|
1231
|
+
legacyAttachmentText = legacyRow.attachment_text;
|
|
1232
|
+
deleteLegacyRow.run(legacyEmailId);
|
|
1233
|
+
deleteFts.run(legacyEmailId);
|
|
1234
|
+
}
|
|
1235
|
+
}
|
|
1190
1236
|
// RETURNING gives back the post-COALESCE stored values, not the raw
|
|
1191
1237
|
// incoming ones — a flags-only sync omits source/preview, and the
|
|
1192
1238
|
// messages table upsert already preserves the prior indexed preview/
|
|
@@ -1194,6 +1240,10 @@ export class LocalIndexService {
|
|
|
1194
1240
|
// immutable). Without this, the FTS row below would be rebuilt from
|
|
1195
1241
|
// the incoming (empty) values and lose body-text searchability on
|
|
1196
1242
|
// every metadata-only refresh, even though the stored row is intact.
|
|
1243
|
+
// The same COALESCE-style preservation applies to a migrated legacy
|
|
1244
|
+
// row above: this is an INSERT under a brand-new id, so
|
|
1245
|
+
// ON CONFLICT's COALESCE never fires for it — legacyPreview/
|
|
1246
|
+
// legacyAttachmentText fill that role instead.
|
|
1197
1247
|
const persisted = upsertMessage.get({
|
|
1198
1248
|
email_id: email.id,
|
|
1199
1249
|
folder: email.folder,
|
|
@@ -1215,10 +1265,10 @@ export class LocalIndexService {
|
|
|
1215
1265
|
is_starred: email.isStarred ? 1 : 0,
|
|
1216
1266
|
flags_json: JSON.stringify(email.flags),
|
|
1217
1267
|
size: email.size ?? null,
|
|
1218
|
-
preview: email.preview ??
|
|
1268
|
+
preview: email.preview ?? legacyPreview,
|
|
1219
1269
|
has_attachments: email.hasAttachments ? 1 : 0,
|
|
1220
1270
|
attachments_json: JSON.stringify(email.attachments),
|
|
1221
|
-
attachment_text: email.attachmentText ??
|
|
1271
|
+
attachment_text: email.attachmentText ?? legacyAttachmentText,
|
|
1222
1272
|
labels_json: JSON.stringify(email.labels),
|
|
1223
1273
|
});
|
|
1224
1274
|
const mergedPreview = persisted.preview ?? "";
|
|
@@ -1694,11 +1744,8 @@ export class LocalIndexService {
|
|
|
1694
1744
|
.prepare(sql)
|
|
1695
1745
|
.all(...params)
|
|
1696
1746
|
.map((row) => this.rowToEmailSummary(row));
|
|
1697
|
-
const threadIds = [...new Set(candidates.map((email) => email.threadId?.trim()).filter((id) => Boolean(id)))];
|
|
1698
|
-
if (threadIds.length === 0) {
|
|
1699
|
-
return candidates;
|
|
1700
|
-
}
|
|
1701
1747
|
const byId = new Map(candidates.map((email) => [email.id, email]));
|
|
1748
|
+
const threadIds = [...new Set(candidates.map((email) => email.threadId?.trim()).filter((id) => Boolean(id)))];
|
|
1702
1749
|
const CHUNK_SIZE = 200;
|
|
1703
1750
|
for (let i = 0; i < threadIds.length; i += CHUNK_SIZE) {
|
|
1704
1751
|
const chunk = threadIds.slice(i, i + CHUNK_SIZE);
|
|
@@ -1710,8 +1757,35 @@ export class LocalIndexService {
|
|
|
1710
1757
|
byId.set(email.id, email);
|
|
1711
1758
|
}
|
|
1712
1759
|
}
|
|
1760
|
+
// A candidate with no persisted thread_id but a References/In-Reply-To header
|
|
1761
|
+
// is only a PARTIAL view of its (unpersisted) reference chain — the same chain
|
|
1762
|
+
// assignResolvedThreadKeys() walks when buildThreads() runs on whatever we
|
|
1763
|
+
// return. Handing back just the SQL-matched subset would make that walk
|
|
1764
|
+
// compute a synthetic "ref:..." id from incomplete membership, different from
|
|
1765
|
+
// the id an unfiltered getThreads() call would compute for the same thread
|
|
1766
|
+
// (see Finding 1 in the thread-identity review). So whenever such a candidate
|
|
1767
|
+
// is present, pull in the full, uncapped message set — the same source
|
|
1768
|
+
// getThreadById() now uses for these threads — so the thread is always built
|
|
1769
|
+
// from its complete membership, filtered query or not.
|
|
1770
|
+
const hasUnresolvedReferenceCandidate = candidates.some((email) => !email.threadId?.trim() && (email.inReplyTo || (email.references?.length ?? 0) > 0));
|
|
1771
|
+
if (hasUnresolvedReferenceCandidate) {
|
|
1772
|
+
for (const email of this.loadAllMessages(db)) {
|
|
1773
|
+
byId.set(email.id, email);
|
|
1774
|
+
}
|
|
1775
|
+
}
|
|
1713
1776
|
return [...byId.values()];
|
|
1714
1777
|
}
|
|
1778
|
+
// Uncapped message read, unlike loadMessages() (deliberately capped at
|
|
1779
|
+
// DEFAULT_SNAPSHOT_LIMIT). Used only where correctness requires seeing every
|
|
1780
|
+
// message regardless of index size — resolving a fallback/reference-chain
|
|
1781
|
+
// thread's full membership (see loadThreadCandidateMessages() and
|
|
1782
|
+
// getThreadById() above).
|
|
1783
|
+
loadAllMessages(db) {
|
|
1784
|
+
return db
|
|
1785
|
+
.prepare(`SELECT * FROM messages`)
|
|
1786
|
+
.all()
|
|
1787
|
+
.map((row) => this.rowToEmailSummary(row));
|
|
1788
|
+
}
|
|
1715
1789
|
async loadSnapshot(options = {}) {
|
|
1716
1790
|
const db = await this.ensureDb();
|
|
1717
1791
|
const { ownerEmail, updatedAt, folders, indexedFolders } = this.loadFoldersAndMetadata(db);
|