@visulima/email 2.1.7 → 2.1.8

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.
Files changed (120) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/crypto/index.js +1 -1
  3. package/dist/deliverability/dmarc-report.js +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/middleware/index.js +1 -1
  7. package/dist/packem_shared/{DkimSigner-sLcIw9bp.js → DkimSigner-udCl3JXO.js} +1 -1
  8. package/dist/packem_shared/{DraftMailMessage-C3YTXqWo.js → DraftMailMessage-BgP1OF1G.js} +1 -1
  9. package/dist/packem_shared/EmailError-2CCyVX1S.js +1 -0
  10. package/dist/packem_shared/Mail-DduRntbB.js +1 -0
  11. package/dist/packem_shared/{MailMessage-DuEXJiCg.js → MailMessage-BRBT4Jea.js} +1 -1
  12. package/dist/packem_shared/{RequiredOptionError-DU2lxzk3.js → RequiredOptionError-BmpC5whN.js} +1 -1
  13. package/dist/packem_shared/{SmimeEncrypter-CzTbQM-z.js → SmimeEncrypter-Dm9McVTQ.js} +1 -1
  14. package/dist/packem_shared/{SmimeSigner-DjLShaOw.js → SmimeSigner-B6hkacNk.js} +1 -1
  15. package/dist/packem_shared/{address-formatter-BWR2Dddx.js → address-formatter-bfmGfQ83.js} +1 -1
  16. package/dist/packem_shared/{ahaSendProvider-br1yB2un.js → ahaSendProvider-C6nBGCCa.js} +1 -1
  17. package/dist/packem_shared/{arcMessageSignatureBase-D54jQIWu.js → arcMessageSignatureBase-B2uArM48.js} +1 -1
  18. package/dist/packem_shared/{attachment-processor-D1cbAhQi.js → attachment-processor-DjbjtJ6H.js} +1 -1
  19. package/dist/packem_shared/{autoSendProvider-BSP8ueOC.js → autoSendProvider-Dhig--Zo.js} +1 -1
  20. package/dist/packem_shared/{awsSesProvider-zRICW1pH.js → awsSesProvider-CMqAmU5N.js} +1 -1
  21. package/dist/packem_shared/{azureProvider-DwN4c5dC.js → azureProvider-C-bNOOil.js} +1 -1
  22. package/dist/packem_shared/{brevoProvider-C491beE_.js → brevoProvider-CkOjDyir.js} +1 -1
  23. package/dist/packem_shared/build-mime-message-t8KYiQkO.js +3 -0
  24. package/dist/packem_shared/{circuitBreakerMiddleware-N0CKF90q.js → circuitBreakerMiddleware-BSCPR72q.js} +1 -1
  25. package/dist/packem_shared/{cloudflareEmailProvider-8JxzLbpX.js → cloudflareEmailProvider-RCixPWnY.js} +1 -1
  26. package/dist/packem_shared/{createTestEmail-D_ksEez3.js → createTestEmail-XiF5E8vJ.js} +1 -1
  27. package/dist/packem_shared/{detectMimeType-CmYmWDXE.js → detectMimeType-B9_7ujpC.js} +1 -1
  28. package/dist/packem_shared/{failoverProvider-6qwE_HSJ.js → failoverProvider-BkOOP7pt.js} +1 -1
  29. package/dist/packem_shared/{httpProvider-BqrdZhGw.js → httpProvider-6idLfv-f.js} +1 -1
  30. package/dist/packem_shared/index-y0s2wQdc.js +11 -0
  31. package/dist/packem_shared/{infobipProvider-C2FU6VMP.js → infobipProvider-CHHsqRXy.js} +1 -1
  32. package/dist/packem_shared/{isValidSigningCertUrl-DNxPA0Q-.js → isValidSigningCertUrl-D7PuiRW4.js} +1 -1
  33. package/dist/packem_shared/{loopsProvider-Bz63so6m.js → loopsProvider-Cl-dOuCN.js} +1 -1
  34. package/dist/packem_shared/{mail.d-xKtvoKMK.d.ts → mail.d-B9JyPxzq.d.ts} +1 -0
  35. package/dist/packem_shared/{mailCrabProvider-bkQy-2a1.js → mailCrabProvider-De2YxPlF.js} +1 -1
  36. package/dist/packem_shared/{mailPaceProvider-S1AB-AYq.js → mailPaceProvider-DwNTuFb2.js} +1 -1
  37. package/dist/packem_shared/{mailchannelsProvider-B_K6X4VY.js → mailchannelsProvider-Dwl0Typz.js} +1 -1
  38. package/dist/packem_shared/{mailerSendProvider-DPEww2H1.js → mailerSendProvider-CyMIbqGq.js} +1 -1
  39. package/dist/packem_shared/{mailgunProvider-DKxzVbDW.js → mailgunProvider-DWKJYRKT.js} +1 -1
  40. package/dist/packem_shared/{mailjetProvider-C2TQcujL.js → mailjetProvider-DXPJQO1G.js} +1 -1
  41. package/dist/packem_shared/{mailomatProvider-B8-5bQsu.js → mailomatProvider-DopZk27y.js} +1 -1
  42. package/dist/packem_shared/{mailtrapProvider-DW7TLOdG.js → mailtrapProvider-CTg4z3GN.js} +1 -1
  43. package/dist/packem_shared/{make-request-CylyuRaN.js → make-request-CDhxj-9b.js} +1 -1
  44. package/dist/packem_shared/{mandrillProvider-S-0lKNGd.js → mandrillProvider-CAQeMtU_.js} +1 -1
  45. package/dist/packem_shared/{mockProvider-BAl292mW.js → mockProvider-EcpYlg-_.js} +1 -1
  46. package/dist/packem_shared/{netcoreProvider-DajMprlo.js → netcoreProvider-ua1avx07.js} +1 -1
  47. package/dist/packem_shared/{nodemailerProvider-DRo0lJ6g.js → nodemailerProvider-BZmQfKlM.js} +1 -1
  48. package/dist/packem_shared/{opentelemetryProvider-C6spx2CD.js → opentelemetryProvider-CAfWpywa.js} +1 -1
  49. package/dist/packem_shared/{outlook365Provider-B0o7UZBW.js → outlook365Provider-SFYELGDr.js} +1 -1
  50. package/dist/packem_shared/{plunkProvider-DJzEUEtU.js → plunkProvider-9amwuQri.js} +1 -1
  51. package/dist/packem_shared/{postalProvider-DHFjFE3Y.js → postalProvider-CeF3TOIW.js} +1 -1
  52. package/dist/packem_shared/{postmarkProvider-Dt1EGGBA.js → postmarkProvider-BPgKEkgF.js} +1 -1
  53. package/dist/packem_shared/{provider-base-DjPzWncP.js → provider-base-B-xhQSqE.js} +1 -1
  54. package/dist/packem_shared/{resendProvider-qjI86j_d.js → resendProvider-C9_sM8bH.js} +1 -1
  55. package/dist/packem_shared/{retry-CG9iT2wF.js → retry-D1Rh-6Z4.js} +1 -1
  56. package/dist/packem_shared/{roundRobinProvider-CO5YvhgR.js → roundRobinProvider-BPzLWZf-.js} +1 -1
  57. package/dist/packem_shared/{scalewayProvider-CihQKhw6.js → scalewayProvider-DfC7275i.js} +1 -1
  58. package/dist/packem_shared/{sendGridProvider-Dkc5AKlC.js → sendGridProvider-CUBBHBzs.js} +1 -1
  59. package/dist/packem_shared/smtpProvider-9nBSGtQl.js +27 -0
  60. package/dist/packem_shared/{sparkpostProvider-CKxQhpyB.js → sparkpostProvider-Be_d7S8o.js} +1 -1
  61. package/dist/packem_shared/{sweegoProvider-DjmAs6La.js → sweegoProvider-CP1cNC-d.js} +1 -1
  62. package/dist/packem_shared/{verifySendGridWebhook-1l9bqIMw.js → verifySendGridWebhook-DtFMgBRP.js} +1 -1
  63. package/dist/packem_shared/{withSuppression-BoaO4Qdz.js → withSuppression-wDl4NTb-.js} +1 -1
  64. package/dist/packem_shared/{zeptomailProvider-DSTC9pUi.js → zeptomailProvider-BZ0fK0Lk.js} +1 -1
  65. package/dist/providers/ahasend/index.js +1 -1
  66. package/dist/providers/autosend/index.js +1 -1
  67. package/dist/providers/aws-ses/index.js +1 -1
  68. package/dist/providers/azure/index.js +1 -1
  69. package/dist/providers/brevo/index.js +1 -1
  70. package/dist/providers/cloudflare-email/index.js +1 -1
  71. package/dist/providers/failover/index.js +1 -1
  72. package/dist/providers/http/index.js +1 -1
  73. package/dist/providers/infobip/index.js +1 -1
  74. package/dist/providers/loops/index.js +1 -1
  75. package/dist/providers/mailchannels/index.js +1 -1
  76. package/dist/providers/mailcrab/index.js +1 -1
  77. package/dist/providers/mailersend/index.js +1 -1
  78. package/dist/providers/mailgun/index.js +1 -1
  79. package/dist/providers/mailjet/index.js +1 -1
  80. package/dist/providers/mailomat/index.js +1 -1
  81. package/dist/providers/mailpace/index.js +1 -1
  82. package/dist/providers/mailtrap/index.js +1 -1
  83. package/dist/providers/mandrill/index.js +1 -1
  84. package/dist/providers/mock/index.js +1 -1
  85. package/dist/providers/netcore/index.js +1 -1
  86. package/dist/providers/nodemailer/index.js +1 -1
  87. package/dist/providers/opentelemetry/index.js +1 -1
  88. package/dist/providers/outlook365/index.js +1 -1
  89. package/dist/providers/plunk/index.js +1 -1
  90. package/dist/providers/postal/index.js +1 -1
  91. package/dist/providers/postmark/index.js +1 -1
  92. package/dist/providers/resend/index.js +1 -1
  93. package/dist/providers/roundrobin/index.js +1 -1
  94. package/dist/providers/scaleway/index.js +1 -1
  95. package/dist/providers/sendgrid/index.js +1 -1
  96. package/dist/providers/smtp/index.js +1 -1
  97. package/dist/providers/sparkpost/index.js +1 -1
  98. package/dist/providers/sweego/index.js +1 -1
  99. package/dist/providers/zeptomail/index.js +1 -1
  100. package/dist/render/css-inline.js +1 -1
  101. package/dist/template-engines/handlebars.js +1 -1
  102. package/dist/template-engines/html-to-text.js +1 -1
  103. package/dist/template-engines/i18n.js +1 -1
  104. package/dist/template-engines/jsx-email.js +1 -1
  105. package/dist/template-engines/liquid.js +1 -1
  106. package/dist/template-engines/mjml.js +1 -1
  107. package/dist/template-engines/react-email.js +1 -1
  108. package/dist/template-engines/vue-email.js +1 -1
  109. package/dist/test/index.d.ts +1 -1
  110. package/dist/test/index.js +1 -1
  111. package/dist/utils/format-email-address.js +1 -1
  112. package/dist/utils/parse-eml.js +3 -3
  113. package/dist/utils/result.js +1 -1
  114. package/dist/webhooks/index.js +1 -1
  115. package/package.json +1 -1
  116. package/dist/packem_shared/EmailError-CDvYwuqz.js +0 -1
  117. package/dist/packem_shared/Mail-CIyxkmxu.js +0 -1
  118. package/dist/packem_shared/build-mime-message-DT67qfMp.js +0 -3
  119. package/dist/packem_shared/index-Gd7m-UQA.js +0 -11
  120. package/dist/packem_shared/smtpProvider-CIXMxPu-.js +0 -25
package/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## @visulima/email [2.1.8](https://github.com/visulima/visulima/compare/%40visulima%2Femail%402.1.7...%40visulima%2Femail%402.1.8) (2026-08-02)
2
+
3
+
4
+ ### Dependencies
5
+
6
+ * **@visulima/error:** upgraded to 6.1.0
7
+ * **@visulima/fs:** upgraded to 5.1.0
8
+
1
9
  ## @visulima/email [2.1.7](https://github.com/visulima/visulima/compare/%40visulima%2Femail%402.1.6...%40visulima%2Femail%402.1.7) (2026-07-27)
2
10
 
3
11
 
@@ -1 +1 @@
1
- import{arcMessageSignatureBase as m,arcSealBase as i,signArc as a,verifyArc as t}from"../packem_shared/arcMessageSignatureBase-D54jQIWu.js";import{DkimSigner as c,createDkimSigner as n}from"../packem_shared/DkimSigner-sLcIw9bp.js";import{SmimeEncrypter as g,createSmimeEncrypter as p}from"../packem_shared/SmimeEncrypter-CzTbQM-z.js";import{SmimeSigner as s,createSmimeSigner as x}from"../packem_shared/SmimeSigner-DjLShaOw.js";export{c as DkimSigner,g as SmimeEncrypter,s as SmimeSigner,m as arcMessageSignatureBase,i as arcSealBase,n as createDkimSigner,p as createSmimeEncrypter,x as createSmimeSigner,a as signArc,t as verifyArc};
1
+ import{arcMessageSignatureBase as m,arcSealBase as i,signArc as a,verifyArc as t}from"../packem_shared/arcMessageSignatureBase-B2uArM48.js";import{DkimSigner as c,createDkimSigner as n}from"../packem_shared/DkimSigner-udCl3JXO.js";import{SmimeEncrypter as g,createSmimeEncrypter as p}from"../packem_shared/SmimeEncrypter-Dm9McVTQ.js";import{SmimeSigner as s,createSmimeSigner as x}from"../packem_shared/SmimeSigner-B6hkacNk.js";export{c as DkimSigner,g as SmimeEncrypter,s as SmimeSigner,m as arcMessageSignatureBase,i as arcSealBase,n as createDkimSigner,p as createSmimeEncrypter,x as createSmimeSigner,a as signArc,t as verifyArc};
@@ -1 +1 @@
1
- import l from"../packem_shared/EmailError-CDvYwuqz.js";const g=a=>a==null?[]:Array.isArray(a)?a:[a],e=a=>{if(typeof a=="string")return a;if(typeof a=="number"||typeof a=="boolean")return String(a)},c=a=>{const r=e(a);if(r===void 0)return;const s=Number(r);return Number.isNaN(s)?void 0:s},f=a=>g(a).map(r=>({domain:e(r.domain),result:e(r.result)})),h=async a=>{let r;try{({XMLParser:r}=await import("fast-xml-parser"))}catch(t){throw t instanceof Error&&(t.code==="ERR_MODULE_NOT_FOUND"||t.message.includes("Cannot find module")||t.message.includes("Cannot find package"))?new l("deliverability","fast-xml-parser is not installed. Please install it: pnpm add fast-xml-parser",{cause:t}):new l("deliverability",`Failed to load fast-xml-parser: ${t.message}`,{cause:t})}let s;try{s=new r({ignoreAttributes:!0,parseTagValue:!1}).parse(a)}catch(t){throw new l("deliverability",`Failed to parse DMARC report: ${t.message}`,{cause:t})}const n=s.feedback??{},o=n.report_metadata??{},m=o.date_range??{},i=n.policy_published??{},y=g(n.record).map(t=>{const d=t.row??{},p=d.policy_evaluated??{},b=t.identifiers??{},u=t.auth_results??{};return{authResults:{dkim:f(u.dkim),spf:f(u.spf)},count:c(d.count)??0,disposition:e(p.disposition),dkim:e(p.dkim),headerFrom:e(b.header_from),sourceIp:e(d.source_ip),spf:e(p.spf)}});return{dateRangeBegin:e(m.begin),dateRangeEnd:e(m.end),email:e(o.email),organizationName:e(o.org_name),policyPublished:{adkim:e(i.adkim),aspf:e(i.aspf),domain:e(i.domain),p:e(i.p),pct:c(i.pct),sp:e(i.sp)},records:y,reportId:e(o.report_id)}};export{h as parseDmarcReport};
1
+ import l from"../packem_shared/EmailError-2CCyVX1S.js";const g=a=>a==null?[]:Array.isArray(a)?a:[a],e=a=>{if(typeof a=="string")return a;if(typeof a=="number"||typeof a=="boolean")return String(a)},c=a=>{const r=e(a);if(r===void 0)return;const s=Number(r);return Number.isNaN(s)?void 0:s},f=a=>g(a).map(r=>({domain:e(r.domain),result:e(r.result)})),h=async a=>{let r;try{({XMLParser:r}=await import("fast-xml-parser"))}catch(t){throw t instanceof Error&&(t.code==="ERR_MODULE_NOT_FOUND"||t.message.includes("Cannot find module")||t.message.includes("Cannot find package"))?new l("deliverability","fast-xml-parser is not installed. Please install it: pnpm add fast-xml-parser",{cause:t}):new l("deliverability",`Failed to load fast-xml-parser: ${t.message}`,{cause:t})}let s;try{s=new r({ignoreAttributes:!0,parseTagValue:!1}).parse(a)}catch(t){throw new l("deliverability",`Failed to parse DMARC report: ${t.message}`,{cause:t})}const n=s.feedback??{},o=n.report_metadata??{},m=o.date_range??{},i=n.policy_published??{},y=g(n.record).map(t=>{const d=t.row??{},p=d.policy_evaluated??{},b=t.identifiers??{},u=t.auth_results??{};return{authResults:{dkim:f(u.dkim),spf:f(u.spf)},count:c(d.count)??0,disposition:e(p.disposition),dkim:e(p.dkim),headerFrom:e(b.header_from),sourceIp:e(d.source_ip),spf:e(p.spf)}});return{dateRangeBegin:e(m.begin),dateRangeEnd:e(m.end),email:e(o.email),organizationName:e(o.org_name),policyPublished:{adkim:e(i.adkim),aspf:e(i.aspf),domain:e(i.domain),p:e(i.p),pct:c(i.pct),sp:e(i.sp)},records:y,reportId:e(o.report_id)}};export{h as parseDmarcReport};
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { type A as AttachmentDataOptions, type a as AttachmentOptions, type B as BatchBase, type b as BatchRenderer, D as DraftMailMessage, type F as FeatureCheckMode, M as Mail, type c as MailGlobalConfig, d as MailMessage, type e as MailOptions, type P as Personalization, type S as SendBatchOptions, type f as SendableMessage, g as createMail, h as detectMimeType, i as generateContentId, r as readFileAsBuffer } from "./packem_shared/mail.d-xKtvoKMK.js";
1
+ export { type A as AttachmentDataOptions, type a as AttachmentOptions, type B as BatchBase, type b as BatchRenderer, D as DraftMailMessage, type F as FeatureCheckMode, M as Mail, type c as MailGlobalConfig, d as MailMessage, type e as MailOptions, type P as Personalization, type S as SendBatchOptions, type f as SendableMessage, g as createMail, h as detectMimeType, i as generateContentId, r as readFileAsBuffer } from "./packem_shared/mail.d-B9JyPxzq.js";
2
2
  export type { M as Middleware, S as SendFunction } from "./packem_shared/types.d-GKqPNk0I.js";
3
3
  export { type a as Provider, type P as ProviderFactory, d as defineProvider } from "./packem_shared/provider.d-Cx5YQJdP.js";
