@visulima/email 1.0.0-alpha.34 → 1.0.0-alpha.35
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/CHANGELOG.md +19 -0
- package/README.md +77 -0
- package/dist/crypto/index.d.ts +160 -3
- package/dist/crypto/index.js +1 -1
- package/dist/deliverability/dmarc-report.d.ts +95 -0
- package/dist/deliverability/dmarc-report.js +1 -0
- package/dist/deliverability/index.d.ts +360 -0
- package/dist/deliverability/index.js +1 -0
- package/dist/events/index.d.ts +31 -0
- package/dist/events/index.js +1 -0
- package/dist/inbound/index.d.ts +375 -0
- package/dist/inbound/index.js +1 -0
- package/dist/index.d.ts +11 -734
- package/dist/index.js +1 -1
- package/dist/middleware/index.d.ts +346 -0
- package/dist/middleware/index.js +1 -0
- package/dist/packem_shared/ALL_EVENTS-A0nTVOo0.js +1 -0
- package/dist/packem_shared/DkimSigner-dKZ45Csc.js +18 -0
- package/dist/packem_shared/Mail-B2QII2P9.js +1 -0
- package/dist/packem_shared/{MailMessage-BvaH5tZZ.js → MailMessage-DB1zaWfM.js} +1 -1
- package/dist/packem_shared/MemoryEventStore-BEKPxa-I.js +1 -0
- package/dist/packem_shared/MemoryQueue-C-CtRRG7.js +1 -0
- package/dist/packem_shared/MemorySuppressionStore-BKY1FrA1.js +1 -0
- package/dist/packem_shared/RATE_LIMIT_PRESETS-DQF78mdO.js +1 -0
- package/dist/packem_shared/{SmimeEncrypter-ZhHEgDwY.js → SmimeEncrypter-BirIsrip.js} +2 -2
- package/dist/packem_shared/{SmimeSigner-CYSVF6ez.js → SmimeSigner-CkyaShTs.js} +2 -2
- package/dist/packem_shared/addDarkModeSupport-Ys9U2-GH.js +1 -0
- package/dist/packem_shared/address-formatter-CnPg51_n.js +1 -0
- package/dist/packem_shared/ahaSendProvider-yuqYMW0n.js +1 -0
- package/dist/packem_shared/arcMessageSignatureBase-Cpdnv-H8.js +17 -0
- package/dist/packem_shared/attachment-processor-CFUC3V45.js +1 -0
- package/dist/packem_shared/azureProvider-CK_Wuw4r.js +1 -0
- package/dist/packem_shared/brevoProvider-CNwuzzBA.js +1 -0
- package/dist/packem_shared/build-mime-message-D8WEZejb.js +3 -0
- package/dist/packem_shared/buildListUnsubscribe-CIbz0rtk.js +1 -0
- package/dist/packem_shared/circuitBreakerMiddleware-B7DlzZSG.js +1 -0
- package/dist/packem_shared/cloudflareEmailProvider-C-G821Hg.js +1 -0
- package/dist/packem_shared/composeMiddleware-CkEhbDjL.js +1 -0
- package/dist/packem_shared/createTestEmail-hHdtgmUM.js +1 -0
- package/dist/packem_shared/createWorker-Nkc1GHet.js +1 -0
- package/dist/packem_shared/dedupeMiddleware-JeJbff46.js +1 -0
- package/dist/packem_shared/{detectMimeType-bo5oxfnt.js → detectMimeType-B4QMh7k8.js} +1 -1
- package/dist/packem_shared/emailMatchers-CLANeU71.js +1 -0
- package/dist/packem_shared/event-bus.d-DEl3w_EW.d.ts +104 -0
- package/dist/packem_shared/extractReply-CCWnNRWe.js +5 -0
- package/dist/packem_shared/filterSuppressed-DntqRV0q.js +1 -0
- package/dist/packem_shared/format-address-Cv6uWTS5.js +1 -0
- package/dist/packem_shared/infobipProvider-DdV62IAG.js +1 -0
- package/dist/packem_shared/injectPreheader-BxPjb0eJ.js +1 -0
- package/dist/packem_shared/inlineCss-BLaEi337.js +1 -0
- package/dist/packem_shared/isValidSigningCertUrl-CF_KuCAi.js +3 -0
- package/dist/packem_shared/loggingMiddleware-CyHzn37U.js +1 -0
- package/dist/packem_shared/loopsProvider-DSedSU3q.js +1 -0
- package/dist/packem_shared/mail.d-LmrdSngG.d.ts +861 -0
- package/dist/packem_shared/{mailCrabProvider-B7H6HwWu.js → mailCrabProvider-xSLhA1CY.js} +1 -1
- package/dist/packem_shared/mailPaceProvider-CWBIjvvJ.js +1 -0
- package/dist/packem_shared/mailchannelsProvider-zKcunGDQ.js +1 -0
- package/dist/packem_shared/mailerSendProvider-BEvPlBKB.js +1 -0
- package/dist/packem_shared/mailgunProvider-CfQAINTC.js +1 -0
- package/dist/packem_shared/mailjetProvider-DEfKptWc.js +1 -0
- package/dist/packem_shared/mailomatProvider-D5sHlxZh.js +1 -0
- package/dist/packem_shared/mailtrapProvider-DwgMKakk.js +1 -0
- package/dist/packem_shared/mandrillProvider-CdGjO3Td.js +1 -0
- package/dist/packem_shared/normalizeMessageId-B_9mXlh4.js +1 -0
- package/dist/packem_shared/oauth2Middleware-B1xz58iP.js +1 -0
- package/dist/packem_shared/parseAddress-CrYOac3K.js +1 -0
- package/dist/packem_shared/parseArfReport-CUHb8WVj.js +6 -0
- package/dist/packem_shared/parseCloudflareInbound-BGgH5u7M.js +1 -0
- package/dist/packem_shared/parseDmarcRecord-DjNqCMZc.js +1 -0
- package/dist/packem_shared/parseInbound-BP-gEjhh.js +1 -0
- package/dist/packem_shared/parseMailgunInbound-C3sZ1TiH.js +1 -0
- package/dist/packem_shared/parseMtaStsPolicy-rFOOVXXK.js +6 -0
- package/dist/packem_shared/parsePostmarkInbound-C0Ttfroo.js +1 -0
- package/dist/packem_shared/parseSendGridInbound-BkvaoYRl.js +4 -0
- package/dist/packem_shared/parseSesInbound-BFS--T8X.js +1 -0
- package/dist/packem_shared/parseTlsRptRecord-DnLwAWsk.js +1 -0
- package/dist/packem_shared/plunkProvider-BIhMU2b5.js +1 -0
- package/dist/packem_shared/postProcessHtml-C73e0b9H.js +1 -0
- package/dist/packem_shared/postalProvider-CmmbCZSi.js +1 -0
- package/dist/packem_shared/postmarkProvider-i9u0h26U.js +1 -0
- package/dist/packem_shared/provider-base-BpHE_uK8.js +1 -0
- package/dist/packem_shared/{provider.d-DcfYeGJJ.d.ts → provider.d-J-y6iogK.d.ts} +1 -1
- package/dist/packem_shared/{readFile-BAVMZg5e-C4whBIPd.js → readFile-BkNfutxp-BS8Q2183.js} +1 -1
- package/dist/packem_shared/resendProvider-BNduBn0w.js +1 -0
- package/dist/packem_shared/retry-UPd8F62N.js +1 -0
- package/dist/packem_shared/retryMiddleware-DHespsU2.js +1 -0
- package/dist/packem_shared/rewriteCidLinks-B-Sd5XHs.js +1 -0
- package/dist/packem_shared/scalewayProvider-8gb4sIOB.js +1 -0
- package/dist/packem_shared/sendGridProvider-CayLXvPO.js +1 -0
- package/dist/packem_shared/smtpProvider-DoXVsN4p.js +24 -0
- package/dist/packem_shared/sweegoProvider-C0g9Ajdn.js +1 -0
- package/dist/packem_shared/toEmailSnapshot-CYpMmnAA.js +1 -0
- package/dist/packem_shared/tracer.d-MU42G1jG.d.ts +494 -0
- package/dist/packem_shared/{types.d-CNnnk-Ya.d.ts → types.d-BId55FW2.d.ts} +6 -1
- package/dist/packem_shared/types.d-BMpI2UXj.d.ts +51 -0
- package/dist/packem_shared/types.d-CmoWvdZi.d.ts +61 -0
- package/dist/packem_shared/types.d-Mpu0HZoG.d.ts +24 -0
- package/dist/packem_shared/{types.d-wwpgA3to.d.ts → types.d-ejzh-xBP.d.ts} +6 -1
- package/dist/packem_shared/types.d-lcJZmwRK.d.ts +69 -0
- package/dist/packem_shared/utils-BwolsGlK.js +1 -0
- package/dist/packem_shared/verifyMailgunWebhook-Df7n2Quh.js +1 -0
- package/dist/packem_shared/verifyPostmarkWebhook-D_eXt_Lq.js +1 -0
- package/dist/packem_shared/verifySendGridWebhook-XOSj5yTe.js +1 -0
- package/dist/packem_shared/verifyStandardWebhook-DdUTlIVh.js +1 -0
- package/dist/packem_shared/withEvents-Q9bwpCFG.js +1 -0
- package/dist/packem_shared/withMetrics-BPs3Kdxn.js +1 -0
- package/dist/packem_shared/withRender-DQM2zbbI.js +1 -0
- package/dist/packem_shared/withSuppression-DfjV_tbI.js +1 -0
- package/dist/packem_shared/withTelemetry-CsQsv1DV.js +1 -0
- package/dist/packem_shared/zeptomailProvider-BIbHieGJ.js +1 -0
- package/dist/providers/ahasend/index.d.ts +3 -3
- package/dist/providers/ahasend/index.js +1 -1
- package/dist/providers/aws-ses/index.d.ts +3 -3
- package/dist/providers/azure/index.d.ts +3 -3
- package/dist/providers/azure/index.js +1 -1
- package/dist/providers/brevo/index.d.ts +3 -3
- package/dist/providers/brevo/index.js +1 -1
- package/dist/providers/cloudflare-email/index.d.ts +36 -0
- package/dist/providers/cloudflare-email/index.js +1 -0
- package/dist/providers/failover/index.d.ts +3 -3
- package/dist/providers/http/index.d.ts +3 -3
- package/dist/providers/infobip/index.d.ts +3 -3
- package/dist/providers/infobip/index.js +1 -1
- package/dist/providers/loops/index.d.ts +47 -0
- package/dist/providers/loops/index.js +1 -0
- package/dist/providers/mailchannels/index.d.ts +26 -0
- package/dist/providers/mailchannels/index.js +1 -0
- package/dist/providers/mailcrab/index.d.ts +3 -3
- package/dist/providers/mailcrab/index.js +1 -1
- package/dist/providers/mailersend/index.d.ts +3 -3
- package/dist/providers/mailersend/index.js +1 -1
- package/dist/providers/mailgun/index.d.ts +3 -3
- package/dist/providers/mailgun/index.js +1 -1
- package/dist/providers/mailjet/index.d.ts +3 -3
- package/dist/providers/mailjet/index.js +1 -1
- package/dist/providers/mailomat/index.d.ts +3 -3
- package/dist/providers/mailomat/index.js +1 -1
- package/dist/providers/mailpace/index.d.ts +3 -3
- package/dist/providers/mailpace/index.js +1 -1
- package/dist/providers/mailtrap/index.d.ts +3 -3
- package/dist/providers/mailtrap/index.js +1 -1
- package/dist/providers/mandrill/index.d.ts +3 -3
- package/dist/providers/mandrill/index.js +1 -1
- package/dist/providers/mock/index.d.ts +6 -53
- package/dist/providers/nodemailer/index.d.ts +3 -3
- package/dist/providers/opentelemetry/index.d.ts +3 -495
- package/dist/providers/plunk/index.d.ts +3 -3
- package/dist/providers/plunk/index.js +1 -1
- package/dist/providers/postal/index.d.ts +3 -3
- package/dist/providers/postal/index.js +1 -1
- package/dist/providers/postmark/index.d.ts +3 -3
- package/dist/providers/postmark/index.js +1 -1
- package/dist/providers/resend/index.d.ts +3 -3
- package/dist/providers/resend/index.js +1 -1
- package/dist/providers/roundrobin/index.d.ts +3 -3
- package/dist/providers/scaleway/index.d.ts +3 -3
- package/dist/providers/scaleway/index.js +1 -1
- package/dist/providers/sendgrid/index.d.ts +3 -3
- package/dist/providers/sendgrid/index.js +1 -1
- package/dist/providers/smtp/index.d.ts +3 -3
- package/dist/providers/smtp/index.js +1 -1
- package/dist/providers/sweego/index.d.ts +3 -3
- package/dist/providers/sweego/index.js +1 -1
- package/dist/providers/zeptomail/index.d.ts +3 -3
- package/dist/providers/zeptomail/index.js +1 -1
- package/dist/queue/bullmq-queue.d.ts +46 -0
- package/dist/queue/bullmq-queue.js +1 -0
- package/dist/queue/index.d.ts +148 -0
- package/dist/queue/index.js +1 -0
- package/dist/queue/pg-boss-queue.d.ts +41 -0
- package/dist/queue/pg-boss-queue.js +1 -0
- package/dist/queue/sqs-queue.d.ts +72 -0
- package/dist/queue/sqs-queue.js +1 -0
- package/dist/queue/unstorage-queue.d.ts +81 -0
- package/dist/queue/unstorage-queue.js +1 -0
- package/dist/render/index.d.ts +107 -0
- package/dist/render/index.js +1 -0
- package/dist/template-engines/i18n.d.ts +61 -0
- package/dist/template-engines/i18n.js +1 -0
- package/dist/template-engines/jsx-email.d.ts +11 -0
- package/dist/template-engines/jsx-email.js +1 -0
- package/dist/template-engines/liquid.d.ts +12 -0
- package/dist/template-engines/liquid.js +1 -0
- package/dist/test/index.d.ts +159 -0
- package/dist/test/index.js +1 -0
- package/dist/utils/format-email-address.d.ts +1 -1
- package/dist/utils/format-email-address.js +1 -1
- package/dist/utils/parse-address.d.ts +1 -1
- package/dist/utils/result.d.ts +49 -0
- package/dist/utils/result.js +1 -0
- package/dist/utils/validation/check-feature-support.d.ts +1 -1
- package/dist/webhooks/index.d.ts +231 -0
- package/dist/webhooks/index.js +1 -0
- package/package.json +115 -3
- package/dist/packem_shared/DkimSigner-CT2DSHD1.js +0 -18
- package/dist/packem_shared/Mail-BWSWWq6m.js +0 -1
- package/dist/packem_shared/address-formatter-Cm_E_ZMa.js +0 -1
- package/dist/packem_shared/ahaSendProvider-DOAAW65O.js +0 -1
- package/dist/packem_shared/attachment-processor-DsmIomKc.js +0 -1
- package/dist/packem_shared/azureProvider-EkNYKAiF.js +0 -1
- package/dist/packem_shared/brevoProvider-CkR4U4RD.js +0 -1
- package/dist/packem_shared/build-mime-message-6xstxaUV.js +0 -2
- package/dist/packem_shared/infobipProvider-BhTsWi7e.js +0 -1
- package/dist/packem_shared/mailPaceProvider-DRt6Z9Hr.js +0 -1
- package/dist/packem_shared/mailerSendProvider-Dx_iHInH.js +0 -1
- package/dist/packem_shared/mailgunProvider-ChkLGZZW.js +0 -1
- package/dist/packem_shared/mailjetProvider-BMRhNe6H.js +0 -1
- package/dist/packem_shared/mailomatProvider-CydV-JB6.js +0 -1
- package/dist/packem_shared/mailtrapProvider-CuAfJWDr.js +0 -1
- package/dist/packem_shared/mandrillProvider-BBeLbaw0.js +0 -1
- package/dist/packem_shared/plunkProvider-BQyjG6YT.js +0 -1
- package/dist/packem_shared/postalProvider-DPHQ620q.js +0 -1
- package/dist/packem_shared/postmarkProvider-bMTC2gdJ.js +0 -1
- package/dist/packem_shared/provider-base-Cmzx6BTO.js +0 -1
- package/dist/packem_shared/resendProvider-Cns1tvF5.js +0 -1
- package/dist/packem_shared/scalewayProvider-O1dHz7iJ.js +0 -1
- package/dist/packem_shared/sendGridProvider-DmywC-eT.js +0 -1
- package/dist/packem_shared/smtpProvider-Unjao_fn.js +0 -23
- package/dist/packem_shared/sweegoProvider-D086G6xG.js +0 -1
- package/dist/packem_shared/zeptomailProvider-DKKEpEsW.js +0 -1
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { a as MockEmailEntry } from "../packem_shared/types.d-BMpI2UXj.js";
|
|
2
|
+
import { E as EmailOptions } from "../packem_shared/types.d-ejzh-xBP.js";
|
|
3
|
+
import { M as Mail } from "../packem_shared/mail.d-LmrdSngG.js";
|
|
4
|
+
import 'node:buffer';
|
|
5
|
+
import 'ical-generator';
|
|
6
|
+
import 'node:crypto';
|
|
7
|
+
import "../packem_shared/types.d-BId55FW2.js";
|
|
8
|
+
import "../packem_shared/types.d-nyR1ty1Q.js";
|
|
9
|
+
import "../packem_shared/types.d-Mpu0HZoG.js";
|
|
10
|
+
import "../packem_shared/provider.d-J-y6iogK.js";
|
|
11
|
+
/**
|
|
12
|
+
* A test harness around the in-memory mock provider: a ready-to-use {@link Mail} instance plus
|
|
13
|
+
* helpers to inspect, wait on, and reset the captured outbox.
|
|
14
|
+
*/
|
|
15
|
+
interface TestEmail {
|
|
16
|
+
/**
|
|
17
|
+
* The {@link Mail} instance wired to the mock provider. Use it exactly like a real one.
|
|
18
|
+
*/
|
|
19
|
+
mail: Mail;
|
|
20
|
+
/**
|
|
21
|
+
* Removes all captured messages.
|
|
22
|
+
*/
|
|
23
|
+
reset: () => void;
|
|
24
|
+
/**
|
|
25
|
+
* Returns the captured messages, oldest first.
|
|
26
|
+
*/
|
|
27
|
+
sent: () => ReadonlyArray<MockEmailEntry>;
|
|
28
|
+
/**
|
|
29
|
+
* Resolves with the first captured message matching `predicate`, polling until `timeout`.
|
|
30
|
+
* @param predicate The match condition.
|
|
31
|
+
* @param options Optional `timeout` (ms, default 1000) and `interval` (ms, default 10).
|
|
32
|
+
* @param options.interval Poll interval in milliseconds.
|
|
33
|
+
* @param options.timeout Maximum time to wait in milliseconds.
|
|
34
|
+
*/
|
|
35
|
+
waitFor: (predicate: (message: MockEmailEntry) => boolean, options?: {
|
|
36
|
+
interval?: number;
|
|
37
|
+
timeout?: number;
|
|
38
|
+
}) => Promise<MockEmailEntry>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Creates a {@link TestEmail} harness backed by the in-memory mock provider.
|
|
42
|
+
*
|
|
43
|
+
* Nothing is sent over the network; every message is captured for assertion via the
|
|
44
|
+
* {@link https://vitest.dev/ Vitest} matchers exported from `@visulima/email/test`.
|
|
45
|
+
* @returns The test harness. See {@link TestEmail}.
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* const email = createTestEmail();
|
|
49
|
+
* await email.mail.send({ from: { email: "a@x.com" }, to: { email: "b@x.com" }, subject: "Hi", text: "yo" });
|
|
50
|
+
* expect(email).toHaveSentTo("b@x.com");
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
declare const createTestEmail: () => TestEmail;
|
|
54
|
+
/**
|
|
55
|
+
* The minimal result shape a Vitest/Jest matcher must return.
|
|
56
|
+
*/
|
|
57
|
+
interface MatcherResult {
|
|
58
|
+
message: () => string;
|
|
59
|
+
pass: boolean;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* A value the email matchers can assert against: a {@link TestEmail} harness or a raw list of captured
|
|
63
|
+
* entries.
|
|
64
|
+
*/
|
|
65
|
+
type MatcherTarget = ReadonlyArray<MockEmailEntry> | TestEmail;
|
|
66
|
+
/**
|
|
67
|
+
* Asserts that at least one captured message was addressed to `address` (in To, Cc, or Bcc).
|
|
68
|
+
* @param target The {@link TestEmail} harness or captured entries.
|
|
69
|
+
* @param address The recipient address to look for (case-insensitive).
|
|
70
|
+
* @returns The matcher result.
|
|
71
|
+
*/
|
|
72
|
+
declare const toHaveSentTo: (target: MatcherTarget, address: string) => MatcherResult;
|
|
73
|
+
/**
|
|
74
|
+
* Asserts that at least one captured message has a subject equal to (or matching) `expected`.
|
|
75
|
+
* @param target The {@link TestEmail} harness or captured entries.
|
|
76
|
+
* @param expected An exact subject string or a `RegExp`.
|
|
77
|
+
* @returns The matcher result.
|
|
78
|
+
*/
|
|
79
|
+
declare const toHaveSentWithSubject: (target: MatcherTarget, expected: RegExp | string) => MatcherResult;
|
|
80
|
+
/**
|
|
81
|
+
* Asserts that at least one captured message carried an attachment (optionally with a given filename).
|
|
82
|
+
* @param target The {@link TestEmail} harness or captured entries.
|
|
83
|
+
* @param filename When provided, requires an attachment with this exact filename.
|
|
84
|
+
* @returns The matcher result.
|
|
85
|
+
*/
|
|
86
|
+
declare const toHaveSentWithAttachment: (target: MatcherTarget, filename?: string) => MatcherResult;
|
|
87
|
+
/**
|
|
88
|
+
* Asserts that at least one captured message matches a predicate or a partial {@link EmailOptions}.
|
|
89
|
+
* @param target The {@link TestEmail} harness or captured entries.
|
|
90
|
+
* @param matcher A predicate over the sent options, or a partial options object to shallow-match.
|
|
91
|
+
* @returns The matcher result.
|
|
92
|
+
*/
|
|
93
|
+
declare const toHaveSentMatching: (target: MatcherTarget, matcher: Partial<EmailOptions> | ((options: EmailOptions) => boolean)) => MatcherResult;
|
|
94
|
+
/**
|
|
95
|
+
* The matcher map, suitable for passing to Vitest/Jest `expect.extend(...)`.
|
|
96
|
+
*/
|
|
97
|
+
declare const emailMatchers: {
|
|
98
|
+
toHaveSentMatching: typeof toHaveSentMatching;
|
|
99
|
+
toHaveSentTo: typeof toHaveSentTo;
|
|
100
|
+
toHaveSentWithAttachment: typeof toHaveSentWithAttachment;
|
|
101
|
+
toHaveSentWithSubject: typeof toHaveSentWithSubject;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* The shape of the {@link emailMatchers} map.
|
|
105
|
+
*/
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* A Vitest/Jest-compatible `expect` exposing `.extend(...)`.
|
|
109
|
+
*/
|
|
110
|
+
interface ExpectLike {
|
|
111
|
+
extend: (matchers: Record<string, unknown>) => void;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Registers the email matchers with a Vitest/Jest-compatible `expect`.
|
|
115
|
+
*
|
|
116
|
+
* Kept dependency-free by accepting `expect` as an argument rather than importing `vitest` into the
|
|
117
|
+
* shipped bundle. Add the matching type augmentation to a `vitest.d.ts` in your project for typed
|
|
118
|
+
* `expect(...).toHaveSentTo(...)` calls.
|
|
119
|
+
* @param expectInstance The `expect` object exposing `.extend(...)`.
|
|
120
|
+
* @example
|
|
121
|
+
* ```ts
|
|
122
|
+
* import { expect } from "vitest";
|
|
123
|
+
* import { registerEmailMatchers } from "@visulima/email/test";
|
|
124
|
+
*
|
|
125
|
+
* registerEmailMatchers(expect);
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
declare const registerEmailMatchers: (expectInstance: ExpectLike) => void;
|
|
129
|
+
/**
|
|
130
|
+
* A stable, snapshot-friendly view of a sent message — volatile fields (message id, timestamp) are
|
|
131
|
+
* omitted so the snapshot doesn't churn between runs.
|
|
132
|
+
*/
|
|
133
|
+
interface EmailSnapshot {
|
|
134
|
+
attachments?: {
|
|
135
|
+
contentType?: string;
|
|
136
|
+
filename: string;
|
|
137
|
+
}[];
|
|
138
|
+
bcc?: string[];
|
|
139
|
+
cc?: string[];
|
|
140
|
+
from: string;
|
|
141
|
+
headers?: Record<string, string>;
|
|
142
|
+
html?: string;
|
|
143
|
+
replyTo?: string;
|
|
144
|
+
subject: string;
|
|
145
|
+
text?: string;
|
|
146
|
+
to: string[];
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Normalizes a captured message (a `createTestEmail` outbox entry or raw {@link EmailOptions}) into a
|
|
150
|
+
* deterministic {@link EmailSnapshot} for use with Vitest/Jest `toMatchSnapshot()`.
|
|
151
|
+
* @param source A mock-provider outbox entry or an `EmailOptions` object.
|
|
152
|
+
* @returns The snapshot view.
|
|
153
|
+
* @example
|
|
154
|
+
* ```ts
|
|
155
|
+
* expect(toEmailSnapshot(email.sent()[0])).toMatchSnapshot();
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
declare const toEmailSnapshot: (source: EmailOptions | MockEmailEntry) => EmailSnapshot;
|
|
159
|
+
export { type EmailSnapshot, type MatcherResult, type MatcherTarget, type TestEmail, createTestEmail, emailMatchers, registerEmailMatchers, toEmailSnapshot, toHaveSentMatching, toHaveSentTo, toHaveSentWithAttachment, toHaveSentWithSubject };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{emailMatchers as a,registerEmailMatchers as o,toHaveSentMatching as r,toHaveSentTo as i,toHaveSentWithAttachment as m,toHaveSentWithSubject as h}from"../packem_shared/emailMatchers-CLANeU71.js";import{toEmailSnapshot as c}from"../packem_shared/toEmailSnapshot-CYpMmnAA.js";import{createTestEmail as s}from"../packem_shared/createTestEmail-hHdtgmUM.js";export{s as createTestEmail,a as emailMatchers,o as registerEmailMatchers,c as toEmailSnapshot,r as toHaveSentMatching,i as toHaveSentTo,m as toHaveSentWithAttachment,h as toHaveSentWithSubject};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { c as EmailAddress } from "../packem_shared/types.d-ejzh-xBP.js";
|
|
2
2
|
import 'node:buffer';
|
|
3
3
|
/**
|
|
4
4
|
* Formats an email address as "Name <email@example.com>" or just "email@example.com" if no name is provided.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var m=Object.defineProperty;var r=(e,a)=>m(e,"name",{value:a,configurable:!0});import o
|
|
1
|
+
var m=Object.defineProperty;var r=(e,a)=>m(e,"name",{value:a,configurable:!0});import{s as o}from"../packem_shared/format-address-Cv6uWTS5.js";import t from"../packem_shared/EmailError-zm2ffVav.js";import i from"./validation/validate-email.js";var l=Object.defineProperty,n=r((e,a)=>l(e,"name",{value:a,configurable:!0}),"a");const u=n(e=>{if(!i(e.email))throw new t("email",`Invalid email address: ${e.email}`);if(e.name){const a=o(e.name);if(a)return`"${a}" <${e.email}>`}return e.email},"formatEmailAddress");export{u as default};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { R as Result } from "../packem_shared/types.d-ejzh-xBP.js";
|
|
2
|
+
import 'node:buffer';
|
|
3
|
+
/**
|
|
4
|
+
* A successful {@link Result} with its data narrowed to be present.
|
|
5
|
+
*/
|
|
6
|
+
type OkResult<T> = Result<T> & {
|
|
7
|
+
data: T;
|
|
8
|
+
success: true;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Returns whether a {@link Result} succeeded, narrowing `data` to be present.
|
|
12
|
+
* @param result The result to test.
|
|
13
|
+
* @returns `true` when the result is successful.
|
|
14
|
+
*/
|
|
15
|
+
declare const isOk: <T>(result: Result<T>) => result is OkResult<T>;
|
|
16
|
+
/**
|
|
17
|
+
* Returns whether a {@link Result} failed.
|
|
18
|
+
* @param result The result to test.
|
|
19
|
+
* @returns `true` when the result is a failure.
|
|
20
|
+
*/
|
|
21
|
+
declare const isErr: <T>(result: Result<T>) => boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Returns the data of a successful {@link Result}, or throws its error.
|
|
24
|
+
* @param result The result to unwrap.
|
|
25
|
+
* @returns The contained data.
|
|
26
|
+
* @throws {EmailError} The result's error (wrapped when it is not already an `Error`).
|
|
27
|
+
*/
|
|
28
|
+
declare const unwrap: <T>(result: Result<T>) => T;
|
|
29
|
+
/**
|
|
30
|
+
* Returns the data of a successful {@link Result}, or a fallback when it failed.
|
|
31
|
+
* @param result The result to unwrap.
|
|
32
|
+
* @param fallback The value to return on failure.
|
|
33
|
+
* @returns The data, or the fallback.
|
|
34
|
+
*/
|
|
35
|
+
declare const unwrapOr: <T>(result: Result<T>, fallback: T) => T;
|
|
36
|
+
/**
|
|
37
|
+
* Maps the data of a successful {@link Result}, passing failures through unchanged.
|
|
38
|
+
* @param result The result to map.
|
|
39
|
+
* @param function_ The mapper applied to the data on success.
|
|
40
|
+
* @returns A new result with the mapped data, or the original failure.
|
|
41
|
+
*/
|
|
42
|
+
declare const mapOk: <T, U>(result: Result<T>, function_: (data: T) => U) => Result<U>;
|
|
43
|
+
/**
|
|
44
|
+
* Runs an async function and captures its outcome as a {@link Result}, never throwing.
|
|
45
|
+
* @param function_ The async function to run.
|
|
46
|
+
* @returns A successful result with the value, or a failed result with the thrown error.
|
|
47
|
+
*/
|
|
48
|
+
declare const tryAsync: <T>(function_: () => Promise<T>) => Promise<Result<T>>;
|
|
49
|
+
export { OkResult, isErr, isOk, mapOk, tryAsync, unwrap, unwrapOr };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var c=Object.defineProperty;var a=(r,s)=>c(r,"name",{value:s,configurable:!0});import t from"../packem_shared/EmailError-zm2ffVav.js";var u=Object.defineProperty,e=a((r,s)=>u(r,"name",{value:s,configurable:!0}),"e");const i=e(r=>r.success,"isOk"),l=e(r=>!r.success,"isErr"),p=e(r=>{if(r.success)return r.data;throw r.error instanceof Error?r.error:new t("result","Called unwrap() on a failed result",{cause:r.error})},"unwrap"),d=e((r,s)=>r.success?r.data:s,"unwrapOr"),f=e((r,s)=>r.success?{data:s(r.data),success:!0}:{error:r.error,success:!1},"mapOk"),w=e(async r=>{try{return{data:await r(),success:!0}}catch(s){return{error:s,success:!1}}},"tryAsync");export{l as isErr,i as isOk,f as mapOk,w as tryAsync,p as unwrap,d as unwrapOr};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as FeatureFlags, E as EmailOptions } from "../../packem_shared/types.d-
|
|
1
|
+
import { F as FeatureFlags, E as EmailOptions } from "../../packem_shared/types.d-ejzh-xBP.js";
|
|
2
2
|
import 'node:buffer';
|
|
3
3
|
/**
|
|
4
4
|
* A single capability that a message uses but the target provider cannot represent.
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result of verifying an inbound webhook signature.
|
|
3
|
+
*/
|
|
4
|
+
interface WebhookVerificationResult {
|
|
5
|
+
/**
|
|
6
|
+
* Machine-readable reason when {@link WebhookVerificationResult.valid} is `false`.
|
|
7
|
+
*/
|
|
8
|
+
reason?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Whether the signature (and, when applicable, the timestamp) is valid.
|
|
11
|
+
*/
|
|
12
|
+
valid: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Headers passed to a webhook verifier. Either a plain record or a `Headers` instance.
|
|
16
|
+
*
|
|
17
|
+
* Lookups are case-insensitive.
|
|
18
|
+
*/
|
|
19
|
+
type WebhookHeaders = Headers | Record<string, string | string[] | undefined>;
|
|
20
|
+
/**
|
|
21
|
+
* Shared options for verifiers that enforce a timestamp tolerance to guard against replay attacks.
|
|
22
|
+
*/
|
|
23
|
+
interface TimestampToleranceOptions {
|
|
24
|
+
/**
|
|
25
|
+
* Maximum allowed difference, in seconds, between the signed timestamp and the current time.
|
|
26
|
+
*
|
|
27
|
+
* Set to `0` to disable the replay-protection window.
|
|
28
|
+
* @default 300
|
|
29
|
+
*/
|
|
30
|
+
tolerance?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Options for {@link verifyMailgunWebhook}.
|
|
34
|
+
*
|
|
35
|
+
* Mailgun nests these three fields under a `signature` object in the webhook JSON body.
|
|
36
|
+
*/
|
|
37
|
+
interface MailgunWebhookOptions extends TimestampToleranceOptions {
|
|
38
|
+
/**
|
|
39
|
+
* Override the current time (milliseconds) — primarily for testing.
|
|
40
|
+
*/
|
|
41
|
+
now?: number;
|
|
42
|
+
/**
|
|
43
|
+
* The HMAC value from `signature.signature`.
|
|
44
|
+
*/
|
|
45
|
+
signature: string;
|
|
46
|
+
/**
|
|
47
|
+
* Your Mailgun HTTP webhook signing key (Settings → Webhooks).
|
|
48
|
+
*/
|
|
49
|
+
signingKey: string;
|
|
50
|
+
/**
|
|
51
|
+
* The timestamp from `signature.timestamp` (unix seconds, as a string or number).
|
|
52
|
+
*/
|
|
53
|
+
timestamp: number | string;
|
|
54
|
+
/**
|
|
55
|
+
* The token from `signature.token`.
|
|
56
|
+
*/
|
|
57
|
+
token: string;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Verifies a [Mailgun](https://documentation.mailgun.com/docs/mailgun/user-manual/tracking-messages/#webhooks) webhook.
|
|
61
|
+
*
|
|
62
|
+
* Mailgun computes `HMAC-SHA256(key = signingKey, message = timestamp + token)` and sends the hex
|
|
63
|
+
* digest as `signature.signature`.
|
|
64
|
+
* @param options Verification inputs. See {@link MailgunWebhookOptions}.
|
|
65
|
+
* @returns The verification result.
|
|
66
|
+
*/
|
|
67
|
+
declare const verifyMailgunWebhook: (options: MailgunWebhookOptions) => WebhookVerificationResult;
|
|
68
|
+
/**
|
|
69
|
+
* Options for {@link verifyPostmarkWebhook}.
|
|
70
|
+
*
|
|
71
|
+
* Postmark does not sign webhook payloads; instead it supports HTTP Basic Auth credentials embedded
|
|
72
|
+
* in the webhook URL (and IP allow-listing). This verifier checks the Basic Auth credentials.
|
|
73
|
+
*/
|
|
74
|
+
interface PostmarkWebhookOptions {
|
|
75
|
+
/**
|
|
76
|
+
* The value of the incoming `Authorization` header (e.g. `Basic dXNlcjpwYXNz`).
|
|
77
|
+
*/
|
|
78
|
+
authorization: string | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* The password configured on the Postmark webhook URL.
|
|
81
|
+
*/
|
|
82
|
+
password: string;
|
|
83
|
+
/**
|
|
84
|
+
* The username configured on the Postmark webhook URL.
|
|
85
|
+
*/
|
|
86
|
+
username: string;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Verifies a [Postmark](https://postmarkapp.com/support/article/1213-securing-inbound-and-open-webhooks)
|
|
90
|
+
* webhook by validating its HTTP Basic Auth credentials.
|
|
91
|
+
* @param options Verification inputs. See {@link PostmarkWebhookOptions}.
|
|
92
|
+
* @returns The verification result.
|
|
93
|
+
*/
|
|
94
|
+
declare const verifyPostmarkWebhook: (options: PostmarkWebhookOptions) => WebhookVerificationResult;
|
|
95
|
+
/**
|
|
96
|
+
* Options for {@link verifySendGridWebhook}.
|
|
97
|
+
*/
|
|
98
|
+
interface SendGridWebhookOptions extends TimestampToleranceOptions {
|
|
99
|
+
/**
|
|
100
|
+
* Override the current time (milliseconds) — primarily for testing.
|
|
101
|
+
*/
|
|
102
|
+
now?: number;
|
|
103
|
+
/**
|
|
104
|
+
* The raw, unparsed request body exactly as received.
|
|
105
|
+
*/
|
|
106
|
+
payload: string;
|
|
107
|
+
/**
|
|
108
|
+
* The verification key from the SendGrid Event Webhook settings.
|
|
109
|
+
*
|
|
110
|
+
* Either the base64-encoded DER (SPKI) string SendGrid displays, or a full PEM block.
|
|
111
|
+
*/
|
|
112
|
+
publicKey: string;
|
|
113
|
+
/**
|
|
114
|
+
* The value of the `X-Twilio-Email-Event-Webhook-Signature` header (base64 DER ECDSA signature).
|
|
115
|
+
*/
|
|
116
|
+
signature: string;
|
|
117
|
+
/**
|
|
118
|
+
* The value of the `X-Twilio-Email-Event-Webhook-Timestamp` header (unix epoch seconds).
|
|
119
|
+
*/
|
|
120
|
+
timestamp: string;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Verifies a [SendGrid Event Webhook](https://www.twilio.com/docs/sendgrid/for-developers/tracking-events/getting-started-event-webhook-security-features)
|
|
124
|
+
* using its ECDSA (prime256v1) signature, and rejects stale requests to prevent replay.
|
|
125
|
+
*
|
|
126
|
+
* The signed message is `timestamp + payload`. The signature header is the base64-encoded DER
|
|
127
|
+
* ECDSA signature. The timestamp is unix epoch seconds and must fall within `tolerance` of now.
|
|
128
|
+
* @param options Verification inputs. See {@link SendGridWebhookOptions}.
|
|
129
|
+
* @returns The verification result.
|
|
130
|
+
* @throws {EmailError} When the supplied public key cannot be parsed.
|
|
131
|
+
*/
|
|
132
|
+
declare const verifySendGridWebhook: (options: SendGridWebhookOptions) => WebhookVerificationResult;
|
|
133
|
+
/**
|
|
134
|
+
* The subset of an Amazon SNS message envelope relevant to signature verification.
|
|
135
|
+
*
|
|
136
|
+
* AWS SES delivers events (deliveries, bounces, complaints) wrapped in SNS notifications.
|
|
137
|
+
*/
|
|
138
|
+
interface SnsMessage {
|
|
139
|
+
[key: string]: unknown;
|
|
140
|
+
Message?: string;
|
|
141
|
+
MessageId?: string;
|
|
142
|
+
Signature?: string;
|
|
143
|
+
SignatureVersion?: string;
|
|
144
|
+
SigningCertURL?: string;
|
|
145
|
+
Subject?: string;
|
|
146
|
+
SubscribeURL?: string;
|
|
147
|
+
Timestamp?: string;
|
|
148
|
+
Token?: string;
|
|
149
|
+
TopicArn?: string;
|
|
150
|
+
Type?: string;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Resolves a signing-certificate URL to its PEM contents. Injectable for testing and caching.
|
|
154
|
+
*/
|
|
155
|
+
type CertificateResolver = (url: string) => Promise<string> | string;
|
|
156
|
+
/**
|
|
157
|
+
* Options for {@link verifySnsMessage}.
|
|
158
|
+
*/
|
|
159
|
+
interface SnsVerifyOptions {
|
|
160
|
+
/**
|
|
161
|
+
* Override how the signing certificate is fetched. Defaults to a `fetch`-based resolver that
|
|
162
|
+
* only accepts `https://*.amazonaws.com` URLs.
|
|
163
|
+
*/
|
|
164
|
+
certificateResolver?: CertificateResolver;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Validates that a signing-certificate URL points at an AWS SNS signing host over HTTPS.
|
|
168
|
+
* @param url The `SigningCertURL` from the SNS message.
|
|
169
|
+
* @returns `true` when the URL is an acceptable AWS SNS certificate endpoint.
|
|
170
|
+
*/
|
|
171
|
+
declare const isValidSigningCertUrl: (url: string) => boolean;
|
|
172
|
+
/**
|
|
173
|
+
* Verifies the RSA signature on an Amazon SNS message (used to wrap AWS SES events).
|
|
174
|
+
*
|
|
175
|
+
* Signature version `1` uses SHA1, version `2` uses SHA256. The signing certificate is fetched from
|
|
176
|
+
* `SigningCertURL` (validated to be an `sns.<region>.amazonaws.com` HTTPS endpoint with no userinfo
|
|
177
|
+
* or explicit port) unless a custom {@link CertificateResolver} is supplied.
|
|
178
|
+
* @param message The parsed SNS message envelope.
|
|
179
|
+
* @param options Optional overrides. See {@link SnsVerifyOptions}.
|
|
180
|
+
* @returns The verification result.
|
|
181
|
+
* @throws {EmailError} When the certificate cannot be resolved.
|
|
182
|
+
*/
|
|
183
|
+
declare const verifySnsMessage: (message: SnsMessage, options?: SnsVerifyOptions) => Promise<WebhookVerificationResult>;
|
|
184
|
+
/**
|
|
185
|
+
* Options for {@link verifyStandardWebhook}.
|
|
186
|
+
*/
|
|
187
|
+
interface StandardWebhookOptions extends TimestampToleranceOptions {
|
|
188
|
+
/**
|
|
189
|
+
* The request headers, or the three signature headers as a plain record.
|
|
190
|
+
*
|
|
191
|
+
* Recognized header names (case-insensitive): `webhook-id` / `svix-id`,
|
|
192
|
+
* `webhook-timestamp` / `svix-timestamp`, and `webhook-signature` / `svix-signature`.
|
|
193
|
+
*/
|
|
194
|
+
headers: WebhookHeaders;
|
|
195
|
+
/**
|
|
196
|
+
* Override the current time (milliseconds) — primarily for testing.
|
|
197
|
+
*/
|
|
198
|
+
now?: number;
|
|
199
|
+
/**
|
|
200
|
+
* The raw, unparsed request body exactly as received.
|
|
201
|
+
*
|
|
202
|
+
* Parsing and re-serializing the body changes the bytes and breaks verification.
|
|
203
|
+
*/
|
|
204
|
+
payload: string;
|
|
205
|
+
/**
|
|
206
|
+
* The signing secret. Supports the `whsec_`-prefixed, base64-encoded form used by Svix/Resend,
|
|
207
|
+
* or a raw secret string.
|
|
208
|
+
*/
|
|
209
|
+
secret: string;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Verifies a webhook signed according to the [Standard Webhooks](https://www.standardwebhooks.com/) spec.
|
|
213
|
+
*
|
|
214
|
+
* This is the scheme used by Svix and, by extension, Resend. The signed content is
|
|
215
|
+
* `${id}.${timestamp}.${payload}`, HMAC-SHA256'd with the (base64-decoded) secret and base64-encoded.
|
|
216
|
+
* The `webhook-signature` header may contain multiple space-separated `v1,<sig>` entries; a match
|
|
217
|
+
* against any one of them passes.
|
|
218
|
+
* @param options Verification inputs. See {@link StandardWebhookOptions}.
|
|
219
|
+
* @returns The verification result.
|
|
220
|
+
*/
|
|
221
|
+
declare const verifyStandardWebhook: (options: StandardWebhookOptions) => WebhookVerificationResult;
|
|
222
|
+
/**
|
|
223
|
+
* Verifies a [Resend](https://resend.com/docs/dashboard/webhooks/verify-webhooks-requests) webhook.
|
|
224
|
+
*
|
|
225
|
+
* Resend uses Svix, so this is an alias for {@link verifyStandardWebhook} that accepts the
|
|
226
|
+
* `svix-*` headers.
|
|
227
|
+
* @param options Verification inputs. See {@link StandardWebhookOptions}.
|
|
228
|
+
* @returns The verification result.
|
|
229
|
+
*/
|
|
230
|
+
declare const verifyResendWebhook: (options: StandardWebhookOptions) => WebhookVerificationResult;
|
|
231
|
+
export { type CertificateResolver, type MailgunWebhookOptions, type PostmarkWebhookOptions, type SendGridWebhookOptions, type SnsMessage, type SnsVerifyOptions, type StandardWebhookOptions, type TimestampToleranceOptions, type WebhookHeaders, type WebhookVerificationResult, isValidSigningCertUrl, verifyMailgunWebhook, verifyPostmarkWebhook, verifyResendWebhook, verifySendGridWebhook, verifySnsMessage, verifyStandardWebhook };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{verifyMailgunWebhook as r}from"../packem_shared/verifyMailgunWebhook-Df7n2Quh.js";import{verifyPostmarkWebhook as f}from"../packem_shared/verifyPostmarkWebhook-D_eXt_Lq.js";import{verifySendGridWebhook as n}from"../packem_shared/verifySendGridWebhook-XOSj5yTe.js";import{isValidSigningCertUrl as d,verifySnsMessage as k}from"../packem_shared/isValidSigningCertUrl-CF_KuCAi.js";import{verifyResendWebhook as s,verifyStandardWebhook as v}from"../packem_shared/verifyStandardWebhook-DdUTlIVh.js";export{d as isValidSigningCertUrl,r as verifyMailgunWebhook,f as verifyPostmarkWebhook,s as verifyResendWebhook,n as verifySendGridWebhook,k as verifySnsMessage,v as verifyStandardWebhook};
|
package/package.json
CHANGED
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visulima/email",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.35",
|
|
4
4
|
"description": "A comprehensive email library with multi-provider support, crypto utilities, and template engines",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ahasend",
|
|
7
|
+
"arc",
|
|
7
8
|
"aws-ses",
|
|
8
9
|
"azure",
|
|
10
|
+
"batch",
|
|
9
11
|
"better-mail",
|
|
10
12
|
"brevo",
|
|
11
13
|
"crypto",
|
|
14
|
+
"deliverability",
|
|
12
15
|
"disposable-email",
|
|
13
16
|
"disposable-email-domains",
|
|
14
17
|
"dkim",
|
|
18
|
+
"dmarc",
|
|
15
19
|
"email",
|
|
16
20
|
"encryption",
|
|
21
|
+
"i18n",
|
|
22
|
+
"inbound-email",
|
|
23
|
+
"jsx-email",
|
|
24
|
+
"liquid",
|
|
25
|
+
"list-unsubscribe",
|
|
26
|
+
"middleware",
|
|
27
|
+
"queue",
|
|
28
|
+
"webhook",
|
|
17
29
|
"failover",
|
|
18
30
|
"handlebars",
|
|
19
31
|
"html-to-text",
|
|
@@ -97,6 +109,18 @@
|
|
|
97
109
|
"types": "./dist/template-engines/html-to-text.d.ts",
|
|
98
110
|
"default": "./dist/template-engines/html-to-text.js"
|
|
99
111
|
},
|
|
112
|
+
"./template/liquid": {
|
|
113
|
+
"types": "./dist/template-engines/liquid.d.ts",
|
|
114
|
+
"default": "./dist/template-engines/liquid.js"
|
|
115
|
+
},
|
|
116
|
+
"./template/jsx-email": {
|
|
117
|
+
"types": "./dist/template-engines/jsx-email.d.ts",
|
|
118
|
+
"default": "./dist/template-engines/jsx-email.js"
|
|
119
|
+
},
|
|
120
|
+
"./template/i18n": {
|
|
121
|
+
"types": "./dist/template-engines/i18n.d.ts",
|
|
122
|
+
"default": "./dist/template-engines/i18n.js"
|
|
123
|
+
},
|
|
100
124
|
"./providers/aws-ses": {
|
|
101
125
|
"types": "./dist/providers/aws-ses/index.d.ts",
|
|
102
126
|
"default": "./dist/providers/aws-ses/index.js"
|
|
@@ -149,6 +173,58 @@
|
|
|
149
173
|
"types": "./dist/crypto/index.d.ts",
|
|
150
174
|
"default": "./dist/crypto/index.js"
|
|
151
175
|
},
|
|
176
|
+
"./render": {
|
|
177
|
+
"types": "./dist/render/index.d.ts",
|
|
178
|
+
"default": "./dist/render/index.js"
|
|
179
|
+
},
|
|
180
|
+
"./webhooks": {
|
|
181
|
+
"types": "./dist/webhooks/index.d.ts",
|
|
182
|
+
"default": "./dist/webhooks/index.js"
|
|
183
|
+
},
|
|
184
|
+
"./deliverability": {
|
|
185
|
+
"types": "./dist/deliverability/index.d.ts",
|
|
186
|
+
"default": "./dist/deliverability/index.js"
|
|
187
|
+
},
|
|
188
|
+
"./deliverability/dmarc-report": {
|
|
189
|
+
"types": "./dist/deliverability/dmarc-report.d.ts",
|
|
190
|
+
"default": "./dist/deliverability/dmarc-report.js"
|
|
191
|
+
},
|
|
192
|
+
"./inbound": {
|
|
193
|
+
"types": "./dist/inbound/index.d.ts",
|
|
194
|
+
"default": "./dist/inbound/index.js"
|
|
195
|
+
},
|
|
196
|
+
"./events": {
|
|
197
|
+
"types": "./dist/events/index.d.ts",
|
|
198
|
+
"default": "./dist/events/index.js"
|
|
199
|
+
},
|
|
200
|
+
"./middleware": {
|
|
201
|
+
"types": "./dist/middleware/index.d.ts",
|
|
202
|
+
"default": "./dist/middleware/index.js"
|
|
203
|
+
},
|
|
204
|
+
"./queue": {
|
|
205
|
+
"types": "./dist/queue/index.d.ts",
|
|
206
|
+
"default": "./dist/queue/index.js"
|
|
207
|
+
},
|
|
208
|
+
"./queue/unstorage": {
|
|
209
|
+
"types": "./dist/queue/unstorage-queue.d.ts",
|
|
210
|
+
"default": "./dist/queue/unstorage-queue.js"
|
|
211
|
+
},
|
|
212
|
+
"./queue/sqs": {
|
|
213
|
+
"types": "./dist/queue/sqs-queue.d.ts",
|
|
214
|
+
"default": "./dist/queue/sqs-queue.js"
|
|
215
|
+
},
|
|
216
|
+
"./queue/pg-boss": {
|
|
217
|
+
"types": "./dist/queue/pg-boss-queue.d.ts",
|
|
218
|
+
"default": "./dist/queue/pg-boss-queue.js"
|
|
219
|
+
},
|
|
220
|
+
"./queue/bullmq": {
|
|
221
|
+
"types": "./dist/queue/bullmq-queue.d.ts",
|
|
222
|
+
"default": "./dist/queue/bullmq-queue.js"
|
|
223
|
+
},
|
|
224
|
+
"./test": {
|
|
225
|
+
"types": "./dist/test/index.d.ts",
|
|
226
|
+
"default": "./dist/test/index.js"
|
|
227
|
+
},
|
|
152
228
|
"./providers/sendgrid": {
|
|
153
229
|
"types": "./dist/providers/sendgrid/index.d.ts",
|
|
154
230
|
"default": "./dist/providers/sendgrid/index.js"
|
|
@@ -213,10 +289,26 @@
|
|
|
213
289
|
"types": "./dist/providers/sweego/index.d.ts",
|
|
214
290
|
"default": "./dist/providers/sweego/index.js"
|
|
215
291
|
},
|
|
292
|
+
"./providers/mailchannels": {
|
|
293
|
+
"types": "./dist/providers/mailchannels/index.d.ts",
|
|
294
|
+
"default": "./dist/providers/mailchannels/index.js"
|
|
295
|
+
},
|
|
296
|
+
"./providers/cloudflare-email": {
|
|
297
|
+
"types": "./dist/providers/cloudflare-email/index.d.ts",
|
|
298
|
+
"default": "./dist/providers/cloudflare-email/index.js"
|
|
299
|
+
},
|
|
300
|
+
"./providers/loops": {
|
|
301
|
+
"types": "./dist/providers/loops/index.d.ts",
|
|
302
|
+
"default": "./dist/providers/loops/index.js"
|
|
303
|
+
},
|
|
216
304
|
"./utils/parse-address": {
|
|
217
305
|
"types": "./dist/utils/parse-address.d.ts",
|
|
218
306
|
"default": "./dist/utils/parse-address.js"
|
|
219
307
|
},
|
|
308
|
+
"./utils/result": {
|
|
309
|
+
"types": "./dist/utils/result.d.ts",
|
|
310
|
+
"default": "./dist/utils/result.js"
|
|
311
|
+
},
|
|
220
312
|
"./utils/format-email-address": {
|
|
221
313
|
"types": "./dist/utils/format-email-address.d.ts",
|
|
222
314
|
"default": "./dist/utils/format-email-address.js"
|
|
@@ -265,7 +357,7 @@
|
|
|
265
357
|
"CHANGELOG.md"
|
|
266
358
|
],
|
|
267
359
|
"dependencies": {
|
|
268
|
-
"@visulima/disposable-email-domains": "1.0.0-alpha.
|
|
360
|
+
"@visulima/disposable-email-domains": "1.0.0-alpha.16",
|
|
269
361
|
"html-to-text": "^10.0.0",
|
|
270
362
|
"ical-generator": "10.2.0",
|
|
271
363
|
"lru-cache": "11.4.0",
|
|
@@ -276,10 +368,15 @@
|
|
|
276
368
|
"@react-email/render": "^2.0.8",
|
|
277
369
|
"@vue-email/render": "0.0.9",
|
|
278
370
|
"asn1js": "3.0.10",
|
|
371
|
+
"fast-xml-parser": "^4.5.0",
|
|
279
372
|
"handlebars": "4.7.9",
|
|
373
|
+
"jsx-email": "^2.0.0",
|
|
374
|
+
"juice": "^11.0.0",
|
|
375
|
+
"liquidjs": "^10.0.0",
|
|
280
376
|
"mjml": "5.2.1",
|
|
281
377
|
"nodemailer": ">=7",
|
|
282
|
-
"pkijs": "3.4.0"
|
|
378
|
+
"pkijs": "3.4.0",
|
|
379
|
+
"unstorage": "^1.13.0"
|
|
283
380
|
},
|
|
284
381
|
"peerDependenciesMeta": {
|
|
285
382
|
"@opentelemetry/api": {
|
|
@@ -294,9 +391,21 @@
|
|
|
294
391
|
"asn1js": {
|
|
295
392
|
"optional": true
|
|
296
393
|
},
|
|
394
|
+
"fast-xml-parser": {
|
|
395
|
+
"optional": true
|
|
396
|
+
},
|
|
297
397
|
"handlebars": {
|
|
298
398
|
"optional": true
|
|
299
399
|
},
|
|
400
|
+
"jsx-email": {
|
|
401
|
+
"optional": true
|
|
402
|
+
},
|
|
403
|
+
"juice": {
|
|
404
|
+
"optional": true
|
|
405
|
+
},
|
|
406
|
+
"liquidjs": {
|
|
407
|
+
"optional": true
|
|
408
|
+
},
|
|
300
409
|
"mjml": {
|
|
301
410
|
"optional": true
|
|
302
411
|
},
|
|
@@ -305,6 +414,9 @@
|
|
|
305
414
|
},
|
|
306
415
|
"pkijs": {
|
|
307
416
|
"optional": true
|
|
417
|
+
},
|
|
418
|
+
"unstorage": {
|
|
419
|
+
"optional": true
|
|
308
420
|
}
|
|
309
421
|
},
|
|
310
422
|
"engines": {
|