groundmail 0.28.0 → 0.29.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/authjs.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { G as Groundmail } from './client-DdtHUMEu.js';
1
+ import { G as Groundmail } from './client-BkJCGT45.js';
2
2
 
3
3
  /** Subset of Auth.js theme used for the default magic-link email. */
4
4
  type AuthjsTheme = {
package/dist/authjs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_API_BASE_URL,
3
3
  Groundmail
4
- } from "./chunk-POS35D4J.js";
4
+ } from "./chunk-PMQDWLBY.js";
5
5
 
6
6
  // src/authjs.ts
7
7
  function escapeHtml(value) {
@@ -1,4 +1,4 @@
1
- import { S as SendEmailResult, G as Groundmail } from './client-DdtHUMEu.js';
1
+ import { S as SendEmailResult, G as Groundmail } from './client-BkJCGT45.js';
2
2
 
3
3
  type BetterAuthEmailUser = {
4
4
  email: string;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_API_BASE_URL,
3
3
  Groundmail
4
- } from "./chunk-POS35D4J.js";
4
+ } from "./chunk-PMQDWLBY.js";
5
5
 
6
6
  // src/better-auth.ts
7
7
  function linkHtml(label, url) {
@@ -70,6 +70,13 @@ function isSpfRecord(value) {
70
70
  return value.trim().toLowerCase().startsWith("v=spf1");
71
71
  }
72
72
 
73
+ // src/dns/dmarc.ts
74
+ var KEPT_DMARC_DETAIL = "You already have a DMARC record. Nothing to change.";
75
+ var ALREADY_SET_DETAIL = "Already set. Nothing to change.";
76
+ function isDmarcValue(value) {
77
+ return /^v=dmarc1\b/i.test(value.trim().replace(/^"/, ""));
78
+ }
79
+
73
80
  // src/dns/cloudflare.ts
74
81
  function relativeName(fqdn2, zone) {
75
82
  const domain = zone.replace(/\.$/, "").toLowerCase();
@@ -125,6 +132,10 @@ function createCloudflareProvider(options) {
125
132
  const recordType = record.type.toUpperCase();
126
133
  const name = relativeName(record.host, zoneName);
127
134
  const absoluteName = name === "@" ? zoneName : `${name}.${zoneName}`;
135
+ if (record.already_set) {
136
+ results.push({ purpose: record.purpose, host: record.host, action: "unchanged", detail: ALREADY_SET_DETAIL });
137
+ continue;
138
+ }
128
139
  if (recordType === "CNAME") {
129
140
  const target = record.value.replace(/\.$/, "").toLowerCase();
130
141
  const existingList2 = await cf(
@@ -266,10 +277,13 @@ function createCloudflareProvider(options) {
266
277
  });
267
278
  continue;
268
279
  }
280
+ if (record.purpose === "DMARC" && (existingList || []).some((r) => isDmarcValue(r.content))) {
281
+ results.push({ purpose: record.purpose, host: record.host, action: "unchanged", detail: KEPT_DMARC_DETAIL });
282
+ continue;
283
+ }
269
284
  const replaceable = (existingList || []).find((r) => {
270
285
  if (record.purpose === "Domain ownership") return r.content.includes("groundmail-verify=");
271
286
  if (record.purpose === "DKIM") return r.content.toLowerCase().includes("v=dkim1");
272
- if (record.purpose === "DMARC") return r.content.toLowerCase().includes("v=dmarc1");
273
287
  return false;
274
288
  });
275
289
  if (replaceable) {
@@ -329,7 +343,6 @@ function ownedTxt(purpose, value) {
329
343
  const lower = value.toLowerCase();
330
344
  if (purpose === "Domain ownership") return lower.includes("groundmail-verify=");
331
345
  if (purpose === "DKIM") return lower.includes("v=dkim1");
332
- if (purpose === "DMARC") return lower.includes("v=dmarc1");
333
346
  return false;
334
347
  }
335
348
  async function applyToRecordStore(zone, records, store) {
@@ -341,6 +354,10 @@ async function applyToRecordStore(zone, records, store) {
341
354
  const name = relativeName2(record.host, zone);
342
355
  const value = normalizeValue(type, record.value);
343
356
  const done = (action, detail) => results.push({ purpose: record.purpose, host: record.host, action, ...detail ? { detail } : {} });
357
+ if (record.already_set) {
358
+ done("unchanged", ALREADY_SET_DETAIL);
359
+ continue;
360
+ }
344
361
  if (type === "CNAME") {
345
362
  const existing = at("CNAME", name)[0];
346
363
  if (existing && normalizeValue(type, existing.value) === value) {
@@ -388,6 +405,10 @@ async function applyToRecordStore(zone, records, store) {
388
405
  done("unchanged");
389
406
  continue;
390
407
  }
408
+ if (record.purpose === "DMARC" && sameName.some((row) => isDmarcValue(normalizeValue(type, row.value)))) {
409
+ done("unchanged", KEPT_DMARC_DETAIL);
410
+ continue;
411
+ }
391
412
  const replaceable = sameName.find((row) => ownedTxt(record.purpose, normalizeValue(type, row.value)));
392
413
  if (replaceable) {
393
414
  await store.update(replaceable, { name, type, value });
@@ -521,6 +542,10 @@ function createGoDaddyKeyProvider(options) {
521
542
  for (const record of records) {
522
543
  const recordType = record.type.toUpperCase();
523
544
  const name = relativeName3(record.host, zone);
545
+ if (record.already_set) {
546
+ results.push({ purpose: record.purpose, host: record.host, action: "unchanged", detail: ALREADY_SET_DETAIL });
547
+ continue;
548
+ }
524
549
  if (recordType === "CNAME") {
525
550
  const target = record.value.replace(/\.$/, "");
526
551
  const existing2 = await gd(
@@ -622,10 +647,13 @@ function createGoDaddyKeyProvider(options) {
622
647
  results.push({ purpose: record.purpose, host: record.host, action: "unchanged" });
623
648
  continue;
624
649
  }
650
+ if (record.purpose === "DMARC" && list.some((r) => isDmarcValue(r.data))) {
651
+ results.push({ purpose: record.purpose, host: record.host, action: "unchanged", detail: KEPT_DMARC_DETAIL });
652
+ continue;
653
+ }
625
654
  const replaceableIndex = list.findIndex((r) => {
626
655
  if (record.purpose === "Domain ownership") return r.data.includes("groundmail-verify=");
627
656
  if (record.purpose === "DKIM") return r.data.toLowerCase().includes("v=dkim1");
628
- if (record.purpose === "DMARC") return r.data.toLowerCase().includes("v=dmarc1");
629
657
  return false;
630
658
  });
631
659
  const next = replaceableIndex >= 0 ? list.map(
@@ -913,6 +941,10 @@ function createVercelProvider(options) {
913
941
  for (const record of records) {
914
942
  const recordType = record.type.toUpperCase();
915
943
  const name = relativeName4(record.host, zone);
944
+ if (record.already_set) {
945
+ results.push({ purpose: record.purpose, host: record.host, action: "unchanged", detail: ALREADY_SET_DETAIL });
946
+ continue;
947
+ }
916
948
  if (recordType === "CNAME") {
917
949
  const target = record.value.replace(/\.$/, "").toLowerCase();
918
950
  const existing = cached.find(
@@ -978,7 +1010,7 @@ function createVercelProvider(options) {
978
1010
  }
979
1011
  if (record.purpose === "SPF") {
980
1012
  const spfRecords = cached.filter(
981
- (row) => row.type === "TXT" && row.name === "" && isSpfRecord(row.value)
1013
+ (row) => row.type === "TXT" && row.name === name && isSpfRecord(row.value)
982
1014
  );
983
1015
  const existing = spfRecords[0];
984
1016
  const includeHost = record.value.match(/include:([^\s]+)/i)?.[1] || "spf.groundmail.dev";
@@ -994,7 +1026,7 @@ function createVercelProvider(options) {
994
1026
  } else {
995
1027
  await vercel(`/v1/domains/records/${existing.id}`, {
996
1028
  method: "PATCH",
997
- body: JSON.stringify({ type: "TXT", name: "", value: merged, ttl: 60 })
1029
+ body: JSON.stringify({ type: "TXT", name, value: merged, ttl: 60 })
998
1030
  });
999
1031
  results.push({
1000
1032
  purpose: record.purpose,
@@ -1006,7 +1038,7 @@ function createVercelProvider(options) {
1006
1038
  } else {
1007
1039
  await vercel(`/v2/domains/${encodeURIComponent(zone)}/records`, {
1008
1040
  method: "POST",
1009
- body: JSON.stringify({ type: "TXT", name: "", value: merged, ttl: 60 })
1041
+ body: JSON.stringify({ type: "TXT", name, value: merged, ttl: 60 })
1010
1042
  });
1011
1043
  results.push({
1012
1044
  purpose: record.purpose,
@@ -1024,10 +1056,13 @@ function createVercelProvider(options) {
1024
1056
  results.push({ purpose: record.purpose, host: record.host, action: "unchanged" });
1025
1057
  continue;
1026
1058
  }
1059
+ if (record.purpose === "DMARC" && existingList.some((row) => isDmarcValue(row.value))) {
1060
+ results.push({ purpose: record.purpose, host: record.host, action: "unchanged", detail: KEPT_DMARC_DETAIL });
1061
+ continue;
1062
+ }
1027
1063
  const replaceable = existingList.find((row) => {
1028
1064
  if (record.purpose === "Domain ownership") return row.value.includes("groundmail-verify=");
1029
1065
  if (record.purpose === "DKIM") return row.value.toLowerCase().includes("v=dkim1");
1030
- if (record.purpose === "DMARC") return row.value.toLowerCase().includes("v=dmarc1");
1031
1066
  return false;
1032
1067
  });
1033
1068
  if (replaceable) {
@@ -1755,6 +1790,7 @@ var ReceivedEmailsResource = class {
1755
1790
  if (params.limit != null) search.set("limit", String(params.limit));
1756
1791
  if (params.cursor) search.set("cursor", params.cursor);
1757
1792
  if (params.domain) search.set("domain", params.domain);
1793
+ if (params.inReplyToEmail) search.set("in_reply_to_email", params.inReplyToEmail);
1758
1794
  const query = search.toString();
1759
1795
  return this.client.request(
1760
1796
  `/received-emails${query ? `?${query}` : ""}`,
package/dist/clerk.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { G as Groundmail, S as SendEmailResult } from './client-DdtHUMEu.js';
1
+ import { G as Groundmail, S as SendEmailResult } from './client-BkJCGT45.js';
2
2
 
3
3
  /**
4
4
  * Subset of Clerk `email.created` webhook `data` used for delivery.
package/dist/clerk.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_API_BASE_URL,
3
3
  Groundmail
4
- } from "./chunk-POS35D4J.js";
4
+ } from "./chunk-PMQDWLBY.js";
5
5
 
6
6
  // src/clerk.ts
7
7
  function resolveApiKey(options) {
@@ -195,6 +195,26 @@ type ReceivedEmailAttachmentMeta = {
195
195
  type ReceivedEmailAttachment = ReceivedEmailAttachmentMeta & {
196
196
  data?: string;
197
197
  };
198
+ /**
199
+ * The email you sent through Groundmail that a received email replies to, as it was
200
+ * when the reply arrived (so it outlives your plan's data retention for the sent email).
201
+ */
202
+ type InReplyToEmail = {
203
+ /** The sent email's id (`msg_…`). */
204
+ id: string;
205
+ subject: string;
206
+ from: string;
207
+ to: string[];
208
+ /** When it was sent (ISO 8601). */
209
+ sent_at: string;
210
+ /** The email's tags as sent (`[]` when it had none). */
211
+ tags: Array<{
212
+ name: string;
213
+ value: string;
214
+ }>;
215
+ /** The tenant's external id when it was sent as a tenant, else null. */
216
+ tenant: string | null;
217
+ };
198
218
  type ReceivedEmail = {
199
219
  id: string;
200
220
  domain_id: string;
@@ -215,6 +235,11 @@ type ReceivedEmail = {
215
235
  message_id: string | null;
216
236
  in_reply_to: string | null;
217
237
  references: string[];
238
+ /**
239
+ * The email you sent through Groundmail that this one replies to, matched by its
240
+ * In-Reply-To, then References. Null when it replies to none of your sent emails.
241
+ */
242
+ in_reply_to_email: InReplyToEmail | null;
218
243
  attachment_count: number;
219
244
  attachments: ReceivedEmailAttachment[];
220
245
  text_body: string | null;
@@ -227,6 +252,8 @@ type ListReceivedEmailsParams = {
227
252
  limit?: number;
228
253
  cursor?: string;
229
254
  domain?: string;
255
+ /** Only replies to this sent email (`msg_…`). */
256
+ inReplyToEmail?: string;
230
257
  };
231
258
  type ListReceivedEmailsResult = {
232
259
  received_emails: ReceivedEmail[];
@@ -931,6 +958,11 @@ type DnsRecord = {
931
958
  purpose: string;
932
959
  /** MX preference when `type` is `MX`. Mail hostname is in `value`. */
933
960
  priority?: number;
961
+ /**
962
+ * The domain already publishes a record that does this job (its own DMARC record).
963
+ * `value` is what is published now; nothing to add or change, and apply leaves it alone.
964
+ */
965
+ already_set?: boolean;
934
966
  };
935
967
  type CreateDomainParams = {
936
968
  name: string;
@@ -988,9 +1020,11 @@ type VerifyDomainResult = {
988
1020
  verified: boolean;
989
1021
  checks?: {
990
1022
  ownership: boolean;
1023
+ /** True when SPF needs nothing more. Always true for a main domain (example.com), which needs no SPF change. */
991
1024
  spf: boolean;
992
1025
  dkim: boolean;
993
1026
  dmarc: boolean;
1027
+ return_path?: boolean;
994
1028
  };
995
1029
  auto?: boolean;
996
1030
  inbound_configured?: boolean;
@@ -1928,4 +1962,4 @@ declare function normalizeAccessToken(value: GroundmailAccessToken | null | unde
1928
1962
  expiresAt: number | null;
1929
1963
  };
1930
1964
 
1931
- export { type DmarcStatus as $, type ApiErrorBody as A, type BatchSendEmailResult as B, type CategoryOptOut as C, type DnsRecord as D, type CreateDomainResult as E, type CreateMigrationParams as F, Groundmail as G, type CreateSuppressionParams as H, type CreateTemplateParams as I, type CreateTenantParams as J, type CreateWebhookParams as K, DEFAULT_API_BASE_URL as L, type DailyRampLimitErrorDetails as M, type DeleteTenantResult as N, type DeliverabilityBucket as O, type DeliverabilityDomainInsight as P, type DeliverabilityInsightsResult as Q, type DeliverabilityMailServerRelay as R, type SendEmailResult as S, type DeliverabilityWindow as T, type DmarcDailyPoint as U, type DmarcMonitoring as V, type DmarcMonitoringDisabled as W, type DmarcReadiness as X, type DmarcReadinessVerdict as Y, type DmarcSource as Z, type DmarcSourceStatus as _, type ApiErrorCode as a, type RemoveCategoryOptOutOptions as a$, type DnsProviderName as a0, type Domain as a1, type DomainBimiAnalysis as a2, type DomainDetailResult as a3, type DomainDmarcAnalysis as a4, type DomainDnsAnalysis as a5, type DomainStatus as a6, type DomainTlsMode as a7, type DomainTrackingDns as a8, type DomainTrackingStatus as a9, type ListReceivedEmailsResult as aA, type ListSuppressionsParams as aB, type ListSuppressionsResult as aC, type ListTemplatesParams as aD, type ListTemplatesResult as aE, type ListTenantDomainsResult as aF, type ListTenantsParams as aG, type ListTenantsResult as aH, type ListTestInboxEmailsParams as aI, type ListTestInboxEmailsResult as aJ, type MailServerSigningStatus as aK, type MailStream as aL, type Migration as aM, type MigrationDnsChange as aN, type MigrationDnsPlan as aO, type MigrationDomainItem as aP, type MigrationItemStatus as aQ, type MigrationProvider as aR, type MigrationResource as aS, type MigrationSummary as aT, type MigrationTemplateItem as aU, type MigrationTotals as aV, type MigrationWebhookItem as aW, type ReceivedEmail as aX, type ReceivedEmailAttachment as aY, type ReceivedEmailAttachmentMeta as aZ, type RemoteApplyDnsCredentials as a_, type EmailListItem as aa, type EmailWebhookEventPayload as ab, type EmailWebhookEventType as ac, type EnableDmarcParams as ad, type EnableDmarcResult as ae, type EnrollmentSkip as af, type EventRecord as ag, type GroundmailAccessToken as ah, type GroundmailOptions as ai, type GroundmailTokenOptions as aj, type GroundmailTokenProvider as ak, type HeldBackErrorDetails as al, type HeldBackReason as am, type HeldBackRecipient as an, type ListApiKeysParams as ao, type ListApiKeysResult as ap, type ListAutomationRunsParams as aq, type ListAutomationRunsResult as ar, type ListAutomationsResult as as, type ListCategoryOptOutsParams as at, type ListCategoryOptOutsResult as au, type ListDomainsParams as av, type ListDomainsResult as aw, type ListEmailsParams as ax, type ListEmailsResult as ay, type ListReceivedEmailsParams as az, type ApiKey as b, type RunMigrationOptions as b0, type SendEmailParams as b1, type StreamDeliverability as b2, type SuppressedErrorDetails as b3, type Suppression as b4, TEST_INBOX_WAIT_DEFAULT_MS as b5, TEST_INBOX_WAIT_MAX_SECONDS as b6, type Template as b7, type TemplateFormat as b8, type TemplateLintWarning as b9, type UpdateTemplateParams as bA, type UpdateTenantParams as bB, type UpdateWebhookParams as bC, type ValidateEmailResult as bD, type ValidationReason as bE, type ValidationVerdict as bF, type VerifyDomainResult as bG, type WaitForTestEmailParams as bH, type WebhookEmailTag as bI, type WebhookEndpoint as bJ, type WebhookEndpointWithSecret as bK, type WebhookEventType as bL, mergeMigrations as bM, normalizeAccessToken as bN, type TemplateStarter as ba, type TemplateStatus as bb, type TemplateVersion as bc, type Tenant as bd, type TenantPauseSource as be, type TenantRamp as bf, type TenantStats as bg, type TenantStatsResult as bh, type TenantStatus as bi, type TenantStreamPolicy as bj, type TestEmailWebhookParams as bk, type TestEmailWebhookResult as bl, type TestInbox as bm, type TestInboxAddressOptions as bn, type TestInboxEmail as bo, type TestInboxEmailDetail as bp, type TestInboxHeader as bq, TestInboxResource as br, type TestInboxUsage as bs, type TriggerEventParams as bt, type TriggerEventResult as bu, type TwilioIntegrationResponse as bv, type TwilioIntegrationStatus as bw, type UpdateAutomationParams as bx, type UpdateDomainParams as by, type UpdateEmailParams as bz, type ApiKeyScope as c, type ApplyDnsParams as d, type ApplyDnsRecordResult as e, type ApplyDnsResult as f, type Asset as g, type Automation as h, type AutomationResult as i, type AutomationRun as j, type AutomationRunResponse as k, type AutomationRunStatus as l, type AutomationRunStep as m, type AutomationRunStepStatus as n, type AutomationStatus as o, type AutomationStep as p, type AutomationTrigger as q, type BounceType as r, type CategoryOptOutCategory as s, type CategoryUnsubscribedErrorDetails as t, type ConnectTwilioParams as u, type ContactWebhookEventPayload as v, type CreateApiKeyParams as w, type CreateApiKeyResult as x, type CreateAutomationParams as y, type CreateDomainParams as z };
1965
+ export { type DmarcStatus as $, type ApiErrorBody as A, type BatchSendEmailResult as B, type CategoryOptOut as C, type DnsRecord as D, type CreateDomainResult as E, type CreateMigrationParams as F, Groundmail as G, type CreateSuppressionParams as H, type CreateTemplateParams as I, type CreateTenantParams as J, type CreateWebhookParams as K, DEFAULT_API_BASE_URL as L, type DailyRampLimitErrorDetails as M, type DeleteTenantResult as N, type DeliverabilityBucket as O, type DeliverabilityDomainInsight as P, type DeliverabilityInsightsResult as Q, type DeliverabilityMailServerRelay as R, type SendEmailResult as S, type DeliverabilityWindow as T, type DmarcDailyPoint as U, type DmarcMonitoring as V, type DmarcMonitoringDisabled as W, type DmarcReadiness as X, type DmarcReadinessVerdict as Y, type DmarcSource as Z, type DmarcSourceStatus as _, type ApiErrorCode as a, type RemoteApplyDnsCredentials as a$, type DnsProviderName as a0, type Domain as a1, type DomainBimiAnalysis as a2, type DomainDetailResult as a3, type DomainDmarcAnalysis as a4, type DomainDnsAnalysis as a5, type DomainStatus as a6, type DomainTlsMode as a7, type DomainTrackingDns as a8, type DomainTrackingStatus as a9, type ListReceivedEmailsParams as aA, type ListReceivedEmailsResult as aB, type ListSuppressionsParams as aC, type ListSuppressionsResult as aD, type ListTemplatesParams as aE, type ListTemplatesResult as aF, type ListTenantDomainsResult as aG, type ListTenantsParams as aH, type ListTenantsResult as aI, type ListTestInboxEmailsParams as aJ, type ListTestInboxEmailsResult as aK, type MailServerSigningStatus as aL, type MailStream as aM, type Migration as aN, type MigrationDnsChange as aO, type MigrationDnsPlan as aP, type MigrationDomainItem as aQ, type MigrationItemStatus as aR, type MigrationProvider as aS, type MigrationResource as aT, type MigrationSummary as aU, type MigrationTemplateItem as aV, type MigrationTotals as aW, type MigrationWebhookItem as aX, type ReceivedEmail as aY, type ReceivedEmailAttachment as aZ, type ReceivedEmailAttachmentMeta as a_, type EmailListItem as aa, type EmailWebhookEventPayload as ab, type EmailWebhookEventType as ac, type EnableDmarcParams as ad, type EnableDmarcResult as ae, type EnrollmentSkip as af, type EventRecord as ag, type GroundmailAccessToken as ah, type GroundmailOptions as ai, type GroundmailTokenOptions as aj, type GroundmailTokenProvider as ak, type HeldBackErrorDetails as al, type HeldBackReason as am, type HeldBackRecipient as an, type InReplyToEmail as ao, type ListApiKeysParams as ap, type ListApiKeysResult as aq, type ListAutomationRunsParams as ar, type ListAutomationRunsResult as as, type ListAutomationsResult as at, type ListCategoryOptOutsParams as au, type ListCategoryOptOutsResult as av, type ListDomainsParams as aw, type ListDomainsResult as ax, type ListEmailsParams as ay, type ListEmailsResult as az, type ApiKey as b, type RemoveCategoryOptOutOptions as b0, type RunMigrationOptions as b1, type SendEmailParams as b2, type StreamDeliverability as b3, type SuppressedErrorDetails as b4, type Suppression as b5, TEST_INBOX_WAIT_DEFAULT_MS as b6, TEST_INBOX_WAIT_MAX_SECONDS as b7, type Template as b8, type TemplateFormat as b9, type UpdateEmailParams as bA, type UpdateTemplateParams as bB, type UpdateTenantParams as bC, type UpdateWebhookParams as bD, type ValidateEmailResult as bE, type ValidationReason as bF, type ValidationVerdict as bG, type VerifyDomainResult as bH, type WaitForTestEmailParams as bI, type WebhookEmailTag as bJ, type WebhookEndpoint as bK, type WebhookEndpointWithSecret as bL, type WebhookEventType as bM, mergeMigrations as bN, normalizeAccessToken as bO, type TemplateLintWarning as ba, type TemplateStarter as bb, type TemplateStatus as bc, type TemplateVersion as bd, type Tenant as be, type TenantPauseSource as bf, type TenantRamp as bg, type TenantStats as bh, type TenantStatsResult as bi, type TenantStatus as bj, type TenantStreamPolicy as bk, type TestEmailWebhookParams as bl, type TestEmailWebhookResult as bm, type TestInbox as bn, type TestInboxAddressOptions as bo, type TestInboxEmail as bp, type TestInboxEmailDetail as bq, type TestInboxHeader as br, TestInboxResource as bs, type TestInboxUsage as bt, type TriggerEventParams as bu, type TriggerEventResult as bv, type TwilioIntegrationResponse as bw, type TwilioIntegrationStatus as bx, type UpdateAutomationParams as by, type UpdateDomainParams as bz, type ApiKeyScope as c, type ApplyDnsParams as d, type ApplyDnsRecordResult as e, type ApplyDnsResult as f, type Asset as g, type Automation as h, type AutomationResult as i, type AutomationRun as j, type AutomationRunResponse as k, type AutomationRunStatus as l, type AutomationRunStep as m, type AutomationRunStepStatus as n, type AutomationStatus as o, type AutomationStep as p, type AutomationTrigger as q, type BounceType as r, type CategoryOptOutCategory as s, type CategoryUnsubscribedErrorDetails as t, type ConnectTwilioParams as u, type ContactWebhookEventPayload as v, type CreateApiKeyParams as w, type CreateApiKeyResult as x, type CreateAutomationParams as y, type CreateDomainParams as z };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as ApiErrorBody, D as DnsRecord } from './client-DdtHUMEu.js';
2
- export { a as ApiErrorCode, b as ApiKey, c as ApiKeyScope, d as ApplyDnsParams, e as ApplyDnsRecordResult, f as ApplyDnsResult, g as Asset, h as Automation, i as AutomationResult, j as AutomationRun, k as AutomationRunResponse, l as AutomationRunStatus, m as AutomationRunStep, n as AutomationRunStepStatus, o as AutomationStatus, p as AutomationStep, q as AutomationTrigger, B as BatchSendEmailResult, r as BounceType, C as CategoryOptOut, s as CategoryOptOutCategory, t as CategoryUnsubscribedErrorDetails, u as ConnectTwilioParams, v as ContactWebhookEventPayload, w as CreateApiKeyParams, x as CreateApiKeyResult, y as CreateAutomationParams, z as CreateDomainParams, E as CreateDomainResult, F as CreateMigrationParams, H as CreateSuppressionParams, I as CreateTemplateParams, J as CreateTenantParams, K as CreateWebhookParams, L as DEFAULT_API_BASE_URL, M as DailyRampLimitErrorDetails, N as DeleteTenantResult, O as DeliverabilityBucket, P as DeliverabilityDomainInsight, Q as DeliverabilityInsightsResult, R as DeliverabilityMailServerRelay, T as DeliverabilityWindow, U as DmarcDailyPoint, V as DmarcMonitoring, W as DmarcMonitoringDisabled, X as DmarcReadiness, Y as DmarcReadinessVerdict, Z as DmarcSource, _ as DmarcSourceStatus, $ as DmarcStatus, a0 as DnsProviderName, a1 as Domain, a2 as DomainBimiAnalysis, a3 as DomainDetailResult, a4 as DomainDmarcAnalysis, a5 as DomainDnsAnalysis, a6 as DomainStatus, a7 as DomainTlsMode, a8 as DomainTrackingDns, a9 as DomainTrackingStatus, aa as EmailListItem, ab as EmailWebhookEventPayload, ac as EmailWebhookEventType, ad as EnableDmarcParams, ae as EnableDmarcResult, af as EnrollmentSkip, ag as EventRecord, G as Groundmail, ah as GroundmailAccessToken, ai as GroundmailOptions, aj as GroundmailTokenOptions, ak as GroundmailTokenProvider, al as HeldBackErrorDetails, am as HeldBackReason, an as HeldBackRecipient, ao as ListApiKeysParams, ap as ListApiKeysResult, aq as ListAutomationRunsParams, ar as ListAutomationRunsResult, as as ListAutomationsResult, at as ListCategoryOptOutsParams, au as ListCategoryOptOutsResult, av as ListDomainsParams, aw as ListDomainsResult, ax as ListEmailsParams, ay as ListEmailsResult, az as ListReceivedEmailsParams, aA as ListReceivedEmailsResult, aB as ListSuppressionsParams, aC as ListSuppressionsResult, aD as ListTemplatesParams, aE as ListTemplatesResult, aF as ListTenantDomainsResult, aG as ListTenantsParams, aH as ListTenantsResult, aI as ListTestInboxEmailsParams, aJ as ListTestInboxEmailsResult, aK as MailServerSigningStatus, aL as MailStream, aM as Migration, aN as MigrationDnsChange, aO as MigrationDnsPlan, aP as MigrationDomainItem, aQ as MigrationItemStatus, aR as MigrationProvider, aS as MigrationResource, aT as MigrationSummary, aU as MigrationTemplateItem, aV as MigrationTotals, aW as MigrationWebhookItem, aX as ReceivedEmail, aY as ReceivedEmailAttachment, aZ as ReceivedEmailAttachmentMeta, a_ as RemoteApplyDnsCredentials, a$ as RemoveCategoryOptOutOptions, b0 as RunMigrationOptions, b1 as SendEmailParams, S as SendEmailResult, b2 as StreamDeliverability, b3 as SuppressedErrorDetails, b4 as Suppression, b5 as TEST_INBOX_WAIT_DEFAULT_MS, b6 as TEST_INBOX_WAIT_MAX_SECONDS, b7 as Template, b8 as TemplateFormat, b9 as TemplateLintWarning, ba as TemplateStarter, bb as TemplateStatus, bc as TemplateVersion, bd as Tenant, be as TenantPauseSource, bf as TenantRamp, bg as TenantStats, bh as TenantStatsResult, bi as TenantStatus, bj as TenantStreamPolicy, bk as TestEmailWebhookParams, bl as TestEmailWebhookResult, bm as TestInbox, bn as TestInboxAddressOptions, bo as TestInboxEmail, bp as TestInboxEmailDetail, bq as TestInboxHeader, br as TestInboxResource, bs as TestInboxUsage, bt as TriggerEventParams, bu as TriggerEventResult, bv as TwilioIntegrationResponse, bw as TwilioIntegrationStatus, bx as UpdateAutomationParams, by as UpdateDomainParams, bz as UpdateEmailParams, bA as UpdateTemplateParams, bB as UpdateTenantParams, bC as UpdateWebhookParams, bD as ValidateEmailResult, bE as ValidationReason, bF as ValidationVerdict, bG as VerifyDomainResult, bH as WaitForTestEmailParams, bI as WebhookEmailTag, bJ as WebhookEndpoint, bK as WebhookEndpointWithSecret, bL as WebhookEventType, bM as mergeMigrations, bN as normalizeAccessToken } from './client-DdtHUMEu.js';
1
+ import { A as ApiErrorBody, D as DnsRecord } from './client-BkJCGT45.js';
2
+ export { a as ApiErrorCode, b as ApiKey, c as ApiKeyScope, d as ApplyDnsParams, e as ApplyDnsRecordResult, f as ApplyDnsResult, g as Asset, h as Automation, i as AutomationResult, j as AutomationRun, k as AutomationRunResponse, l as AutomationRunStatus, m as AutomationRunStep, n as AutomationRunStepStatus, o as AutomationStatus, p as AutomationStep, q as AutomationTrigger, B as BatchSendEmailResult, r as BounceType, C as CategoryOptOut, s as CategoryOptOutCategory, t as CategoryUnsubscribedErrorDetails, u as ConnectTwilioParams, v as ContactWebhookEventPayload, w as CreateApiKeyParams, x as CreateApiKeyResult, y as CreateAutomationParams, z as CreateDomainParams, E as CreateDomainResult, F as CreateMigrationParams, H as CreateSuppressionParams, I as CreateTemplateParams, J as CreateTenantParams, K as CreateWebhookParams, L as DEFAULT_API_BASE_URL, M as DailyRampLimitErrorDetails, N as DeleteTenantResult, O as DeliverabilityBucket, P as DeliverabilityDomainInsight, Q as DeliverabilityInsightsResult, R as DeliverabilityMailServerRelay, T as DeliverabilityWindow, U as DmarcDailyPoint, V as DmarcMonitoring, W as DmarcMonitoringDisabled, X as DmarcReadiness, Y as DmarcReadinessVerdict, Z as DmarcSource, _ as DmarcSourceStatus, $ as DmarcStatus, a0 as DnsProviderName, a1 as Domain, a2 as DomainBimiAnalysis, a3 as DomainDetailResult, a4 as DomainDmarcAnalysis, a5 as DomainDnsAnalysis, a6 as DomainStatus, a7 as DomainTlsMode, a8 as DomainTrackingDns, a9 as DomainTrackingStatus, aa as EmailListItem, ab as EmailWebhookEventPayload, ac as EmailWebhookEventType, ad as EnableDmarcParams, ae as EnableDmarcResult, af as EnrollmentSkip, ag as EventRecord, G as Groundmail, ah as GroundmailAccessToken, ai as GroundmailOptions, aj as GroundmailTokenOptions, ak as GroundmailTokenProvider, al as HeldBackErrorDetails, am as HeldBackReason, an as HeldBackRecipient, ao as InReplyToEmail, ap as ListApiKeysParams, aq as ListApiKeysResult, ar as ListAutomationRunsParams, as as ListAutomationRunsResult, at as ListAutomationsResult, au as ListCategoryOptOutsParams, av as ListCategoryOptOutsResult, aw as ListDomainsParams, ax as ListDomainsResult, ay as ListEmailsParams, az as ListEmailsResult, aA as ListReceivedEmailsParams, aB as ListReceivedEmailsResult, aC as ListSuppressionsParams, aD as ListSuppressionsResult, aE as ListTemplatesParams, aF as ListTemplatesResult, aG as ListTenantDomainsResult, aH as ListTenantsParams, aI as ListTenantsResult, aJ as ListTestInboxEmailsParams, aK as ListTestInboxEmailsResult, aL as MailServerSigningStatus, aM as MailStream, aN as Migration, aO as MigrationDnsChange, aP as MigrationDnsPlan, aQ as MigrationDomainItem, aR as MigrationItemStatus, aS as MigrationProvider, aT as MigrationResource, aU as MigrationSummary, aV as MigrationTemplateItem, aW as MigrationTotals, aX as MigrationWebhookItem, aY as ReceivedEmail, aZ as ReceivedEmailAttachment, a_ as ReceivedEmailAttachmentMeta, a$ as RemoteApplyDnsCredentials, b0 as RemoveCategoryOptOutOptions, b1 as RunMigrationOptions, b2 as SendEmailParams, S as SendEmailResult, b3 as StreamDeliverability, b4 as SuppressedErrorDetails, b5 as Suppression, b6 as TEST_INBOX_WAIT_DEFAULT_MS, b7 as TEST_INBOX_WAIT_MAX_SECONDS, b8 as Template, b9 as TemplateFormat, ba as TemplateLintWarning, bb as TemplateStarter, bc as TemplateStatus, bd as TemplateVersion, be as Tenant, bf as TenantPauseSource, bg as TenantRamp, bh as TenantStats, bi as TenantStatsResult, bj as TenantStatus, bk as TenantStreamPolicy, bl as TestEmailWebhookParams, bm as TestEmailWebhookResult, bn as TestInbox, bo as TestInboxAddressOptions, bp as TestInboxEmail, bq as TestInboxEmailDetail, br as TestInboxHeader, bs as TestInboxResource, bt as TestInboxUsage, bu as TriggerEventParams, bv as TriggerEventResult, bw as TwilioIntegrationResponse, bx as TwilioIntegrationStatus, by as UpdateAutomationParams, bz as UpdateDomainParams, bA as UpdateEmailParams, bB as UpdateTemplateParams, bC as UpdateTenantParams, bD as UpdateWebhookParams, bE as ValidateEmailResult, bF as ValidationReason, bG as ValidationVerdict, bH as VerifyDomainResult, bI as WaitForTestEmailParams, bJ as WebhookEmailTag, bK as WebhookEndpoint, bL as WebhookEndpointWithSecret, bM as WebhookEventType, bN as mergeMigrations, bO as normalizeAccessToken } from './client-BkJCGT45.js';
3
3
 
4
4
  type GroundmailErrorOptions = {
5
5
  code?: string;
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  normalizeAccessToken,
13
13
  signWebhookPayload,
14
14
  verifyWebhookSignature
15
- } from "./chunk-POS35D4J.js";
15
+ } from "./chunk-PMQDWLBY.js";
16
16
 
17
17
  // src/simulator.ts
18
18
  var SIMULATOR_DOMAIN = "simulator.groundmail.dev";
package/dist/payload.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { G as Groundmail } from './client-DdtHUMEu.js';
1
+ import { G as Groundmail } from './client-BkJCGT45.js';
2
2
 
3
3
  /**
4
4
  * Minimal Payload `SendEmailOptions` / address shapes used by this adapter.
package/dist/payload.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_API_BASE_URL,
3
3
  Groundmail
4
- } from "./chunk-POS35D4J.js";
4
+ } from "./chunk-PMQDWLBY.js";
5
5
 
6
6
  // src/payload.ts
7
7
  function resolveApiKey(args) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "groundmail",
3
- "version": "0.28.0",
3
+ "version": "0.29.1",
4
4
  "description": "Groundmail transactional email API client",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -89,11 +89,11 @@
89
89
  "prepublishOnly": "npm run build && npm run build:nodemailer-bridge"
90
90
  },
91
91
  "dependencies": {
92
- "groundmail-nodemailer": "0.15.16"
92
+ "groundmail-nodemailer": "0.15.18"
93
93
  },
94
94
  "devDependencies": {
95
95
  "@types/nodemailer": "^8.0.1",
96
- "nodemailer": "^9.0.3",
96
+ "nodemailer": "^10.2.1",
97
97
  "tsup": "^8.5.0",
98
98
  "typescript": "^5",
99
99
  "vitest": "^3.2.4"