mailery 0.16.1 → 0.16.2
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.cjs +24 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +24 -9
- package/dist/index.js.map +1 -1
- package/dist/testing.cjs +16 -5
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.js +16 -5
- package/dist/testing.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -269,6 +269,7 @@ var init_webhook_tolerance = __esm({
|
|
|
269
269
|
var sendgrid_exports = {};
|
|
270
270
|
__export(sendgrid_exports, {
|
|
271
271
|
SendGridProvider: () => SendGridProvider,
|
|
272
|
+
normalizeSendGridMessageId: () => normalizeSendGridMessageId,
|
|
272
273
|
normalizeWebhookVerificationKey: () => normalizeWebhookVerificationKey
|
|
273
274
|
});
|
|
274
275
|
function normalizeWebhookVerificationKey(input) {
|
|
@@ -298,13 +299,18 @@ ${PEM_FOOTER}
|
|
|
298
299
|
}
|
|
299
300
|
return pem;
|
|
300
301
|
}
|
|
302
|
+
function normalizeSendGridMessageId(raw) {
|
|
303
|
+
const id = String(raw ?? "");
|
|
304
|
+
const marker = /\.(?:filter|recvd)\S*$/i.exec(id);
|
|
305
|
+
return marker ? id.slice(0, marker.index) : id;
|
|
306
|
+
}
|
|
301
307
|
function normalizeSendGridEvent(e) {
|
|
302
308
|
const type = mapEventType(e.event);
|
|
303
309
|
if (!type) return null;
|
|
304
310
|
return {
|
|
305
311
|
type,
|
|
306
312
|
providerEventId: String(e.sg_event_id ?? e["smtp-id"] ?? `${e.event}-${e.timestamp}-${e.email}`),
|
|
307
|
-
providerMessageId:
|
|
313
|
+
providerMessageId: e.sg_message_id != null ? normalizeSendGridMessageId(e.sg_message_id) : String(e["smtp-id"] ?? ""),
|
|
308
314
|
email: String(e.email ?? "").toLowerCase(),
|
|
309
315
|
occurredAt: new Date(Number(e.timestamp) * 1e3),
|
|
310
316
|
details: {
|
|
@@ -1741,11 +1747,20 @@ async function processWebhookBacklog(ctx, opts = {}) {
|
|
|
1741
1747
|
}
|
|
1742
1748
|
}
|
|
1743
1749
|
}
|
|
1750
|
+
async function findSendForEvent(event, ctx) {
|
|
1751
|
+
if (event.providerMessageId) {
|
|
1752
|
+
const byId = await ctx.collections.sends.findOne({ providerMessageId: event.providerMessageId });
|
|
1753
|
+
if (byId) return byId;
|
|
1754
|
+
}
|
|
1755
|
+
if (!event.email) return null;
|
|
1756
|
+
return ctx.collections.sends.findOne({ emailAtSend: event.email, sentAt: { $ne: null } }, { sort: { sentAt: -1 } });
|
|
1757
|
+
}
|
|
1758
|
+
function webhookEventsForMessageId(providerMessageId) {
|
|
1759
|
+
const escaped = providerMessageId.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
1760
|
+
return { $or: [{ providerMessageId }, { providerMessageId: { $regex: `^${escaped}\\.` } }] };
|
|
1761
|
+
}
|
|
1744
1762
|
async function applyWebhookEvent(event, ctx) {
|
|
1745
|
-
const send = await ctx
|
|
1746
|
-
event.providerMessageId ? { $or: [{ providerMessageId: event.providerMessageId }, { emailAtSend: event.email }] } : { emailAtSend: event.email },
|
|
1747
|
-
{ sort: { queuedAt: -1 } }
|
|
1748
|
-
);
|
|
1763
|
+
const send = await findSendForEvent(event, ctx);
|
|
1749
1764
|
switch (event.type) {
|
|
1750
1765
|
case "delivered":
|
|
1751
1766
|
if (send) {
|
|
@@ -6499,7 +6514,7 @@ function createAdminApiRouter(mailer, opts = {}) {
|
|
|
6499
6514
|
if (!ObjectId.isValid(id)) return res.status(400).json({ error: "bad_id" });
|
|
6500
6515
|
const send = await c.sends.findOne({ _id: new ObjectId(id) });
|
|
6501
6516
|
if (!send) return res.status(404).json({ error: "not_found" });
|
|
6502
|
-
const events = send.providerMessageId ? await c.webhookEvents.find(
|
|
6517
|
+
const events = send.providerMessageId ? await c.webhookEvents.find(webhookEventsForMessageId(send.providerMessageId)).sort({ receivedAt: -1 }).limit(100).toArray() : [];
|
|
6503
6518
|
return res.json({ send, webhookEvents: events });
|
|
6504
6519
|
})
|
|
6505
6520
|
);
|
|
@@ -8238,7 +8253,7 @@ function unitToMs2(value, unit) {
|
|
|
8238
8253
|
}
|
|
8239
8254
|
|
|
8240
8255
|
// src/server/api/agent.ts
|
|
8241
|
-
var VERSION = "0.16.
|
|
8256
|
+
var VERSION = "0.16.2" ;
|
|
8242
8257
|
var MIN_AGENT_TOKEN_LENGTH = 24;
|
|
8243
8258
|
function createAgentRouter(mailer, opts) {
|
|
8244
8259
|
if (!opts || !Array.isArray(opts.tokens) || opts.tokens.length === 0) {
|
|
@@ -8441,7 +8456,7 @@ function createAgentRouter(mailer, opts) {
|
|
|
8441
8456
|
if (reached || Date.now() - started >= timeoutMs) break;
|
|
8442
8457
|
await sleep2(1e3);
|
|
8443
8458
|
}
|
|
8444
|
-
const webhookEvents = send.providerMessageId ? await c.webhookEvents.find(
|
|
8459
|
+
const webhookEvents = send.providerMessageId ? await c.webhookEvents.find(webhookEventsForMessageId(send.providerMessageId)).sort({ receivedAt: 1 }).limit(100).toArray() : [];
|
|
8445
8460
|
res.json({ reached, target, waitedMs: Date.now() - started, send: sendSummary(send), webhookEvents });
|
|
8446
8461
|
})
|
|
8447
8462
|
);
|
|
@@ -9938,7 +9953,7 @@ var DEDUPE_POLICIES = [
|
|
|
9938
9953
|
];
|
|
9939
9954
|
|
|
9940
9955
|
// src/server/index.ts
|
|
9941
|
-
var VERSION2 = "0.16.
|
|
9956
|
+
var VERSION2 = "0.16.2" ;
|
|
9942
9957
|
|
|
9943
9958
|
export { DEDUPE_POLICIES, DEFAULT_BOT_UA_RE, FLOW_STEP_KINDS, FlowOperationError, MIN_AGENT_TOKEN_LENGTH, Mailer, MongoContactAdapter, NullProvider, PREDICATE_KINDS, RESERVED_VAR_KEYS, SEGMENT_FILTER_KINDS, SendGridProvider, TRACKING_SIG_LENGTH, VERSION2 as VERSION, applyTracking, applyWebhookEvent, armFlow, compileMailyTemplate, compileTemplate, computeDeliveryTime, createAdminApiRouter, createAdminRouter, createAgentRouter, createPublicRouter, defaultFlowStep, defaultPredicate, defaultSegmentFilter, defineVars, derivePlaintext, disarmFlow, dispatchSend, drainPendingUnsubscribes, ensureIndexes, gateFlow, getCollections, isCanaryGate, predicateKind, processNewlyFiredEventTriggers, processOneRunStep, referencedPaths, renderForContact, renderTemplate, runTick, sendgridInboundParser, sha256Hex, signTrackingToken, signUnsubscribeToken, simulateFlow, stampWatermarkIfNull, sweepStrandedFlowRuns, ungateFlow, validateSenderDomain, varsJsonSchema, verifyTemplate, verifyTrackingToken, verifyUnsubscribeToken };
|
|
9944
9959
|
//# sourceMappingURL=index.js.map
|