@rovela-ai/sdk 0.21.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/api/email-sending.d.ts +24 -0
- package/dist/admin/api/email-sending.d.ts.map +1 -0
- package/dist/admin/api/email-sending.js +155 -0
- package/dist/admin/api/email-sending.js.map +1 -0
- package/dist/admin/api/index.d.ts +2 -0
- package/dist/admin/api/index.d.ts.map +1 -1
- package/dist/admin/api/index.js +4 -0
- package/dist/admin/api/index.js.map +1 -1
- package/dist/admin/api/integrations-brevo.d.ts +24 -0
- package/dist/admin/api/integrations-brevo.d.ts.map +1 -0
- package/dist/admin/api/integrations-brevo.js +286 -0
- package/dist/admin/api/integrations-brevo.js.map +1 -0
- package/dist/admin/api/integrations.d.ts +2 -0
- package/dist/admin/api/integrations.d.ts.map +1 -1
- package/dist/admin/api/integrations.js +1 -0
- package/dist/admin/api/integrations.js.map +1 -1
- package/dist/admin/api/products.d.ts.map +1 -1
- package/dist/admin/api/products.js +4 -0
- package/dist/admin/api/products.js.map +1 -1
- package/dist/admin/api/settings.d.ts.map +1 -1
- package/dist/admin/api/settings.js +4 -1
- package/dist/admin/api/settings.js.map +1 -1
- package/dist/admin/api/tax-zones.d.ts.map +1 -1
- package/dist/admin/api/tax-zones.js +7 -0
- package/dist/admin/api/tax-zones.js.map +1 -1
- package/dist/admin/components/EmailsManager.d.ts.map +1 -1
- package/dist/admin/components/EmailsManager.js +2 -1
- package/dist/admin/components/EmailsManager.js.map +1 -1
- package/dist/admin/components/IntegrationsManager.d.ts.map +1 -1
- package/dist/admin/components/IntegrationsManager.js +98 -2
- package/dist/admin/components/IntegrationsManager.js.map +1 -1
- package/dist/admin/components/OrderDetails.d.ts.map +1 -1
- package/dist/admin/components/OrderDetails.js +5 -1
- package/dist/admin/components/OrderDetails.js.map +1 -1
- package/dist/admin/components/ProductForm.d.ts.map +1 -1
- package/dist/admin/components/ProductForm.js +36 -1
- package/dist/admin/components/ProductForm.js.map +1 -1
- package/dist/admin/components/TaxSettings.d.ts.map +1 -1
- package/dist/admin/components/TaxSettings.js +16 -4
- package/dist/admin/components/TaxSettings.js.map +1 -1
- package/dist/admin/components/emails/EmailSendingPanel.d.ts +2 -0
- package/dist/admin/components/emails/EmailSendingPanel.d.ts.map +1 -0
- package/dist/admin/components/emails/EmailSendingPanel.js +131 -0
- package/dist/admin/components/emails/EmailSendingPanel.js.map +1 -0
- package/dist/admin/integrations/registry.d.ts +2 -0
- package/dist/admin/integrations/registry.d.ts.map +1 -1
- package/dist/admin/integrations/registry.js +41 -0
- package/dist/admin/integrations/registry.js.map +1 -1
- package/dist/admin/types.d.ts +15 -0
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/checkout/api/manual.d.ts.map +1 -1
- package/dist/checkout/api/manual.js +7 -0
- package/dist/checkout/api/manual.js.map +1 -1
- package/dist/checkout/api/shipping.d.ts +0 -18
- package/dist/checkout/api/shipping.d.ts.map +1 -1
- package/dist/checkout/api/shipping.js +33 -3
- package/dist/checkout/api/shipping.js.map +1 -1
- package/dist/checkout/components/CheckoutFlow.d.ts.map +1 -1
- package/dist/checkout/components/CheckoutFlow.js +30 -13
- package/dist/checkout/components/CheckoutFlow.js.map +1 -1
- package/dist/checkout/components/OrderSummary.d.ts +1 -1
- package/dist/checkout/components/OrderSummary.d.ts.map +1 -1
- package/dist/checkout/components/OrderSummary.js +5 -2
- package/dist/checkout/components/OrderSummary.js.map +1 -1
- package/dist/checkout/server/create-checkout-session.d.ts.map +1 -1
- package/dist/checkout/server/create-checkout-session.js +38 -9
- package/dist/checkout/server/create-checkout-session.js.map +1 -1
- package/dist/checkout/server/handle-webhook.js +6 -0
- package/dist/checkout/server/handle-webhook.js.map +1 -1
- package/dist/checkout/server/order-service.d.ts.map +1 -1
- package/dist/checkout/server/order-service.js +21 -0
- package/dist/checkout/server/order-service.js.map +1 -1
- package/dist/checkout/server/pricing.d.ts +28 -1
- package/dist/checkout/server/pricing.d.ts.map +1 -1
- package/dist/checkout/server/pricing.js +84 -6
- package/dist/checkout/server/pricing.js.map +1 -1
- package/dist/checkout/types.d.ts +32 -0
- package/dist/checkout/types.d.ts.map +1 -1
- package/dist/core/db/queries.d.ts +114 -25
- package/dist/core/db/queries.d.ts.map +1 -1
- package/dist/core/db/queries.js +124 -2
- package/dist/core/db/queries.js.map +1 -1
- package/dist/core/db/schema.d.ts +213 -0
- package/dist/core/db/schema.d.ts.map +1 -1
- package/dist/core/db/schema.js +42 -0
- package/dist/core/db/schema.js.map +1 -1
- package/dist/emails/index.d.ts +2 -0
- package/dist/emails/index.d.ts.map +1 -1
- package/dist/emails/index.js +1 -0
- package/dist/emails/index.js.map +1 -1
- package/dist/emails/send/orders.d.ts +4 -0
- package/dist/emails/send/orders.d.ts.map +1 -1
- package/dist/emails/send/orders.js +1 -0
- package/dist/emails/send/orders.js.map +1 -1
- package/dist/emails/sender.d.ts.map +1 -1
- package/dist/emails/sender.js +30 -5
- package/dist/emails/sender.js.map +1 -1
- package/dist/emails/templates/order-confirmation.d.ts +9 -0
- package/dist/emails/templates/order-confirmation.d.ts.map +1 -1
- package/dist/emails/templates/order-confirmation.js +19 -8
- package/dist/emails/templates/order-confirmation.js.map +1 -1
- package/dist/emails/transport-smtp.d.ts +58 -0
- package/dist/emails/transport-smtp.d.ts.map +1 -0
- package/dist/emails/transport-smtp.js +97 -0
- package/dist/emails/transport-smtp.js.map +1 -0
- package/dist/emails/transport.d.ts +77 -0
- package/dist/emails/transport.d.ts.map +1 -0
- package/dist/emails/transport.js +154 -0
- package/dist/emails/transport.js.map +1 -0
- package/dist/emails/types.d.ts +5 -0
- package/dist/emails/types.d.ts.map +1 -1
- package/dist/products/api/products.d.ts.map +1 -1
- package/dist/products/api/products.js +18 -3
- package/dist/products/api/products.js.map +1 -1
- package/docs/changelog/epoch-09-catalog-tax.md +91 -0
- package/docs/changelog/epoch-10-email-transport.md +97 -0
- package/package.json +2 -1
- package/templates/store-template/.claude/skills/manage-products/SKILL.md +1 -1
- package/templates/store-template/app/account/orders/[id]/invoice/page.tsx +19 -4
- package/templates/store-template/app/api/admin/emails/sending/route.ts +9 -0
- package/templates/store-template/app/api/admin/integrations/brevo/backfill/route.ts +9 -0
- package/templates/store-template/app/api/admin/integrations/brevo/route.ts +9 -0
- package/templates/store-template/next.config.js +4 -1
- package/templates/store-template/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orders.js","sourceRoot":"","sources":["../../../src/emails/send/orders.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAMxD,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,6BAA6B,EAC7B,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,cAAc,CAAA;AAErB;wCACwC;AACxC,SAAS,eAAe,CAAC,CAAS;IAChC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAC7B,CAAC;AAiCD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAmC;IAEnC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5C,cAAc,EAAE;QAChB,YAAY,EAAE;KACf,CAAC,CAAA;IAEF,sEAAsE;IACtE,oEAAoE;IACpE,MAAM,IAAI,GAAG,MAAM,YAAY,CAC7B,oBAAoB,EACpB,MAAM,CAAC,MAAM,EACb,qBAAqB,CAAC,oBAAoB,CAAC,EAAE,UAAU,IAAI,KAAK,CACjE,CAAA;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,6DAA6D,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QACrF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACzC,CAAC;IAED,MAAM,IAAI,GAAG;QACX,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,aAAa,EAAE,MAAM,CAAC,EAAE;QACxB,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;QAChD,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;KAChD,CAAA;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe;QAClC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE;YACnC,SAAS;YACT,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;YAChD,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC;QACJ,CAAC,CAAC,2BAA2B,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;IAE/E,qEAAqE;IACrE,gEAAgE;IAChE,MAAM,IAAI,GACR,CAAC,IAAI,CAAC,UAAU,IAAI,oBAAoB,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACvG,uBAAuB,CAAC,IAAI,CAAC,CAAA;IAE/B,OAAO,SAAS,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,OAAO;QACP,IAAI;KACL,CAAC,CAAA;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAmC;IAEnC,qBAAqB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1C,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,GAAG,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;AACJ,CAAC;AAmBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAA8B;IAE9B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5C,cAAc,EAAE;QAChB,YAAY,EAAE;KACf,CAAC,CAAA;IAEF,sEAAsE;IACtE,oEAAoE;IACpE,MAAM,IAAI,GAAG,MAAM,YAAY,CAC7B,eAAe,EACf,MAAM,CAAC,MAAM,EACb,qBAAqB,CAAC,eAAe,CAAC,EAAE,UAAU,IAAI,KAAK,CAC5D,CAAA;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,wDAAwD,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QAChF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACzC,CAAC;IAED,MAAM,IAAI,GAAG;QACX,MAAM;QACN,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,aAAa,EAAE,MAAM,CAAC,EAAE;QACxB,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;QAChD,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;QACnD,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAA;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe;QAClC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE;YACnC,SAAS;YACT,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;YAChD,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC;QACJ,CAAC,CAAC,sBAAsB,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;IAE1E,qEAAqE;IACrE,gEAAgE;IAChE,MAAM,IAAI,GACR,CAAC,IAAI,CAAC,UAAU,IAAI,oBAAoB,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAClG,kBAAkB,CAAC,IAAI,CAAC,CAAA;IAE1B,OAAO,SAAS,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,OAAO;QACP,IAAI;KACL,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAA8B;IAClE,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACrC,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;AACJ,CAAC;AAoBD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAqC;IAErC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5C,cAAc,EAAE;QAChB,YAAY,EAAE;KACf,CAAC,CAAA;IAEF,sEAAsE;IACtE,oEAAoE;IACpE,MAAM,IAAI,GAAG,MAAM,YAAY,CAC7B,wBAAwB,EACxB,MAAM,CAAC,MAAM,EACb,qBAAqB,CAAC,wBAAwB,CAAC,EAAE,UAAU,IAAI,KAAK,CACrE,CAAA;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,iEAAiE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QACzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACzC,CAAC;IAED,MAAM,IAAI,GAAG;QACX,MAAM;QACN,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,aAAa,EAAE,MAAM,CAAC,EAAE;QACxB,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;QAChD,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAA;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe;QAClC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE;YACnC,SAAS;YACT,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;YAChD,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC;QACJ,CAAC,CAAC,6BAA6B,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjF,qEAAqE;IACrE,gEAAgE;IAChE,MAAM,IAAI,GACR,CAAC,IAAI,CAAC,UAAU,IAAI,oBAAoB,CAAC,wBAAwB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3G,yBAAyB,CAAC,IAAI,CAAC,CAAA;IAEjC,OAAO,SAAS,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,OAAO;QACP,IAAI;KACL,CAAC,CAAA;AACJ,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,4BAA4B,CAAC,MAAqC;IAChF,uBAAuB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5C,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;AACJ,CAAC;AAqBD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAgC;IAEhC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5C,cAAc,EAAE;QAChB,YAAY,EAAE;KACf,CAAC,CAAA;IAEF,sEAAsE;IACtE,oEAAoE;IACpE,MAAM,IAAI,GAAG,MAAM,YAAY,CAC7B,iBAAiB,EACjB,MAAM,CAAC,MAAM,EACb,qBAAqB,CAAC,iBAAiB,CAAC,EAAE,UAAU,IAAI,KAAK,CAC9D,CAAA;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,0DAA0D,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QAClF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACzC,CAAC;IAED,MAAM,IAAI,GAAG;QACX,MAAM;QACN,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,aAAa,EAAE,MAAM,CAAC,EAAE;QACxB,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;QAChD,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,wCAAwC;QACxC,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC7E,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QACxD,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;KAC3E,CAAA;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe;QAClC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE;YACnC,SAAS;YACT,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;YAChD,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC;QACJ,CAAC,CAAC,wBAAwB,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;IAE5E,qEAAqE;IACrE,gEAAgE;IAChE,MAAM,IAAI,GACR,CAAC,IAAI,CAAC,UAAU,IAAI,oBAAoB,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACpG,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAE5B,OAAO,SAAS,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,OAAO;QACP,IAAI;KACL,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAgC;IAEhC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACvC,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,GAAG,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;AACJ,CAAC;AAiBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAgC;IAEhC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5C,cAAc,EAAE;QAChB,YAAY,EAAE;KACf,CAAC,CAAA;IAEF,sEAAsE;IACtE,oEAAoE;IACpE,MAAM,IAAI,GAAG,MAAM,YAAY,CAC7B,iBAAiB,EACjB,MAAM,CAAC,MAAM,EACb,qBAAqB,CAAC,iBAAiB,CAAC,EAAE,UAAU,IAAI,KAAK,CAC9D,CAAA;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,0DAA0D,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QAClF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACzC,CAAC;IAED,MAAM,IAAI,GAAG;QACX,MAAM;QACN,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,aAAa,EAAE,MAAM,CAAC,EAAE;QACxB,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;QAChD,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAA;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe;QAClC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE;YACnC,SAAS;YACT,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;YAChD,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC;QACJ,CAAC,CAAC,wBAAwB,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;IAE5E,qEAAqE;IACrE,gEAAgE;IAChE,MAAM,IAAI,GACR,CAAC,IAAI,CAAC,UAAU,IAAI,oBAAoB,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACpG,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAE5B,OAAO,SAAS,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,OAAO;QACP,IAAI;KACL,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAgC;IAEhC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACvC,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,GAAG,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;AACJ,CAAC;AAmBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAiC;IAEjC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5C,cAAc,EAAE;QAChB,YAAY,EAAE;KACf,CAAC,CAAA;IAEF,sEAAsE;IACtE,oEAAoE;IACpE,MAAM,IAAI,GAAG,MAAM,YAAY,CAC7B,kBAAkB,EAClB,MAAM,CAAC,MAAM,EACb,qBAAqB,CAAC,kBAAkB,CAAC,EAAE,UAAU,IAAI,KAAK,CAC/D,CAAA;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,2DAA2D,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QACnF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACzC,CAAC;IAED,MAAM,IAAI,GAAG;QACX,MAAM;QACN,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,aAAa,EAAE,MAAM,CAAC,EAAE;QACxB,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;QAChD,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAA;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe;QAClC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE;YACnC,SAAS;YACT,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;YAChD,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC;QACJ,CAAC,CAAC,yBAAyB,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;IAE7E,qEAAqE;IACrE,gEAAgE;IAChE,MAAM,IAAI,GACR,CAAC,IAAI,CAAC,UAAU,IAAI,oBAAoB,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACrG,qBAAqB,CAAC,IAAI,CAAC,CAAA;IAE7B,OAAO,SAAS,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,OAAO;QACP,IAAI;KACL,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAiC;IAEjC,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACxC,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"orders.js","sourceRoot":"","sources":["../../../src/emails/send/orders.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sender.d.ts","sourceRoot":"","sources":["../../src/emails/sender.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"sender.d.ts","sourceRoot":"","sources":["../../src/emails/sender.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAQhE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAkE1B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAI9D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,gBAAgB,EAAE,GACzB,OAAO,CAAC,eAAe,EAAE,CAAC,CAE5B"}
|
package/dist/emails/sender.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { getResend, getFromEmail, getSupportEmail } from './config';
|
|
7
7
|
import { localizeEmail } from './i18n';
|
|
8
|
+
import { resolveTransport } from './transport';
|
|
8
9
|
// =============================================================================
|
|
9
10
|
// Email Sender
|
|
10
11
|
// =============================================================================
|
|
@@ -33,16 +34,40 @@ import { localizeEmail } from './i18n';
|
|
|
33
34
|
*/
|
|
34
35
|
export async function sendEmail(options) {
|
|
35
36
|
try {
|
|
36
|
-
const
|
|
37
|
-
const [from, replyTo] = await Promise.all([
|
|
38
|
-
getFromEmail(),
|
|
37
|
+
const [replyTo, transport] = await Promise.all([
|
|
39
38
|
options.replyTo ? Promise.resolve(options.replyTo) : getSupportEmail(),
|
|
39
|
+
resolveTransport(),
|
|
40
40
|
]);
|
|
41
|
+
const subject = localizeEmail(options.subject, options.locale);
|
|
42
|
+
const html = localizeEmail(options.html, options.locale);
|
|
43
|
+
// Merchant-configured transport (brevo HTTP / own SMTP). FAIL-SAFE
|
|
44
|
+
// DELIVERY RULE: any failure here falls through to the platform path
|
|
45
|
+
// below — a transport misconfiguration must never eat an order
|
|
46
|
+
// confirmation. Misconfiguration surfaces at save time in the admin
|
|
47
|
+
// Sending panel; the fallback is the runtime belt.
|
|
48
|
+
if (transport.send) {
|
|
49
|
+
const result = await transport.send({
|
|
50
|
+
from: `${transport.fromName} <${transport.fromAddress ?? ''}>`,
|
|
51
|
+
fromAddress: transport.fromAddress ?? '',
|
|
52
|
+
fromName: transport.fromName,
|
|
53
|
+
to: options.to,
|
|
54
|
+
subject,
|
|
55
|
+
html,
|
|
56
|
+
replyTo,
|
|
57
|
+
});
|
|
58
|
+
if (result.success) {
|
|
59
|
+
console.log(`[Email] Sent via ${transport.kind}:`, result.messageId, 'to:', options.to);
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
console.error(`[Email] ${transport.kind} transport failed (${result.error}) — falling back to the platform sender`);
|
|
63
|
+
}
|
|
64
|
+
const resend = getResend();
|
|
65
|
+
const from = await getFromEmail();
|
|
41
66
|
const { data, error } = await resend.emails.send({
|
|
42
67
|
from,
|
|
43
68
|
to: options.to,
|
|
44
|
-
subject
|
|
45
|
-
html
|
|
69
|
+
subject,
|
|
70
|
+
html,
|
|
46
71
|
replyTo,
|
|
47
72
|
});
|
|
48
73
|
if (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sender.js","sourceRoot":"","sources":["../../src/emails/sender.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"sender.js","sourceRoot":"","sources":["../../src/emails/sender.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,15 @@ export declare function renderOrderSummary(data: {
|
|
|
12
12
|
discount?: string;
|
|
13
13
|
discountCode?: string;
|
|
14
14
|
tax: string;
|
|
15
|
+
/**
|
|
16
|
+
* Per-rate VAT ventilation (0.22.0): pre-formatted amounts per rate. When
|
|
17
|
+
* more than one rate is present, the Tax row becomes one row per rate
|
|
18
|
+
* ("Tax 5.5%" / "Tax 20%") — the French invoice ventilation.
|
|
19
|
+
*/
|
|
20
|
+
taxBreakdown?: Array<{
|
|
21
|
+
rate: number;
|
|
22
|
+
amount: string;
|
|
23
|
+
}>;
|
|
15
24
|
total: string;
|
|
16
25
|
}): string;
|
|
17
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-confirmation.d.ts","sourceRoot":"","sources":["../../../src/emails/templates/order-confirmation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAkB,MAAM,UAAU,CAAA;AA4CrE,gEAAgE;AAChE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,GAAG,MAAM,CAO1F;AAMD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"order-confirmation.d.ts","sourceRoot":"","sources":["../../../src/emails/templates/order-confirmation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAkB,MAAM,UAAU,CAAA;AA4CrE,gEAAgE;AAChE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,GAAG,MAAM,CAO1F;AAMD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,EAAE,MAAM,CAAA;IACX;;;;OAIG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtD,KAAK,EAAE,MAAM,CAAA;CACd,GAAG,MAAM,CAoET;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,+DAA+D;AAC/D,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,aAAa,GAAG,WAAW,GAAG,eAAe,CAAC,GAC/E,MAAM,CAiBR;AAED,8EAA8E;AAC9E,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,GACvD,MAAM,CAUR;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,GAAG,iBAAiB,CAAC,GAC9D,MAAM,CAER;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,YAAY,CAAC,GAAG,MAAM,CAE3F;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CA2C3E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM,CAER"}
|
|
@@ -56,6 +56,23 @@ export function renderOrderSummary(data) {
|
|
|
56
56
|
</tr>
|
|
57
57
|
`
|
|
58
58
|
: '';
|
|
59
|
+
// One Tax row per rate when a multi-rate ventilation is present; the
|
|
60
|
+
// familiar single row otherwise.
|
|
61
|
+
const taxEntries = data.taxBreakdown && data.taxBreakdown.length > 1
|
|
62
|
+
? data.taxBreakdown.map((e) => ({ label: `Tax ${e.rate}%`, amount: e.amount }))
|
|
63
|
+
: [{ label: 'Tax', amount: data.tax }];
|
|
64
|
+
const taxRows = taxEntries
|
|
65
|
+
.map((e) => `
|
|
66
|
+
<tr>
|
|
67
|
+
<td style="padding-bottom: 8px;">
|
|
68
|
+
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: 14px; font-weight: 400; color: ${STYLES.textSecondary};">${escapeHtml(e.label)}</p>
|
|
69
|
+
</td>
|
|
70
|
+
<td align="right" style="padding-bottom: 8px;">
|
|
71
|
+
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: 14px; font-weight: 500; color: ${STYLES.textPrimary};">${escapeHtml(e.amount)}</p>
|
|
72
|
+
</td>
|
|
73
|
+
</tr>
|
|
74
|
+
`)
|
|
75
|
+
.join('');
|
|
59
76
|
return `
|
|
60
77
|
<div style="padding: 24px; background-color: ${STYLES.footerBackground}; border-radius: 16px; border: 1px solid ${STYLES.cardBorder}; margin-bottom: 32px;">
|
|
61
78
|
<table width="100%" cellpadding="0" cellspacing="0">
|
|
@@ -76,14 +93,7 @@ export function renderOrderSummary(data) {
|
|
|
76
93
|
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: 14px; font-weight: 500; color: ${STYLES.textPrimary};">${escapeHtml(data.shippingCost)}</p>
|
|
77
94
|
</td>
|
|
78
95
|
</tr>
|
|
79
|
-
|
|
80
|
-
<td style="padding-bottom: 8px;">
|
|
81
|
-
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: 14px; font-weight: 400; color: ${STYLES.textSecondary};">Tax</p>
|
|
82
|
-
</td>
|
|
83
|
-
<td align="right" style="padding-bottom: 8px;">
|
|
84
|
-
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: 14px; font-weight: 500; color: ${STYLES.textPrimary};">${escapeHtml(data.tax)}</p>
|
|
85
|
-
</td>
|
|
86
|
-
</tr>
|
|
96
|
+
${taxRows}
|
|
87
97
|
<tr>
|
|
88
98
|
<td style="padding-top: 16px; border-top: 1px solid ${STYLES.cardBorder};">
|
|
89
99
|
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: 18px; font-weight: 700; color: ${STYLES.textPrimary};">Total</p>
|
|
@@ -184,6 +194,7 @@ export function renderOrderConfirmation(data) {
|
|
|
184
194
|
discountCode: data.discountCode,
|
|
185
195
|
shippingCost: data.shippingCost,
|
|
186
196
|
tax: data.tax,
|
|
197
|
+
taxBreakdown: data.taxBreakdown,
|
|
187
198
|
total: data.total,
|
|
188
199
|
})}
|
|
189
200
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-confirmation.js","sourceRoot":"","sources":["../../../src/emails/templates/order-confirmation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AACxD,OAAO,EACL,UAAU,EACV,WAAW,EACX,OAAO,EACP,aAAa,EACb,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACd,cAAc,EACd,MAAM,GACP,MAAM,QAAQ,CAAA;AAEf,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,SAAS,eAAe,CAAC,IAAoB;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ;QAC7B,CAAC,CAAC;oBACc,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gGAAgG,MAAM,CAAC,UAAU;YACjL;QACR,CAAC,CAAC,EAAE,CAAA;IAEN,OAAO;;;UAGC,SAAS;;sDAEmC,MAAM,CAAC,UAAU,+CAA+C,MAAM,CAAC,WAAW,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;sDAC7G,MAAM,CAAC,UAAU,+CAA+C,MAAM,CAAC,aAAa,gBAAgB,IAAI,CAAC,QAAQ;8CACzH,MAAM,CAAC,UAAU,+CAA+C,MAAM,CAAC,WAAW,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;;;GAIzJ,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAuB;IAC/C,OAAO,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC5C,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,uBAAuB,CAAC,IAA0C;IAChF,OAAO;;QAED,cAAc,CAAC,aAAa,CAAC;QAC7B,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;;GAEjC,CAAA;AACH,CAAC;AAED,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF,MAAM,UAAU,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"order-confirmation.js","sourceRoot":"","sources":["../../../src/emails/templates/order-confirmation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/emails/transport-smtp
|
|
3
|
+
*
|
|
4
|
+
* The nodemailer-touching half of the email transport (SDK 0.23.0),
|
|
5
|
+
* isolated in its own module. nodemailer pulls node builtins (net/tls/dns),
|
|
6
|
+
* and the emails graph is CLIENT-REACHABLE (the §62 invariant: auth barrel →
|
|
7
|
+
* send → sender → transport) — so it is loaded through a BUNDLER-IGNORED
|
|
8
|
+
* dynamic import:
|
|
9
|
+
*
|
|
10
|
+
* import(\/* webpackIgnore *\/ \/* turbopackIgnore *\/ 'nodemailer')
|
|
11
|
+
*
|
|
12
|
+
* Both bundlers skip the specifier entirely (no client-side resolution, no
|
|
13
|
+
* chunk), and at server runtime it is a NATIVE import with real Node
|
|
14
|
+
* resolution from the executing module's location — no path guessing, no
|
|
15
|
+
* eval tricks. Two consequences, both handled at the packaging layer:
|
|
16
|
+
*
|
|
17
|
+
* - nodemailer is a TEMPLATE dependency (store package.json), so it sits
|
|
18
|
+
* hoisted at the app root deterministically (an SDK-transitive-only
|
|
19
|
+
* install can nest it where a bundled chunk can't resolve it).
|
|
20
|
+
* - Vercel's file tracer can't see an ignored import — the template's
|
|
21
|
+
* next.config pins outputFileTracingIncludes: node_modules/nodemailer/**
|
|
22
|
+
* (the E4 blueprint.json precedent).
|
|
23
|
+
*
|
|
24
|
+
* A load failure logs LOUDLY (fail-safe rule: the send falls back to the
|
|
25
|
+
* platform path, but ops must see WHY smtp was unavailable) and the cached
|
|
26
|
+
* promise resets so a transient failure can retry.
|
|
27
|
+
*/
|
|
28
|
+
export interface SmtpConfig {
|
|
29
|
+
host: string;
|
|
30
|
+
port: number;
|
|
31
|
+
secure: boolean;
|
|
32
|
+
user: string | null;
|
|
33
|
+
password: string | null;
|
|
34
|
+
}
|
|
35
|
+
export interface SmtpSendInput {
|
|
36
|
+
fromAddress: string;
|
|
37
|
+
fromName: string;
|
|
38
|
+
to: string;
|
|
39
|
+
subject: string;
|
|
40
|
+
html: string;
|
|
41
|
+
replyTo?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface SmtpSendResult {
|
|
44
|
+
success: boolean;
|
|
45
|
+
messageId?: string;
|
|
46
|
+
error?: string;
|
|
47
|
+
}
|
|
48
|
+
export declare function sendViaSmtp(input: SmtpSendInput, cfg: SmtpConfig): Promise<SmtpSendResult>;
|
|
49
|
+
/**
|
|
50
|
+
* Save-time SMTP validation — a real handshake (connect + EHLO + auth), no
|
|
51
|
+
* email sent. Used by the admin Sending panel so misconfiguration surfaces
|
|
52
|
+
* at save time instead of silently pushing every send onto the fallback.
|
|
53
|
+
*/
|
|
54
|
+
export declare function verifySmtp(cfg: SmtpConfig): Promise<{
|
|
55
|
+
ok: boolean;
|
|
56
|
+
error?: string;
|
|
57
|
+
}>;
|
|
58
|
+
//# sourceMappingURL=transport-smtp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-smtp.d.ts","sourceRoot":"","sources":["../../src/emails/transport-smtp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAWH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AA2CD,wBAAsB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAgBhG;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAS1F"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/emails/transport-smtp
|
|
3
|
+
*
|
|
4
|
+
* The nodemailer-touching half of the email transport (SDK 0.23.0),
|
|
5
|
+
* isolated in its own module. nodemailer pulls node builtins (net/tls/dns),
|
|
6
|
+
* and the emails graph is CLIENT-REACHABLE (the §62 invariant: auth barrel →
|
|
7
|
+
* send → sender → transport) — so it is loaded through a BUNDLER-IGNORED
|
|
8
|
+
* dynamic import:
|
|
9
|
+
*
|
|
10
|
+
* import(\/* webpackIgnore *\/ \/* turbopackIgnore *\/ 'nodemailer')
|
|
11
|
+
*
|
|
12
|
+
* Both bundlers skip the specifier entirely (no client-side resolution, no
|
|
13
|
+
* chunk), and at server runtime it is a NATIVE import with real Node
|
|
14
|
+
* resolution from the executing module's location — no path guessing, no
|
|
15
|
+
* eval tricks. Two consequences, both handled at the packaging layer:
|
|
16
|
+
*
|
|
17
|
+
* - nodemailer is a TEMPLATE dependency (store package.json), so it sits
|
|
18
|
+
* hoisted at the app root deterministically (an SDK-transitive-only
|
|
19
|
+
* install can nest it where a bundled chunk can't resolve it).
|
|
20
|
+
* - Vercel's file tracer can't see an ignored import — the template's
|
|
21
|
+
* next.config pins outputFileTracingIncludes: node_modules/nodemailer/**
|
|
22
|
+
* (the E4 blueprint.json precedent).
|
|
23
|
+
*
|
|
24
|
+
* A load failure logs LOUDLY (fail-safe rule: the send falls back to the
|
|
25
|
+
* platform path, but ops must see WHY smtp was unavailable) and the cached
|
|
26
|
+
* promise resets so a transient failure can retry.
|
|
27
|
+
*/
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// Loader
|
|
30
|
+
// =============================================================================
|
|
31
|
+
let nodemailerPromise = null;
|
|
32
|
+
function loadNodemailer() {
|
|
33
|
+
if (!nodemailerPromise) {
|
|
34
|
+
nodemailerPromise = import(
|
|
35
|
+
/* webpackIgnore: true */ /* turbopackIgnore: true */ 'nodemailer')
|
|
36
|
+
.then((m) => (m.default ??
|
|
37
|
+
m))
|
|
38
|
+
.catch((err) => {
|
|
39
|
+
console.error('[Email] nodemailer not loadable:', err);
|
|
40
|
+
nodemailerPromise = null; // allow retry on transient failures
|
|
41
|
+
return null;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return nodemailerPromise;
|
|
45
|
+
}
|
|
46
|
+
function buildTransport(nm, cfg) {
|
|
47
|
+
return nm.createTransport({
|
|
48
|
+
host: cfg.host,
|
|
49
|
+
port: cfg.port,
|
|
50
|
+
secure: cfg.secure,
|
|
51
|
+
...(cfg.user ? { auth: { user: cfg.user, pass: cfg.password ?? '' } } : {}),
|
|
52
|
+
connectionTimeout: 10000,
|
|
53
|
+
greetingTimeout: 10000,
|
|
54
|
+
socketTimeout: 15000,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
// =============================================================================
|
|
58
|
+
// Send + verify
|
|
59
|
+
// =============================================================================
|
|
60
|
+
export async function sendViaSmtp(input, cfg) {
|
|
61
|
+
const nm = await loadNodemailer();
|
|
62
|
+
if (!nm)
|
|
63
|
+
return { success: false, error: 'SMTP transport unavailable (nodemailer not loadable)' };
|
|
64
|
+
if (!input.fromAddress)
|
|
65
|
+
return { success: false, error: 'No sender address configured' };
|
|
66
|
+
try {
|
|
67
|
+
const info = await buildTransport(nm, cfg).sendMail({
|
|
68
|
+
from: `${input.fromName} <${input.fromAddress}>`,
|
|
69
|
+
to: input.to,
|
|
70
|
+
subject: input.subject,
|
|
71
|
+
html: input.html,
|
|
72
|
+
...(input.replyTo ? { replyTo: input.replyTo } : {}),
|
|
73
|
+
});
|
|
74
|
+
return { success: true, messageId: info?.messageId };
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
return { success: false, error: err instanceof Error ? err.message : 'SMTP send failed' };
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Save-time SMTP validation — a real handshake (connect + EHLO + auth), no
|
|
82
|
+
* email sent. Used by the admin Sending panel so misconfiguration surfaces
|
|
83
|
+
* at save time instead of silently pushing every send onto the fallback.
|
|
84
|
+
*/
|
|
85
|
+
export async function verifySmtp(cfg) {
|
|
86
|
+
const nm = await loadNodemailer();
|
|
87
|
+
if (!nm)
|
|
88
|
+
return { ok: false, error: 'SMTP transport unavailable (nodemailer not loadable)' };
|
|
89
|
+
try {
|
|
90
|
+
await buildTransport(nm, cfg).verify();
|
|
91
|
+
return { ok: true };
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
return { ok: false, error: err instanceof Error ? err.message : 'SMTP verification failed' };
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=transport-smtp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-smtp.js","sourceRoot":"","sources":["../../src/emails/transport-smtp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/emails/transport
|
|
3
|
+
*
|
|
4
|
+
* Transactional-email transport resolution (SDK 0.23.0). Every send funnels
|
|
5
|
+
* through sendEmail() (sender.ts), which asks this module HOW to deliver:
|
|
6
|
+
*
|
|
7
|
+
* - 'platform' (default, also NULL) — the platform Resend sender. The
|
|
8
|
+
* entire pre-0.23 fleet stays byte-identical on this path.
|
|
9
|
+
* - 'brevo' — Brevo's transactional HTTP API (POST /v3/smtp/email)
|
|
10
|
+
* using the SAME store_settings.brevo_api_key the marketing integration
|
|
11
|
+
* stores. No SMTP key needed — this is what makes the integrations-page
|
|
12
|
+
* toggle seamless. Sender address must be a VERIFIED Brevo sender or
|
|
13
|
+
* Brevo rejects the send (surfaced at save time by the admin UI).
|
|
14
|
+
* - 'smtp' — the merchant's own SMTP server via nodemailer.
|
|
15
|
+
*
|
|
16
|
+
* FAIL-SAFE DELIVERY RULE (load-bearing): a non-platform transport failure
|
|
17
|
+
* falls back to the platform Resend path and logs loudly — a merchant's
|
|
18
|
+
* SMTP typo must never eat an order confirmation. Misconfiguration is
|
|
19
|
+
* caught at SAVE time by the admin Sending panel, not at send time.
|
|
20
|
+
*
|
|
21
|
+
* CLIENT-REACHABILITY (load-bearing, the §62 emails-graph invariant): this
|
|
22
|
+
* file is reachable from client bundles (auth barrel → send → sender →
|
|
23
|
+
* transport). All nodemailer-touching code lives in ./transport-smtp, which
|
|
24
|
+
* loads it via a BUNDLER-IGNORED dynamic import (webpackIgnore +
|
|
25
|
+
* turbopackIgnore) — native server-runtime resolution, nothing for the
|
|
26
|
+
* client bundler to resolve. Fails open to the platform path when the
|
|
27
|
+
* module can't load. See transport-smtp.ts for the packaging contract
|
|
28
|
+
* (template dependency + tracing include).
|
|
29
|
+
*/
|
|
30
|
+
import { type StoreSettingsData } from '../core/db/queries';
|
|
31
|
+
import { type SmtpConfig as SmtpConfigType } from './transport-smtp';
|
|
32
|
+
export type EmailTransportKind = 'platform' | 'brevo' | 'smtp';
|
|
33
|
+
export interface TransportSendInput {
|
|
34
|
+
from: string;
|
|
35
|
+
fromAddress: string;
|
|
36
|
+
fromName: string;
|
|
37
|
+
to: string;
|
|
38
|
+
subject: string;
|
|
39
|
+
html: string;
|
|
40
|
+
replyTo?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface TransportSendResult {
|
|
43
|
+
success: boolean;
|
|
44
|
+
messageId?: string;
|
|
45
|
+
error?: string;
|
|
46
|
+
}
|
|
47
|
+
/** The store's configured transport ('platform' when unset/unknown). */
|
|
48
|
+
export declare function resolveTransportKind(settings: Pick<StoreSettingsData, 'emailTransport'> | null): EmailTransportKind;
|
|
49
|
+
/**
|
|
50
|
+
* Sender identity for non-platform transports. The platform path keeps its
|
|
51
|
+
* existing RESEND_FROM_EMAIL resolution untouched; brevo/smtp REQUIRE a
|
|
52
|
+
* merchant-owned from-address (their domain, their reputation) and fall
|
|
53
|
+
* back to the store contact email when the dedicated field is empty.
|
|
54
|
+
*/
|
|
55
|
+
export declare function resolveFromIdentity(settings: Pick<StoreSettingsData, 'emailFromAddress' | 'emailFromName' | 'storeEmail' | 'storeName'> | null): {
|
|
56
|
+
address: string | null;
|
|
57
|
+
name: string;
|
|
58
|
+
};
|
|
59
|
+
/** Server-only read of the marketing integration's key (card-added columns). */
|
|
60
|
+
export declare function getBrevoApiKey(): Promise<string | null>;
|
|
61
|
+
export { verifySmtp } from './transport-smtp';
|
|
62
|
+
export type { SmtpConfig } from './transport-smtp';
|
|
63
|
+
export declare function smtpConfigFromSettings(settings: Pick<StoreSettingsData, 'smtpHost' | 'smtpPort' | 'smtpSecure' | 'smtpUser' | 'smtpPassword'> | null): SmtpConfigType | null;
|
|
64
|
+
export interface TransportDispatch {
|
|
65
|
+
kind: EmailTransportKind;
|
|
66
|
+
/** null → caller proceeds with the platform Resend path. */
|
|
67
|
+
send: ((input: TransportSendInput) => Promise<TransportSendResult>) | null;
|
|
68
|
+
/** Merchant sender identity for non-platform transports. */
|
|
69
|
+
fromAddress: string | null;
|
|
70
|
+
fromName: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Resolve the store's transport once per send. Any resolution failure
|
|
74
|
+
* degrades to the platform path (fail-safe delivery rule).
|
|
75
|
+
*/
|
|
76
|
+
export declare function resolveTransport(): Promise<TransportDispatch>;
|
|
77
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/emails/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEzE,OAAO,EAAe,KAAK,UAAU,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAMjF,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAA;AAE9D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAMD,wEAAwE;AACxE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,IAAI,GACzD,kBAAkB,CAGpB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,eAAe,GAAG,YAAY,GAAG,WAAW,CAAC,GAAG,IAAI,GAC1G;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAI1C;AAMD,gFAAgF;AAChF,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAY7D;AAkCD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,cAAc,CAAC,GAAG,IAAI,GAC7G,cAAc,GAAG,IAAI,CAYvB;AAMD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,kBAAkB,CAAA;IACxB,4DAA4D;IAC5D,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,IAAI,CAAA;IAC1E,4DAA4D;IAC5D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAoCnE"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/emails/transport
|
|
3
|
+
*
|
|
4
|
+
* Transactional-email transport resolution (SDK 0.23.0). Every send funnels
|
|
5
|
+
* through sendEmail() (sender.ts), which asks this module HOW to deliver:
|
|
6
|
+
*
|
|
7
|
+
* - 'platform' (default, also NULL) — the platform Resend sender. The
|
|
8
|
+
* entire pre-0.23 fleet stays byte-identical on this path.
|
|
9
|
+
* - 'brevo' — Brevo's transactional HTTP API (POST /v3/smtp/email)
|
|
10
|
+
* using the SAME store_settings.brevo_api_key the marketing integration
|
|
11
|
+
* stores. No SMTP key needed — this is what makes the integrations-page
|
|
12
|
+
* toggle seamless. Sender address must be a VERIFIED Brevo sender or
|
|
13
|
+
* Brevo rejects the send (surfaced at save time by the admin UI).
|
|
14
|
+
* - 'smtp' — the merchant's own SMTP server via nodemailer.
|
|
15
|
+
*
|
|
16
|
+
* FAIL-SAFE DELIVERY RULE (load-bearing): a non-platform transport failure
|
|
17
|
+
* falls back to the platform Resend path and logs loudly — a merchant's
|
|
18
|
+
* SMTP typo must never eat an order confirmation. Misconfiguration is
|
|
19
|
+
* caught at SAVE time by the admin Sending panel, not at send time.
|
|
20
|
+
*
|
|
21
|
+
* CLIENT-REACHABILITY (load-bearing, the §62 emails-graph invariant): this
|
|
22
|
+
* file is reachable from client bundles (auth barrel → send → sender →
|
|
23
|
+
* transport). All nodemailer-touching code lives in ./transport-smtp, which
|
|
24
|
+
* loads it via a BUNDLER-IGNORED dynamic import (webpackIgnore +
|
|
25
|
+
* turbopackIgnore) — native server-runtime resolution, nothing for the
|
|
26
|
+
* client bundler to resolve. Fails open to the platform path when the
|
|
27
|
+
* module can't load. See transport-smtp.ts for the packaging contract
|
|
28
|
+
* (template dependency + tracing include).
|
|
29
|
+
*/
|
|
30
|
+
import { findSettings } from '../core/db/queries';
|
|
31
|
+
import { getSql } from '../core/db/client';
|
|
32
|
+
import { sendViaSmtp } from './transport-smtp';
|
|
33
|
+
// =============================================================================
|
|
34
|
+
// Resolution
|
|
35
|
+
// =============================================================================
|
|
36
|
+
/** The store's configured transport ('platform' when unset/unknown). */
|
|
37
|
+
export function resolveTransportKind(settings) {
|
|
38
|
+
const t = settings?.emailTransport;
|
|
39
|
+
return t === 'brevo' || t === 'smtp' ? t : 'platform';
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Sender identity for non-platform transports. The platform path keeps its
|
|
43
|
+
* existing RESEND_FROM_EMAIL resolution untouched; brevo/smtp REQUIRE a
|
|
44
|
+
* merchant-owned from-address (their domain, their reputation) and fall
|
|
45
|
+
* back to the store contact email when the dedicated field is empty.
|
|
46
|
+
*/
|
|
47
|
+
export function resolveFromIdentity(settings) {
|
|
48
|
+
const address = settings?.emailFromAddress?.trim() || settings?.storeEmail?.trim() || null;
|
|
49
|
+
const name = settings?.emailFromName?.trim() || settings?.storeName?.trim() || 'Our Store';
|
|
50
|
+
return { address, name };
|
|
51
|
+
}
|
|
52
|
+
// =============================================================================
|
|
53
|
+
// Brevo transport (HTTP API — no SMTP key needed)
|
|
54
|
+
// =============================================================================
|
|
55
|
+
/** Server-only read of the marketing integration's key (card-added columns). */
|
|
56
|
+
export async function getBrevoApiKey() {
|
|
57
|
+
try {
|
|
58
|
+
const sql = getSql();
|
|
59
|
+
const rows = (await sql `
|
|
60
|
+
SELECT brevo_api_key FROM store_settings LIMIT 1
|
|
61
|
+
`);
|
|
62
|
+
return rows[0]?.brevo_api_key || null;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Column absent (integration never installed) or transient DB error —
|
|
66
|
+
// the caller falls back to the platform path.
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async function sendViaBrevo(input) {
|
|
71
|
+
const apiKey = await getBrevoApiKey();
|
|
72
|
+
if (!apiKey)
|
|
73
|
+
return { success: false, error: 'Brevo API key is not configured' };
|
|
74
|
+
if (!input.fromAddress)
|
|
75
|
+
return { success: false, error: 'No sender address configured' };
|
|
76
|
+
try {
|
|
77
|
+
const res = await fetch('https://api.brevo.com/v3/smtp/email', {
|
|
78
|
+
method: 'POST',
|
|
79
|
+
headers: { 'api-key': apiKey, 'content-type': 'application/json', accept: 'application/json' },
|
|
80
|
+
body: JSON.stringify({
|
|
81
|
+
sender: { email: input.fromAddress, name: input.fromName },
|
|
82
|
+
to: [{ email: input.to }],
|
|
83
|
+
subject: input.subject,
|
|
84
|
+
htmlContent: input.html,
|
|
85
|
+
...(input.replyTo ? { replyTo: { email: input.replyTo } } : {}),
|
|
86
|
+
}),
|
|
87
|
+
signal: AbortSignal.timeout(15000),
|
|
88
|
+
});
|
|
89
|
+
const body = (await res.json().catch(() => null));
|
|
90
|
+
if (!res.ok) {
|
|
91
|
+
return { success: false, error: body?.message || `Brevo HTTP ${res.status}` };
|
|
92
|
+
}
|
|
93
|
+
return { success: true, messageId: body?.messageId };
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
return { success: false, error: err instanceof Error ? err.message : 'Brevo send failed' };
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// =============================================================================
|
|
100
|
+
// SMTP transport — nodemailer isolated in ./transport-smtp
|
|
101
|
+
// =============================================================================
|
|
102
|
+
export { verifySmtp } from './transport-smtp';
|
|
103
|
+
export function smtpConfigFromSettings(settings) {
|
|
104
|
+
const host = settings?.smtpHost?.trim();
|
|
105
|
+
if (!host)
|
|
106
|
+
return null;
|
|
107
|
+
const port = settings?.smtpPort ?? 587;
|
|
108
|
+
return {
|
|
109
|
+
host,
|
|
110
|
+
port,
|
|
111
|
+
// Convention: explicit flag wins; otherwise 465 implies implicit TLS.
|
|
112
|
+
secure: settings?.smtpSecure ?? port === 465,
|
|
113
|
+
user: settings?.smtpUser?.trim() || null,
|
|
114
|
+
password: settings?.smtpPassword || null,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Resolve the store's transport once per send. Any resolution failure
|
|
119
|
+
* degrades to the platform path (fail-safe delivery rule).
|
|
120
|
+
*/
|
|
121
|
+
export async function resolveTransport() {
|
|
122
|
+
let settings = null;
|
|
123
|
+
try {
|
|
124
|
+
settings = await findSettings();
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
settings = null;
|
|
128
|
+
}
|
|
129
|
+
const kind = resolveTransportKind(settings);
|
|
130
|
+
const identity = resolveFromIdentity(settings);
|
|
131
|
+
if (kind === 'brevo') {
|
|
132
|
+
return { kind, send: sendViaBrevo, fromAddress: identity.address, fromName: identity.name };
|
|
133
|
+
}
|
|
134
|
+
if (kind === 'smtp') {
|
|
135
|
+
const cfg = smtpConfigFromSettings(settings);
|
|
136
|
+
if (cfg) {
|
|
137
|
+
return {
|
|
138
|
+
kind,
|
|
139
|
+
send: (input) => sendViaSmtp({
|
|
140
|
+
fromAddress: input.fromAddress,
|
|
141
|
+
fromName: input.fromName,
|
|
142
|
+
to: input.to,
|
|
143
|
+
subject: input.subject,
|
|
144
|
+
html: input.html,
|
|
145
|
+
replyTo: input.replyTo,
|
|
146
|
+
}, cfg),
|
|
147
|
+
fromAddress: identity.address,
|
|
148
|
+
fromName: identity.name,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return { kind: 'platform', send: null, fromAddress: identity.address, fromName: identity.name };
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/emails/transport.ts"],"names":[],"mappings":"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"}
|