@commonpub/server 2.97.0 → 2.97.1
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/comms/outbox.d.ts.map +1 -1
- package/dist/comms/outbox.js +57 -31
- package/dist/comms/outbox.js.map +1 -1
- package/dist/email.d.ts +2 -2
- package/dist/email.d.ts.map +1 -1
- package/dist/email.js +1 -1
- package/dist/email.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../src/comms/outbox.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../src/comms/outbox.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,aAAa,CAAC;AAO/E,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACxC,QAAQ,EAAE,aAAa,CAAC;IACxB,wDAAwD;IACxD,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAeD,wDAAwD;AACxD,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF;AAED,sEAAsE;AACtE,wBAAsB,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpF;AAED,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,4DAA4D;IAC5D,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAwBD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,YAAY,EACrB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,WAAW,CAAC,CAwGtB"}
|
package/dist/comms/outbox.js
CHANGED
|
@@ -23,6 +23,11 @@ export async function enqueueEmails(db, messages) {
|
|
|
23
23
|
await db.insert(emailOutbox).values(messages.map(toRow));
|
|
24
24
|
}
|
|
25
25
|
const LOCK_TTL_MS = 5 * 60 * 1000;
|
|
26
|
+
// Worst-case budget for one provider call (its HTTP timeout) plus a throttle gap.
|
|
27
|
+
// Used to clamp a tick's row count so the whole tick finishes before its own row
|
|
28
|
+
// lock expires — otherwise a second replica could reclaim and re-send in-flight
|
|
29
|
+
// rows. Slightly above the adapter's 30s HTTP timeout.
|
|
30
|
+
const PER_CALL_BUDGET_MS = 35_000;
|
|
26
31
|
/** Exponential backoff for the NEXT retry (1→2min, 2→4min, ... capped 1h). */
|
|
27
32
|
function backoffMs(attempts) {
|
|
28
33
|
return Math.min(2 ** attempts * 60_000, 60 * 60_000);
|
|
@@ -47,7 +52,6 @@ function rowToMessage(row) {
|
|
|
47
52
|
* an injected clock. The Nitro plugin just calls this on an interval.
|
|
48
53
|
*/
|
|
49
54
|
export async function drainEmailOutbox(db, adapter, opts = {}) {
|
|
50
|
-
const maxPerTick = opts.maxPerTick ?? 200;
|
|
51
55
|
const batchSize = Math.min(opts.batchSize ?? 100, 100);
|
|
52
56
|
const maxAttempts = opts.maxAttempts ?? 6;
|
|
53
57
|
const maxBatchesPerSecond = opts.maxBatchesPerSecond ?? 5;
|
|
@@ -55,6 +59,11 @@ export async function drainEmailOutbox(db, adapter, opts = {}) {
|
|
|
55
59
|
const sleep = opts.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
56
60
|
const lockExpiry = new Date(now.getTime() + LOCK_TTL_MS);
|
|
57
61
|
const gapMs = Math.ceil(1000 / Math.max(1, maxBatchesPerSecond));
|
|
62
|
+
// Clamp the tick so its worst-case duration stays under LOCK_TTL_MS: a tick must
|
|
63
|
+
// finish (and mark its rows done) before another replica could treat them as
|
|
64
|
+
// stale and reclaim them. maxChunks * per-chunk-budget < lock TTL.
|
|
65
|
+
const maxChunks = Math.max(1, Math.floor(LOCK_TTL_MS / (PER_CALL_BUDGET_MS + gapMs)));
|
|
66
|
+
const maxPerTick = Math.min(opts.maxPerTick ?? 200, maxChunks * batchSize);
|
|
58
67
|
// Claim: pending+due rows, plus stale 'sending' rows whose lock expired (a
|
|
59
68
|
// crashed worker). SKIP LOCKED so parallel workers don't collide.
|
|
60
69
|
const claimIds = db
|
|
@@ -78,41 +87,58 @@ export async function drainEmailOutbox(db, adapter, opts = {}) {
|
|
|
78
87
|
chunks.push(claimed.slice(i, i + batchSize));
|
|
79
88
|
for (let c = 0; c < chunks.length; c++) {
|
|
80
89
|
const chunk = chunks[c];
|
|
90
|
+
// Per-message outcomes. A thrown error = transport failure where nothing was
|
|
91
|
+
// accepted → treat every message as failed (retry the whole chunk). A returned
|
|
92
|
+
// array attributes each message, so a partial provider acceptance marks only
|
|
93
|
+
// the accepted rows sent and reschedules the rejected ones (no loss, no blind
|
|
94
|
+
// resend of the whole chunk).
|
|
95
|
+
let results;
|
|
81
96
|
try {
|
|
82
|
-
await adapter.sendBatch(chunk.map(rowToMessage));
|
|
83
|
-
await db
|
|
84
|
-
.update(emailOutbox)
|
|
85
|
-
.set({ status: 'sent', sentAt: now, lastError: null })
|
|
86
|
-
.where(inArray(emailOutbox.id, chunk.map((r) => r.id)));
|
|
87
|
-
sent += chunk.length;
|
|
97
|
+
results = await adapter.sendBatch(chunk.map(rowToMessage));
|
|
88
98
|
}
|
|
89
99
|
catch (err) {
|
|
90
100
|
const msg = err instanceof Error ? err.message : String(err);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
scheduledAt: new Date(now.getTime() + backoffMs(attempts)),
|
|
110
|
-
claimedAt: null,
|
|
111
|
-
lockExpiresAt: null,
|
|
112
|
-
})
|
|
113
|
-
.where(eq(emailOutbox.id, row.id));
|
|
114
|
-
}
|
|
101
|
+
results = chunk.map(() => ({ ok: false, error: msg }));
|
|
102
|
+
}
|
|
103
|
+
const okIds = [];
|
|
104
|
+
for (let i = 0; i < chunk.length; i++) {
|
|
105
|
+
const row = chunk[i];
|
|
106
|
+
const res = results[i] ?? { ok: false, error: 'no provider result' };
|
|
107
|
+
if (res.ok) {
|
|
108
|
+
okIds.push(row.id);
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
// Reschedule (or dead-letter) the failed row, attempt-accurate.
|
|
112
|
+
const attempts = row.attempts + 1;
|
|
113
|
+
if (attempts >= maxAttempts) {
|
|
114
|
+
await db
|
|
115
|
+
.update(emailOutbox)
|
|
116
|
+
.set({ status: 'failed', attempts, lastError: res.error ?? 'send failed' })
|
|
117
|
+
.where(and(eq(emailOutbox.id, row.id), eq(emailOutbox.status, 'sending')));
|
|
118
|
+
failed++;
|
|
115
119
|
}
|
|
120
|
+
else {
|
|
121
|
+
await db
|
|
122
|
+
.update(emailOutbox)
|
|
123
|
+
.set({
|
|
124
|
+
status: 'pending',
|
|
125
|
+
attempts,
|
|
126
|
+
lastError: res.error ?? 'send failed',
|
|
127
|
+
scheduledAt: new Date(now.getTime() + backoffMs(attempts)),
|
|
128
|
+
claimedAt: null,
|
|
129
|
+
lockExpiresAt: null,
|
|
130
|
+
})
|
|
131
|
+
.where(and(eq(emailOutbox.id, row.id), eq(emailOutbox.status, 'sending')));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (okIds.length > 0) {
|
|
135
|
+
// Guard on status='sending': if another replica reclaimed a stale row mid-tick
|
|
136
|
+
// it would no longer be 'sending' as claimed by us, so we won't stomp it sent.
|
|
137
|
+
await db
|
|
138
|
+
.update(emailOutbox)
|
|
139
|
+
.set({ status: 'sent', sentAt: now, lastError: null })
|
|
140
|
+
.where(and(inArray(emailOutbox.id, okIds), eq(emailOutbox.status, 'sending')));
|
|
141
|
+
sent += okIds.length;
|
|
116
142
|
}
|
|
117
143
|
// Throttle provider API calls to the rate limit (skip after the last chunk).
|
|
118
144
|
if (c < chunks.length - 1)
|
package/dist/comms/outbox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../src/comms/outbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAwBhD,SAAS,KAAK,CAAC,CAAgB;IAC7B,OAAO;QACL,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;QACxB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;QACpB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;QAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,SAAS,EAAE,+BAA+B;KACzE,CAAC;AACJ,CAAC;AAED,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAM,EAAE,OAAsB;IAC/D,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAM,EAAE,QAAyB;IACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAClC,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,CAAC;AAuBD,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAElC,8EAA8E;AAC9E,SAAS,SAAS,CAAC,QAAgB;IACjC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,YAAY,CAAC,GAAoC;IACxD,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,OAAO;QACf,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,SAAS;QAC3B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;KAClC,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAM,EACN,OAAqB,EACrB,OAAqB,EAAE;IAEvB,MAAM,
|
|
1
|
+
{"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../src/comms/outbox.ts"],"names":[],"mappings":"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"}
|
package/dist/email.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { SmtpEmailAdapter, ResendEmailAdapter, ConsoleEmailAdapter, emailTemplates, } from '@commonpub/infra/email';
|
|
2
|
-
export type { EmailAdapter, EmailMessage } from '@commonpub/infra/email';
|
|
1
|
+
export { SmtpEmailAdapter, ResendEmailAdapter, ConsoleEmailAdapter, emailTemplates, EMAIL_HTTP_TIMEOUT_MS, } from '@commonpub/infra/email';
|
|
2
|
+
export type { EmailAdapter, EmailMessage, EmailSendResult } from '@commonpub/infra/email';
|
|
3
3
|
//# sourceMappingURL=email.d.ts.map
|
package/dist/email.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../src/email.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../src/email.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/email.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Re-export from @commonpub/infra for backward compatibility
|
|
2
|
-
export { SmtpEmailAdapter, ResendEmailAdapter, ConsoleEmailAdapter, emailTemplates, } from '@commonpub/infra/email';
|
|
2
|
+
export { SmtpEmailAdapter, ResendEmailAdapter, ConsoleEmailAdapter, emailTemplates, EMAIL_HTTP_TIMEOUT_MS, } from '@commonpub/infra/email';
|
|
3
3
|
//# sourceMappingURL=email.js.map
|
package/dist/email.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.js","sourceRoot":"","sources":["../src/email.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../src/email.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,qBAAqB,GACtB,MAAM,wBAAwB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@commonpub/server",
|
|
3
|
-
"version": "2.97.
|
|
3
|
+
"version": "2.97.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Framework-agnostic business logic for CommonPub instances",
|
|
6
6
|
"license": "AGPL-3.0-or-later",
|
|
@@ -115,13 +115,13 @@
|
|
|
115
115
|
"megalodon": "^10.3.0",
|
|
116
116
|
"turndown": "^7.2.4",
|
|
117
117
|
"@commonpub/auth": "0.8.0",
|
|
118
|
-
"@commonpub/editor": "0.9.0",
|
|
119
|
-
"@commonpub/learning": "0.5.2",
|
|
120
118
|
"@commonpub/config": "0.24.0",
|
|
121
119
|
"@commonpub/docs": "0.6.3",
|
|
120
|
+
"@commonpub/infra": "0.10.1",
|
|
121
|
+
"@commonpub/learning": "0.5.2",
|
|
122
122
|
"@commonpub/protocol": "0.14.0",
|
|
123
|
-
"@commonpub/
|
|
124
|
-
"@commonpub/
|
|
123
|
+
"@commonpub/schema": "0.51.0",
|
|
124
|
+
"@commonpub/editor": "0.9.0"
|
|
125
125
|
},
|
|
126
126
|
"peerDependencies": {
|
|
127
127
|
"drizzle-orm": "^0.45.1"
|