4
4
  export type { T as TemplateRenderer } from "./packem_shared/types.d-I-KeZ5w2.js";
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{detectMimeType as a,generateContentId as t,readFileAsBuffer as o}from"./packem_shared/detectMimeType-CmYmWDXE.js";import{default as p}from"./packem_shared/DraftMailMessage-C3YTXqWo.js";import{default as m}from"./packem_shared/EmailError-CDvYwuqz.js";import{default as l}from"./packem_shared/RequiredOptionError-DU2lxzk3.js";import{Mail as u,createMail as x}from"./packem_shared/Mail-CIyxkmxu.js";import{default as M}from"./packem_shared/MailMessage-DuEXJiCg.js";import{defineProvider as E}from"./packem_shared/defineProvider-C9q-7iwt.js";import{default as g}from"./utils/parse-eml.js";import{isErr as y,isOk as w,mapOk as A,tryAsync as F,unwrap as h,unwrapOr as q}from"./utils/result.js";import{default as B}from"./utils/validation/check-feature-support.js";export{p as DraftMailMessage,m as EmailError,u as Mail,M as MailMessage,l as RequiredOptionError,B as checkFeatureSupport,x as createMail,E as defineProvider,a as detectMimeType,t as generateContentId,y as isErr,w as isOk,A as mapOk,g as parseEml,o as readFileAsBuffer,F as tryAsync,h as unwrap,q as unwrapOr};
1
+ import{detectMimeType as a,generateContentId as t,readFileAsBuffer as o}from"./packem_shared/detectMimeType-B9_7ujpC.js";import{default as p}from"./packem_shared/DraftMailMessage-BgP1OF1G.js";import{default as m}from"./packem_shared/EmailError-2CCyVX1S.js";import{default as l}from"./packem_shared/RequiredOptionError-BmpC5whN.js";import{Mail as u,createMail as x}from"./packem_shared/Mail-DduRntbB.js";import{default as M}from"./packem_shared/MailMessage-BRBT4Jea.js";import{defineProvider as E}from"./packem_shared/defineProvider-C9q-7iwt.js";import{default as g}from"./utils/parse-eml.js";import{isErr as y,isOk as w,mapOk as A,tryAsync as F,unwrap as h,unwrapOr as q}from"./utils/result.js";import{default as B}from"./utils/validation/check-feature-support.js";export{p as DraftMailMessage,m as EmailError,u as Mail,M as MailMessage,l as RequiredOptionError,B as checkFeatureSupport,x as createMail,E as defineProvider,a as detectMimeType,t as generateContentId,y as isErr,w as isOk,A as mapOk,g as parseEml,o as readFileAsBuffer,F as tryAsync,h as unwrap,q as unwrapOr};
@@ -1 +1 @@
1
- import{circuitBreakerMiddleware as o}from"../packem_shared/circuitBreakerMiddleware-N0CKF90q.js";import{dedupeMiddleware as i}from"../packem_shared/dedupeMiddleware-CYYI_O7S.js";import{withEvents as p}from"../packem_shared/withEvents-CytsykaK.js";import{loggingMiddleware as f}from"../packem_shared/loggingMiddleware-CZIiVMVp.js";import{withMetrics as w}from"../packem_shared/withMetrics-DWywX_6M.js";import{oauth2Middleware as l}from"../packem_shared/oauth2Middleware-DQh-hIkv.js";import{RATE_LIMIT_PRESETS as h,rateLimitMiddleware as s}from"../packem_shared/RATE_LIMIT_PRESETS-BPADLgcA.js";import{default as c}from"../packem_shared/withRender-VP9wE5Yr.js";import{retryMiddleware as E}from"../packem_shared/retryMiddleware-DbViDX4r.js";import{withSuppression as g}from"../packem_shared/withSuppression-BoaO4Qdz.js";import{withTelemetry as S}from"../packem_shared/withTelemetry-DL2qo0Hp.js";import{composeMiddleware as I}from"../packem_shared/composeMiddleware-BHwLLEzK.js";export{h as RATE_LIMIT_PRESETS,o as circuitBreakerMiddleware,I as composeMiddleware,i as dedupeMiddleware,f as loggingMiddleware,l as oauth2Middleware,s as rateLimitMiddleware,E as retryMiddleware,p as withEvents,w as withMetrics,c as withRender,g as withSuppression,S as withTelemetry};
1
+ import{circuitBreakerMiddleware as o}from"../packem_shared/circuitBreakerMiddleware-BSCPR72q.js";import{dedupeMiddleware as i}from"../packem_shared/dedupeMiddleware-CYYI_O7S.js";import{withEvents as p}from"../packem_shared/withEvents-CytsykaK.js";import{loggingMiddleware as f}from"../packem_shared/loggingMiddleware-CZIiVMVp.js";import{withMetrics as w}from"../packem_shared/withMetrics-DWywX_6M.js";import{oauth2Middleware as l}from"../packem_shared/oauth2Middleware-DQh-hIkv.js";import{RATE_LIMIT_PRESETS as h,rateLimitMiddleware as s}from"../packem_shared/RATE_LIMIT_PRESETS-BPADLgcA.js";import{default as c}from"../packem_shared/withRender-VP9wE5Yr.js";import{retryMiddleware as E}from"../packem_shared/retryMiddleware-DbViDX4r.js";import{withSuppression as g}from"../packem_shared/withSuppression-wDl4NTb-.js";import{withTelemetry as S}from"../packem_shared/withTelemetry-DL2qo0Hp.js";import{composeMiddleware as I}from"../packem_shared/composeMiddleware-BHwLLEzK.js";export{h as RATE_LIMIT_PRESETS,o as circuitBreakerMiddleware,I as composeMiddleware,i as dedupeMiddleware,f as loggingMiddleware,l as oauth2Middleware,s as rateLimitMiddleware,E as retryMiddleware,p as withEvents,w as withMetrics,c as withRender,g as withSuppression,S as withTelemetry};
@@ -1,4 +1,4 @@
1
- import{createRequire as j}from"node:module";import{q as M}from"./index-Gd7m-UQA.js";import{s as x}from"./headers-to-record-De1Eg951.js";let b;const C=o=>(b??=j(import.meta.url))(o),p=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,_=o=>{if(typeof p<"u"&&p.versions&&p.versions.node){const[e,t]=p.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return p.getBuiltinModule(o)}return C(o)},{createHash:h,createPrivateKey:w,sign:T,createSign:v}=_("node:crypto"),q=(o,e="simple")=>{const t=[];for(const[s,a]of Object.entries(o)){const n=e==="relaxed"?s.toLowerCase().trim():s,r=e==="relaxed"?a.replaceAll(/\s+/g," ").trim():a;t.push(`${n}:${r}`)}return t.join(`\r
1
+ import{createRequire as j}from"node:module";import{q as M}from"./index-y0s2wQdc.js";import{s as x}from"./headers-to-record-De1Eg951.js";let b;const C=o=>(b??=j(import.meta.url))(o),p=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,_=o=>{if(typeof p<"u"&&p.versions&&p.versions.node){const[e,t]=p.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return p.getBuiltinModule(o)}return C(o)},{createHash:h,createPrivateKey:w,sign:T,createSign:v}=_("node:crypto"),q=(o,e="simple")=>{const t=[];for(const[s,a]of Object.entries(o)){const n=e==="relaxed"?s.toLowerCase().trim():s,r=e==="relaxed"?a.replaceAll(/\s+/g," ").trim():a;t.push(`${n}:${r}`)}return t.join(`\r
2
2
  `)},I=(o,e="simple")=>{if(e==="simple"){const n=o.replace(/(\r\n|\r|\n)$/,`
3
3
  `);let r=n.length;for(;r>0&&n[r-1]===`
4
4
  `;)r-=1;const l=n.slice(0,r);return l?`${l}
@@ -1 +1 @@
1
- import s from"./MailMessage-DuEXJiCg.js";class r extends s{constructor(){super(),this.header("X-Unsent","1")}}export{r as default};
1
+ import s from"./MailMessage-BRBT4Jea.js";class r extends s{constructor(){super(),this.header("X-Unsent","1")}}export{r as default};
@@ -0,0 +1 @@
1
+ class h extends Error{loc;title;hint;type="VisulimaError";constructor({cause:t,hint:e,location:s,message:a,name:c,stack:o,title:n}){super(a,{cause:t}),this.title=n,this.name=c,this.stack=o??this.stack,this.loc=s,this.hint=e}setLocation(t){this.loc=t}setName(t){this.name=t}setMessage(t){this.message=t}setHint(t){this.hint=t}}let l=class extends h{component;code;constructor(t,e,s){super({cause:s?.cause,hint:s?.hint,message:`[@visulima/email] [${t}] ${e}`,name:"EmailError",title:`Email ${t} Error`}),this.component=t,this.code=s?.code}};export{l as default};
@@ -0,0 +1 @@
1
+ import h from"./DraftMailMessage-BgP1OF1G.js";import v from"./EmailError-2CCyVX1S.js";import f from"./MailMessage-BRBT4Jea.js";import{composeMiddleware as C}from"./composeMiddleware-BHwLLEzK.js";import{j as w}from"./build-mime-message-t8KYiQkO.js";import{c as M}from"./create-logger-BQTS3f-I.js";import{s as g}from"./headers-to-record-De1Eg951.js";import T from"../utils/validation/check-feature-support.js";const S=(i,e,s)=>{e.success&&e.data?i&&i.info("Email sent successfully",{messageId:e.data.messageId,provider:e.data.provider}):i&&i.error("Email send failed",{error:e.error,provider:s})},j=async(i,e,s)=>{const r={...i,to:e.to};return e.cc&&(r.cc=e.cc),e.bcc&&(r.bcc=e.bcc),e.replyTo&&(r.replyTo=e.replyTo),e.headers&&(r.headers={...g(i.headers??{}),...g(e.headers)}),r.subject=e.subject??i.subject,s&&e.data&&(r.subject=await s(r.subject,e.data),i.html!==void 0&&(r.html=await s(i.html,e.data)),i.text!==void 0&&(r.text=await s(i.text,e.data))),r};class u{static extractErrorMessages(e){return e instanceof Error?[e.message]:[String(e??"Unknown error")]}provider;logger;loggerInstance;globalConfig;featureCheck;middlewares=[];composedSend;mountedProviders=new Map;constructor(e,s){this.provider=e,this.featureCheck=s?.featureCheck??"error"}setLogger(e){return this.loggerInstance=e,this.logger=M("Mail",e),this}use(e){return this.middlewares.push(e),this.composedSend=void 0,this}mount(e,s){return this.mountedProviders.set(e,s),this}setFrom(e){return this.globalConfig??={},this.globalConfig.from=e,this.logger&&this.logger.debug("Default from address updated",{from:e.email}),this}setReplyTo(e){return this.globalConfig??={},this.globalConfig.replyTo=e,this.logger&&this.logger.debug("Default reply-to address updated",{replyTo:e.email}),this}setHeaders(e){if(this.globalConfig??={},this.globalConfig.headers=e,this.logger){const s=g(e);this.logger.debug("Default headers updated",{count:Object.keys(s).length,headers:Object.keys(s)})}return this}async draft(e){let s=e instanceof f||e instanceof h?await this.buildDraftFromMessage(e):await this.buildDraftFromOptions(e);s=this.applyGlobalConfig(s);const r=s.headers?g(s.headers):{};s.headers={...r,"X-Unsent":"1"};const t=await w(s,{includeBcc:!0});return this.logger&&this.logger.debug("Draft created successfully in EML format",{from:s.from.email,size:t.length,subject:s.subject,to:Array.isArray(s.to)?s.to.length:1}),t}async send(e){if(e instanceof h)throw new TypeError("Cannot send draft messages. Convert to MailMessage first or remove X-Unsent header.");let s;if(e instanceof f)this.logger&&this.logger.debug("Sending MailMessage instance"),this.loggerInstance&&e.setLogger(this.loggerInstance),s=await e.build();else{const o=e;this.logger&&this.logger.debug("Sending email with options",{subject:o.subject,to:Array.isArray(o.to)?o.to.length:1}),s=o}s=this.applyGlobalConfig(s);const r=this.assertFeatureSupport(s,this.resolveProvider(s));if(r)return{error:r,success:!1};const t=await this.dispatch(s);return S(this.logger,t,this.provider.name??"unknown"),t}sendMany(e,s){const r=Math.max(1,Math.floor(s?.concurrency??1));return r===1?this.sendManySerial(e,s?.signal):this.sendManyConcurrent(e,r,s?.signal)}sendBatch(e,s,r){const t=async function*(){const o=e instanceof f?await e.build():e;for(const a of s)yield await j(o,a,r?.render)};return this.sendMany(t(),{concurrency:r?.concurrency,signal:r?.signal})}async sendOneToReceipt(e){const s=this.provider.name;try{const r=await this.send(e);return r.success&&r.data?{messageId:r.data.messageId,provider:r.data.provider??s,response:r.data.response,successful:!0,timestamp:r.data.timestamp}:{errorMessages:u.extractErrorMessages(r.error),provider:s,successful:!1}}catch(r){return{errorMessages:u.extractErrorMessages(r),provider:s,successful:!1}}}async*sendManySerial(e,s){const r=this.provider.name;let t=0,o=0,a=0;this.logger&&this.logger.debug("Starting batch email send",{provider:r});for await(const l of e){if(l instanceof h)throw new TypeError("Cannot send draft messages. Convert to MailMessage first or remove X-Unsent header.");if(s?.aborted){this.logger&&this.logger.warn("Batch send operation was aborted",{failed:a,processed:t,successful:o}),yield{errorMessages:["Send operation was aborted"],provider:r,successful:!1};return}t+=1;const n=await this.sendOneToReceipt(l);n.successful?o+=1:a+=1,yield n}this.logger&&this.logger.debug("Batch email send completed",{failureCount:a,processedCount:t,provider:r,successCount:o})}async*sendManyConcurrent(e,s,r){const t=this.provider.name;this.logger&&this.logger.debug("Starting concurrent batch email send",{concurrency:s,provider:t});const o=Symbol.asyncIterator in e?e[Symbol.asyncIterator]():e[Symbol.iterator](),a=new Map;let l=0,n=!1,p=!1;const m=async()=>{for(;!n&&!p&&a.size<s;){const d=await o.next();if(d.done){n=!0;break}const c=d.value;if(c instanceof h)throw new TypeError("Cannot send draft messages. Convert to MailMessage first or remove X-Unsent header.");const b=l;l+=1,a.set(b,this.sendOneToReceipt(c).then(y=>({id:b,receipt:y})))}};for(await m();a.size>0;){if(r?.aborted){p=!0,yield{errorMessages:["Send operation was aborted"],provider:t,successful:!1};return}const{id:d,receipt:c}=await Promise.race(a.values());a.delete(d),yield c,await m()}this.logger&&this.logger.debug("Concurrent batch email send completed",{processedCount:l,provider:t})}async dispatch(e){return this.middlewares.length===0?await this.resolveProvider(e).sendEmail(e):(this.composedSend??=C(this.middlewares,s=>Promise.resolve(this.resolveProvider(s).sendEmail(s))),await this.composedSend(e))}resolveProvider(e){return e.stream!==void 0?this.mountedProviders.get(e.stream)??this.provider:this.provider}assertFeatureSupport(e,s){if(this.featureCheck==="off")return;const{supported:r,violations:t}=T(e,s.features);if(r)return;const o=s.name??"unknown",a=t.map(n=>n.field),l=t.map(n=>n.message);if(this.featureCheck==="warn"){this.logger&&this.logger.warn("Message uses capabilities the provider does not support",{fields:a,provider:o});return}return this.logger&&this.logger.error("Message rejected by capability guard",{fields:a,provider:o}),new v(o,`Provider does not support the following message fields: ${a.join(", ")}`,{code:"UNSUPPORTED_FEATURES",hint:l})}async buildDraftFromMessage(e){return this.logger&&this.logger.debug("Creating draft from MailMessage instance"),this.loggerInstance&&e.setLogger(this.loggerInstance),this.applyGlobalConfigToMessage(e),await e.build()}async buildDraftFromOptions(e){return this.logger&&this.logger.debug("Creating draft from email options",{subject:e.subject,to:Array.isArray(e.to)?e.to.length:1}),e}applyGlobalConfigToMessage(e){const s=this.globalConfig?.from;s&&!e.getFrom()&&e.from(s);const r=this.globalConfig?.replyTo;if(r&&!e.getReplyTo()&&e.replyTo(r),this.globalConfig?.headers){const t=g(this.globalConfig.headers);Object.entries(t).forEach(([o,a])=>{e.header(o,a)})}}applyGlobalConfig(e){if(!this.globalConfig)return e;const s={...e};if(!s.from&&this.globalConfig.from&&(s.from=this.globalConfig.from,this.logger&&this.logger.debug("Applied global from address",{from:this.globalConfig.from.email})),!s.replyTo&&this.globalConfig.replyTo&&(s.replyTo=this.globalConfig.replyTo,this.logger&&this.logger.debug("Applied global reply-to address",{replyTo:this.globalConfig.replyTo.email})),this.globalConfig.headers){const r=g(this.globalConfig.headers),t=s.headers?g(s.headers):{};s.headers={...r,...t},this.logger&&this.logger.debug("Merged global headers",{globalCount:Object.keys(r).length,messageCount:Object.keys(t).length})}return s}}const F=(i,e)=>new u(i,e);export{u as Mail,F as createMail};
@@ -1 +1 @@
1
- import{createRequire as f}from"node:module";import{readFileAsBuffer as c,detectMimeType as d,generateContentId as u}from"./detectMimeType-CmYmWDXE.js";import{c as T}from"./create-logger-BQTS3f-I.js";import{s as l}from"./headers-to-record-De1Eg951.js";let y;const A=n=>(y??=f(import.meta.url))(n),o=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,p=n=>{if(typeof o<"u"&&o.versions&&o.versions.node){const[e,t]=o.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return o.getBuiltinModule(n)}return A(n)},{basename:g}=p("node:path"),{fileURLToPath:b}=p("node:url"),m=async()=>(await import("../template-engines/html-to-text.js")).default,x=async()=>(await import("ical-generator")).default,a=n=>Array.isArray(n)?n.map(e=>typeof e=="string"?{email:e}:e):typeof n=="string"?[{email:n}]:[n];class D{fromAddress;toAddresses=[];ccAddresses=[];bccAddresses=[];subjectText="";textContent;textCharset="utf8";autoTextEnabled=!0;htmlContent;htmlCharset="utf8";dateValue;returnPathAddress;senderAddress;headers={};attachments=[];replyToAddress;priorityValue;tagsValue=[];signer;encrypter;logger;icalEventData;icalEventBuilder;from(e){return this.fromAddress=typeof e=="string"?{email:e}:e,this}to(e){return this.toAddresses.length=0,this.toAddresses.push(...a(e)),this}cc(e){return this.ccAddresses.length=0,this.ccAddresses.push(...a(e)),this}bcc(e){return this.bccAddresses.length=0,this.bccAddresses.push(...a(e)),this}subject(e){return this.subjectText=e,this}text(e,t="utf8"){return this.textContent=e,this.textCharset=t,this}html(e,t="utf8"){return this.htmlContent=e,this.htmlCharset=t,this}header(e,t){return this.headers[e]=t,this}setHeaders(e){const t=l(e);return Object.assign(this.headers,t),this}async attachFromPath(e,t){try{const s=await c(e),i=t?.filename??(g(e)||"attachment"),r=t?.contentType??d(i);this.attachments.push({cid:t?.cid,content:s,contentDisposition:t?.contentDisposition??"attachment",contentType:r,encoding:t?.encoding,filename:i,headers:t?.headers}),this.logger&&this.logger.debug(`Attachment added from path: ${e}`,{contentType:r,filename:i})}catch(s){throw this.logger&&this.logger.error(`Failed to attach file from path: ${e}`,s),s}return this}attachData(e,t){const s=t.contentType??d(t.filename);return this.attachments.push({cid:t.cid,content:e,contentDisposition:t.contentDisposition??"attachment",contentType:s,encoding:t.encoding,filename:t.filename,headers:t.headers}),this.logger&&this.logger.debug("Attachment added from data",{contentType:s,filename:t.filename}),this}async embedFromPath(e,t){try{const s=await c(e),i=t?.filename??(g(e)||"inline"),r=t?.contentType??d(i),h=u(i);return this.attachments.push({cid:h,content:s,contentDisposition:"inline",contentType:r,filename:i}),this.logger&&this.logger.debug(`Inline attachment embedded from path: ${e}`,{cid:h,contentType:r,filename:i}),h}catch(s){throw this.logger&&this.logger.error(`Failed to embed file from path: ${e}`,s),s}}embedData(e,t,s){const i=s?.contentType??d(t),r=u(t);return this.attachments.push({cid:r,content:e,contentDisposition:"inline",contentType:i,filename:t}),this.logger&&this.logger.debug("Inline attachment embedded from data",{cid:r,contentType:i,filename:t}),r}replyTo(e){return this.replyToAddress=typeof e=="string"?{email:e}:e,this}date(e){return this.dateValue=typeof e=="string"?new Date(e):e,this.logger&&this.logger.debug("Date header set",{date:this.dateValue.toISOString()}),this}returnPath(e){return this.returnPathAddress=typeof e=="string"?{email:e}:e,this.logger&&this.logger.debug("Return-path address set",{returnPath:this.returnPathAddress.email}),this}sender(e){return this.senderAddress=typeof e=="string"?{email:e}:e,this.logger&&this.logger.debug("Sender address set",{sender:this.senderAddress.email}),this}addTo(e){return this.toAddresses.push(...a(e)),this}addCc(e){return this.ccAddresses.push(...a(e)),this}addBcc(e){return this.bccAddresses.push(...a(e)),this}addReplyTo(e){const t=Array.isArray(e)?e:[e];if(t.length>0){const s=t[0];this.replyToAddress=typeof s=="string"?{email:s}:s}return this}addFrom(e){const t=Array.isArray(e)?e:[e];if(t.length>0){const s=t[0];this.fromAddress=typeof s=="string"?{email:s}:s}return this}priority(e){return this.priorityValue=e,this}tags(e){return this.tagsValue=Array.isArray(e)?e:[e],this}sign(e){return this.signer=e,this.logger&&this.logger.debug("Email signer configured"),this}encrypt(e){return this.encrypter=e,this.logger&&this.logger.debug("Email encrypter configured"),this}setLogger(e){return this.logger=T("MailMessage",e),this}icalEvent(e,t){return typeof e=="function"?(this.icalEventBuilder={build:e,options:t},this.icalEventData=void 0):(this.icalEventBuilder=void 0,this.icalEventData={content:e,...t}),this.logger&&this.logger.debug("Calendar event attached",{method:t?.method}),this}icalEventFromFile(e,t){const s=typeof e=="string"?e:b(e);return this.icalEventData={path:s,...t},this.logger&&this.logger.debug(`Calendar event attached from file: ${s}`,{method:t?.method}),this}icalEventFromUrl(e,t){return this.icalEventData={href:e,...t},this.logger&&this.logger.debug(`Calendar event attached from URL: ${e}`,{method:t?.method}),this}async view(e,t,s,i){try{const r=i?.autoText!==!1;this.autoTextEnabled=r,this.logger&&this.logger.debug("Rendering template",{autoText:r});const h=await e(t,s,i);this.html(h),r&&h&&await this.tryAutoGenerateText(h),this.logger&&this.logger.debug("Template rendered successfully")}catch(r){throw this.logger&&this.logger.error("Failed to render template",r),new Error(`Failed to render template: ${r.message}`)}return this}async viewText(e,t,s,i){try{this.logger&&this.logger.debug("Rendering text template");const r=await e(t,s,i);if(typeof r=="string")this.text(r),this.logger&&this.logger.debug("Text template rendered successfully");else throw new TypeError("Text renderer must return a string")}catch(r){throw this.logger&&this.logger.error("Failed to render text template",r),new Error(`Failed to render text template: ${r.message}`)}return this}async build(){if(this.logger&&this.logger.debug("Building email message"),this.fromAddress||this.throwAndLogError("From address is required","Build failed: from address is required"),this.toAddresses.length===0&&this.throwAndLogError("At least one recipient is required","Build failed: at least one recipient is required"),this.subjectText||this.throwAndLogError("Subject is required","Build failed: subject is required"),this.htmlContent&&!this.textContent&&this.autoTextEnabled)try{const t=await m();this.textContent=t(this.htmlContent),this.logger&&this.logger.debug("Auto-generated text content from HTML")}catch{this.logger&&this.logger.debug("Failed to convert HTML to text; proceeding without text content.")}!this.textContent&&!this.htmlContent&&this.throwAndLogError("Either text or html content is required","Build failed: either text or html content is required");let e={from:this.fromAddress,html:this.htmlContent,subject:this.subjectText,text:this.textContent,to:this.toAddresses.length===1?this.toAddresses[0]:this.toAddresses};if(this.ccAddresses.length>0&&(e.cc=this.ccAddresses.length===1?this.ccAddresses[0]:this.ccAddresses),this.bccAddresses.length>0&&(e.bcc=this.bccAddresses.length===1?this.bccAddresses[0]:this.bccAddresses),Object.keys(this.headers).length>0&&(e.headers=this.headers),this.attachments.length>0&&(e.attachments=this.attachments,this.logger&&this.logger.debug(`Email includes ${this.attachments.length} attachment(s)`)),this.replyToAddress&&(e.replyTo=this.replyToAddress),this.priorityValue&&(e.priority=this.priorityValue),this.tagsValue.length>0&&(e.tags=this.tagsValue),this.icalEventBuilder){const t=(await x())();this.icalEventBuilder.build(t),this.icalEventData={content:t.toString(),...this.icalEventBuilder.options}}return this.icalEventData&&(e.icalEvent=this.icalEventData,this.logger&&this.logger.debug("Email includes calendar event")),this.dateValue&&(e.headers={...l(e.headers??{}),Date:this.dateValue.toUTCString()}),this.returnPathAddress&&(e.headers={...l(e.headers??{}),"Return-Path":this.returnPathAddress.email}),this.senderAddress&&(e.headers={...l(e.headers??{}),Sender:this.senderAddress.email}),this.signer&&(this.logger&&this.logger.debug("Signing email message"),e=await this.signer.sign(e),this.logger&&this.logger.debug("Email message signed successfully")),this.encrypter&&(this.logger&&this.logger.debug("Encrypting email message"),e=await this.encrypter.encrypt(e),this.logger&&this.logger.debug("Email message encrypted successfully")),this.logger&&this.logger.debug("Email message built successfully",{bcc:this.bccAddresses.length,cc:this.ccAddresses.length,hasHtml:!!this.htmlContent,hasText:!!this.textContent,to:this.toAddresses.length}),e}getSubject(){return this.subjectText}getFrom(){return this.fromAddress}getTo(){return[...this.toAddresses]}getCc(){return[...this.ccAddresses]}getBcc(){return[...this.bccAddresses]}getReplyTo(){return this.replyToAddress}getSender(){return this.senderAddress}getReturnPath(){return this.returnPathAddress}getDate(){return this.dateValue}getPriority(){return this.priorityValue}getTextBody(){return this.textContent}getTextCharset(){return this.textCharset}getHtmlBody(){return this.htmlContent}getHtmlCharset(){return this.htmlCharset}getAttachments(){return[...this.attachments]}async tryAutoGenerateText(e){try{const t=(await m())(e);t&&!this.textContent&&this.text(t),this.logger&&this.logger.debug("Auto-generated text content from HTML template")}catch(t){this.logger&&this.logger.warn("Failed to auto-generate text from HTML template",t)}}throwAndLogError(e,t){const s=new Error(e);throw this.logger&&this.logger.error(t??e),s}}export{D as default};
1
+ import{createRequire as f}from"node:module";import{readFileAsBuffer as c,detectMimeType as d,generateContentId as u}from"./detectMimeType-B9_7ujpC.js";import{c as T}from"./create-logger-BQTS3f-I.js";import{s as l}from"./headers-to-record-De1Eg951.js";let y;const A=n=>(y??=f(import.meta.url))(n),o=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,p=n=>{if(typeof o<"u"&&o.versions&&o.versions.node){const[e,t]=o.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return o.getBuiltinModule(n)}return A(n)},{basename:g}=p("node:path"),{fileURLToPath:b}=p("node:url"),m=async()=>(await import("../template-engines/html-to-text.js")).default,x=async()=>(await import("ical-generator")).default,a=n=>Array.isArray(n)?n.map(e=>typeof e=="string"?{email:e}:e):typeof n=="string"?[{email:n}]:[n];class D{fromAddress;toAddresses=[];ccAddresses=[];bccAddresses=[];subjectText="";textContent;textCharset="utf8";autoTextEnabled=!0;htmlContent;htmlCharset="utf8";dateValue;returnPathAddress;senderAddress;headers={};attachments=[];replyToAddress;priorityValue;tagsValue=[];signer;encrypter;logger;icalEventData;icalEventBuilder;from(e){return this.fromAddress=typeof e=="string"?{email:e}:e,this}to(e){return this.toAddresses.length=0,this.toAddresses.push(...a(e)),this}cc(e){return this.ccAddresses.length=0,this.ccAddresses.push(...a(e)),this}bcc(e){return this.bccAddresses.length=0,this.bccAddresses.push(...a(e)),this}subject(e){return this.subjectText=e,this}text(e,t="utf8"){return this.textContent=e,this.textCharset=t,this}html(e,t="utf8"){return this.htmlContent=e,this.htmlCharset=t,this}header(e,t){return this.headers[e]=t,this}setHeaders(e){const t=l(e);return Object.assign(this.headers,t),this}async attachFromPath(e,t){try{const s=await c(e),i=t?.filename??(g(e)||"attachment"),r=t?.contentType??d(i);this.attachments.push({cid:t?.cid,content:s,contentDisposition:t?.contentDisposition??"attachment",contentType:r,encoding:t?.encoding,filename:i,headers:t?.headers}),this.logger&&this.logger.debug(`Attachment added from path: ${e}`,{contentType:r,filename:i})}catch(s){throw this.logger&&this.logger.error(`Failed to attach file from path: ${e}`,s),s}return this}attachData(e,t){const s=t.contentType??d(t.filename);return this.attachments.push({cid:t.cid,content:e,contentDisposition:t.contentDisposition??"attachment",contentType:s,encoding:t.encoding,filename:t.filename,headers:t.headers}),this.logger&&this.logger.debug("Attachment added from data",{contentType:s,filename:t.filename}),this}async embedFromPath(e,t){try{const s=await c(e),i=t?.filename??(g(e)||"inline"),r=t?.contentType??d(i),h=u(i);return this.attachments.push({cid:h,content:s,contentDisposition:"inline",contentType:r,filename:i}),this.logger&&this.logger.debug(`Inline attachment embedded from path: ${e}`,{cid:h,contentType:r,filename:i}),h}catch(s){throw this.logger&&this.logger.error(`Failed to embed file from path: ${e}`,s),s}}embedData(e,t,s){const i=s?.contentType??d(t),r=u(t);return this.attachments.push({cid:r,content:e,contentDisposition:"inline",contentType:i,filename:t}),this.logger&&this.logger.debug("Inline attachment embedded from data",{cid:r,contentType:i,filename:t}),r}replyTo(e){return this.replyToAddress=typeof e=="string"?{email:e}:e,this}date(e){return this.dateValue=typeof e=="string"?new Date(e):e,this.logger&&this.logger.debug("Date header set",{date:this.dateValue.toISOString()}),this}returnPath(e){return this.returnPathAddress=typeof e=="string"?{email:e}:e,this.logger&&this.logger.debug("Return-path address set",{returnPath:this.returnPathAddress.email}),this}sender(e){return this.senderAddress=typeof e=="string"?{email:e}:e,this.logger&&this.logger.debug("Sender address set",{sender:this.senderAddress.email}),this}addTo(e){return this.toAddresses.push(...a(e)),this}addCc(e){return this.ccAddresses.push(...a(e)),this}addBcc(e){return this.bccAddresses.push(...a(e)),this}addReplyTo(e){const t=Array.isArray(e)?e:[e];if(t.length>0){const s=t[0];this.replyToAddress=typeof s=="string"?{email:s}:s}return this}addFrom(e){const t=Array.isArray(e)?e:[e];if(t.length>0){const s=t[0];this.fromAddress=typeof s=="string"?{email:s}:s}return this}priority(e){return this.priorityValue=e,this}tags(e){return this.tagsValue=Array.isArray(e)?e:[e],this}sign(e){return this.signer=e,this.logger&&this.logger.debug("Email signer configured"),this}encrypt(e){return this.encrypter=e,this.logger&&this.logger.debug("Email encrypter configured"),this}setLogger(e){return this.logger=T("MailMessage",e),this}icalEvent(e,t){return typeof e=="function"?(this.icalEventBuilder={build:e,options:t},this.icalEventData=void 0):(this.icalEventBuilder=void 0,this.icalEventData={content:e,...t}),this.logger&&this.logger.debug("Calendar event attached",{method:t?.method}),this}icalEventFromFile(e,t){const s=typeof e=="string"?e:b(e);return this.icalEventData={path:s,...t},this.logger&&this.logger.debug(`Calendar event attached from file: ${s}`,{method:t?.method}),this}icalEventFromUrl(e,t){return this.icalEventData={href:e,...t},this.logger&&this.logger.debug(`Calendar event attached from URL: ${e}`,{method:t?.method}),this}async view(e,t,s,i){try{const r=i?.autoText!==!1;this.autoTextEnabled=r,this.logger&&this.logger.debug("Rendering template",{autoText:r});const h=await e(t,s,i);this.html(h),r&&h&&await this.tryAutoGenerateText(h),this.logger&&this.logger.debug("Template rendered successfully")}catch(r){throw this.logger&&this.logger.error("Failed to render template",r),new Error(`Failed to render template: ${r.message}`)}return this}async viewText(e,t,s,i){try{this.logger&&this.logger.debug("Rendering text template");const r=await e(t,s,i);if(typeof r=="string")this.text(r),this.logger&&this.logger.debug("Text template rendered successfully");else throw new TypeError("Text renderer must return a string")}catch(r){throw this.logger&&this.logger.error("Failed to render text template",r),new Error(`Failed to render text template: ${r.message}`)}return this}async build(){if(this.logger&&this.logger.debug("Building email message"),this.fromAddress||this.throwAndLogError("From address is required","Build failed: from address is required"),this.toAddresses.length===0&&this.throwAndLogError("At least one recipient is required","Build failed: at least one recipient is required"),this.subjectText||this.throwAndLogError("Subject is required","Build failed: subject is required"),this.htmlContent&&!this.textContent&&this.autoTextEnabled)try{const t=await m();this.textContent=t(this.htmlContent),this.logger&&this.logger.debug("Auto-generated text content from HTML")}catch{this.logger&&this.logger.debug("Failed to convert HTML to text; proceeding without text content.")}!this.textContent&&!this.htmlContent&&this.throwAndLogError("Either text or html content is required","Build failed: either text or html content is required");let e={from:this.fromAddress,html:this.htmlContent,subject:this.subjectText,text:this.textContent,to:this.toAddresses.length===1?this.toAddresses[0]:this.toAddresses};if(this.ccAddresses.length>0&&(e.cc=this.ccAddresses.length===1?this.ccAddresses[0]:this.ccAddresses),this.bccAddresses.length>0&&(e.bcc=this.bccAddresses.length===1?this.bccAddresses[0]:this.bccAddresses),Object.keys(this.headers).length>0&&(e.headers=this.headers),this.attachments.length>0&&(e.attachments=this.attachments,this.logger&&this.logger.debug(`Email includes ${this.attachments.length} attachment(s)`)),this.replyToAddress&&(e.replyTo=this.replyToAddress),this.priorityValue&&(e.priority=this.priorityValue),this.tagsValue.length>0&&(e.tags=this.tagsValue),this.icalEventBuilder){const t=(await x())();this.icalEventBuilder.build(t),this.icalEventData={content:t.toString(),...this.icalEventBuilder.options}}return this.icalEventData&&(e.icalEvent=this.icalEventData,this.logger&&this.logger.debug("Email includes calendar event")),this.dateValue&&(e.headers={...l(e.headers??{}),Date:this.dateValue.toUTCString()}),this.returnPathAddress&&(e.headers={...l(e.headers??{}),"Return-Path":this.returnPathAddress.email}),this.senderAddress&&(e.headers={...l(e.headers??{}),Sender:this.senderAddress.email}),this.signer&&(this.logger&&this.logger.debug("Signing email message"),e=await this.signer.sign(e),this.logger&&this.logger.debug("Email message signed successfully")),this.encrypter&&(this.logger&&this.logger.debug("Encrypting email message"),e=await this.encrypter.encrypt(e),this.logger&&this.logger.debug("Email message encrypted successfully")),this.logger&&this.logger.debug("Email message built successfully",{bcc:this.bccAddresses.length,cc:this.ccAddresses.length,hasHtml:!!this.htmlContent,hasText:!!this.textContent,to:this.toAddresses.length}),e}getSubject(){return this.subjectText}getFrom(){return this.fromAddress}getTo(){return[...this.toAddresses]}getCc(){return[...this.ccAddresses]}getBcc(){return[...this.bccAddresses]}getReplyTo(){return this.replyToAddress}getSender(){return this.senderAddress}getReturnPath(){return this.returnPathAddress}getDate(){return this.dateValue}getPriority(){return this.priorityValue}getTextBody(){return this.textContent}getTextCharset(){return this.textCharset}getHtmlBody(){return this.htmlContent}getHtmlCharset(){return this.htmlCharset}getAttachments(){return[...this.attachments]}async tryAutoGenerateText(e){try{const t=(await m())(e);t&&!this.textContent&&this.text(t),this.logger&&this.logger.debug("Auto-generated text content from HTML template")}catch(t){this.logger&&this.logger.warn("Failed to auto-generate text from HTML template",t)}}throwAndLogError(e,t){const s=new Error(e);throw this.logger&&this.logger.error(t??e),s}}export{D as default};
@@ -1 +1 @@
1
- import s from"./EmailError-CDvYwuqz.js";class a extends s{constructor(r,e){const o=Array.isArray(e)?`Missing required options: ${e.map(i=>`'${i}'`).join(", ")}`:`Missing required option: '${e}'`;super(r,o,{hint:Array.isArray(e)?`Please provide the following required options: ${e.map(i=>`'${i}'`).join(", ")}`:`Please provide the required option: '${e}'`}),this.name="RequiredOptionError"}}export{a as default};
1
+ import s from"./EmailError-2CCyVX1S.js";class a extends s{constructor(r,e){const o=Array.isArray(e)?`Missing required options: ${e.map(i=>`'${i}'`).join(", ")}`:`Missing required option: '${e}'`;super(r,o,{hint:Array.isArray(e)?`Please provide the following required options: ${e.map(i=>`'${i}'`).join(", ")}`:`Please provide the required option: '${e}'`}),this.name="RequiredOptionError"}}export{a as default};
@@ -1,4 +1,4 @@
1
- import{createRequire as O}from"node:module";import{q as I}from"./index-Gd7m-UQA.js";import{fromBER as B,OctetString as E}from"asn1js";import{Certificate as $,EnvelopedData as G,EncryptedContentInfo as V,id_ContentType_Data as z,RecipientInfo as J,KeyTransRecipientInfo as Q,IssuerAndSerialNumber as W,AlgorithmIdentifier as S,ContentInfo as X,id_ContentType_EnvelopedData as Y}from"pkijs";let q;const F=o=>(q??=O(import.meta.url))(o),h=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,K=o=>{if(typeof h<"u"&&h.versions&&h.versions.node){const[e,t]=h.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return h.getBuiltinModule(o)}return F(o)},{randomBytes:v,createCipheriv:U,createPublicKey:H,publicEncrypt:L}=K("node:crypto"),b=globalThis.Buffer!==void 0,j=o=>{const e=o.replaceAll(/-----BEGIN[^-]+-----/g,"").replaceAll(/-----END[^-]+-----/g,"").replaceAll(/\s/g,"");if(b)return Buffer.from(e,"base64");const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r+=1)n[r]=t.charCodeAt(r);return n},R=(o,e)=>{let t;if(b)t=Buffer.from(o).toString("base64");else{const r=new Uint8Array(o);let p="";const s=8192;for(let a=0;a<r.length;a+=s){const d=r.subarray(a,Math.min(a+s,r.length));p+=String.fromCharCode(...d)}t=btoa(p)}const n=t.match(/.{1,64}/g)??[];return`-----BEGIN ${e}-----
1
+ import{createRequire as O}from"node:module";import{q as I}from"./index-y0s2wQdc.js";import{fromBER as B,OctetString as E}from"asn1js";import{Certificate as $,EnvelopedData as G,EncryptedContentInfo as V,id_ContentType_Data as z,RecipientInfo as J,KeyTransRecipientInfo as Q,IssuerAndSerialNumber as W,AlgorithmIdentifier as S,ContentInfo as X,id_ContentType_EnvelopedData as Y}from"pkijs";let q;const F=o=>(q??=O(import.meta.url))(o),h=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,K=o=>{if(typeof h<"u"&&h.versions&&h.versions.node){const[e,t]=h.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return h.getBuiltinModule(o)}return F(o)},{randomBytes:v,createCipheriv:U,createPublicKey:H,publicEncrypt:L}=K("node:crypto"),b=globalThis.Buffer!==void 0,j=o=>{const e=o.replaceAll(/-----BEGIN[^-]+-----/g,"").replaceAll(/-----END[^-]+-----/g,"").replaceAll(/\s/g,"");if(b)return Buffer.from(e,"base64");const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r+=1)n[r]=t.charCodeAt(r);return n},R=(o,e)=>{let t;if(b)t=Buffer.from(o).toString("base64");else{const r=new Uint8Array(o);let p="";const s=8192;for(let a=0;a<r.length;a+=s){const d=r.subarray(a,Math.min(a+s,r.length));p+=String.fromCharCode(...d)}t=btoa(p)}const n=t.match(/.{1,64}/g)??[];return`-----BEGIN ${e}-----
2
2
  ${n.join(`
3
3
  `)}
4
4
  -----END ${e}-----
@@ -1,4 +1,4 @@
1
- import{createRequire as K}from"node:module";import{q as y}from"./index-Gd7m-UQA.js";import{fromBER as I,ObjectIdentifier as W,OctetString as x,UTCTime as X}from"asn1js";import{Certificate as E,SignedData as Y,EncapsulatedContentInfo as Z,id_ContentType_Data as B,SignerInfo as ee,AlgorithmIdentifier as N,IssuerAndSerialNumber as te,id_sha256 as re,SignedAndUnsignedAttributes as ne,Attribute as w,ContentInfo as se,id_ContentType_SignedData as oe}from"pkijs";import{r as ie}from"./generate-boundary-0xGe9GqK.js";let G;const L=s=>(G??=K(import.meta.url))(s),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,V=s=>{if(typeof u<"u"&&u.versions&&u.versions.node){const[e,t]=u.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return u.getBuiltinModule(s)}return L(s)},{createPrivateKey:j,createHash:z,createSign:J,randomBytes:Q}=V("node:crypto"),ae="1.2.840.113549.1.9.3",ce="1.2.840.113549.1.9.4",le="1.2.840.113549.1.9.5",pe="1.2.840.113549.1.1.1",ue={v1:1},fe={v1:1},f=globalThis.Buffer!==void 0,D=s=>{const e=s.replaceAll(/-----BEGIN[^-]+-----/g,"").replaceAll(/-----END[^-]+-----/g,"").replaceAll(/\s/g,"");if(f)return Buffer.from(e,"base64");const t=atob(e),o=new Uint8Array(t.length);for(let r=0;r<t.length;r+=1)o[r]=t.codePointAt(r);return o},me=(s,e)=>{let t;if(f)t=Buffer.from(s).toString("base64");else{const r=new Uint8Array(s);let n="";const a=8192;for(let i=0;i<r.length;i+=a){const d=r.subarray(i,Math.min(i+a,r.length));n+=String.fromCharCode(...d)}t=btoa(n)}const o=t.match(/.{1,64}/g)??[];return`-----BEGIN ${e}-----
1
+ import{createRequire as K}from"node:module";import{q as y}from"./index-y0s2wQdc.js";import{fromBER as I,ObjectIdentifier as W,OctetString as x,UTCTime as X}from"asn1js";import{Certificate as E,SignedData as Y,EncapsulatedContentInfo as Z,id_ContentType_Data as B,SignerInfo as ee,AlgorithmIdentifier as N,IssuerAndSerialNumber as te,id_sha256 as re,SignedAndUnsignedAttributes as ne,Attribute as w,ContentInfo as se,id_ContentType_SignedData as oe}from"pkijs";import{r as ie}from"./generate-boundary-0xGe9GqK.js";let G;const L=s=>(G??=K(import.meta.url))(s),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,V=s=>{if(typeof u<"u"&&u.versions&&u.versions.node){const[e,t]=u.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return u.getBuiltinModule(s)}return L(s)},{createPrivateKey:j,createHash:z,createSign:J,randomBytes:Q}=V("node:crypto"),ae="1.2.840.113549.1.9.3",ce="1.2.840.113549.1.9.4",le="1.2.840.113549.1.9.5",pe="1.2.840.113549.1.1.1",ue={v1:1},fe={v1:1},f=globalThis.Buffer!==void 0,D=s=>{const e=s.replaceAll(/-----BEGIN[^-]+-----/g,"").replaceAll(/-----END[^-]+-----/g,"").replaceAll(/\s/g,"");if(f)return Buffer.from(e,"base64");const t=atob(e),o=new Uint8Array(t.length);for(let r=0;r<t.length;r+=1)o[r]=t.codePointAt(r);return o},me=(s,e)=>{let t;if(f)t=Buffer.from(s).toString("base64");else{const r=new Uint8Array(s);let n="";const a=8192;for(let i=0;i<r.length;i+=a){const d=r.subarray(i,Math.min(i+a,r.length));n+=String.fromCharCode(...d)}t=btoa(n)}const o=t.match(/.{1,64}/g)??[];return`-----BEGIN ${e}-----
2
2
  ${o.join(`
3
3
  `)}
4
4
  -----END ${e}-----
@@ -1 +1 @@
1
- import{a as r}from"./format-address-DTl-9O70.js";const d=a=>r(a),A=a=>(Array.isArray(a)?a:[a]).map(s=>d(s)),t=a=>{const s={email:a.email};return a.name&&(s.name=a.name),s},f=a=>(Array.isArray(a)?a:[a]).map(s=>t(s)),y=a=>(Array.isArray(a)?a:[a]).map(s=>s.email),i=a=>({email:a.email,...a.name&&{displayName:a.name}}),p=a=>(Array.isArray(a)?a:[a]).map(s=>i(s)),o=a=>{const s={Email:a.email};return a.name&&(s.Name=a.name),s},c=a=>(Array.isArray(a)?a:[a]).map(s=>o(s)),l=(a,s="to")=>({email:a.email,...a.name&&{name:a.name},type:s}),M=(a,s="to")=>(Array.isArray(a)?a:[a]).map(m=>l(m,s)),e=a=>({address:a.email,...a.name&&{name:a.name}}),u=a=>(Array.isArray(a)?a:[a]).map(s=>e(s)),j=a=>A(a),z=a=>e(a);export{t as a,p as b,i as c,y as d,A as e,f,d as g,c as h,o as i,j,M as k,u as l,e as m,z as n};
1
+ import{a as r}from"./format-address-DTl-9O70.js";const d=a=>r(a),A=a=>(Array.isArray(a)?a:[a]).map(s=>d(s)),t=a=>{const s={email:a.email};return a.name&&(s.name=a.name),s},f=a=>(Array.isArray(a)?a:[a]).map(s=>t(s)),y=a=>(Array.isArray(a)?a:[a]).map(s=>s.email),i=a=>({email:a.email,...a.name&&{displayName:a.name}}),p=a=>(Array.isArray(a)?a:[a]).map(s=>i(s)),o=a=>{const s={Email:a.email};return a.name&&(s.Name=a.name),s},c=a=>(Array.isArray(a)?a:[a]).map(s=>o(s)),l=(a,s="to")=>({email:a.email,...a.name&&{name:a.name},type:s}),M=(a,s="to")=>(Array.isArray(a)?a:[a]).map(m=>l(m,s)),e=a=>({address:a.email,...a.name&&{name:a.name}}),u=a=>(Array.isArray(a)?a:[a]).map(s=>e(s)),j=a=>A(a),z=a=>e(a);export{t as a,p as b,i as c,y as d,A as e,f,d as g,c as h,o as i,M as j,u as k,e as l,j as m,z as n};
@@ -1 +1 @@
1
- import l from"./EmailError-CDvYwuqz.js";import b from"./RequiredOptionError-DU2lxzk3.js";import{e as v}from"./generate-message-id-gXAuMz4g.js";import{s as w}from"./headers-to-record-De1Eg951.js";import{m}from"./make-request-CylyuRaN.js";import{i as g}from"./retry-CG9iT2wF.js";import{f as A}from"./validate-email-options-mCM9dVug.js";import{defineProvider as I}from"./defineProvider-C9q-7iwt.js";import{f as d,a as P}from"./address-formatter-BWR2Dddx.js";import{p as T}from"./attachment-processor-D1cbAhQi.js";import{h,P as E,c as S}from"./provider-base-DjPzWncP.js";const a="ahasend",j="https://api.ahasend.com",z=3e4,k=3,H=I((s={})=>{if(!s.apiKey)throw new b(a,"apiKey");const r={apiKey:s.apiKey,debug:s.debug??!1,endpoint:s.endpoint??j,retries:s.retries??k,timeout:s.timeout??z,...s.logger&&{logger:s.logger}},f=new E,i=S(a,s.logger);return{features:{attachments:!0,batchSending:!0,customHeaders:!0,html:!0,replyTo:!0,scheduling:!1,tagging:!0,templates:!0,tracking:!0},async getEmail(e){try{if(!e)return{error:new l(a,"Email ID is required to retrieve email details"),success:!1};await this.initialize();const n={Authorization:`Bearer ${r.apiKey}`,"Content-Type":"application/json"};i.debug("Retrieving email details",{id:e});const t=await g(async()=>m(`${r.endpoint}/emails/${e}`,{headers:n,method:"GET",timeout:r.timeout}),r.retries);return t.success?(i.debug("Email details retrieved successfully"),{data:t.data?.body,success:!0}):(i.debug("API request failed when retrieving email",t.error),{error:new l(a,`Failed to retrieve email: ${t.error instanceof Error?t.error.message:"Unknown error"}`,{cause:t.error}),success:!1})}catch(n){return{error:h(a,"retrieve email",n,i),success:!1}}},async initialize(){await f.ensureInitialized(async()=>{if(!await this.isAvailable())throw new l(a,"AhaSend API not available or invalid API key");i.debug("Provider initialized successfully")},a)},async isAvailable(){try{return i.debug("Checking AhaSend API availability"),!!(await m(`${r.endpoint}/v2/ping`,{headers:{Authorization:`Bearer ${r.apiKey}`,"Content-Type":"application/json"},method:"GET",timeout:r.timeout})).success}catch(e){return i.debug("Error checking availability:",e),!1}},name:a,options:r,async sendEmail(e){try{const n=A(e);if(n.length>0)return{error:new l(a,`Invalid email options: ${n.join(", ")}`),success:!1};await this.initialize();const t={from:{email:e.from.email,name:e.from.name},subject:e.subject,to:d(e.to)};if(e.html&&(t.html=e.html),e.text&&(t.text=e.text),e.cc&&(t.cc=d(e.cc)),e.bcc&&(t.bcc=d(e.bcc)),e.replyTo&&(t.replyTo=P(e.replyTo)),e.templateId&&(t.templateId=e.templateId,e.templateVariables&&(t.templateVariables=e.templateVariables)),e.tags&&e.tags.length>0&&(t.tags=e.tags),e.headers){const o=w(e.headers);t.headers=o}e.attachments&&e.attachments.length>0&&(t.attachments=await Promise.all(e.attachments.map(async o=>({content:await T(o,a),contentType:o.contentType??"application/octet-stream",filename:o.filename,...o.cid&&{cid:o.cid}})))),i.debug("Sending email via AhaSend API",{subject:t.subject,to:t.to});const y={Authorization:`Bearer ${r.apiKey}`,"Content-Type":"application/json"},c=await g(async()=>m(`${r.endpoint}/send`,{headers:y,method:"POST",timeout:r.timeout},JSON.stringify(t)),r.retries);if(!c.success)return i.debug("API request failed when sending email",c.error),{error:c.error??new l(a,"Failed to send email"),success:!1};const u=c.data?.body,p=u?.messageId??u?.id??v();return i.debug("Email sent successfully",{messageId:p}),{data:{messageId:p,provider:a,response:c.data,sent:!0,timestamp:new Date},success:!0}}catch(n){return{error:h(a,"send email",n,i),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{H as default};
1
+ import l from"./EmailError-2CCyVX1S.js";import b from"./RequiredOptionError-BmpC5whN.js";import{e as v}from"./generate-message-id-gXAuMz4g.js";import{s as w}from"./headers-to-record-De1Eg951.js";import{m}from"./make-request-CDhxj-9b.js";import{i as g}from"./retry-D1Rh-6Z4.js";import{f as A}from"./validate-email-options-mCM9dVug.js";import{defineProvider as I}from"./defineProvider-C9q-7iwt.js";import{f as d,a as P}from"./address-formatter-bfmGfQ83.js";import{p as T}from"./attachment-processor-DjbjtJ6H.js";import{h,P as E,c as S}from"./provider-base-B-xhQSqE.js";const a="ahasend",j="https://api.ahasend.com",z=3e4,k=3,H=I((s={})=>{if(!s.apiKey)throw new b(a,"apiKey");const r={apiKey:s.apiKey,debug:s.debug??!1,endpoint:s.endpoint??j,retries:s.retries??k,timeout:s.timeout??z,...s.logger&&{logger:s.logger}},f=new E,i=S(a,s.logger);return{features:{attachments:!0,batchSending:!0,customHeaders:!0,html:!0,replyTo:!0,scheduling:!1,tagging:!0,templates:!0,tracking:!0},async getEmail(e){try{if(!e)return{error:new l(a,"Email ID is required to retrieve email details"),success:!1};await this.initialize();const n={Authorization:`Bearer ${r.apiKey}`,"Content-Type":"application/json"};i.debug("Retrieving email details",{id:e});const t=await g(async()=>m(`${r.endpoint}/emails/${e}`,{headers:n,method:"GET",timeout:r.timeout}),r.retries);return t.success?(i.debug("Email details retrieved successfully"),{data:t.data?.body,success:!0}):(i.debug("API request failed when retrieving email",t.error),{error:new l(a,`Failed to retrieve email: ${t.error instanceof Error?t.error.message:"Unknown error"}`,{cause:t.error}),success:!1})}catch(n){return{error:h(a,"retrieve email",n,i),success:!1}}},async initialize(){await f.ensureInitialized(async()=>{if(!await this.isAvailable())throw new l(a,"AhaSend API not available or invalid API key");i.debug("Provider initialized successfully")},a)},async isAvailable(){try{return i.debug("Checking AhaSend API availability"),!!(await m(`${r.endpoint}/v2/ping`,{headers:{Authorization:`Bearer ${r.apiKey}`,"Content-Type":"application/json"},method:"GET",timeout:r.timeout})).success}catch(e){return i.debug("Error checking availability:",e),!1}},name:a,options:r,async sendEmail(e){try{const n=A(e);if(n.length>0)return{error:new l(a,`Invalid email options: ${n.join(", ")}`),success:!1};await this.initialize();const t={from:{email:e.from.email,name:e.from.name},subject:e.subject,to:d(e.to)};if(e.html&&(t.html=e.html),e.text&&(t.text=e.text),e.cc&&(t.cc=d(e.cc)),e.bcc&&(t.bcc=d(e.bcc)),e.replyTo&&(t.replyTo=P(e.replyTo)),e.templateId&&(t.templateId=e.templateId,e.templateVariables&&(t.templateVariables=e.templateVariables)),e.tags&&e.tags.length>0&&(t.tags=e.tags),e.headers){const o=w(e.headers);t.headers=o}e.attachments&&e.attachments.length>0&&(t.attachments=await Promise.all(e.attachments.map(async o=>({content:await T(o,a),contentType:o.contentType??"application/octet-stream",filename:o.filename,...o.cid&&{cid:o.cid}})))),i.debug("Sending email via AhaSend API",{subject:t.subject,to:t.to});const y={Authorization:`Bearer ${r.apiKey}`,"Content-Type":"application/json"},c=await g(async()=>m(`${r.endpoint}/send`,{headers:y,method:"POST",timeout:r.timeout},JSON.stringify(t)),r.retries);if(!c.success)return i.debug("API request failed when sending email",c.error),{error:c.error??new l(a,"Failed to send email"),success:!1};const u=c.data?.body,p=u?.messageId??u?.id??v();return i.debug("Email sent successfully",{messageId:p}),{data:{messageId:p,provider:a,response:c.data,sent:!0,timestamp:new Date},success:!0}}catch(n){return{error:h(a,"send email",n,i),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{H as default};
@@ -1,4 +1,4 @@
1
- import{createRequire as T}from"node:module";import{q as I}from"./index-Gd7m-UQA.js";import{s as x}from"./headers-to-record-De1Eg951.js";import{f as b}from"./format-address-DTl-9O70.js";let E;const N=s=>(E??=T(import.meta.url))(s),g=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,B=s=>{if(typeof g<"u"&&g.versions&&g.versions.node){const[e,r]=g.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return g.getBuiltinModule(s)}return N(s)},{Buffer:$}=B("node:buffer"),{createPublicKey:D,createHash:v,createPrivateKey:P,sign:W,createSign:F,verify:R}=B("node:crypto"),H=/\s+/g,V=/ $/,z=/^\s*i=(\d+)\s*;/,G=["from","to","cc","subject","date","message-id","mime-version"],u=(s,e)=>`${s.toLowerCase()}:${e.replaceAll(H," ").trim()}`,J=s=>{let e=s.replaceAll(`\r
1
+ import{createRequire as T}from"node:module";import{q as I}from"./index-y0s2wQdc.js";import{s as x}from"./headers-to-record-De1Eg951.js";import{f as b}from"./format-address-DTl-9O70.js";let E;const N=s=>(E??=T(import.meta.url))(s),g=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,B=s=>{if(typeof g<"u"&&g.versions&&g.versions.node){const[e,r]=g.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return g.getBuiltinModule(s)}return N(s)},{Buffer:$}=B("node:buffer"),{createPublicKey:D,createHash:v,createPrivateKey:P,sign:W,createSign:F,verify:R}=B("node:crypto"),H=/\s+/g,V=/ $/,z=/^\s*i=(\d+)\s*;/,G=["from","to","cc","subject","date","message-id","mime-version"],u=(s,e)=>`${s.toLowerCase()}:${e.replaceAll(H," ").trim()}`,J=s=>{let e=s.replaceAll(`\r
2
2
  `,`
3
3
  `).replaceAll("\r",`
4
4
  `).split(`
@@ -1 +1 @@
1
- import{createRequire as c}from"node:module";import f from"./EmailError-CDvYwuqz.js";let s;const r=e=>(s??=c(import.meta.url))(e),o=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,p=e=>{if(typeof o<"u"&&o.versions&&o.versions.node){const[t,n]=o.versions.node.split(".").map(Number);if(t>22||t===22&&n>=3||t===20&&n>=16)return o.getBuiltinModule(e)}return r(e)},{Buffer:m}=p("node:buffer"),a=async(e,t)=>{let n;if(e.content)if(typeof e.content=="string")n=e.content;else if(e.content instanceof Promise){const i=await e.content;n=m.from(i).toString("base64")}else n=e.content.toString("base64");else if(e.raw)n=typeof e.raw=="string"?e.raw:e.raw.toString("base64");else throw new f(t,`Attachment ${e.filename} has no content`);return n},u=async(e,t)=>({content:await a(e,t),contentType:e.contentType??"application/octet-stream",disposition:e.contentDisposition??"attachment",filename:e.filename,...e.cid&&{contentId:e.cid}}),y=async(e,t)=>({content:await a(e,t),disposition:e.contentDisposition??"attachment",filename:e.filename,type:e.contentType??"application/octet-stream",...e.cid&&{content_id:e.cid}}),_=async(e,t)=>({Content:await a(e,t),ContentType:e.contentType??"application/octet-stream",Name:e.filename,...e.cid&&{ContentID:e.cid}}),h=async(e,t,n)=>({content:await a(e,t),key:`attachment[${n}]`});export{h as a,_ as b,u as c,y as d,a as p};
1
+ import{createRequire as c}from"node:module";import f from"./EmailError-2CCyVX1S.js";let s;const r=e=>(s??=c(import.meta.url))(e),o=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,p=e=>{if(typeof o<"u"&&o.versions&&o.versions.node){const[t,n]=o.versions.node.split(".").map(Number);if(t>22||t===22&&n>=3||t===20&&n>=16)return o.getBuiltinModule(e)}return r(e)},{Buffer:m}=p("node:buffer"),a=async(e,t)=>{let n;if(e.content)if(typeof e.content=="string")n=e.content;else if(e.content instanceof Promise){const i=await e.content;n=m.from(i).toString("base64")}else n=e.content.toString("base64");else if(e.raw)n=typeof e.raw=="string"?e.raw:e.raw.toString("base64");else throw new f(t,`Attachment ${e.filename} has no content`);return n},u=async(e,t)=>({content:await a(e,t),contentType:e.contentType??"application/octet-stream",disposition:e.contentDisposition??"attachment",filename:e.filename,...e.cid&&{contentId:e.cid}}),y=async(e,t)=>({content:await a(e,t),disposition:e.contentDisposition??"attachment",filename:e.filename,type:e.contentType??"application/octet-stream",...e.cid&&{content_id:e.cid}}),_=async(e,t)=>({Content:await a(e,t),ContentType:e.contentType??"application/octet-stream",Name:e.filename,...e.cid&&{ContentID:e.cid}}),h=async(e,t,n)=>({content:await a(e,t),key:`attachment[${n}]`});export{h as a,_ as b,u as c,y as d,a as p};
@@ -1 +1 @@
1
- import c from"./EmailError-CDvYwuqz.js";import T from"./RequiredOptionError-DU2lxzk3.js";import{s as x}from"./headers-to-record-De1Eg951.js";import{m as z}from"./make-request-CylyuRaN.js";import{i as K}from"./retry-CG9iT2wF.js";import{s as P,a as G}from"./sanitize-header-DtQwAnzg.js";import{f as C}from"./validate-email-options-mCM9dVug.js";import{defineProvider as E}from"./defineProvider-C9q-7iwt.js";import{a as y,f as w}from"./address-formatter-BWR2Dddx.js";import{h as q,P as D,c as B}from"./provider-base-DjPzWncP.js";import{c as F}from"./attachment-processor-D1cbAhQi.js";const n="autosend",H="https://api.autosend.com/v1",N=3e4,R=3,v=50,$=20,A=40*1024*1024,k=20,I=1e3,j=998,Z=/^[A-Z0-9-]{1,76}$/i,J="^[A-Za-z0-9-]{1,76}$",L="Either text or html content is required",g=t=>[t].flat(),V=async t=>{const s=await F(t,n);return{content:s.content,contentType:s.contentType,fileName:s.filename}},U=(t,s)=>{const i=g(t.to);if(i.length!==1)return`AutoSend's send endpoint takes exactly one 'to' recipient, but ${String(i.length)} were given — use 'cc'/'bcc', or send one message per recipient`;const o=i.length+(t.cc?g(t.cc).length:0)+(t.bcc?g(t.bcc).length:0);if(o>v)return`AutoSend allows at most ${String(v)} recipients across to/cc/bcc, but ${String(o)} were given`;if(t.attachments&&t.attachments.length>$)return`AutoSend allows at most ${String($)} attachments, but ${String(t.attachments.length)} were given`;const e=t.attachments?.find(r=>r.cid);if(e)return`AutoSend does not support inline (cid) attachments, but '${e.filename}' sets one — host the image and reference it by URL instead`;if(t.subject.length>j)return`AutoSend allows a subject of at most ${String(j)} characters, but ${String(t.subject.length)} were given`;const a=Object.keys(s);if(a.length>k)return`AutoSend allows at most ${String(k)} custom headers, but ${String(a.length)} were given`;const d=a.find(r=>!Z.test(r));if(d!==void 0)return`AutoSend header names must match ${J}, but '${d}' does not`;const u=a.find(r=>s[r].length>I);if(u!==void 0)return`AutoSend allows header values of at most ${String(I)} characters, but '${u}' is longer`},X=t=>{if(typeof t!="object"||t===null)return{};const s=t;if(s.success===!0)return{emailId:typeof s.data?.emailId=="string"?s.data.emailId:void 0};const i=[s.message,s.error].find(o=>typeof o=="string");return{reason:typeof i=="string"?i:void 0}},ie=E((t={})=>{if(!t.apiKey)throw new T(n,"apiKey");const s={apiKey:t.apiKey,debug:t.debug??!1,endpoint:t.endpoint??H,logger:t.logger,retries:t.retries??R,timeout:t.timeout??N},i=new D,o=B(n,t.logger);return{features:{attachments:!0,batchSending:!1,customHeaders:!0,html:!0,replyTo:!0,scheduling:!1,tagging:!1,templates:!0,tracking:!0},async initialize(){i.setInitialized()},async isAvailable(){return s.apiKey.length>0},name:n,options:s,async sendEmail(e){try{const a=C(e).filter(l=>!(e.templateId!==void 0&&l===L));if(a.length>0)return{error:new c(n,`Invalid email options: ${a.join(", ")}`),success:!1};const d=e.headers?x(e.headers):{},u=U(e,d);if(u)return{error:new c(n,u),success:!1};const r={from:y(e.from),subject:e.subject,to:y(g(e.to)[0])};if(e.templateId?r.templateId=e.templateId:(e.html&&(r.html=e.html),e.text&&(r.text=e.text)),e.cc&&(r.cc=w(e.cc)),e.bcc&&(r.bcc=w(e.bcc)),e.replyTo&&(r.replyTo=y(e.replyTo)),e.dynamicData&&(r.dynamicData=e.dynamicData),e.unsubscribeGroupId&&(r.unsubscribeGroupId=e.unsubscribeGroupId),e.trackingClick!==void 0&&(r.trackingClick=e.trackingClick),e.trackingOpen!==void 0&&(r.trackingOpen=e.trackingOpen),e.bypassSuppressions!==void 0&&(r.bypassSuppressions=e.bypassSuppressions),Object.keys(d).length>0&&(r.headers=Object.fromEntries(Object.entries(d).map(([l,p])=>[P(l),G(p)]))),e.attachments&&e.attachments.length>0){const l=await Promise.all(e.attachments.map(async b=>V(b))),p=l.reduce((b,O)=>b+O.content.length,0);if(p>A)return{error:new c(n,`AutoSend allows at most ${String(A)} bytes of attachments after Base64 encoding, but this message carries ${String(p)}`),success:!1};r.attachments=l}const f=await K(async()=>z(`${s.endpoint}/mails/send`,{headers:{Authorization:`Bearer ${s.apiKey}`,"Content-Type":"application/json"},method:"POST",timeout:s.timeout},JSON.stringify(r)),s.retries),S=f.data?.body,{emailId:h,reason:m}=X(S);return f.success?m?{error:new c(n,`Failed to send email: ${m}`),success:!1}:h?(o.debug(`Email queued successfully: ${h}`),{data:{messageId:h,provider:n,response:S,sent:!0,timestamp:new Date},success:!0}):{error:new c(n,"AutoSend accepted the message but returned no emailId"),success:!1}:{error:m?new c(n,`Failed to send email: ${m}`):f.error??new c(n,"Failed to send email"),success:!1}}catch(a){return{error:q(n,"send email",a,o),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{ie as default};
1
+ import c from"./EmailError-2CCyVX1S.js";import T from"./RequiredOptionError-BmpC5whN.js";import{s as x}from"./headers-to-record-De1Eg951.js";import{m as z}from"./make-request-CDhxj-9b.js";import{i as K}from"./retry-D1Rh-6Z4.js";import{s as P,a as G}from"./sanitize-header-DtQwAnzg.js";import{f as C}from"./validate-email-options-mCM9dVug.js";import{defineProvider as E}from"./defineProvider-C9q-7iwt.js";import{a as y,f as w}from"./address-formatter-bfmGfQ83.js";import{h as q,P as D,c as B}from"./provider-base-B-xhQSqE.js";import{c as F}from"./attachment-processor-DjbjtJ6H.js";const n="autosend",H="https://api.autosend.com/v1",N=3e4,R=3,v=50,$=20,A=40*1024*1024,k=20,I=1e3,j=998,Z=/^[A-Z0-9-]{1,76}$/i,J="^[A-Za-z0-9-]{1,76}$",L="Either text or html content is required",g=t=>[t].flat(),V=async t=>{const s=await F(t,n);return{content:s.content,contentType:s.contentType,fileName:s.filename}},U=(t,s)=>{const i=g(t.to);if(i.length!==1)return`AutoSend's send endpoint takes exactly one 'to' recipient, but ${String(i.length)} were given — use 'cc'/'bcc', or send one message per recipient`;const o=i.length+(t.cc?g(t.cc).length:0)+(t.bcc?g(t.bcc).length:0);if(o>v)return`AutoSend allows at most ${String(v)} recipients across to/cc/bcc, but ${String(o)} were given`;if(t.attachments&&t.attachments.length>$)return`AutoSend allows at most ${String($)} attachments, but ${String(t.attachments.length)} were given`;const e=t.attachments?.find(r=>r.cid);if(e)return`AutoSend does not support inline (cid) attachments, but '${e.filename}' sets one — host the image and reference it by URL instead`;if(t.subject.length>j)return`AutoSend allows a subject of at most ${String(j)} characters, but ${String(t.subject.length)} were given`;const a=Object.keys(s);if(a.length>k)return`AutoSend allows at most ${String(k)} custom headers, but ${String(a.length)} were given`;const d=a.find(r=>!Z.test(r));if(d!==void 0)return`AutoSend header names must match ${J}, but '${d}' does not`;const u=a.find(r=>s[r].length>I);if(u!==void 0)return`AutoSend allows header values of at most ${String(I)} characters, but '${u}' is longer`},X=t=>{if(typeof t!="object"||t===null)return{};const s=t;if(s.success===!0)return{emailId:typeof s.data?.emailId=="string"?s.data.emailId:void 0};const i=[s.message,s.error].find(o=>typeof o=="string");return{reason:typeof i=="string"?i:void 0}},ie=E((t={})=>{if(!t.apiKey)throw new T(n,"apiKey");const s={apiKey:t.apiKey,debug:t.debug??!1,endpoint:t.endpoint??H,logger:t.logger,retries:t.retries??R,timeout:t.timeout??N},i=new D,o=B(n,t.logger);return{features:{attachments:!0,batchSending:!1,customHeaders:!0,html:!0,replyTo:!0,scheduling:!1,tagging:!1,templates:!0,tracking:!0},async initialize(){i.setInitialized()},async isAvailable(){return s.apiKey.length>0},name:n,options:s,async sendEmail(e){try{const a=C(e).filter(l=>!(e.templateId!==void 0&&l===L));if(a.length>0)return{error:new c(n,`Invalid email options: ${a.join(", ")}`),success:!1};const d=e.headers?x(e.headers):{},u=U(e,d);if(u)return{error:new c(n,u),success:!1};const r={from:y(e.from),subject:e.subject,to:y(g(e.to)[0])};if(e.templateId?r.templateId=e.templateId:(e.html&&(r.html=e.html),e.text&&(r.text=e.text)),e.cc&&(r.cc=w(e.cc)),e.bcc&&(r.bcc=w(e.bcc)),e.replyTo&&(r.replyTo=y(e.replyTo)),e.dynamicData&&(r.dynamicData=e.dynamicData),e.unsubscribeGroupId&&(r.unsubscribeGroupId=e.unsubscribeGroupId),e.trackingClick!==void 0&&(r.trackingClick=e.trackingClick),e.trackingOpen!==void 0&&(r.trackingOpen=e.trackingOpen),e.bypassSuppressions!==void 0&&(r.bypassSuppressions=e.bypassSuppressions),Object.keys(d).length>0&&(r.headers=Object.fromEntries(Object.entries(d).map(([l,p])=>[P(l),G(p)]))),e.attachments&&e.attachments.length>0){const l=await Promise.all(e.attachments.map(async b=>V(b))),p=l.reduce((b,O)=>b+O.content.length,0);if(p>A)return{error:new c(n,`AutoSend allows at most ${String(A)} bytes of attachments after Base64 encoding, but this message carries ${String(p)}`),success:!1};r.attachments=l}const f=await K(async()=>z(`${s.endpoint}/mails/send`,{headers:{Authorization:`Bearer ${s.apiKey}`,"Content-Type":"application/json"},method:"POST",timeout:s.timeout},JSON.stringify(r)),s.retries),S=f.data?.body,{emailId:h,reason:m}=X(S);return f.success?m?{error:new c(n,`Failed to send email: ${m}`),success:!1}:h?(o.debug(`Email queued successfully: ${h}`),{data:{messageId:h,provider:n,response:S,sent:!0,timestamp:new Date},success:!0}):{error:new c(n,"AutoSend accepted the message but returned no emailId"),success:!1}:{error:m?new c(n,`Failed to send email: ${m}`):f.error??new c(n,"Failed to send email"),success:!1}}catch(a){return{error:q(n,"send email",a,o),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{ie as default};
@@ -1,4 +1,4 @@
1
- import{createRequire as D}from"node:module";import E from"./EmailError-CDvYwuqz.js";import F from"./RequiredOptionError-DU2lxzk3.js";import{c as G}from"./create-logger-BQTS3f-I.js";import h from"../utils/format-email-address.js";import{s as Q}from"./headers-to-record-De1Eg951.js";import{m as X}from"./make-request-CylyuRaN.js";import{a as _,s as Y}from"./sanitize-header-DtQwAnzg.js";import{f as Z}from"./validate-email-options-mCM9dVug.js";import{defineProvider as J}from"./defineProvider-C9q-7iwt.js";let N;const V=p=>(N??=D(import.meta.url))(p),A=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,L=p=>{if(typeof A<"u"&&A.versions&&A.versions.node){const[a,d]=A.versions.node.split(".").map(Number);if(a>22||a===22&&d>=3||a===20&&d>=16)return A.getBuiltinModule(p)}return V(p)},{randomUUID:R,createHash:v,createHmac:$}=L("node:crypto"),ee=globalThis.Buffer!==void 0,I=()=>{if(!ee)throw new Error("Buffer is required for AWS SES provider");return globalThis.Buffer},S="aws-ses",j={apiVersion:"2010-12-01",maxAttempts:3,region:"us-east-1"},ge=J((p={})=>{const a={...j,...p},d=G("AWS-SES",p.logger),q=(e,i,t,s,o)=>{const u=Object.keys(t).toSorted().map(c=>{const l=t[c];return l===void 0?"":`${encodeURIComponent(c)}=${encodeURIComponent(l)}`}).filter(Boolean).join("&"),r=`${Object.keys(s).toSorted().map(c=>`${c.toLowerCase()}:${s[c]}`).join(`
1
+ import{createRequire as D}from"node:module";import E from"./EmailError-2CCyVX1S.js";import F from"./RequiredOptionError-BmpC5whN.js";import{c as G}from"./create-logger-BQTS3f-I.js";import h from"../utils/format-email-address.js";import{s as Q}from"./headers-to-record-De1Eg951.js";import{m as X}from"./make-request-CDhxj-9b.js";import{a as _,s as Y}from"./sanitize-header-DtQwAnzg.js";import{f as Z}from"./validate-email-options-mCM9dVug.js";import{defineProvider as J}from"./defineProvider-C9q-7iwt.js";let N;const V=p=>(N??=D(import.meta.url))(p),A=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,L=p=>{if(typeof A<"u"&&A.versions&&A.versions.node){const[a,d]=A.versions.node.split(".").map(Number);if(a>22||a===22&&d>=3||a===20&&d>=16)return A.getBuiltinModule(p)}return V(p)},{randomUUID:R,createHash:v,createHmac:$}=L("node:crypto"),ee=globalThis.Buffer!==void 0,I=()=>{if(!ee)throw new Error("Buffer is required for AWS SES provider");return globalThis.Buffer},S="aws-ses",j={apiVersion:"2010-12-01",maxAttempts:3,region:"us-east-1"},ge=J((p={})=>{const a={...j,...p},d=G("AWS-SES",p.logger),q=(e,i,t,s,o)=>{const u=Object.keys(t).toSorted().map(c=>{const l=t[c];return l===void 0?"":`${encodeURIComponent(c)}=${encodeURIComponent(l)}`}).filter(Boolean).join("&"),r=`${Object.keys(s).toSorted().map(c=>`${c.toLowerCase()}:${s[c]}`).join(`
2
2
  `)}
3
3
  `,n=Object.keys(s).toSorted().map(c=>c.toLowerCase()).join(";"),g=v("sha256").update(o).digest("hex");return[e,i,u,r,n,g].join(`
4
4
  `)},P=(e,i,t)=>{const s=e.slice(0,8),o=v("sha256").update(t).digest("hex");return["AWS4-HMAC-SHA256",e,`${s}/${i}/ses/aws4_request`,o].join(`
@@ -1 +1 @@
1
- import{createRequire as A}from"node:module";import l from"./EmailError-CDvYwuqz.js";import w from"./RequiredOptionError-DU2lxzk3.js";import{e as P}from"./generate-message-id-gXAuMz4g.js";import{s as _}from"./headers-to-record-De1Eg951.js";import{m as h}from"./make-request-CylyuRaN.js";import{i as v}from"./retry-CG9iT2wF.js";import{f as j}from"./validate-email-options-mCM9dVug.js";import{defineProvider as B}from"./defineProvider-C9q-7iwt.js";import{P as C,h as T,c as E}from"./provider-base-DjPzWncP.js";import{b as y,c as q}from"./address-formatter-BWR2Dddx.js";let z;const k=n=>(z??=A(import.meta.url))(n),f=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,I=n=>{if(typeof f<"u"&&f.versions&&f.versions.node){const[u,t]=f.versions.node.split(".").map(Number);if(u>22||u===22&&t>=3||u===20&&t>=16)return f.getBuiltinModule(n)}return k(n)},{Buffer:p}=I("node:buffer"),i="azure",R=3e4,x=3,Q=B((n={})=>{if(!n.region)throw new w(i,"region");if(!n.connectionString&&!n.accessToken)throw new w(i,"connectionString or accessToken");const u=n.endpoint??`https://${n.region}.communication.azure.com`,t={debug:n.debug??!1,endpoint:u,region:n.region,retries:n.retries??x,timeout:n.timeout??R,...n.connectionString&&{connectionString:n.connectionString},...n.accessToken&&{accessToken:n.accessToken},...n.logger&&{logger:n.logger}},g=new C,a=E(i,n.logger);return{features:{attachments:!0,batchSending:!1,customHeaders:!0,html:!0,replyTo:!0,scheduling:!1,tagging:!1,templates:!0,tracking:!1},async getEmail(e){try{if(!e)return{error:new l(i,"Email ID is required to retrieve email details"),success:!1};await g.ensureInitialized(()=>this.initialize(),i);const o={"Content-Type":"application/json"};if(t.accessToken)o.Authorization=`Bearer ${t.accessToken}`;else if(t.connectionString){const c=t.connectionString.match(/endpoint=([^;]+);accesskey=([^;]+)/);c&&(o.Authorization=`Bearer ${c[2]}`)}a.debug("Retrieving email details",{id:e});const r=await v(async()=>h(`${t.endpoint}/emails/${e}`,{headers:o,method:"GET",timeout:t.timeout}),t.retries);return r.success?(a.debug("Email details retrieved successfully"),{data:r.data?.body,success:!0}):(a.debug("API request failed when retrieving email",r.error),{error:new l(i,`Failed to retrieve email: ${r.error instanceof Error?r.error.message:"Unknown error"}`,{cause:r.error}),success:!1})}catch(o){return{error:T(i,"retrieve email",o,a),success:!1}}},async initialize(){await g.ensureInitialized(async()=>{if(!await this.isAvailable())throw new l(i,"Azure Communication Services API not available or invalid credentials");a.debug("Provider initialized successfully")},i)},async isAvailable(){try{const e={"Content-Type":"application/json"};if(t.accessToken)e.Authorization=`Bearer ${t.accessToken}`;else if(t.connectionString){const c=t.connectionString.match(/endpoint=([^;]+);accesskey=([^;]+)/);if(c)e.Authorization=`Bearer ${c[2]}`;else return!1}else return!1;a.debug("Checking Azure Communication Services API availability");const o=await h(`${t.endpoint}/emails:send`,{headers:e,method:"POST",timeout:t.timeout},JSON.stringify({}));if(o.success)return!0;const r=o.data?.statusCode;return r===401||r===403?!1:r===400}catch(e){if(a.debug("Error checking availability:",e),e instanceof Error){const o=e.message;if(o.includes("401")||o.includes("403"))return!1}return!1}},name:i,options:t,async sendEmail(e){try{const o=j(e);if(o.length>0)return{error:new l(i,`Invalid email options: ${o.join(", ")}`),success:!1};await g.ensureInitialized(()=>this.initialize(),i);const r={content:{subject:e.subject},recipients:{to:y(e.to)},senderAddress:e.from.email};if(e.html&&(r.content.html=e.html),e.text&&(r.content.plainText=e.text),e.cc&&(r.recipients.cc=y(e.cc)),e.bcc&&(r.recipients.bcc=y(e.bcc)),e.replyTo&&(r.replyTo=q(e.replyTo).email),e.importance&&(r.importance=e.importance),e.headers){const s=_(e.headers);r.headers=s}e.attachments&&e.attachments.length>0&&(r.attachments=await Promise.all(e.attachments.map(async s=>{let d;if(s.content)if(typeof s.content=="string")d=p.from(s.content,"utf8").toString("base64");else if(s.content&&typeof s.content.then=="function"){const S=await s.content;d=p.from(S).toString("base64")}else d=s.content.toString("base64");else if(s.raw)d=typeof s.raw=="string"?p.from(s.raw,"utf8").toString("base64"):s.raw.toString("base64");else throw new l(i,`Attachment ${s.filename} has no content`);return{contentInBase64:d,contentType:s.contentType??"application/octet-stream",name:s.filename}}))),a.debug("Sending email via Azure Communication Services API",{subject:r.content.subject,to:r.recipients.to});const c={"Content-Type":"application/json"};if(t.accessToken)c.Authorization=`Bearer ${t.accessToken}`;else if(t.connectionString){const s=t.connectionString.match(/endpoint=([^;]+);accesskey=([^;]+)/);if(s)c.Authorization=`Bearer ${s[2]}`;else return{error:new l(i,"Invalid connection string format"),success:!1}}const m=await v(async()=>h(`${t.endpoint}/emails:send`,{headers:c,method:"POST",timeout:t.timeout},JSON.stringify(r)),t.retries);if(!m.success)return a.debug("API request failed when sending email",m.error),{error:m.error??new l(i,"Failed to send email"),success:!1};const b=m.data?.body?.messageId??P();return a.debug("Email sent successfully",{messageId:b}),{data:{messageId:b,provider:i,response:m.data,sent:!0,timestamp:new Date},success:!0}}catch(o){return{error:T(i,"send email",o,a),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{Q as default};
1
+ import{createRequire as A}from"node:module";import l from"./EmailError-2CCyVX1S.js";import w from"./RequiredOptionError-BmpC5whN.js";import{e as P}from"./generate-message-id-gXAuMz4g.js";import{s as _}from"./headers-to-record-De1Eg951.js";import{m as h}from"./make-request-CDhxj-9b.js";import{i as v}from"./retry-D1Rh-6Z4.js";import{f as j}from"./validate-email-options-mCM9dVug.js";import{defineProvider as B}from"./defineProvider-C9q-7iwt.js";import{P as C,h as T,c as E}from"./provider-base-B-xhQSqE.js";import{b as y,c as q}from"./address-formatter-bfmGfQ83.js";let z;const k=n=>(z??=A(import.meta.url))(n),f=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,I=n=>{if(typeof f<"u"&&f.versions&&f.versions.node){const[u,t]=f.versions.node.split(".").map(Number);if(u>22||u===22&&t>=3||u===20&&t>=16)return f.getBuiltinModule(n)}return k(n)},{Buffer:p}=I("node:buffer"),i="azure",R=3e4,x=3,Q=B((n={})=>{if(!n.region)throw new w(i,"region");if(!n.connectionString&&!n.accessToken)throw new w(i,"connectionString or accessToken");const u=n.endpoint??`https://${n.region}.communication.azure.com`,t={debug:n.debug??!1,endpoint:u,region:n.region,retries:n.retries??x,timeout:n.timeout??R,...n.connectionString&&{connectionString:n.connectionString},...n.accessToken&&{accessToken:n.accessToken},...n.logger&&{logger:n.logger}},g=new C,a=E(i,n.logger);return{features:{attachments:!0,batchSending:!1,customHeaders:!0,html:!0,replyTo:!0,scheduling:!1,tagging:!1,templates:!0,tracking:!1},async getEmail(e){try{if(!e)return{error:new l(i,"Email ID is required to retrieve email details"),success:!1};await g.ensureInitialized(()=>this.initialize(),i);const o={"Content-Type":"application/json"};if(t.accessToken)o.Authorization=`Bearer ${t.accessToken}`;else if(t.connectionString){const c=t.connectionString.match(/endpoint=([^;]+);accesskey=([^;]+)/);c&&(o.Authorization=`Bearer ${c[2]}`)}a.debug("Retrieving email details",{id:e});const r=await v(async()=>h(`${t.endpoint}/emails/${e}`,{headers:o,method:"GET",timeout:t.timeout}),t.retries);return r.success?(a.debug("Email details retrieved successfully"),{data:r.data?.body,success:!0}):(a.debug("API request failed when retrieving email",r.error),{error:new l(i,`Failed to retrieve email: ${r.error instanceof Error?r.error.message:"Unknown error"}`,{cause:r.error}),success:!1})}catch(o){return{error:T(i,"retrieve email",o,a),success:!1}}},async initialize(){await g.ensureInitialized(async()=>{if(!await this.isAvailable())throw new l(i,"Azure Communication Services API not available or invalid credentials");a.debug("Provider initialized successfully")},i)},async isAvailable(){try{const e={"Content-Type":"application/json"};if(t.accessToken)e.Authorization=`Bearer ${t.accessToken}`;else if(t.connectionString){const c=t.connectionString.match(/endpoint=([^;]+);accesskey=([^;]+)/);if(c)e.Authorization=`Bearer ${c[2]}`;else return!1}else return!1;a.debug("Checking Azure Communication Services API availability");const o=await h(`${t.endpoint}/emails:send`,{headers:e,method:"POST",timeout:t.timeout},JSON.stringify({}));if(o.success)return!0;const r=o.data?.statusCode;return r===401||r===403?!1:r===400}catch(e){if(a.debug("Error checking availability:",e),e instanceof Error){const o=e.message;if(o.includes("401")||o.includes("403"))return!1}return!1}},name:i,options:t,async sendEmail(e){try{const o=j(e);if(o.length>0)return{error:new l(i,`Invalid email options: ${o.join(", ")}`),success:!1};await g.ensureInitialized(()=>this.initialize(),i);const r={content:{subject:e.subject},recipients:{to:y(e.to)},senderAddress:e.from.email};if(e.html&&(r.content.html=e.html),e.text&&(r.content.plainText=e.text),e.cc&&(r.recipients.cc=y(e.cc)),e.bcc&&(r.recipients.bcc=y(e.bcc)),e.replyTo&&(r.replyTo=q(e.replyTo).email),e.importance&&(r.importance=e.importance),e.headers){const s=_(e.headers);r.headers=s}e.attachments&&e.attachments.length>0&&(r.attachments=await Promise.all(e.attachments.map(async s=>{let d;if(s.content)if(typeof s.content=="string")d=p.from(s.content,"utf8").toString("base64");else if(s.content&&typeof s.content.then=="function"){const S=await s.content;d=p.from(S).toString("base64")}else d=s.content.toString("base64");else if(s.raw)d=typeof s.raw=="string"?p.from(s.raw,"utf8").toString("base64"):s.raw.toString("base64");else throw new l(i,`Attachment ${s.filename} has no content`);return{contentInBase64:d,contentType:s.contentType??"application/octet-stream",name:s.filename}}))),a.debug("Sending email via Azure Communication Services API",{subject:r.content.subject,to:r.recipients.to});const c={"Content-Type":"application/json"};if(t.accessToken)c.Authorization=`Bearer ${t.accessToken}`;else if(t.connectionString){const s=t.connectionString.match(/endpoint=([^;]+);accesskey=([^;]+)/);if(s)c.Authorization=`Bearer ${s[2]}`;else return{error:new l(i,"Invalid connection string format"),success:!1}}const m=await v(async()=>h(`${t.endpoint}/emails:send`,{headers:c,method:"POST",timeout:t.timeout},JSON.stringify(r)),t.retries);if(!m.success)return a.debug("API request failed when sending email",m.error),{error:m.error??new l(i,"Failed to send email"),success:!1};const b=m.data?.body?.messageId??P();return a.debug("Email sent successfully",{messageId:b}),{data:{messageId:b,provider:i,response:m.data,sent:!0,timestamp:new Date},success:!0}}catch(o){return{error:T(i,"send email",o,a),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{Q as default};
@@ -1 +1 @@
1
- import d from"./EmailError-CDvYwuqz.js";import T from"./RequiredOptionError-DU2lxzk3.js";import{e as A}from"./generate-message-id-gXAuMz4g.js";import{s as I}from"./headers-to-record-De1Eg951.js";import{m}from"./make-request-CylyuRaN.js";import{i as g}from"./retry-CG9iT2wF.js";import{f as P}from"./validate-email-options-mCM9dVug.js";import{defineProvider as C}from"./defineProvider-C9q-7iwt.js";import{P as k,h as b,c as E}from"./provider-base-DjPzWncP.js";import{f as p,a as y}from"./address-formatter-BWR2Dddx.js";import{p as j}from"./attachment-processor-D1cbAhQi.js";const r="brevo",S="https://api.brevo.com/v3",z=3e4,K=3,L=C((n={})=>{if(!n.apiKey)throw new T(r,"apiKey");const v=n.endpoint??S,s={apiKey:n.apiKey,debug:n.debug??!1,endpoint:v,hardValidation:n.hardValidation??!1,retries:n.retries??K,timeout:n.timeout??z,...n.logger&&{logger:n.logger}},u=new k,i=E(r,n.logger);return{endpoint:s.endpoint,features:{attachments:!0,batchSending:!0,customHeaders:!0,html:!0,replyTo:!0,scheduling:!0,tagging:!0,templates:!0,tracking:!0},async getEmail(e){try{if(!e)return{error:new d(r,"Email ID is required to retrieve email details"),success:!1};await u.ensureInitialized(()=>this.initialize(),r);const t={"api-key":s.apiKey,"Content-Type":"application/json"};i.debug("Retrieving email details",{id:e});const l=await g(async()=>m(`${s.endpoint}/smtp/emails/${e}`,{headers:t,method:"GET",timeout:s.timeout}),s.retries);return l.success?(i.debug("Email details retrieved successfully"),{data:l.data?.body,success:!0}):(i.debug("API request failed when retrieving email",l.error),{error:new d(r,`Failed to retrieve email: ${l.error instanceof Error?l.error.message:"Unknown error"}`,{cause:l.error}),success:!1})}catch(t){return{error:b(r,"retrieve email",t,i),success:!1}}},async initialize(){await u.ensureInitialized(async()=>{if(!await this.isAvailable())throw new d(r,"Brevo API not available or invalid API key");i.debug("Provider initialized successfully")},r)},async isAvailable(){try{const e={"api-key":s.apiKey,"Content-Type":"application/json"};i.debug("Checking Brevo API availability");const t=await m(`${s.endpoint}/account`,{headers:e,method:"GET",timeout:s.timeout});return i.debug("Brevo API availability check response:",{error:t.error instanceof Error?t.error.message:void 0,statusCode:t.data?.statusCode,success:t.success}),!!(t.success&&t.data&&typeof t.data=="object"&&"statusCode"in t.data&&typeof t.data.statusCode=="number"&&t.data.statusCode>=200&&t.data.statusCode<300)}catch(e){return i.debug("Error checking availability:",e),!1}},name:r,options:s,async sendEmail(e){try{let t;Array.isArray(e.replyTo)?t=e.replyTo.length>0?e.replyTo[0]:void 0:t=e.replyTo;const l={...e,replyTo:t},f=P(l);if(f.length>0)return{error:new d(r,`Invalid email options: ${f.join(", ")}`),success:!1};await u.ensureInitialized(()=>this.initialize(),r);const a={sender:y(e.from),subject:e.subject,to:p(e.to)};if(e.html&&(a.htmlContent=e.html),e.text&&(a.textContent=e.text),e.cc&&(a.cc=p(e.cc)),e.bcc&&(a.bcc=p(e.bcc)),e.replyTo)if(Array.isArray(e.replyTo)){if(s.hardValidation)return{error:new d(r,"Only one replyTo address is allowed"),success:!1};if(e.replyTo.length===0)return{error:new d(r,"replyTo array cannot be empty"),success:!1};const o=e.replyTo[0];if(!o)return{error:new d(r,"replyTo array cannot be empty"),success:!1};a.replyTo=y(o)}else a.replyTo=y(e.replyTo);if(e.templateId&&(a.templateId=e.templateId,e.templateParams&&(a.params=e.templateParams)),e.tags&&e.tags.length>0&&(a.tags=e.tags),e.scheduledAt){const o=typeof e.scheduledAt=="number"?new Date(e.scheduledAt*1e3).toISOString():e.scheduledAt;a.scheduledAt=o}if(e.batchId&&(a.batchId=e.batchId),e.headers){const o=I(e.headers);a.headers=o}e.attachments&&e.attachments.length>0&&(a.attachment=await Promise.all(e.attachments.map(async o=>({content:await j(o,r),name:o.filename,...o.contentType&&{type:o.contentType}})))),i.debug("Sending email via Brevo API",{subject:a.subject,to:a.to});const w={"api-key":s.apiKey,"Content-Type":"application/json"},c=await g(async()=>m(`${s.endpoint}/smtp/email`,{headers:w,method:"POST",timeout:s.timeout},JSON.stringify(a)),s.retries);if(!c.success)return i.debug("API request failed when sending email",c.error),{error:c.error??new d(r,"Failed to send email"),success:!1};const h=c.data?.body?.messageId??A();return i.debug("Email sent successfully",{messageId:h}),{data:{messageId:h,provider:r,response:c.data,sent:!0,timestamp:new Date},success:!0}}catch(t){return{error:b(r,"send email",t,i),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{L as default};
1
+ import d from"./EmailError-2CCyVX1S.js";import T from"./RequiredOptionError-BmpC5whN.js";import{e as A}from"./generate-message-id-gXAuMz4g.js";import{s as I}from"./headers-to-record-De1Eg951.js";import{m}from"./make-request-CDhxj-9b.js";import{i as g}from"./retry-D1Rh-6Z4.js";import{f as P}from"./validate-email-options-mCM9dVug.js";import{defineProvider as C}from"./defineProvider-C9q-7iwt.js";import{P as k,h as b,c as E}from"./provider-base-B-xhQSqE.js";import{f as p,a as y}from"./address-formatter-bfmGfQ83.js";import{p as j}from"./attachment-processor-DjbjtJ6H.js";const r="brevo",S="https://api.brevo.com/v3",z=3e4,K=3,L=C((n={})=>{if(!n.apiKey)throw new T(r,"apiKey");const v=n.endpoint??S,s={apiKey:n.apiKey,debug:n.debug??!1,endpoint:v,hardValidation:n.hardValidation??!1,retries:n.retries??K,timeout:n.timeout??z,...n.logger&&{logger:n.logger}},u=new k,i=E(r,n.logger);return{endpoint:s.endpoint,features:{attachments:!0,batchSending:!0,customHeaders:!0,html:!0,replyTo:!0,scheduling:!0,tagging:!0,templates:!0,tracking:!0},async getEmail(e){try{if(!e)return{error:new d(r,"Email ID is required to retrieve email details"),success:!1};await u.ensureInitialized(()=>this.initialize(),r);const t={"api-key":s.apiKey,"Content-Type":"application/json"};i.debug("Retrieving email details",{id:e});const l=await g(async()=>m(`${s.endpoint}/smtp/emails/${e}`,{headers:t,method:"GET",timeout:s.timeout}),s.retries);return l.success?(i.debug("Email details retrieved successfully"),{data:l.data?.body,success:!0}):(i.debug("API request failed when retrieving email",l.error),{error:new d(r,`Failed to retrieve email: ${l.error instanceof Error?l.error.message:"Unknown error"}`,{cause:l.error}),success:!1})}catch(t){return{error:b(r,"retrieve email",t,i),success:!1}}},async initialize(){await u.ensureInitialized(async()=>{if(!await this.isAvailable())throw new d(r,"Brevo API not available or invalid API key");i.debug("Provider initialized successfully")},r)},async isAvailable(){try{const e={"api-key":s.apiKey,"Content-Type":"application/json"};i.debug("Checking Brevo API availability");const t=await m(`${s.endpoint}/account`,{headers:e,method:"GET",timeout:s.timeout});return i.debug("Brevo API availability check response:",{error:t.error instanceof Error?t.error.message:void 0,statusCode:t.data?.statusCode,success:t.success}),!!(t.success&&t.data&&typeof t.data=="object"&&"statusCode"in t.data&&typeof t.data.statusCode=="number"&&t.data.statusCode>=200&&t.data.statusCode<300)}catch(e){return i.debug("Error checking availability:",e),!1}},name:r,options:s,async sendEmail(e){try{let t;Array.isArray(e.replyTo)?t=e.replyTo.length>0?e.replyTo[0]:void 0:t=e.replyTo;const l={...e,replyTo:t},f=P(l);if(f.length>0)return{error:new d(r,`Invalid email options: ${f.join(", ")}`),success:!1};await u.ensureInitialized(()=>this.initialize(),r);const a={sender:y(e.from),subject:e.subject,to:p(e.to)};if(e.html&&(a.htmlContent=e.html),e.text&&(a.textContent=e.text),e.cc&&(a.cc=p(e.cc)),e.bcc&&(a.bcc=p(e.bcc)),e.replyTo)if(Array.isArray(e.replyTo)){if(s.hardValidation)return{error:new d(r,"Only one replyTo address is allowed"),success:!1};if(e.replyTo.length===0)return{error:new d(r,"replyTo array cannot be empty"),success:!1};const o=e.replyTo[0];if(!o)return{error:new d(r,"replyTo array cannot be empty"),success:!1};a.replyTo=y(o)}else a.replyTo=y(e.replyTo);if(e.templateId&&(a.templateId=e.templateId,e.templateParams&&(a.params=e.templateParams)),e.tags&&e.tags.length>0&&(a.tags=e.tags),e.scheduledAt){const o=typeof e.scheduledAt=="number"?new Date(e.scheduledAt*1e3).toISOString():e.scheduledAt;a.scheduledAt=o}if(e.batchId&&(a.batchId=e.batchId),e.headers){const o=I(e.headers);a.headers=o}e.attachments&&e.attachments.length>0&&(a.attachment=await Promise.all(e.attachments.map(async o=>({content:await j(o,r),name:o.filename,...o.contentType&&{type:o.contentType}})))),i.debug("Sending email via Brevo API",{subject:a.subject,to:a.to});const w={"api-key":s.apiKey,"Content-Type":"application/json"},c=await g(async()=>m(`${s.endpoint}/smtp/email`,{headers:w,method:"POST",timeout:s.timeout},JSON.stringify(a)),s.retries);if(!c.success)return i.debug("API request failed when sending email",c.error),{error:c.error??new d(r,"Failed to send email"),success:!1};const h=c.data?.body?.messageId??A();return i.debug("Email sent successfully",{messageId:h}),{data:{messageId:h,provider:r,response:c.data,sent:!0,timestamp:new Date},success:!0}}catch(t){return{error:b(r,"send email",t,i),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{L as default};
@@ -0,0 +1,3 @@
1
+ import E from"./EmailError-2CCyVX1S.js";import p from"../utils/format-email-address.js";import{r as y}from"./generate-boundary-0xGe9GqK.js";import{s as j}from"./headers-to-record-De1Eg951.js";import{f as M}from"./quoted-printable-nSGDA1tA.js";import{s as T,a as f}from"./sanitize-header-DtQwAnzg.js";const $=globalThis.Buffer!==void 0,g=t=>{if(typeof t=="string"){if($)return Buffer.from(t,"utf8").toString("base64");const e=new TextEncoder().encode(t);let s="";const o=8192;for(let n=0;n<e.length;n+=o){const a=e.subarray(n,Math.min(n+o,e.length));s+=String.fromCharCode(...a)}return btoa(s)}if($&&t instanceof Buffer)return t.toString("base64");const i=t instanceof Uint8Array?t:new Uint8Array(t);if($)return Buffer.from(i).toString("base64");let h="";const r=8192;for(let e=0;e<i.length;e+=r){const s=i.subarray(e,Math.min(e+r,i.length));h+=String.fromCharCode(...s)}return btoa(h)},A=globalThis.Buffer!==void 0,S=/[^\u0000-\u007F]/,D=t=>!S.test(t),F=t=>{if(D(t))return t;const i=45,h=new TextDecoder,r=A?Buffer.from(t,"utf8"):new TextEncoder().encode(t),e=[];let s=0;for(;s<r.length;){let o=Math.min(s+i,r.length);if(o<r.length)for(;o>s&&(r[o]&192)===128;)o-=1;const n=r.subarray(s,o),a=h.decode(n);e.push(`=?UTF-8?B?${g(a)}?=`),s=o}return e.join(" ")},b=t=>Array.isArray(t)?t.map(i=>p(i)).join(", "):p(t),U=/[^ -~\r\n\t]/,C=t=>F(f(t)),z=globalThis.Buffer!==void 0,x=t=>t.replaceAll(/.{1,76}/g,`$&\r
2
+ `).trimEnd(),N=async(t,i={})=>{const{includeBcc:h=!1}=i,r=y(),e=[`From: ${p(t.from)}`,`To: ${b(t.to)}`];if(t.cc&&e.push(`Cc: ${b(t.cc)}`),h&&t.bcc&&e.push(`Bcc: ${b(t.bcc)}`),t.replyTo&&e.push(`Reply-To: ${p(t.replyTo)}`),e.push(`Subject: ${C(t.subject)}`,"MIME-Version: 1.0"),t.headers){const o=j(t.headers);Object.entries(o).forEach(([n,a])=>{const u=T(n),m=f(a);e.push(`${u}: ${m}`)})}e.push(`Content-Type: multipart/mixed; boundary="${r}"`,"");const s=(o,n)=>U.test(n)?[`Content-Type: ${o}; charset=UTF-8`,"Content-Transfer-Encoding: quoted-printable","",M(n),""]:[`Content-Type: ${o}; charset=UTF-8`,"Content-Transfer-Encoding: 7bit","",n,""];if(t.text&&t.html){const o=y();e.push(`--${r}`,`Content-Type: multipart/alternative; boundary="${o}"`,"",`--${o}`,...s("text/plain",t.text),`--${o}`,...s("text/html",t.html),`--${o}--`,"")}else t.text?e.push(`--${r}`,...s("text/plain",t.text)):t.html&&e.push(`--${r}`,...s("text/html",t.html));if(t.attachments&&t.attachments.length>0){const o=await Promise.all(t.attachments.map(async n=>{let a;if(n.raw!==void 0)a=n.raw;else{if(n.content===void 0)throw new E("attachment",`Attachment '${n.filename}' must have content, raw, or be resolved from path/href before building MIME message`);a=n.content instanceof Promise?await n.content:n.content}return{...n,resolvedContent:a}}));for(const n of o){e.push(`--${r}`);const a=f(n.contentType??"application/octet-stream"),u=C(n.filename);e.push(`Content-Type: ${a}; name="${u}"`);const m=f(n.contentDisposition??"attachment");e.push(`Content-Disposition: ${m}; filename="${u}"`),n.cid&&e.push(`Content-ID: <${f(n.cid)}>`),n.headers&&Object.entries(n.headers).forEach(([d,w])=>{const B=T(d),v=f(w);e.push(`${B}: ${v}`)});const l=f(n.encoding??"base64");e.push(`Content-Transfer-Encoding: ${l}`,"");const c=n.resolvedContent;if(l==="base64")e.push(x(g(c)));else if(l==="7bit"||l==="8bit")if(typeof c=="string")e.push(c);else if(z&&c instanceof Buffer)e.push(c.toString("utf8"));else{const d=new TextDecoder;e.push(d.decode(c))}else e.push(x(g(c)));e.push("")}}return e.push(`--${r}--`),e.join(`\r
3
+ `)};export{N as j};
@@ -1 +1 @@
1
- import w from"./EmailError-CDvYwuqz.js";const C=(c={})=>{const{failureThreshold:u=5,now:s=Date.now,onStateChange:p,resetTimeout:d=3e4}=c;let e="closed",n=0,l=0,t=!1;const a=r=>{e!==r&&(e=r,p?.(r))},i=()=>({error:new w("middleware","Circuit breaker is open",{code:"CIRCUIT_OPEN"}),success:!1});return async(r,h)=>{if(e==="open"&&s()-l>=d&&(a("half-open"),t=!1),e==="open")return i();let f=!1;if(e==="half-open"){if(t)return i();t=!0,f=!0}let o;try{o=await h(r)}finally{f&&(t=!1)}return o.success?(n=0,a("closed"),o):(n+=1,(e==="half-open"||n>=u)&&(l=s(),a("open")),o)}};export{C as circuitBreakerMiddleware};
1
+ import w from"./EmailError-2CCyVX1S.js";const C=(c={})=>{const{failureThreshold:u=5,now:s=Date.now,onStateChange:p,resetTimeout:d=3e4}=c;let e="closed",n=0,l=0,t=!1;const a=r=>{e!==r&&(e=r,p?.(r))},i=()=>({error:new w("middleware","Circuit breaker is open",{code:"CIRCUIT_OPEN"}),success:!1});return async(r,h)=>{if(e==="open"&&s()-l>=d&&(a("half-open"),t=!1),e==="open")return i();let f=!1;if(e==="half-open"){if(t)return i();t=!0,f=!0}let o;try{o=await h(r)}finally{f&&(t=!1)}return o.success?(n=0,a("closed"),o):(n+=1,(e==="half-open"||n>=u)&&(l=s(),a("open")),o)}};export{C as circuitBreakerMiddleware};
@@ -1 +1 @@
1
- import a from"./EmailError-CDvYwuqz.js";import m from"./RequiredOptionError-DU2lxzk3.js";import{F as d}from"./build-mime-message-DT67qfMp.js";import{e as f}from"./generate-message-id-gXAuMz4g.js";import{s as u}from"./headers-to-record-De1Eg951.js";import{f as p}from"./validate-email-options-mCM9dVug.js";import{defineProvider as g}from"./defineProvider-C9q-7iwt.js";import{h,c as v}from"./provider-base-DjPzWncP.js";const r="cloudflare-email",C=g((t={})=>{if(typeof t.send!="function")throw new m(r,"send");const c=v(r,t.logger);return{features:{attachments:!0,batchSending:!1,customHeaders:!0,html:!0,replyTo:!0,scheduling:!1,tagging:!1,templates:!1,tracking:!1},async initialize(){await Promise.resolve()},async isAvailable(){return typeof t.send=="function"},name:r,async sendEmail(e){try{const s=p(e);if(s.length>0)return{error:new a(r,`Invalid email options: ${s.join(", ")}`),success:!1};const i=Array.isArray(e.to)?e.to:[e.to];if(i.length!==1||e.cc!==void 0||e.bcc!==void 0)return{error:new a(r,"Cloudflare Email supports exactly one `to` recipient and does not support cc/bcc"),success:!1};const[o]=i;if(!o)return{error:new a(r,"A single `to` recipient is required"),success:!1};const n=f(),l=await d({...e,headers:{...e.headers?u(e.headers):{},"Message-ID":n}});return await t.send(e.from.email,o.email,l),{data:{messageId:n,provider:r,sent:!0,timestamp:new Date},success:!0}}catch(s){return{error:h(r,"send email",s,c),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{C as default};
1
+ import a from"./EmailError-2CCyVX1S.js";import m from"./RequiredOptionError-BmpC5whN.js";import{j as d}from"./build-mime-message-t8KYiQkO.js";import{e as f}from"./generate-message-id-gXAuMz4g.js";import{s as u}from"./headers-to-record-De1Eg951.js";import{f as p}from"./validate-email-options-mCM9dVug.js";import{defineProvider as g}from"./defineProvider-C9q-7iwt.js";import{h,c as v}from"./provider-base-B-xhQSqE.js";const r="cloudflare-email",x=g((t={})=>{if(typeof t.send!="function")throw new m(r,"send");const c=v(r,t.logger);return{features:{attachments:!0,batchSending:!1,customHeaders:!0,html:!0,replyTo:!0,scheduling:!1,tagging:!1,templates:!1,tracking:!1},async initialize(){await Promise.resolve()},async isAvailable(){return typeof t.send=="function"},name:r,async sendEmail(e){try{const s=p(e);if(s.length>0)return{error:new a(r,`Invalid email options: ${s.join(", ")}`),success:!1};const i=Array.isArray(e.to)?e.to:[e.to];if(i.length!==1||e.cc!==void 0||e.bcc!==void 0)return{error:new a(r,"Cloudflare Email supports exactly one `to` recipient and does not support cc/bcc"),success:!1};const[o]=i;if(!o)return{error:new a(r,"A single `to` recipient is required"),success:!1};const n=f(),l=await d({...e,headers:{...e.headers?u(e.headers):{},"Message-ID":n}});return await t.send(e.from.email,o.email,l),{data:{messageId:n,provider:r,sent:!0,timestamp:new Date},success:!0}}catch(s){return{error:h(r,"send email",s,c),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{x as default};
@@ -1 +1 @@
1
- import{createMail as w}from"./Mail-CIyxkmxu.js";import u from"./mockProvider-BAl292mW.js";const d=(t,o,e,n)=>{const r=Date.now()+e;return new Promise((s,c)=>{const a=()=>{const i=t.find(m=>o(m));if(i){s(i);return}if(Date.now()>=r){c(new Error("waitFor timed out before a matching message was captured"));return}setTimeout(a,n)};a()})},l=()=>{const t=u(),o=w(t),e=t.getInstance?.();if(!e)throw new Error("mockProvider() did not expose getInstance(); cannot create a test harness");return{mail:o,reset:()=>{e.length=0},sent:()=>e,waitFor:(n,r={})=>d(e,n,r.timeout??1e3,r.interval??10)}};export{l as createTestEmail};
1
+ import{createMail as w}from"./Mail-DduRntbB.js";import u from"./mockProvider-EcpYlg-_.js";const d=(t,o,e,n)=>{const r=Date.now()+e;return new Promise((s,c)=>{const a=()=>{const i=t.find(m=>o(m));if(i){s(i);return}if(Date.now()>=r){c(new Error("waitFor timed out before a matching message was captured"));return}setTimeout(a,n)};a()})},l=()=>{const t=u(),o=w(t),e=t.getInstance?.();if(!e)throw new Error("mockProvider() did not expose getInstance(); cannot create a test harness");return{mail:o,reset:()=>{e.length=0},sent:()=>e,waitFor:(n,r={})=>d(e,n,r.timeout??1e3,r.interval??10)}};export{l as createTestEmail};
@@ -1 +1 @@
1
- import{q as o}from"./index-Gd7m-UQA.js";import a from"mime";const n=e=>a.getType(e)??"application/octet-stream",p=e=>{const t=e.replaceAll(/[^a-z0-9]/gi,"-").replaceAll(/-+/g,"-").replaceAll(/^-|-$/g,"").toLowerCase(),r=Math.random().toString(36).slice(2,9);return`${t}-${r}@email`},c=e=>o(e,{buffer:!0});export{n as detectMimeType,p as generateContentId,c as readFileAsBuffer};
1
+ import{q as o}from"./index-y0s2wQdc.js";import a from"mime";const n=e=>a.getType(e)??"application/octet-stream",p=e=>{const t=e.replaceAll(/[^a-z0-9]/gi,"-").replaceAll(/-+/g,"-").replaceAll(/^-|-$/g,"").toLowerCase(),r=Math.random().toString(36).slice(2,9);return`${t}-${r}@email`},c=e=>o(e,{buffer:!0});export{n as detectMimeType,p as generateContentId,c as readFileAsBuffer};
@@ -1 +1 @@
1
- import u from"./EmailError-CDvYwuqz.js";import b from"./RequiredOptionError-DU2lxzk3.js";import{c as w}from"./create-logger-BQTS3f-I.js";import{e as y}from"./generate-message-id-gXAuMz4g.js";import{defineProvider as $}from"./defineProvider-C9q-7iwt.js";import{d as A}from"./aggregate-features-BqEjPd42.js";const E=i=>typeof i=="function",z=i=>i!==null&&typeof i=="object"&&"sendEmail"in i&&"initialize"in i&&"isAvailable"in i,o="failover",j=$((i={})=>{if(!i.mailers||i.mailers.length===0)throw new b(o,"mailers");const d={debug:i.debug??!1,mailers:i.mailers,retryAfter:i.retryAfter??60};let v=!1;const t=[],n=w(o,i.logger);let g;const m=async()=>g||(g=(async()=>{t.length=0;for(const a of d.mailers)try{let e;if(E(a))e=a({});else if(z(a))e=a;else{n.debug(`Skipping invalid mailer: ${a}`);continue}try{await e.initialize(),t.push(e),n.debug(`Initialized provider: ${e.name??"unknown"}`)}catch(l){n.debug(`Failed to initialize provider ${e.name??"unknown"}:`,l)}}catch(e){n.debug("Error processing mailer:",e)}if(t.length===0)throw new u(o,"No providers could be initialized")})(),g);return{features:A(d.mailers),async initialize(){if(!v)try{await m(),v=!0,n.debug(`Failover provider initialized with ${t.length} provider(s)`)}catch(a){throw new u(o,`Failed to initialize: ${a.message}`,{cause:a})}},async isAvailable(){try{t.length===0&&await m();for(const a of t)try{if(await a.isAvailable())return!0}catch{}return!1}catch{return!1}},name:o,options:d,async sendEmail(a){try{if(t.length===0&&await m(),t.length===0)return{error:new u(o,"No providers available"),success:!1};const e=[];let l;for(let s=0;s<t.length;s+=1){const f=t[s];if(!f)continue;const c=f.name??`provider-${s+1}`;n.debug(`Attempting to send email via ${c} (${s+1}/${t.length})`);try{if(!await f.isAvailable()){n.debug(`Provider ${c} is not available, skipping`),e.push(new u(o,`Provider ${c} is not available`));continue}const r=await f.sendEmail(a);if(r.success&&r.data)return n.debug(`Email sent successfully via ${c}`),{data:{...r.data,messageId:r.data.messageId||y(),provider:`${o}(${c})`},success:!0};if(r.error){l=r.error,e.push(r.error);const p=r.error instanceof Error?r.error.message:String(r.error);n.debug(`Failed to send via ${c}:`,p)}}catch(r){l=r instanceof Error?r:new Error(String(r)),e.push(l);const p=l instanceof Error?l.message:String(l);n.debug(`Exception sending via ${c}:`,p)}s<t.length-1&&d.retryAfter>0&&(n.debug(`Waiting ${d.retryAfter}ms before trying next provider`),await new Promise(r=>{setTimeout(()=>{r()},d.retryAfter)}))}const h=e.map(s=>s instanceof Error?s.message:String(s)).join("; ");return{error:new u(o,`All providers failed. Errors: ${h}`,{cause:l}),success:!1}}catch(e){return{error:new u(o,`Failed to send email: ${e.message}`,{cause:e}),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{j as default};
1
+ import u from"./EmailError-2CCyVX1S.js";import b from"./RequiredOptionError-BmpC5whN.js";import{c as w}from"./create-logger-BQTS3f-I.js";import{e as y}from"./generate-message-id-gXAuMz4g.js";import{defineProvider as $}from"./defineProvider-C9q-7iwt.js";import{d as A}from"./aggregate-features-BqEjPd42.js";const E=i=>typeof i=="function",z=i=>i!==null&&typeof i=="object"&&"sendEmail"in i&&"initialize"in i&&"isAvailable"in i,o="failover",j=$((i={})=>{if(!i.mailers||i.mailers.length===0)throw new b(o,"mailers");const d={debug:i.debug??!1,mailers:i.mailers,retryAfter:i.retryAfter??60};let v=!1;const t=[],n=w(o,i.logger);let g;const m=async()=>g||(g=(async()=>{t.length=0;for(const a of d.mailers)try{let e;if(E(a))e=a({});else if(z(a))e=a;else{n.debug(`Skipping invalid mailer: ${a}`);continue}try{await e.initialize(),t.push(e),n.debug(`Initialized provider: ${e.name??"unknown"}`)}catch(l){n.debug(`Failed to initialize provider ${e.name??"unknown"}:`,l)}}catch(e){n.debug("Error processing mailer:",e)}if(t.length===0)throw new u(o,"No providers could be initialized")})(),g);return{features:A(d.mailers),async initialize(){if(!v)try{await m(),v=!0,n.debug(`Failover provider initialized with ${t.length} provider(s)`)}catch(a){throw new u(o,`Failed to initialize: ${a.message}`,{cause:a})}},async isAvailable(){try{t.length===0&&await m();for(const a of t)try{if(await a.isAvailable())return!0}catch{}return!1}catch{return!1}},name:o,options:d,async sendEmail(a){try{if(t.length===0&&await m(),t.length===0)return{error:new u(o,"No providers available"),success:!1};const e=[];let l;for(let s=0;s<t.length;s+=1){const f=t[s];if(!f)continue;const c=f.name??`provider-${s+1}`;n.debug(`Attempting to send email via ${c} (${s+1}/${t.length})`);try{if(!await f.isAvailable()){n.debug(`Provider ${c} is not available, skipping`),e.push(new u(o,`Provider ${c} is not available`));continue}const r=await f.sendEmail(a);if(r.success&&r.data)return n.debug(`Email sent successfully via ${c}`),{data:{...r.data,messageId:r.data.messageId||y(),provider:`${o}(${c})`},success:!0};if(r.error){l=r.error,e.push(r.error);const p=r.error instanceof Error?r.error.message:String(r.error);n.debug(`Failed to send via ${c}:`,p)}}catch(r){l=r instanceof Error?r:new Error(String(r)),e.push(l);const p=l instanceof Error?l.message:String(l);n.debug(`Exception sending via ${c}:`,p)}s<t.length-1&&d.retryAfter>0&&(n.debug(`Waiting ${d.retryAfter}ms before trying next provider`),await new Promise(r=>{setTimeout(()=>{r()},d.retryAfter)}))}const h=e.map(s=>s instanceof Error?s.message:String(s)).join("; ");return{error:new u(o,`All providers failed. Errors: ${h}`,{cause:l}),success:!1}}catch(e){return{error:new u(o,`Failed to send email: ${e.message}`,{cause:e}),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{j as default};
@@ -1 +1 @@
1
- import c from"./EmailError-CDvYwuqz.js";import g from"./RequiredOptionError-DU2lxzk3.js";import{e as w}from"./generate-message-id-gXAuMz4g.js";import{m as u}from"./make-request-CylyuRaN.js";import{f as A}from"./validate-email-options-mCM9dVug.js";import{defineProvider as j}from"./defineProvider-C9q-7iwt.js";const i="http",v="POST",f=3e4,S=j((o={})=>{if(!o.endpoint)throw new g(i,"endpoint");const a={apiKey:o.apiKey??"",endpoint:o.endpoint,headers:o.headers??{},method:o.method??v},d=()=>{const e={"Content-Type":"application/json",...a.headers};return a.apiKey&&(e.Authorization=`Bearer ${a.apiKey}`),e},p=e=>{const t={from:e.from.email,from_name:e.from.name,html:e.html,subject:e.subject,text:e.text,to:Array.isArray(e.to)?e.to.map(s=>s.email):e.to.email};return e.cc&&(t.cc=Array.isArray(e.cc)?e.cc.map(s=>s.email):e.cc.email),e.bcc&&(t.bcc=Array.isArray(e.bcc)?e.bcc.map(s=>s.email):e.bcc.email),e.customParams&&Object.assign(t,e.customParams),t};let m=!1;return{features:{attachments:!1,batchSending:!1,customHeaders:!0,html:!0,replyTo:!1,scheduling:!1,tagging:!1,templates:!1,tracking:!1},async initialize(){if(!m){if(!await this.isAvailable())throw new c(i,"API endpoint not available");m=!0}},async isAvailable(){try{return!!(await u(a.endpoint,{headers:d(),method:"OPTIONS",timeout:f})).success}catch(e){if(e instanceof Error){const t=e.message;if(t.includes("401")||t.includes("403"))return!1}return!1}},name:i,options:a,async sendEmail(e){try{const t=A(e);if(t.length>0)return{error:new c(i,`Invalid email options: ${t.join(", ")}`),success:!1};m||await this.initialize();const s=d();e.headers&&Object.assign(s,e.headers);const h=p(e),y=e.endpointOverride??a.endpoint,b=e.methodOverride??a.method,n=await u(y,{headers:s,method:b,timeout:f},JSON.stringify(h));if(!n.success)return{error:new c(i,`Failed to send email: ${n.error?.message||"Unknown error"}`,{cause:n.error}),success:!1};let l;const r=n.data?.body;return r&&typeof r=="object"&&(l=r.id??r.messageId??(r.data&&typeof r.data=="object"&&(r.data.id??r.data.messageId))),l??=w(),{data:{messageId:l,provider:i,response:n.data?.body,sent:!0,timestamp:new Date},success:!0}}catch(t){return{error:new c(i,`Failed to send email: ${t.message}`,{cause:t}),success:!1}}},async validateCredentials(){try{const e=await u(a.endpoint,{headers:d(),method:"GET",timeout:f});return!!(e.data&&typeof e.data=="object"&&"statusCode"in e.data&&typeof e.data.statusCode=="number"&&e.data.statusCode>=200&&e.data.statusCode<300)}catch{return!1}}}});export{S as default};
1
+ import c from"./EmailError-2CCyVX1S.js";import g from"./RequiredOptionError-BmpC5whN.js";import{e as w}from"./generate-message-id-gXAuMz4g.js";import{m as u}from"./make-request-CDhxj-9b.js";import{f as A}from"./validate-email-options-mCM9dVug.js";import{defineProvider as j}from"./defineProvider-C9q-7iwt.js";const i="http",v="POST",f=3e4,S=j((o={})=>{if(!o.endpoint)throw new g(i,"endpoint");const a={apiKey:o.apiKey??"",endpoint:o.endpoint,headers:o.headers??{},method:o.method??v},d=()=>{const e={"Content-Type":"application/json",...a.headers};return a.apiKey&&(e.Authorization=`Bearer ${a.apiKey}`),e},p=e=>{const t={from:e.from.email,from_name:e.from.name,html:e.html,subject:e.subject,text:e.text,to:Array.isArray(e.to)?e.to.map(s=>s.email):e.to.email};return e.cc&&(t.cc=Array.isArray(e.cc)?e.cc.map(s=>s.email):e.cc.email),e.bcc&&(t.bcc=Array.isArray(e.bcc)?e.bcc.map(s=>s.email):e.bcc.email),e.customParams&&Object.assign(t,e.customParams),t};let m=!1;return{features:{attachments:!1,batchSending:!1,customHeaders:!0,html:!0,replyTo:!1,scheduling:!1,tagging:!1,templates:!1,tracking:!1},async initialize(){if(!m){if(!await this.isAvailable())throw new c(i,"API endpoint not available");m=!0}},async isAvailable(){try{return!!(await u(a.endpoint,{headers:d(),method:"OPTIONS",timeout:f})).success}catch(e){if(e instanceof Error){const t=e.message;if(t.includes("401")||t.includes("403"))return!1}return!1}},name:i,options:a,async sendEmail(e){try{const t=A(e);if(t.length>0)return{error:new c(i,`Invalid email options: ${t.join(", ")}`),success:!1};m||await this.initialize();const s=d();e.headers&&Object.assign(s,e.headers);const h=p(e),y=e.endpointOverride??a.endpoint,b=e.methodOverride??a.method,n=await u(y,{headers:s,method:b,timeout:f},JSON.stringify(h));if(!n.success)return{error:new c(i,`Failed to send email: ${n.error?.message||"Unknown error"}`,{cause:n.error}),success:!1};let l;const r=n.data?.body;return r&&typeof r=="object"&&(l=r.id??r.messageId??(r.data&&typeof r.data=="object"&&(r.data.id??r.data.messageId))),l??=w(),{data:{messageId:l,provider:i,response:n.data?.body,sent:!0,timestamp:new Date},success:!0}}catch(t){return{error:new c(i,`Failed to send email: ${t.message}`,{cause:t}),success:!1}}},async validateCredentials(){try{const e=await u(a.endpoint,{headers:d(),method:"GET",timeout:f});return!!(e.data&&typeof e.data=="object"&&"statusCode"in e.data&&typeof e.data.statusCode=="number"&&e.data.statusCode>=200&&e.data.statusCode<300)}catch{return!1}}}});export{S as default};
@@ -0,0 +1,11 @@
1
+ import{createRequire as Ht}from"node:module";let Nt;const Lt=e=>(Nt??=Ht(import.meta.url))(e),de=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Mt=e=>{if(typeof de<"u"&&de.versions&&de.versions.node){const[t,o]=de.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return de.getBuiltinModule(e)}return Lt(e)},{createRequire:O}=Mt("node:module"),Bt=/^[A-Z]:\//i,It=(e="")=>e&&e.replaceAll("\\","/").replace(Bt,t=>t.toUpperCase());let Pt;const Dt=e=>(Pt??=O(import.meta.url))(e),he=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Gt=e=>{if(typeof he<"u"&&he.versions&&he.versions.node){const[t,o]=he.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return he.getBuiltinModule(e)}return Dt(e)},{fileURLToPath:Ut}=Gt("node:url");function zt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var pt,ct;function Ft(){return ct||(ct=1,pt=["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cr3","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),pt}var Kt=Ft();const jt=zt(Kt);new Set(jt);const Xt=e=>It(e instanceof URL?Ut(e):e),Qt=e=>{if(!e||!(e instanceof URL)&&typeof e!="string")throw new TypeError("Path must be a non-empty string or URL.")};let qt;const Wt=e=>(qt??=O(import.meta.url))(e),be=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Zt=e=>{if(typeof be<"u"&&be.versions&&be.versions.node){const[t,o]=be.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return be.getBuiltinModule(e)}return Wt(e)};Zt("node:fs/promises");let Yt;const Vt=e=>(Yt??=O(import.meta.url))(e),me=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Jt=e=>{if(typeof me<"u"&&me.versions&&me.versions.node){const[t,o]=me.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return me.getBuiltinModule(e)}return Vt(e)};Jt("node:fs");let eo;const to=e=>(eo??=O(import.meta.url))(e),ye=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,oo=e=>{if(typeof ye<"u"&&ye.versions&&ye.versions.node){const[t,o]=ye.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return ye.getBuiltinModule(e)}return to(e)};oo("node:fs/promises");let so;const ro=e=>(so??=O(import.meta.url))(e),ve=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,no=e=>{if(typeof ve<"u"&&ve.versions&&ve.versions.node){const[t,o]=ve.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return ve.getBuiltinModule(e)}return ro(e)};no("node:fs");let uo;const io=e=>(uo??=O(import.meta.url))(e),$e=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,lo=e=>{if(typeof $e<"u"&&$e.versions&&$e.versions.node){const[t,o]=$e.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return $e.getBuiltinModule(e)}return io(e)};lo("node:fs/promises");let ao;const po=e=>(ao??=O(import.meta.url))(e),_e=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,co=e=>{if(typeof _e<"u"&&_e.versions&&_e.versions.node){const[t,o]=_e.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return _e.getBuiltinModule(e)}return po(e)};co("node:fs");let fo;const go=e=>(fo??=O(import.meta.url))(e),Re=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ho=e=>{if(typeof Re<"u"&&Re.versions&&Re.versions.node){const[t,o]=Re.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Re.getBuiltinModule(e)}return go(e)};ho("node:fs/promises");let bo;const mo=e=>(bo??=O(import.meta.url))(e),Ae=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,yo=e=>{if(typeof Ae<"u"&&Ae.versions&&Ae.versions.node){const[t,o]=Ae.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Ae.getBuiltinModule(e)}return mo(e)};yo("node:fs");let vo;const $o=e=>(vo??=O(import.meta.url))(e),Ee=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,_o=e=>{if(typeof Ee<"u"&&Ee.versions&&Ee.versions.node){const[t,o]=Ee.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Ee.getBuiltinModule(e)}return $o(e)};_o("node:fs/promises");let Ro;const Ao=e=>(Ro??=O(import.meta.url))(e),Te=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Eo=e=>{if(typeof Te<"u"&&Te.versions&&Te.versions.node){const[t,o]=Te.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Te.getBuiltinModule(e)}return Ao(e)};Eo("node:fs");let To;const xo=e=>(To??=O(import.meta.url))(e),xe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Co=e=>{if(typeof xe<"u"&&xe.versions&&xe.versions.node){const[t,o]=xe.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return xe.getBuiltinModule(e)}return xo(e)};Co("node:fs/promises");let So;const Oo=e=>(So??=O(import.meta.url))(e),Ce=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,wo=e=>{if(typeof Ce<"u"&&Ce.versions&&Ce.versions.node){const[t,o]=Ce.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Ce.getBuiltinModule(e)}return Oo(e)};wo("node:fs");let ko;const Ho=e=>(ko??=O(import.meta.url))(e),Se=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,No=e=>{if(typeof Se<"u"&&Se.versions&&Se.versions.node){const[t,o]=Se.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Se.getBuiltinModule(e)}return Ho(e)};No("node:fs/promises");let Lo;const Mo=e=>(Lo??=O(import.meta.url))(e),Oe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Bo=e=>{if(typeof Oe<"u"&&Oe.versions&&Oe.versions.node){const[t,o]=Oe.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Oe.getBuiltinModule(e)}return Mo(e)};Bo("node:fs");function lt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ft={},Je,gt;function Ye(){if(gt)return Je;gt=1;const e="[^\\\\/]",t=Symbol("unignore"),o="\\.",H="\\+",h="\\?",n="\\/",l="(?=.)",f="[^/]",a=`(?:${n}|$)`,R=`(?:^|${n})`,g=`${o}{1,2}${a}`,T=`(?!${o})`,C=`(?!${R}${g})`,A=`(?!${o}{0,1}${a})`,L=`(?!${g})`,te=`[^.${n}]`,W=`${f}*?`,Z="/",M={DOT_LITERAL:o,PLUS_LITERAL:H,QMARK_LITERAL:h,SLASH_LITERAL:n,ONE_CHAR:l,QMARK:f,END_ANCHOR:a,DOTS_SLASH:g,NO_DOT:T,NO_DOTS:C,NO_DOT_SLASH:A,NO_DOTS_SLASH:L,QMARK_NO_DOT:te,STAR:W,START_ANCHOR:R,SEP:Z},d={...M,SLASH_LITERAL:"[\\\\/]",QMARK:e,STAR:`${e}*?`,DOTS_SLASH:`${o}{1,2}(?:[\\\\/]|$)`,NO_DOT:`(?!${o})`,NO_DOTS:`(?!(?:^|[\\\\/])${o}{1,2}(?:[\\\\/]|$))`,NO_DOT_SLASH:`(?!${o}{0,1}(?:[\\\\/]|$))`,NO_DOTS_SLASH:`(?!${o}{1,2}(?:[\\\\/]|$))`,QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)",SEP:"\\"},b={__proto__:null,alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};return Je={DEFAULT_MAX_EXTGLOB_RECURSION:0,MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:b,UNIGNORE:t,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{__proto__:null,"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,extglobChars(s){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${s.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(s){return s===!0?d:M}},Je}var dt;function Ve(){return dt||(dt=1,(function(e){const{REGEX_BACKSLASH:t,REGEX_REMOVE_BACKSLASH:o,REGEX_SPECIAL_CHARS:H,REGEX_SPECIAL_CHARS_GLOBAL:h}=Ye();e.isObject=n=>n!==null&&typeof n=="object"&&!Array.isArray(n),e.hasRegexChars=n=>H.test(n),e.isRegexChar=n=>n.length===1&&e.hasRegexChars(n),e.escapeRegex=n=>n.replace(h,"\\$1"),e.toPosixSlashes=n=>n.replace(t,"/"),e.isWindows=()=>{if(typeof navigator<"u"&&navigator.platform){const n=navigator.platform.toLowerCase();return n==="win32"||n==="windows"}return process.platform?process.platform==="win32":!1},e.removeBackslashes=n=>n.replace(o,l=>l==="\\"?"":l),e.escapeLast=(n,l,f)=>{const a=n.lastIndexOf(l,f);return a===-1?n:n[a-1]==="\\"?e.escapeLast(n,l,a-1):`${n.slice(0,a)}\\${n.slice(a)}`},e.removePrefix=(n,l={})=>{let f=n;return f.startsWith("./")&&(f=f.slice(2),l.prefix="./"),f},e.wrapOutput=(n,l={},f={})=>{const a=f.contains?"":"^",R=f.contains?"":"$";let g=`${a}(?:${n})${R}`;return l.negated===!0&&(g=`(?:^(?!${g}).*$)`),g},e.basename=(n,{windows:l}={})=>{const f=n.split(l?/[\\/]/:"/"),a=f[f.length-1];return a===""?f[f.length-2]:a}})(ft)),ft}var et,ht;function Io(){if(ht)return et;ht=1;const e=Ve(),{CHAR_ASTERISK:t,CHAR_AT:o,CHAR_BACKWARD_SLASH:H,CHAR_COMMA:h,CHAR_DOT:n,CHAR_EXCLAMATION_MARK:l,CHAR_FORWARD_SLASH:f,CHAR_LEFT_CURLY_BRACE:a,CHAR_LEFT_PARENTHESES:R,CHAR_LEFT_SQUARE_BRACKET:g,CHAR_PLUS:T,CHAR_QUESTION_MARK:C,CHAR_RIGHT_CURLY_BRACE:A,CHAR_RIGHT_PARENTHESES:L,CHAR_RIGHT_SQUARE_BRACKET:te}=Ye(),W=M=>M===f||M===H,Z=M=>{M.isPrefix!==!0&&(M.depth=M.isGlobstar?1/0:1)};return et=(M,d)=>{const b=d||{},s=M.length-1,$=b.parts===!0||b.scanToEnd===!0,S=[],m=[],_=[];let y=M,K=-1,U=0,V=0,ae=!1,J=!1,z=!1,ee=!1,pe=!1,re=!1,oe=!1,D=!1,ne=!1,X=!1,ce=0,Q,v,k={value:"",depth:0,isGlob:!1};const j=()=>K>=s,i=()=>y.charCodeAt(K+1),I=()=>(Q=v,y.charCodeAt(++K));for(;K<s;){v=I();let q;if(v===H){oe=k.backslashes=!0,v=I(),v===a&&(re=!0);continue}if(re===!0||v===a){for(ce++;j()!==!0&&(v=I());){if(v===H){oe=k.backslashes=!0,I();continue}if(v===a){ce++;continue}if(re!==!0&&v===n&&(v=I())===n){if(ae=k.isBrace=!0,z=k.isGlob=!0,X=!0,$===!0)continue;break}if(re!==!0&&v===h){if(ae=k.isBrace=!0,z=k.isGlob=!0,X=!0,$===!0)continue;break}if(v===A&&(ce--,ce===0)){re=!1,ae=k.isBrace=!0,X=!0;break}}if($===!0)continue;break}if(v===f){if(S.push(K),m.push(k),k={value:"",depth:0,isGlob:!1},X===!0)continue;if(Q===n&&K===U+1){U+=2;continue}V=K+1;continue}if(b.noext!==!0&&(v===T||v===o||v===t||v===C||v===l)&&i()===R){if(z=k.isGlob=!0,ee=k.isExtglob=!0,X=!0,v===l&&K===U&&(ne=!0),$===!0){for(;j()!==!0&&(v=I());){if(v===H){oe=k.backslashes=!0,v=I();continue}if(v===L){z=k.isGlob=!0,X=!0;break}}continue}break}if(v===t){if(Q===t&&(pe=k.isGlobstar=!0),z=k.isGlob=!0,X=!0,$===!0)continue;break}if(v===C){if(z=k.isGlob=!0,X=!0,$===!0)continue;break}if(v===g){for(;j()!==!0&&(q=I());){if(q===H){oe=k.backslashes=!0,I();continue}if(q===te){J=k.isBracket=!0,z=k.isGlob=!0,X=!0;break}}if($===!0)continue;break}if(b.nonegate!==!0&&v===l&&K===U){D=k.negated=!0,U++;continue}if(b.noparen!==!0&&v===R){if(z=k.isGlob=!0,$===!0){for(;j()!==!0&&(v=I());){if(v===R){oe=k.backslashes=!0,v=I();continue}if(v===L){X=!0;break}}continue}break}if(z===!0){if(X=!0,$===!0)continue;break}}b.noext===!0&&(ee=!1,z=!1);let B=y,fe="",r="";U>0&&(fe=y.slice(0,U),y=y.slice(U),V-=U),B&&z===!0&&V>0?(B=y.slice(0,V),r=y.slice(V)):z===!0?(B="",r=y):B=y,B&&B!==""&&B!=="/"&&B!==y&&W(B.charCodeAt(B.length-1))&&(B=B.slice(0,-1)),b.unescape===!0&&(r&&(r=e.removeBackslashes(r)),B&&oe===!0&&(B=e.removeBackslashes(B)));const u={prefix:fe,input:M,start:U,base:B,glob:r,isBrace:ae,isBracket:J,isGlob:z,isExtglob:ee,isGlobstar:pe,negated:D,negatedExtglob:ne};if(b.tokens===!0&&(u.maxDepth=0,W(v)||m.push(k),u.tokens=m),b.parts===!0||b.tokens===!0){let q;for(let w=0;w<S.length;w++){const se=q?q+1:U,ue=S[w],Y=M.slice(se,ue);b.tokens&&(w===0&&U!==0?(m[w].isPrefix=!0,m[w].value=fe):m[w].value=Y,Z(m[w]),u.maxDepth+=m[w].depth),(w!==0||Y!=="")&&_.push(Y),q=ue}if(q&&q+1<M.length){const w=M.slice(q+1);_.push(w),b.tokens&&(m[m.length-1].value=w,Z(m[m.length-1]),u.maxDepth+=m[m.length-1].depth)}u.slashes=S,u.parts=_}return u},et}var tt,bt;function Po(){if(bt)return tt;bt=1;const e=Ye(),t=Ve(),{MAX_LENGTH:o,POSIX_REGEX_SOURCE:H,REGEX_NON_SPECIAL_CHARS:h,REGEX_SPECIAL_CHARS_BACKREF:n,REPLACEMENTS:l}=e,f=(d,b)=>typeof b.expandRange=="function"?b.expandRange(...d,b):(d.sort(),`[${d.join("-")}]`),a=(d,b)=>`Missing ${d}: "${b}" - use "\\\\${b}" to match literal characters`,R=d=>{const b=[];let s=0,$=0,S=0,m="",_=!1;for(const y of d){if(_===!0){m+=y,_=!1;continue}if(y==="\\"){m+=y,_=!0;continue}if(y==='"'){S=S===1?0:1,m+=y;continue}if(S===0){if(y==="[")s++;else if(y==="]"&&s>0)s--;else if(s===0){if(y==="(")$++;else if(y===")"&&$>0)$--;else if(y==="|"&&$===0){b.push(m),m="";continue}}}m+=y}return b.push(m),b},g=d=>{let b=!1;for(const s of d){if(b===!0){b=!1;continue}if(s==="\\"){b=!0;continue}if(/[?*+@!()[\]{}]/.test(s))return!1}return!0},T=d=>{let b=d.trim(),s=!0;for(;s===!0;)s=!1,/^@\([^\\()[\]{}|]+\)$/.test(b)&&(b=b.slice(2,-1),s=!0);if(g(b))return b.replace(/\\(.)/g,"$1")},C=d=>{const b=d.map(T).filter(Boolean);for(let s=0;s<b.length;s++)for(let $=s+1;$<b.length;$++){const S=b[s],m=b[$],_=S[0];if(!(!_||S!==_.repeat(S.length)||m!==_.repeat(m.length))&&(S===m||S.startsWith(m)||m.startsWith(S)))return!0}return!1},A=(d,b=!0)=>{if(d[0]!=="+"&&d[0]!=="*"||d[1]!=="(")return;let s=0,$=0,S=0,m=!1;for(let _=1;_<d.length;_++){const y=d[_];if(m===!0){m=!1;continue}if(y==="\\"){m=!0;continue}if(y==='"'){S=S===1?0:1;continue}if(S!==1){if(y==="["){s++;continue}if(y==="]"&&s>0){s--;continue}if(!(s>0)){if(y==="("){$++;continue}if(y===")"&&($--,$===0))return b===!0&&_!==d.length-1?void 0:{type:d[0],body:d.slice(2,_),end:_}}}}},L=d=>`${d.length===1?t.escapeRegex(d[0]):`[${d.map(b=>t.escapeRegex(b)).join("")}]`}*`,te=d=>{let b=0;const s=[];for(;b<d.length;){const $=A(d.slice(b),!1);if(!$||$.type!=="*")return;const S=R($.body).map(_=>_.trim());if(S.length!==1)return;const m=T(S[0]);if(!m||m.length!==1)return;s.push(m),b+=$.end+1}if(!(s.length<1))return s},W=d=>{let b=0,s=d.trim(),$=A(s);for(;$;)b++,s=$.body.trim(),$=A(s);return b},Z=(d,b)=>{if(b.maxExtglobRecursion===!1)return{risky:!1};const s=typeof b.maxExtglobRecursion=="number"?b.maxExtglobRecursion:e.DEFAULT_MAX_EXTGLOB_RECURSION,$=R(d).map(y=>y.trim());if($.length>1&&($.some(y=>y==="")||$.some(y=>/^[*?]+$/.test(y))||C($)))return{risky:!0};const S=[];let m=!1,_=!0;for(const y of $){const K=te(y);if(K){m=!0,S.push(...K);continue}const U=T(y);if(U&&U.length===1){S.push(U);continue}if(_=!1,W(y)>s)return{risky:!0}}return m?_?{risky:!0,safeOutput:L([...new Set(S)])}:{risky:!0}:{risky:!1}},M=(d,b)=>{if(typeof d!="string")throw new TypeError("Expected a string");d=l[d]||d;const s={...b},$=typeof s.maxLength=="number"?Math.min(o,s.maxLength):o;let S=d.length;if(S>$)throw new SyntaxError(`Input length: ${S}, exceeds maximum allowed length: ${$}`);const m={type:"bos",value:"",output:s.prepend||""},_=[m],y=s.capture?"":"?:",K=e.globChars(s.windows),U=e.extglobChars(K),{DOT_LITERAL:V,PLUS_LITERAL:ae,SLASH_LITERAL:J,ONE_CHAR:z,DOTS_SLASH:ee,NO_DOT:pe,NO_DOT_SLASH:re,NO_DOTS_SLASH:oe,QMARK:D,QMARK_NO_DOT:ne,STAR:X,START_ANCHOR:ce}=K,Q=c=>`(${y}(?:(?!${ce}${c.dot?ee:V}).)*?)`,v=s.dot?"":pe,k=s.dot?D:ne;let j=s.bash===!0?Q(s):X;s.capture&&(j=`(${j})`),typeof s.noext=="boolean"&&(s.noextglob=s.noext);const i={input:d,index:-1,start:0,dot:s.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:_};d=t.removePrefix(d,i),S=d.length;const I=[],B=[],fe=[];let r=m,u;const q=()=>i.index===S-1,w=i.peek=(c=1)=>d[i.index+c],se=i.advance=()=>d[++i.index]||"",ue=()=>d.slice(i.index+1),Y=(c="",P=0)=>{i.consumed+=c,i.index+=P},qe=c=>{i.output+=c.output!=null?c.output:c.value,Y(c.value)},wt=()=>{let c=1;for(;w()==="!"&&(w(2)!=="("||w(3)==="?");)se(),i.start++,c++;return c%2===0?!1:(i.negated=!0,i.start++,!0)},We=c=>{i[c]++,fe.push(c)},ge=c=>{i[c]--,fe.pop()},E=c=>{if(r.type==="globstar"){const P=i.braces>0&&(c.type==="comma"||c.type==="brace"),p=c.extglob===!0||I.length&&(c.type==="pipe"||c.type==="paren");c.type!=="slash"&&c.type!=="paren"&&!P&&!p&&(i.output=i.output.slice(0,-r.output.length),r.type="star",r.value="*",r.output=j,i.output+=r.output)}if(I.length&&c.type!=="paren"&&(I[I.length-1].inner+=c.value),(c.value||c.output)&&qe(c),r&&r.type==="text"&&c.type==="text"){r.output=(r.output||r.value)+c.value,r.value+=c.value;return}c.prev=r,_.push(c),r=c},Ze=(c,P)=>{const p={...U[P],conditions:1,inner:""};p.prev=r,p.parens=i.parens,p.output=i.output,p.startIndex=i.index,p.tokensIndex=_.length;const x=(s.capture?"(":"")+p.open;We("parens"),E({type:c,value:P,output:i.output?"":z}),E({type:"paren",extglob:!0,value:se(),output:x}),I.push(p)},kt=c=>{const P=d.slice(c.startIndex,i.index+1),p=d.slice(c.startIndex+2,i.index),x=Z(p,s);if((c.type==="plus"||c.type==="star")&&x.risky){const N=x.safeOutput?(c.output?"":z)+(s.capture?`(${x.safeOutput})`:x.safeOutput):void 0,ie=_[c.tokensIndex];ie.type="text",ie.value=P,ie.output=N||t.escapeRegex(P);for(let le=c.tokensIndex+1;le<_.length;le++)_[le].value="",_[le].output="",delete _[le].suffix;i.output=c.output+ie.output,i.backtrack=!0,E({type:"paren",extglob:!0,value:u,output:""}),ge("parens");return}let G=c.close+(s.capture?")":""),F;if(c.type==="negate"){let N=j;if(c.inner&&c.inner.length>1&&c.inner.includes("/")&&(N=Q(s)),(N!==j||q()||/^\)+$/.test(ue()))&&(G=c.close=`)$))${N}`),c.inner.includes("*")&&(F=ue())&&/^\.[^\\/.]+$/.test(F)){const ie=M(F,{...b,fastpaths:!1}).output;G=c.close=`)${ie})${N})`}c.prev.type==="bos"&&(i.negatedExtglob=!0)}E({type:"paren",extglob:!0,value:u,output:G}),ge("parens")};if(s.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(d)){let c=!1,P=d.replace(n,(p,x,G,F,N,ie)=>F==="\\"?(c=!0,p):F==="?"?x?x+F+(N?D.repeat(N.length):""):ie===0?k+(N?D.repeat(N.length):""):D.repeat(G.length):F==="."?V.repeat(G.length):F==="*"?x?x+F+(N?j:""):j:x?p:`\\${p}`);return c===!0&&(s.unescape===!0?P=P.replace(/\\/g,""):P=P.replace(/\\+/g,p=>p.length%2===0?"\\\\":p?"\\":"")),P===d&&s.contains===!0?(i.output=d,i):(i.output=t.wrapOutput(P,i,b),i)}for(;!q();){if(u=se(),u==="\0")continue;if(u==="\\"){const p=w();if(p==="/"&&s.bash!==!0||p==="."||p===";")continue;if(!p){u+="\\",E({type:"text",value:u});continue}const x=/^\\+/.exec(ue());let G=0;if(x&&x[0].length>2&&(G=x[0].length,i.index+=G,G%2!==0&&(u+="\\")),s.unescape===!0?u=se():u+=se(),i.brackets===0){E({type:"text",value:u});continue}}if(i.brackets>0&&(u!=="]"||r.value==="["||r.value==="[^")){if(s.posix!==!1&&u===":"){const p=r.value.slice(1);if(p.includes("[")&&(r.posix=!0,p.includes(":"))){const x=r.value.lastIndexOf("["),G=r.value.slice(0,x),F=r.value.slice(x+2),N=H[F];if(N){r.value=G+N,i.backtrack=!0,se(),!m.output&&_.indexOf(r)===1&&(m.output=z);continue}}}(u==="["&&w()!==":"||u==="-"&&w()==="]")&&(u=`\\${u}`),u==="]"&&(r.value==="["||r.value==="[^")&&(u=`\\${u}`),s.posix===!0&&u==="!"&&r.value==="["&&(u="^"),r.value+=u,qe({value:u});continue}if(i.quotes===1&&u!=='"'){u=t.escapeRegex(u),r.value+=u,qe({value:u});continue}if(u==='"'){i.quotes=i.quotes===1?0:1,s.keepQuotes===!0&&E({type:"text",value:u});continue}if(u==="("){We("parens"),E({type:"paren",value:u});continue}if(u===")"){if(i.parens===0&&s.strictBrackets===!0)throw new SyntaxError(a("opening","("));const p=I[I.length-1];if(p&&i.parens===p.parens+1){kt(I.pop());continue}E({type:"paren",value:u,output:i.parens?")":"\\)"}),ge("parens");continue}if(u==="["){if(s.nobracket===!0||!ue().includes("]")){if(s.nobracket!==!0&&s.strictBrackets===!0)throw new SyntaxError(a("closing","]"));u=`\\${u}`}else We("brackets");E({type:"bracket",value:u});continue}if(u==="]"){if(s.nobracket===!0||r&&r.type==="bracket"&&r.value.length===1){E({type:"text",value:u,output:`\\${u}`});continue}if(i.brackets===0){if(s.strictBrackets===!0)throw new SyntaxError(a("opening","["));E({type:"text",value:u,output:`\\${u}`});continue}ge("brackets");const p=r.value.slice(1);if(r.posix!==!0&&p[0]==="^"&&!p.includes("/")&&(u=`/${u}`),r.value+=u,qe({value:u}),s.literalBrackets===!1||t.hasRegexChars(p))continue;const x=t.escapeRegex(r.value);if(i.output=i.output.slice(0,-r.value.length),s.literalBrackets===!0){i.output+=x,r.value=x;continue}r.value=`(${y}${x}|${r.value})`,i.output+=r.value;continue}if(u==="{"&&s.nobrace!==!0){We("braces");const p={type:"brace",value:u,output:"(",outputIndex:i.output.length,tokensIndex:i.tokens.length};B.push(p),E(p);continue}if(u==="}"){const p=B[B.length-1];if(s.nobrace===!0||!p){E({type:"text",value:u,output:u});continue}let x=")";if(p.dots===!0){const G=_.slice(),F=[];for(let N=G.length-1;N>=0&&(_.pop(),G[N].type!=="brace");N--)G[N].type!=="dots"&&F.unshift(G[N].value);x=f(F,s),i.backtrack=!0}if(p.comma!==!0&&p.dots!==!0){const G=i.output.slice(0,p.outputIndex),F=i.tokens.slice(p.tokensIndex);p.value=p.output="\\{",u=x="\\}",i.output=G;for(const N of F)i.output+=N.output||N.value}E({type:"brace",value:u,output:x}),ge("braces"),B.pop();continue}if(u==="|"){I.length>0&&I[I.length-1].conditions++,E({type:"text",value:u});continue}if(u===","){let p=u;const x=B[B.length-1];x&&fe[fe.length-1]==="braces"&&(x.comma=!0,p="|"),E({type:"comma",value:u,output:p});continue}if(u==="/"){if(r.type==="dot"&&i.index===i.start+1){i.start=i.index+1,i.consumed="",i.output="",_.pop(),r=m;continue}E({type:"slash",value:u,output:J});continue}if(u==="."){if(i.braces>0&&r.type==="dot"){r.value==="."&&(r.output=V);const p=B[B.length-1];r.type="dots",r.output+=u,r.value+=u,p.dots=!0;continue}if(i.braces+i.parens===0&&r.type!=="bos"&&r.type!=="slash"){E({type:"text",value:u,output:V});continue}E({type:"dot",value:u,output:V});continue}if(u==="?"){if(!(r&&r.value==="(")&&s.noextglob!==!0&&w()==="("&&w(2)!=="?"){Ze("qmark",u);continue}if(r&&r.type==="paren"){const p=w();let x=u;(r.value==="("&&!/[!=<:]/.test(p)||p==="<"&&!/<([!=]|\w+>)/.test(ue()))&&(x=`\\${u}`),E({type:"text",value:u,output:x});continue}if(s.dot!==!0&&(r.type==="slash"||r.type==="bos")){E({type:"qmark",value:u,output:ne});continue}E({type:"qmark",value:u,output:D});continue}if(u==="!"){if(s.noextglob!==!0&&w()==="("&&(w(2)!=="?"||!/[!=<:]/.test(w(3)))){Ze("negate",u);continue}if(s.nonegate!==!0&&i.index===0){wt();continue}}if(u==="+"){if(s.noextglob!==!0&&w()==="("&&w(2)!=="?"){Ze("plus",u);continue}if(r&&r.value==="("||s.regex===!1){E({type:"plus",value:u,output:ae});continue}if(r&&(r.type==="bracket"||r.type==="paren"||r.type==="brace")||i.parens>0){E({type:"plus",value:u});continue}E({type:"plus",value:ae});continue}if(u==="@"){if(s.noextglob!==!0&&w()==="("&&w(2)!=="?"){E({type:"at",extglob:!0,value:u,output:""});continue}E({type:"text",value:u});continue}if(u!=="*"){(u==="$"||u==="^")&&(u=`\\${u}`);const p=h.exec(ue());p&&(u+=p[0],i.index+=p[0].length),E({type:"text",value:u});continue}if(r&&(r.type==="globstar"||r.star===!0)){r.type="star",r.star=!0,r.value+=u,r.output=j,i.backtrack=!0,i.globstar=!0,Y(u);continue}let c=ue();if(s.noextglob!==!0&&/^\([^?]/.test(c)){Ze("star",u);continue}if(r.type==="star"){if(s.noglobstar===!0){Y(u);continue}const p=r.prev,x=p.prev,G=p.type==="slash"||p.type==="bos",F=x&&(x.type==="star"||x.type==="globstar");if(s.bash===!0&&(!G||c[0]&&c[0]!=="/")){E({type:"star",value:u,output:""});continue}const N=i.braces>0&&(p.type==="comma"||p.type==="brace"),ie=I.length&&(p.type==="pipe"||p.type==="paren");if(!G&&p.type!=="paren"&&!N&&!ie){E({type:"star",value:u,output:""});continue}for(;c.slice(0,3)==="/**";){const le=d[i.index+4];if(le&&le!=="/")break;c=c.slice(3),Y("/**",3)}if(p.type==="bos"&&q()){r.type="globstar",r.value+=u,r.output=Q(s),i.output=r.output,i.globstar=!0,Y(u);continue}if(p.type==="slash"&&p.prev.type!=="bos"&&!F&&q()){i.output=i.output.slice(0,-(p.output+r.output).length),p.output=`(?:${p.output}`,r.type="globstar",r.output=Q(s)+(s.strictSlashes?")":"|$)"),r.value+=u,i.globstar=!0,i.output+=p.output+r.output,Y(u);continue}if(p.type==="slash"&&p.prev.type!=="bos"&&c[0]==="/"){const le=c[1]!==void 0?"|$":"";i.output=i.output.slice(0,-(p.output+r.output).length),p.output=`(?:${p.output}`,r.type="globstar",r.output=`${Q(s)}${J}|${J}${le})`,r.value+=u,i.output+=p.output+r.output,i.globstar=!0,Y(u+se()),E({type:"slash",value:"/",output:""});continue}if(p.type==="bos"&&c[0]==="/"){r.type="globstar",r.value+=u,r.output=`(?:^|${J}|${Q(s)}${J})`,i.output=r.output,i.globstar=!0,Y(u+se()),E({type:"slash",value:"/",output:""});continue}if(N&&c[0]==="/"){r.type="globstar",r.value+=u,r.output=`(?:^|${J}|${Q(s)}${J})`,i.output+=r.output,i.globstar=!0,Y(u+se()),E({type:"slash",value:"/",output:""});continue}i.output=i.output.slice(0,-r.output.length),r.type="globstar",r.output=Q(s),r.value+=u,i.output+=r.output,i.globstar=!0,Y(u);continue}const P={type:"star",value:u,output:j};if(s.bash===!0){P.output=".*?",(r.type==="bos"||r.type==="slash")&&(P.output=v+P.output),E(P);continue}if(r&&(r.type==="bracket"||r.type==="paren")&&s.regex===!0){P.output=u,E(P);continue}(i.index===i.start||r.type==="slash"||r.type==="dot")&&(r.type==="dot"?(i.output+=re,r.output+=re):s.dot===!0?(i.output+=oe,r.output+=oe):(i.output+=v,r.output+=v),w()!=="*"&&(i.output+=z,r.output+=z)),E(P)}for(;i.brackets>0;){if(s.strictBrackets===!0)throw new SyntaxError(a("closing","]"));i.output=t.escapeLast(i.output,"["),ge("brackets")}for(;i.parens>0;){if(s.strictBrackets===!0)throw new SyntaxError(a("closing",")"));i.output=t.escapeLast(i.output,"("),ge("parens")}for(;i.braces>0;){if(s.strictBrackets===!0)throw new SyntaxError(a("closing","}"));i.output=t.escapeLast(i.output,"{"),ge("braces")}if(s.strictSlashes!==!0&&(r.type==="star"||r.type==="bracket")&&E({type:"maybe_slash",value:"",output:`${J}?`}),i.backtrack===!0){i.output="";for(const c of i.tokens)i.output+=c.output!=null?c.output:c.value,c.suffix&&(i.output+=c.suffix)}return i};return M.fastpaths=(d,b)=>{const s={...b},$=typeof s.maxLength=="number"?Math.min(o,s.maxLength):o,S=d.length;if(S>$)throw new SyntaxError(`Input length: ${S}, exceeds maximum allowed length: ${$}`);d=l[d]||d;const{DOT_LITERAL:m,SLASH_LITERAL:_,ONE_CHAR:y,DOTS_SLASH:K,NO_DOT:U,NO_DOTS:V,NO_DOTS_SLASH:ae,STAR:J,START_ANCHOR:z}=e.globChars(s.windows),ee=s.dot?V:U,pe=s.dot?ae:U,re=s.capture?"":"?:",oe={negated:!1,prefix:""};let D=s.bash===!0?".*?":J;s.capture&&(D=`(${D})`);const ne=v=>v.noglobstar===!0?D:`(${re}(?:(?!${z}${v.dot?K:m}).)*?)`,X=v=>{switch(v){case"*":return`${ee}${y}${D}`;case".*":return`${m}${y}${D}`;case"*.*":return`${ee}${D}${m}${y}${D}`;case"*/*":return`${ee}${D}${_}${y}${pe}${D}`;case"**":return ee+ne(s);case"**/*":return`(?:${ee}${ne(s)}${_})?${pe}${y}${D}`;case"**/*.*":return`(?:${ee}${ne(s)}${_})?${pe}${D}${m}${y}${D}`;case"**/.*":return`(?:${ee}${ne(s)}${_})?${m}${y}${D}`;default:{const k=/^(.*?)\.(\w+)$/.exec(v);if(!k)return;const j=X(k[1]);return j?j+m+k[2]:void 0}}},ce=t.removePrefix(d,oe);let Q=X(ce);return Q&&s.strictSlashes!==!0&&(Q+=`${_}?`),Q},tt=M,tt}var ot,mt;function Do(){if(mt)return ot;mt=1;const e=Io(),t=Po(),o=Ve(),H=Ye(),h=l=>l&&typeof l=="object"&&!Array.isArray(l),n=(l,f,a=!1)=>{if(Array.isArray(l)){const W=l.map(Z=>n(Z,f,a));return Z=>{for(const M of W){const d=M(Z);if(d)return d}return!1}}const R=h(l)&&l.tokens&&l.input;if(l===""||typeof l!="string"&&!R)throw new TypeError("Expected pattern to be a non-empty string");const g=f||{},T=g.windows,C=R?n.compileRe(l,f):n.makeRe(l,f,!1,!0),A=C.state;delete C.state;let L=()=>!1;if(g.ignore){const W={...f,ignore:null,onMatch:null,onResult:null};L=n(g.ignore,W,a)}const te=(W,Z=!1)=>{const{isMatch:M,match:d,output:b}=n.test(W,C,f,{glob:l,posix:T}),s={glob:l,state:A,regex:C,posix:T,input:W,output:b,match:d,isMatch:M};if(typeof g.onResult=="function"&&g.onResult(s),M===!1)return s.isMatch=!1,Z?s:!1;e:if(L(W)){if(typeof g.onIgnore=="function"&&g.onIgnore(s)===H.UNIGNORE){s.isMatch=!0;break e}return s.isMatch=!1,Z?s:!1}return typeof g.onMatch=="function"&&g.onMatch(s),Z?s:!0};return a&&(te.state=A),te};return n.test=(l,f,a,{glob:R,posix:g}={})=>{if(typeof l!="string")throw new TypeError("Expected input to be a string");if(l==="")return{isMatch:!1,output:""};const T=a||{},C=T.format||(g?o.toPosixSlashes:null);let A=l===R,L=A&&C?C(l):l;return A===!1&&(L=C?C(l):l,A=L===R),(A===!1||T.capture===!0)&&(T.matchBase===!0||T.basename===!0?A=n.matchBase(l,f,a,g):A=f.exec(L)),{isMatch:!!A,match:A,output:L}},n.matchBase=(l,f,a,R=a&&a.windows)=>(f instanceof RegExp?f:n.makeRe(f,a)).test(o.basename(l,{windows:R})),n.isMatch=(l,f,a)=>n(f,a)(l),n.parse=(l,f)=>Array.isArray(l)?l.map(a=>n.parse(a,f)):t(l,{...f,fastpaths:!1}),n.scan=(l,f)=>e(l,f),n.compileRe=(l,f,a=!1,R=!1)=>{if(a===!0)return l.output;const g=f||{},T=g.contains?"":"^",C=g.contains?"":"$";let A=`${T}(?:${l.output})${C}`;l&&l.negated===!0&&(A=`^(?!${A}).*$`);const L=n.toRegex(A,f);return R===!0&&(L.state=l),L},n.makeRe=(l,f={},a=!1,R=!1)=>{if(!l||typeof l!="string")throw new TypeError("Expected a non-empty string");let g={negated:!1,fastpaths:!0};return f.fastpaths!==!1&&(l[0]==="."||l[0]==="*")&&(g.output=t.fastpaths(l,f)),g.output||(g=t(l,f)),n.compileRe(g,f,a,R)},n.toRegex=(l,f)=>{try{const a=f||{};return new RegExp(l,a.flags||(a.nocase?"i":""))}catch(a){if(f&&f.debug===!0)throw a;return/$^/}},n.constants=H,ot=n,ot}var st,yt;function Go(){if(yt)return st;yt=1;const e=Do(),t=Ve();function o(H,h,n=!1){return h&&(h.windows===null||h.windows===void 0)&&(h={...h,windows:t.isWindows()}),e(H,h,n)}return Object.assign(o,e),st=o,st}var Uo=Go();lt(Uo);let zo;const Fo=e=>(zo??=O(import.meta.url))(e),we=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Qe=e=>{if(typeof we<"u"&&we.versions&&we.versions.node){const[t,o]=we.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return we.getBuiltinModule(e)}return Fo(e)};Qe("fs");Qe("fs");Qe("path");Qe("url");const{createRequire:Ko}=Qe("module");var vt=Ko(import.meta.url);try{vt.resolve("picomatch"),vt("picomatch")}catch{}var rt,$t;function jo(){if($t)return rt;$t=1;/*!
2
+ * is-extglob <https://github.com/jonschlinkert/is-extglob>
3
+ *
4
+ * Copyright (c) 2014-2016, Jon Schlinkert.
5
+ * Licensed under the MIT License.
6
+ */return rt=function(e){if(typeof e!="string"||e==="")return!1;for(var t;t=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(t[2])return!0;e=e.slice(t.index+t[0].length)}return!1},rt}var nt,_t;function Et(){if(_t)return nt;_t=1;/*!
7
+ * is-glob <https://github.com/jonschlinkert/is-glob>
8
+ *
9
+ * Copyright (c) 2014-2017, Jon Schlinkert.
10
+ * Released under the MIT License.
11
+ */var e=jo(),t={"{":"}","(":")","[":"]"},o=function(h){if(h[0]==="!")return!0;for(var n=0,l=-2,f=-2,a=-2,R=-2,g=-2;n<h.length;){if(h[n]==="*"||h[n+1]==="?"&&/[\].+)]/.test(h[n])||f!==-1&&h[n]==="["&&h[n+1]!=="]"&&(f<n&&(f=h.indexOf("]",n)),f>n&&(g===-1||g>f||(g=h.indexOf("\\",n),g===-1||g>f)))||a!==-1&&h[n]==="{"&&h[n+1]!=="}"&&(a=h.indexOf("}",n),a>n&&(g=h.indexOf("\\",n),g===-1||g>a))||R!==-1&&h[n]==="("&&h[n+1]==="?"&&/[:!=]/.test(h[n+2])&&h[n+3]!==")"&&(R=h.indexOf(")",n),R>n&&(g=h.indexOf("\\",n),g===-1||g>R))||l!==-1&&h[n]==="("&&h[n+1]!=="|"&&(l<n&&(l=h.indexOf("|",n)),l!==-1&&h[l+1]!==")"&&(R=h.indexOf(")",l),R>l&&(g=h.indexOf("\\",l),g===-1||g>R))))return!0;if(h[n]==="\\"){var T=h[n+1];n+=2;var C=t[T];if(C){var A=h.indexOf(C,n);A!==-1&&(n=A+1)}if(h[n]==="!")return!0}else n++}return!1},H=function(h){if(h[0]==="!")return!0;for(var n=0;n<h.length;){if(/[*?{}()[\]]/.test(h[n]))return!0;if(h[n]==="\\"){var l=h[n+1];n+=2;var f=t[l];if(f){var a=h.indexOf(f,n);a!==-1&&(n=a+1)}if(h[n]==="!")return!0}else n++}return!1};return nt=function(h,n){if(typeof h!="string"||h==="")return!1;if(e(h))return!0;var l=o;return n&&n.strict===!1&&(l=H),l(h)},nt}let Xo;const Qo=e=>(Xo??=O(import.meta.url))(e),ke=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Tt=e=>{if(typeof ke<"u"&&ke.versions&&ke.versions.node){const[t,o]=ke.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return ke.getBuiltinModule(e)}return Qo(e)},qo=Tt("path"),Wo=Tt("os");var ut,Rt;function Zo(){if(Rt)return ut;Rt=1;var e=Et(),t=qo.posix.dirname,o=Wo.platform()==="win32",H="/",h=/\\/g,n=/\\([!*?|[\](){}])/g;ut=function(a,R){var g=Object.assign({flipBackslashes:!0},R);g.flipBackslashes&&o&&a.indexOf(H)<0&&(a=a.replace(h,H)),l(a)&&(a+=H),a+="a";do a=t(a);while(f(a));return a.replace(n,"$1")};function l(a){var R=a.slice(-1),g;switch(R){case"}":g="{";break;case"]":g="[";break;default:return!1}var T=a.indexOf(g);return T<0?!1:a.slice(T+1,-1).includes(H)}function f(a){return/\([^()]+$/.test(a)||a[0]==="{"||a[0]==="["||/[^\\][{[]/.test(a)?!0:e(a)}return ut}var Yo=Zo();lt(Yo);let Vo;const Jo=e=>(Vo??=O(import.meta.url))(e),He=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,es=e=>{if(typeof He<"u"&&He.versions&&He.versions.node){const[t,o]=He.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return He.getBuiltinModule(e)}return Jo(e)};es("node:fs/promises");let ts;const os=e=>(ts??=O(import.meta.url))(e),Ne=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ss=e=>{if(typeof Ne<"u"&&Ne.versions&&Ne.versions.node){const[t,o]=Ne.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Ne.getBuiltinModule(e)}return os(e)};ss("node:fs");var rs=Et();lt(rs);let ns;const us=e=>(ns??=O(import.meta.url))(e),Le=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,xt=e=>{if(typeof Le<"u"&&Le.versions&&Le.versions.node){const[t,o]=Le.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Le.getBuiltinModule(e)}return us(e)};xt("node:fs/promises");xt("node:fs");let is=class extends Error{constructor(t){super(`ENOENT: ${t}`)}get code(){return"ENOENT"}set code(t){throw new Error("Cannot overwrite code ENOENT")}get name(){return"NotFoundError"}set name(t){throw new Error("Cannot overwrite name of NotFoundError")}},ls=class extends Error{constructor(t){super(`EPERM: Operation not permitted, ${t}`)}get code(){return"EPERM"}set code(t){throw new Error("Cannot overwrite code EPERM")}get name(){return"PermissionError"}set name(t){throw new Error("Cannot overwrite name of PermissionError")}};const as=(e,t)=>{const o=e?.code;return o==="ENOENT"?new is(`no such file or directory, open '${t}'`):o==="EACCES"||o==="EPERM"?new ls(`unable to read the non-readable file: ${t}`):e};let ps;const cs=e=>(ps??=O(import.meta.url))(e),Me=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Ct=e=>{if(typeof Me<"u"&&Me.versions&&Me.versions.node){const[t,o]=Me.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Me.getBuiltinModule(e)}return cs(e)},{readFile:fs}=Ct("node:fs/promises"),{unzip:gs,brotliDecompress:ds}=Ct("node:zlib"),hs={brotli:ds,gzip:gs,none:(e,t)=>{t(null,e)}},Js=async(e,t)=>{Qt(e),e=Xt(e);const{buffer:o,compression:H,encoding:h,flag:n}=t??{};let l;try{l=await fs(e,n?{flag:n}:{})}catch(f){throw as(f,e)}return await new Promise((f,a)=>{hs[H??"none"](l,(R,g)=>{R?a(R):f(o?g:g.toString(h??"utf8"))})})};let bs;const ms=e=>(bs??=O(import.meta.url))(e),Be=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,St=e=>{if(typeof Be<"u"&&Be.versions&&Be.versions.node){const[t,o]=Be.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Be.getBuiltinModule(e)}return ms(e)};St("node:fs");St("node:zlib");let ys;const vs=e=>(ys??=O(import.meta.url))(e),Ie=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Ot=e=>{if(typeof Ie<"u"&&Ie.versions&&Ie.versions.node){const[t,o]=Ie.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Ie.getBuiltinModule(e)}return vs(e)};Ot("node:fs");Ot("node:fs/promises");let $s;const _s=e=>($s??=O(import.meta.url))(e),Pe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Rs=e=>{if(typeof Pe<"u"&&Pe.versions&&Pe.versions.node){const[t,o]=Pe.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Pe.getBuiltinModule(e)}return _s(e)};Rs("node:fs");let As;const Es=e=>(As??=O(import.meta.url))(e),De=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Ts=e=>{if(typeof De<"u"&&De.versions&&De.versions.node){const[t,o]=De.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return De.getBuiltinModule(e)}return Es(e)};Ts("node:fs/promises");let xs;const Cs=e=>(xs??=O(import.meta.url))(e),Ge=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Ss=e=>{if(typeof Ge<"u"&&Ge.versions&&Ge.versions.node){const[t,o]=Ge.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Ge.getBuiltinModule(e)}return Cs(e)};Ss("node:fs");let Os;const ws=e=>(Os??=O(import.meta.url))(e),Ue=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ks=e=>{if(typeof Ue<"u"&&Ue.versions&&Ue.versions.node){const[t,o]=Ue.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Ue.getBuiltinModule(e)}return ws(e)};ks("node:crypto");new TextEncoder;let Hs;const Ns=e=>(Hs??=O(import.meta.url))(e),ze=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Ls=e=>{if(typeof ze<"u"&&ze.versions&&ze.versions.node){const[t,o]=ze.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return ze.getBuiltinModule(e)}return Ns(e)};Ls("node:fs/promises");let Ms;const Bs=e=>(Ms??=O(import.meta.url))(e),Fe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Is=e=>{if(typeof Fe<"u"&&Fe.versions&&Fe.versions.node){const[t,o]=Fe.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Fe.getBuiltinModule(e)}return Bs(e)};Is("node:fs");let Ps;const Ds=e=>(Ps??=O(import.meta.url))(e),Ke=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Gs=e=>{if(typeof Ke<"u"&&Ke.versions&&Ke.versions.node){const[t,o]=Ke.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Ke.getBuiltinModule(e)}return Ds(e)};Gs("node:fs/promises");let Us;const zs=e=>(Us??=O(import.meta.url))(e),je=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Fs=e=>{if(typeof je<"u"&&je.versions&&je.versions.node){const[t,o]=je.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return je.getBuiltinModule(e)}return zs(e)};Fs("node:fs");let Ks;const js=e=>(Ks??=O(import.meta.url))(e),Xe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,at=e=>{if(typeof Xe<"u"&&Xe.versions&&Xe.versions.node){const[t,o]=Xe.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return Xe.getBuiltinModule(e)}return js(e)},Xs=at("fs"),Qs=at("os"),qs=at("path");var it={},At;function Ws(){if(At)return it;At=1;var e=Object.defineProperty,t=(g,T)=>e(g,"name",{value:T,configurable:!0}),o=Xs,H=Qs,h=qs;const n=t(g=>{let T="";for(let C=0;C<g.length;C+=1){const A=g[C],L=A.toUpperCase();T+=A===L?A.toLowerCase():L}return T},"invertCase"),l=new Map,f=t((g,T)=>{const C=h.join(g,`.is-fs-case-sensitive-test-${process.pid}`);try{return T.writeFileSync(C,""),!T.existsSync(n(C))}finally{try{T.unlinkSync(C)}catch{}}},"checkDirectoryCaseWithWrite"),a=t((g,T,C)=>{try{return f(g,C)}catch(A){if(T===void 0)return f(H.tmpdir(),C);throw A}},"checkDirectoryCaseWithFallback"),R=t((g,T=o,C=!0)=>{const A=g??process.cwd();if(C&&l.has(A))return l.get(A);let L;const te=n(A);return te!==A&&T.existsSync(A)?L=!T.existsSync(te):L=a(A,g,T),C&&l.set(A,L),L},"isFsCaseSensitive");return it.isFsCaseSensitive=R,it}Ws();export{Js as q};