@infuro/cms-core 1.0.62 → 1.0.63
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.cjs +4 -4
- package/dist/admin.js +4 -4
- package/dist/api.cjs +38 -38
- package/dist/api.js +6 -6
- package/dist/{chunk-NMYGQWHV.js → chunk-3VZAAQUV.js} +18 -5
- package/dist/{chunk-R6Q67HAS.js → chunk-77YWLP4X.js} +19 -19
- package/dist/{chunk-AXMP2U43.cjs → chunk-7L556RGL.cjs} +3 -3
- package/dist/{chunk-6LV36PCL.js → chunk-BWOITUNI.js} +7 -6
- package/dist/{chunk-QA5C477U.cjs → chunk-CJEOH6QC.cjs} +64 -64
- package/dist/{chunk-6XAVZE4I.js → chunk-DTUL3Q5L.js} +1 -1
- package/dist/{chunk-TWTISTZB.cjs → chunk-EWXG4E74.cjs} +14 -13
- package/dist/{chunk-CTIEAHQL.cjs → chunk-JLDHK2QE.cjs} +18 -5
- package/dist/{chunk-GZGFNVTK.js → chunk-KAOHOHCA.js} +55 -40
- package/dist/{chunk-HMLVPIJR.js → chunk-MWEK7N3F.js} +1 -1
- package/dist/{chunk-LRD4CGOG.cjs → chunk-MXABMVF7.cjs} +4 -4
- package/dist/{chunk-LVQSG25Y.cjs → chunk-RHYVNRYG.cjs} +1 -1
- package/dist/{chunk-YW7EF7K7.js → chunk-RXTUSF3R.js} +2 -2
- package/dist/{chunk-ZPAPCGCR.cjs → chunk-YVP4NQII.cjs} +56 -41
- package/dist/{email-queue-J7DXYNCE.cjs → email-queue-VTYL2KFA.cjs} +7 -7
- package/dist/{email-queue-65PQAG4C.js → email-queue-YPRSVG56.js} +3 -3
- package/dist/{email-service-RDOTY3CO.cjs → email-service-ATCPJFWG.cjs} +7 -7
- package/dist/{email-service-F7HA4X63.js → email-service-DPKVQOKP.js} +2 -2
- package/dist/{emit-order-notification-trigger-K7URAZHJ.cjs → emit-order-notification-trigger-WI4HGMKH.cjs} +3 -3
- package/dist/{emit-order-notification-trigger-MD7EBODC.js → emit-order-notification-trigger-XVG2B5ZF.js} +1 -1
- package/dist/{erp-order-invoice-MYFCXOCY.js → erp-order-invoice-3UGWLICU.js} +2 -2
- package/dist/{erp-order-invoice-C5GZCOBM.cjs → erp-order-invoice-KJYJNWMG.cjs} +6 -6
- package/dist/index.cjs +246 -245
- package/dist/index.d.cts +8 -2
- package/dist/index.d.ts +8 -2
- package/dist/index.js +15 -14
- package/dist/{order-completion-otp-handlers-4EOLYLAP.cjs → order-completion-otp-handlers-IMMQGHDR.cjs} +6 -6
- package/dist/{order-completion-otp-handlers-3NTOGEA5.js → order-completion-otp-handlers-WGM7HWG4.js} +4 -4
- package/dist/{order-notification-dispatcher-X2XM5VUY.cjs → order-notification-dispatcher-5TUFCDU7.cjs} +10 -10
- package/dist/{order-notification-dispatcher-IYMOS4VY.js → order-notification-dispatcher-JKFQJYGG.js} +5 -5
- package/package.json +1 -1
|
@@ -16,66 +16,81 @@ function socialLinkInnerHtml(s) {
|
|
|
16
16
|
return escapeHtml(label);
|
|
17
17
|
}
|
|
18
18
|
__name(socialLinkInnerHtml, "socialLinkInnerHtml");
|
|
19
|
-
function supportLinesHtml(supportEmail, supportPhone
|
|
19
|
+
function supportLinesHtml(supportEmail, supportPhone) {
|
|
20
20
|
const parts = [];
|
|
21
|
-
const top = opts?.tightTop ? "margin-top:0;" : "margin-top:4px;";
|
|
22
21
|
if (supportEmail) {
|
|
23
|
-
parts.push(`<
|
|
22
|
+
parts.push(`<a href="mailto:${escapeHtml(supportEmail)}" style="color:#6b7280;text-decoration:none;font-size:13px;">${escapeHtml(supportEmail)}</a>`);
|
|
24
23
|
}
|
|
25
24
|
if (supportPhone) {
|
|
26
|
-
parts.push(`<
|
|
25
|
+
parts.push(`<span style="color:#6b7280;font-size:13px;">${escapeHtml(supportPhone)}</span>`);
|
|
27
26
|
}
|
|
28
|
-
return parts.join("");
|
|
27
|
+
return parts.join('<span style="color:#d1d5db;padding:0 8px;">\xB7</span>');
|
|
29
28
|
}
|
|
30
29
|
__name(supportLinesHtml, "supportLinesHtml");
|
|
31
30
|
function renderLayout(options) {
|
|
32
31
|
const { bodyHtml, companyDetails } = options;
|
|
33
32
|
const { logoUrl, companyName, supportEmail, supportPhone, socialLinks, footerDisclaimer, followUsTitle = "Follow Us" } = companyDetails;
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
});
|
|
33
|
+
const brand = (companyName || "Store").trim();
|
|
34
|
+
const accent = "#ea580c";
|
|
35
|
+
const logoHtml = logoUrl ? `<img src="${escapeHtml(logoUrl)}" alt="${escapeHtml(brand)}" width="160" style="max-height:56px;max-width:180px;height:auto;width:auto;display:block;border:0;margin:0 auto;" />` : `<div style="font-size:22px;font-weight:700;letter-spacing:-0.02em;color:#111827;">${escapeHtml(brand)}</div>`;
|
|
37
36
|
const hasSocial = Boolean(socialLinks?.length);
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
if (companyName) {
|
|
43
|
-
brandFooterInner.push(`<span style="font-size:14px;font-weight:600;color:#111;vertical-align:middle;">${escapeHtml(companyName)}</span>`);
|
|
44
|
-
}
|
|
45
|
-
const brandFooterHtml = brandFooterInner.length ? `<div style="line-height:1.4;">${brandFooterInner.join("")}</div>` : "";
|
|
46
|
-
const followTitleHtml = hasSocial && followUsTitle ? `<div class="footer-follow-title" style="font-size:13px;font-weight:600;color:#555;margin:0;">${escapeHtml(followUsTitle)}</div>` : "";
|
|
47
|
-
const socialRowHtml = hasSocial && socialLinks ? `<div class="footer-social-icons" style="margin-top:6px;text-align:left;font-size:0;line-height:0;">${socialLinks.map((s) => `<a href="${escapeHtml(s.url)}" style="display:inline-block;margin-right:12px;text-decoration:none;color:#333;font-size:18px;line-height:1;vertical-align:middle;">${socialLinkInnerHtml(s)}</a>`).join("")}</div>` : "";
|
|
48
|
-
const rowSupport = supportFooterHtml ? `<tr><td class="footer-support-cell" colspan="2" valign="top" style="padding:0 0 10px 0;">${supportFooterHtml}</td></tr>` : "";
|
|
49
|
-
let footerBlock = "";
|
|
50
|
-
if (brandFooterHtml || followTitleHtml || socialRowHtml || footerDisclaimer || rowSupport) {
|
|
51
|
-
const rowBrand = brandFooterHtml ? `<tr><td class="footer-brand-cell" colspan="2" valign="top" style="padding:0 0 10px 0;">${brandFooterHtml}</td></tr>` : "";
|
|
52
|
-
const rowFollowTitle = followTitleHtml ? `<tr><td class="footer-follow-cell" colspan="2" valign="top" style="padding:14px 0 0 0;text-align:left;">${followTitleHtml}</td></tr>` : "";
|
|
53
|
-
const rowSocial = socialRowHtml ? `<tr><td class="footer-social-cell" colspan="2" style="padding:0;text-align:left;">${socialRowHtml}</td></tr>` : "";
|
|
54
|
-
footerBlock = `<table role="presentation" class="footer-main" width="100%" cellpadding="0" cellspacing="0" style="margin-top:28px;padding-top:16px;">${rowBrand}${rowSupport}${rowFollowTitle}${rowSocial}</table>`;
|
|
55
|
-
}
|
|
56
|
-
const disclaimerBlock = footerDisclaimer ? `<div style="margin-top:20px;padding-top:12px;font-size:11px;line-height:1.5;color:#888;">${escapeHtml(footerDisclaimer).replace(/\n/g, "<br/>")}</div>` : "";
|
|
37
|
+
const socialRowHtml = hasSocial && socialLinks ? `<div style="margin-top:12px;text-align:center;font-size:0;line-height:0;">${socialLinks.map((s) => `<a href="${escapeHtml(s.url)}" style="display:inline-block;margin:0 8px;text-decoration:none;color:#374151;font-size:18px;line-height:1;vertical-align:middle;">${socialLinkInnerHtml(s)}</a>`).join("")}</div>` : "";
|
|
38
|
+
const followTitleHtml = hasSocial && followUsTitle ? `<div style="font-size:12px;font-weight:600;color:#9ca3af;text-transform:uppercase;letter-spacing:0.06em;margin:0 0 4px 0;">${escapeHtml(followUsTitle)}</div>` : "";
|
|
39
|
+
const supportHtml = supportLinesHtml(supportEmail, supportPhone);
|
|
40
|
+
const disclaimerBlock = footerDisclaimer ? `<div style="margin-top:16px;font-size:11px;line-height:1.5;color:#9ca3af;">${escapeHtml(footerDisclaimer).replace(/\n/g, "<br/>")}</div>` : "";
|
|
57
41
|
const responsiveCss = `
|
|
58
|
-
@media only screen and (max-width:
|
|
59
|
-
.email-
|
|
60
|
-
.
|
|
42
|
+
@media only screen and (max-width: 620px) {
|
|
43
|
+
.email-shell { padding: 16px 10px !important; }
|
|
44
|
+
.email-card { border-radius: 12px !important; }
|
|
45
|
+
.email-body { padding: 24px 18px !important; }
|
|
46
|
+
.email-header { padding: 20px 18px !important; }
|
|
61
47
|
}
|
|
62
48
|
`;
|
|
63
49
|
return `<!DOCTYPE html>
|
|
64
|
-
<html>
|
|
50
|
+
<html lang="en">
|
|
65
51
|
<head>
|
|
66
52
|
<meta charset="utf-8">
|
|
67
53
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
54
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
55
|
+
<title>${escapeHtml(brand)}</title>
|
|
68
56
|
<style type="text/css">${responsiveCss}</style>
|
|
69
57
|
</head>
|
|
70
|
-
<body style="margin:0;padding:0;
|
|
71
|
-
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="background:#
|
|
72
|
-
<tr
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
58
|
+
<body style="margin:0;padding:0;background:#f3f4f6;-webkit-font-smoothing:antialiased;">
|
|
59
|
+
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="background:#f3f4f6;border-collapse:collapse;">
|
|
60
|
+
<tr>
|
|
61
|
+
<td class="email-shell" align="center" style="padding:32px 16px;">
|
|
62
|
+
<table role="presentation" class="email-card" width="100%" cellpadding="0" cellspacing="0" style="max-width:600px;background:#ffffff;border-radius:16px;overflow:hidden;border:1px solid #e5e7eb;border-collapse:collapse;">
|
|
63
|
+
<tr>
|
|
64
|
+
<td class="email-header" align="center" style="padding:28px 32px 20px 32px;background:#ffffff;">
|
|
65
|
+
${logoHtml}
|
|
66
|
+
${logoUrl && companyName ? `<div style="margin-top:10px;font-size:13px;color:#6b7280;">${escapeHtml(companyName)}</div>` : ""}
|
|
67
|
+
</td>
|
|
68
|
+
</tr>
|
|
69
|
+
<tr>
|
|
70
|
+
<td style="height:4px;line-height:4px;font-size:0;background:${accent};"> </td>
|
|
71
|
+
</tr>
|
|
72
|
+
<tr>
|
|
73
|
+
<td class="email-body" style="padding:28px 32px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.65;color:#1f2937;">
|
|
74
|
+
${bodyHtml}
|
|
75
|
+
</td>
|
|
76
|
+
</tr>
|
|
77
|
+
<tr>
|
|
78
|
+
<td style="padding:0 32px;">
|
|
79
|
+
<div style="border-top:1px solid #e5e7eb;line-height:0;font-size:0;"> </div>
|
|
80
|
+
</td>
|
|
81
|
+
</tr>
|
|
82
|
+
<tr>
|
|
83
|
+
<td align="center" style="padding:20px 32px 28px 32px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;">
|
|
84
|
+
${followTitleHtml}
|
|
85
|
+
${socialRowHtml}
|
|
86
|
+
${supportHtml ? `<div style="margin-top:14px;">${supportHtml}</div>` : ""}
|
|
87
|
+
<div style="margin-top:12px;font-size:12px;color:#9ca3af;">\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} ${escapeHtml(brand)}</div>
|
|
88
|
+
${disclaimerBlock}
|
|
89
|
+
</td>
|
|
90
|
+
</tr>
|
|
91
|
+
</table>
|
|
92
|
+
</td>
|
|
93
|
+
</tr>
|
|
79
94
|
</table>
|
|
80
95
|
</body>
|
|
81
96
|
</html>`;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isErpIntegrationEnabled } from './chunk-JC6DLWTE.js';
|
|
2
|
-
import { mergeEmailLayoutCompanyDetails, getCompanyDetailsFromSettings } from './chunk-
|
|
2
|
+
import { mergeEmailLayoutCompanyDetails, getCompanyDetailsFromSettings } from './chunk-3VZAAQUV.js';
|
|
3
3
|
import { __name } from './chunk-SHUYVCID.js';
|
|
4
4
|
import { rgb, PDFDocument, StandardFonts } from 'pdf-lib';
|
|
5
5
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk7L556RGL_cjs = require('./chunk-7L556RGL.cjs');
|
|
4
4
|
var chunkUSNT2KNT_cjs = require('./chunk-USNT2KNT.cjs');
|
|
5
5
|
|
|
6
6
|
// src/plugins/email/email-queue.ts
|
|
@@ -50,13 +50,13 @@ async function resolveInvoiceAttachmentForJob(cms, payload, options) {
|
|
|
50
50
|
invoiceAttached: false
|
|
51
51
|
};
|
|
52
52
|
const o = order;
|
|
53
|
-
if (!
|
|
53
|
+
if (!chunk7L556RGL_cjs.isOrderEligibleForInvoiceEmail(o.status, o.orderKind)) {
|
|
54
54
|
return {
|
|
55
55
|
attachments: payload.attachments,
|
|
56
56
|
invoiceAttached: false
|
|
57
57
|
};
|
|
58
58
|
}
|
|
59
|
-
const resolved = await
|
|
59
|
+
const resolved = await chunk7L556RGL_cjs.resolveOrderInvoicePdfBytes(cms, dataSource, entityMap, payload.orderId);
|
|
60
60
|
if ("error" in resolved) {
|
|
61
61
|
console.warn("[email] order invoice attach failed", {
|
|
62
62
|
orderId: payload.orderId,
|
|
@@ -133,7 +133,7 @@ async function queueEmail(cms, payload) {
|
|
|
133
133
|
let email = cms && typeof cms.getPlugin === "function" ? cms.getPlugin("email") : void 0;
|
|
134
134
|
if (!email) {
|
|
135
135
|
try {
|
|
136
|
-
const { EmailService } = await import('./email-service-
|
|
136
|
+
const { EmailService } = await import('./email-service-ATCPJFWG.cjs');
|
|
137
137
|
const env = typeof process !== "undefined" && process.env ? process.env : {};
|
|
138
138
|
const type = String(env.SMTP_TYPE || "SMTP").toUpperCase();
|
|
139
139
|
const port = env.SMTP_PORT ? parseInt(env.SMTP_PORT, 10) : void 0;
|
|
@@ -92,7 +92,7 @@ async function emitOrderNotificationTrigger(triggerKey, orderId, deps, extra) {
|
|
|
92
92
|
};
|
|
93
93
|
if (listenerCount === 0) {
|
|
94
94
|
try {
|
|
95
|
-
const { dispatchOrderNotificationDirectly } = await import('./order-notification-dispatcher-
|
|
95
|
+
const { dispatchOrderNotificationDirectly } = await import('./order-notification-dispatcher-5TUFCDU7.cjs');
|
|
96
96
|
await dispatchOrderNotificationDirectly(triggerKey, triggerPayload, deps.dataSource, deps.entityMap);
|
|
97
97
|
} catch (err) {
|
|
98
98
|
console.error("[notification-triggers] direct dispatch failed", {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isOrderEligibleForInvoiceEmail, resolveOrderInvoicePdfBytes } from './chunk-
|
|
1
|
+
import { isOrderEligibleForInvoiceEmail, resolveOrderInvoicePdfBytes } from './chunk-MWEK7N3F.js';
|
|
2
2
|
import { __name } from './chunk-SHUYVCID.js';
|
|
3
3
|
|
|
4
4
|
// src/plugins/email/email-queue.ts
|
|
@@ -131,7 +131,7 @@ async function queueEmail(cms, payload) {
|
|
|
131
131
|
let email = cms && typeof cms.getPlugin === "function" ? cms.getPlugin("email") : void 0;
|
|
132
132
|
if (!email) {
|
|
133
133
|
try {
|
|
134
|
-
const { EmailService } = await import('./email-service-
|
|
134
|
+
const { EmailService } = await import('./email-service-DPKVQOKP.js');
|
|
135
135
|
const env = typeof process !== "undefined" && process.env ? process.env : {};
|
|
136
136
|
const type = String(env.SMTP_TYPE || "SMTP").toUpperCase();
|
|
137
137
|
const port = env.SMTP_PORT ? parseInt(env.SMTP_PORT, 10) : void 0;
|
|
@@ -23,66 +23,81 @@ function socialLinkInnerHtml(s) {
|
|
|
23
23
|
return escapeHtml(label);
|
|
24
24
|
}
|
|
25
25
|
chunkUSNT2KNT_cjs.__name(socialLinkInnerHtml, "socialLinkInnerHtml");
|
|
26
|
-
function supportLinesHtml(supportEmail, supportPhone
|
|
26
|
+
function supportLinesHtml(supportEmail, supportPhone) {
|
|
27
27
|
const parts = [];
|
|
28
|
-
const top = opts?.tightTop ? "margin-top:0;" : "margin-top:4px;";
|
|
29
28
|
if (supportEmail) {
|
|
30
|
-
parts.push(`<
|
|
29
|
+
parts.push(`<a href="mailto:${escapeHtml(supportEmail)}" style="color:#6b7280;text-decoration:none;font-size:13px;">${escapeHtml(supportEmail)}</a>`);
|
|
31
30
|
}
|
|
32
31
|
if (supportPhone) {
|
|
33
|
-
parts.push(`<
|
|
32
|
+
parts.push(`<span style="color:#6b7280;font-size:13px;">${escapeHtml(supportPhone)}</span>`);
|
|
34
33
|
}
|
|
35
|
-
return parts.join("");
|
|
34
|
+
return parts.join('<span style="color:#d1d5db;padding:0 8px;">\xB7</span>');
|
|
36
35
|
}
|
|
37
36
|
chunkUSNT2KNT_cjs.__name(supportLinesHtml, "supportLinesHtml");
|
|
38
37
|
function renderLayout(options) {
|
|
39
38
|
const { bodyHtml, companyDetails } = options;
|
|
40
39
|
const { logoUrl, companyName, supportEmail, supportPhone, socialLinks, footerDisclaimer, followUsTitle = "Follow Us" } = companyDetails;
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
});
|
|
40
|
+
const brand = (companyName || "Store").trim();
|
|
41
|
+
const accent = "#ea580c";
|
|
42
|
+
const logoHtml = logoUrl ? `<img src="${escapeHtml(logoUrl)}" alt="${escapeHtml(brand)}" width="160" style="max-height:56px;max-width:180px;height:auto;width:auto;display:block;border:0;margin:0 auto;" />` : `<div style="font-size:22px;font-weight:700;letter-spacing:-0.02em;color:#111827;">${escapeHtml(brand)}</div>`;
|
|
44
43
|
const hasSocial = Boolean(socialLinks?.length);
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
if (companyName) {
|
|
50
|
-
brandFooterInner.push(`<span style="font-size:14px;font-weight:600;color:#111;vertical-align:middle;">${escapeHtml(companyName)}</span>`);
|
|
51
|
-
}
|
|
52
|
-
const brandFooterHtml = brandFooterInner.length ? `<div style="line-height:1.4;">${brandFooterInner.join("")}</div>` : "";
|
|
53
|
-
const followTitleHtml = hasSocial && followUsTitle ? `<div class="footer-follow-title" style="font-size:13px;font-weight:600;color:#555;margin:0;">${escapeHtml(followUsTitle)}</div>` : "";
|
|
54
|
-
const socialRowHtml = hasSocial && socialLinks ? `<div class="footer-social-icons" style="margin-top:6px;text-align:left;font-size:0;line-height:0;">${socialLinks.map((s) => `<a href="${escapeHtml(s.url)}" style="display:inline-block;margin-right:12px;text-decoration:none;color:#333;font-size:18px;line-height:1;vertical-align:middle;">${socialLinkInnerHtml(s)}</a>`).join("")}</div>` : "";
|
|
55
|
-
const rowSupport = supportFooterHtml ? `<tr><td class="footer-support-cell" colspan="2" valign="top" style="padding:0 0 10px 0;">${supportFooterHtml}</td></tr>` : "";
|
|
56
|
-
let footerBlock = "";
|
|
57
|
-
if (brandFooterHtml || followTitleHtml || socialRowHtml || footerDisclaimer || rowSupport) {
|
|
58
|
-
const rowBrand = brandFooterHtml ? `<tr><td class="footer-brand-cell" colspan="2" valign="top" style="padding:0 0 10px 0;">${brandFooterHtml}</td></tr>` : "";
|
|
59
|
-
const rowFollowTitle = followTitleHtml ? `<tr><td class="footer-follow-cell" colspan="2" valign="top" style="padding:14px 0 0 0;text-align:left;">${followTitleHtml}</td></tr>` : "";
|
|
60
|
-
const rowSocial = socialRowHtml ? `<tr><td class="footer-social-cell" colspan="2" style="padding:0;text-align:left;">${socialRowHtml}</td></tr>` : "";
|
|
61
|
-
footerBlock = `<table role="presentation" class="footer-main" width="100%" cellpadding="0" cellspacing="0" style="margin-top:28px;padding-top:16px;">${rowBrand}${rowSupport}${rowFollowTitle}${rowSocial}</table>`;
|
|
62
|
-
}
|
|
63
|
-
const disclaimerBlock = footerDisclaimer ? `<div style="margin-top:20px;padding-top:12px;font-size:11px;line-height:1.5;color:#888;">${escapeHtml(footerDisclaimer).replace(/\n/g, "<br/>")}</div>` : "";
|
|
44
|
+
const socialRowHtml = hasSocial && socialLinks ? `<div style="margin-top:12px;text-align:center;font-size:0;line-height:0;">${socialLinks.map((s) => `<a href="${escapeHtml(s.url)}" style="display:inline-block;margin:0 8px;text-decoration:none;color:#374151;font-size:18px;line-height:1;vertical-align:middle;">${socialLinkInnerHtml(s)}</a>`).join("")}</div>` : "";
|
|
45
|
+
const followTitleHtml = hasSocial && followUsTitle ? `<div style="font-size:12px;font-weight:600;color:#9ca3af;text-transform:uppercase;letter-spacing:0.06em;margin:0 0 4px 0;">${escapeHtml(followUsTitle)}</div>` : "";
|
|
46
|
+
const supportHtml = supportLinesHtml(supportEmail, supportPhone);
|
|
47
|
+
const disclaimerBlock = footerDisclaimer ? `<div style="margin-top:16px;font-size:11px;line-height:1.5;color:#9ca3af;">${escapeHtml(footerDisclaimer).replace(/\n/g, "<br/>")}</div>` : "";
|
|
64
48
|
const responsiveCss = `
|
|
65
|
-
@media only screen and (max-width:
|
|
66
|
-
.email-
|
|
67
|
-
.
|
|
49
|
+
@media only screen and (max-width: 620px) {
|
|
50
|
+
.email-shell { padding: 16px 10px !important; }
|
|
51
|
+
.email-card { border-radius: 12px !important; }
|
|
52
|
+
.email-body { padding: 24px 18px !important; }
|
|
53
|
+
.email-header { padding: 20px 18px !important; }
|
|
68
54
|
}
|
|
69
55
|
`;
|
|
70
56
|
return `<!DOCTYPE html>
|
|
71
|
-
<html>
|
|
57
|
+
<html lang="en">
|
|
72
58
|
<head>
|
|
73
59
|
<meta charset="utf-8">
|
|
74
60
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
61
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
62
|
+
<title>${escapeHtml(brand)}</title>
|
|
75
63
|
<style type="text/css">${responsiveCss}</style>
|
|
76
64
|
</head>
|
|
77
|
-
<body style="margin:0;padding:0;
|
|
78
|
-
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="background:#
|
|
79
|
-
<tr
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
65
|
+
<body style="margin:0;padding:0;background:#f3f4f6;-webkit-font-smoothing:antialiased;">
|
|
66
|
+
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="background:#f3f4f6;border-collapse:collapse;">
|
|
67
|
+
<tr>
|
|
68
|
+
<td class="email-shell" align="center" style="padding:32px 16px;">
|
|
69
|
+
<table role="presentation" class="email-card" width="100%" cellpadding="0" cellspacing="0" style="max-width:600px;background:#ffffff;border-radius:16px;overflow:hidden;border:1px solid #e5e7eb;border-collapse:collapse;">
|
|
70
|
+
<tr>
|
|
71
|
+
<td class="email-header" align="center" style="padding:28px 32px 20px 32px;background:#ffffff;">
|
|
72
|
+
${logoHtml}
|
|
73
|
+
${logoUrl && companyName ? `<div style="margin-top:10px;font-size:13px;color:#6b7280;">${escapeHtml(companyName)}</div>` : ""}
|
|
74
|
+
</td>
|
|
75
|
+
</tr>
|
|
76
|
+
<tr>
|
|
77
|
+
<td style="height:4px;line-height:4px;font-size:0;background:${accent};"> </td>
|
|
78
|
+
</tr>
|
|
79
|
+
<tr>
|
|
80
|
+
<td class="email-body" style="padding:28px 32px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.65;color:#1f2937;">
|
|
81
|
+
${bodyHtml}
|
|
82
|
+
</td>
|
|
83
|
+
</tr>
|
|
84
|
+
<tr>
|
|
85
|
+
<td style="padding:0 32px;">
|
|
86
|
+
<div style="border-top:1px solid #e5e7eb;line-height:0;font-size:0;"> </div>
|
|
87
|
+
</td>
|
|
88
|
+
</tr>
|
|
89
|
+
<tr>
|
|
90
|
+
<td align="center" style="padding:20px 32px 28px 32px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;">
|
|
91
|
+
${followTitleHtml}
|
|
92
|
+
${socialRowHtml}
|
|
93
|
+
${supportHtml ? `<div style="margin-top:14px;">${supportHtml}</div>` : ""}
|
|
94
|
+
<div style="margin-top:12px;font-size:12px;color:#9ca3af;">\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} ${escapeHtml(brand)}</div>
|
|
95
|
+
${disclaimerBlock}
|
|
96
|
+
</td>
|
|
97
|
+
</tr>
|
|
98
|
+
</table>
|
|
99
|
+
</td>
|
|
100
|
+
</tr>
|
|
86
101
|
</table>
|
|
87
102
|
</body>
|
|
88
103
|
</html>`;
|
|
@@ -685,7 +700,7 @@ function renderEmail(templateName, ctx, options) {
|
|
|
685
700
|
chunkUSNT2KNT_cjs.__name(renderEmail, "renderEmail");
|
|
686
701
|
|
|
687
702
|
// src/plugins/email/email-service.ts
|
|
688
|
-
var require2 = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-
|
|
703
|
+
var require2 = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-YVP4NQII.cjs', document.baseURI).href)));
|
|
689
704
|
var MailComposer = require2("nodemailer/lib/mail-composer");
|
|
690
705
|
var SES_REGIONS_WITHOUT_SMTP = /* @__PURE__ */ new Set([
|
|
691
706
|
"af-south-1",
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-
|
|
3
|
+
var chunkMXABMVF7_cjs = require('./chunk-MXABMVF7.cjs');
|
|
4
|
+
require('./chunk-7L556RGL.cjs');
|
|
5
5
|
require('./chunk-UPLVMVRX.cjs');
|
|
6
|
-
require('./chunk-
|
|
6
|
+
require('./chunk-JLDHK2QE.cjs');
|
|
7
7
|
require('./chunk-USNT2KNT.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
Object.defineProperty(exports, "queueEmail", {
|
|
12
12
|
enumerable: true,
|
|
13
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunkMXABMVF7_cjs.queueEmail; }
|
|
14
14
|
});
|
|
15
15
|
Object.defineProperty(exports, "queueOrderPlacedEmails", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunkMXABMVF7_cjs.queueOrderPlacedEmails; }
|
|
18
18
|
});
|
|
19
19
|
Object.defineProperty(exports, "queueVendorOnboardEmails", {
|
|
20
20
|
enumerable: true,
|
|
21
|
-
get: function () { return
|
|
21
|
+
get: function () { return chunkMXABMVF7_cjs.queueVendorOnboardEmails; }
|
|
22
22
|
});
|
|
23
23
|
Object.defineProperty(exports, "registerEmailQueueProcessor", {
|
|
24
24
|
enumerable: true,
|
|
25
|
-
get: function () { return
|
|
25
|
+
get: function () { return chunkMXABMVF7_cjs.registerEmailQueueProcessor; }
|
|
26
26
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { queueEmail, queueOrderPlacedEmails, queueVendorOnboardEmails, registerEmailQueueProcessor } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { queueEmail, queueOrderPlacedEmails, queueVendorOnboardEmails, registerEmailQueueProcessor } from './chunk-RXTUSF3R.js';
|
|
2
|
+
import './chunk-MWEK7N3F.js';
|
|
3
3
|
import './chunk-JC6DLWTE.js';
|
|
4
|
-
import './chunk-
|
|
4
|
+
import './chunk-3VZAAQUV.js';
|
|
5
5
|
import './chunk-SHUYVCID.js';
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-
|
|
3
|
+
var chunkYVP4NQII_cjs = require('./chunk-YVP4NQII.cjs');
|
|
4
|
+
require('./chunk-JLDHK2QE.cjs');
|
|
5
5
|
require('./chunk-USNT2KNT.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "EmailService", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkYVP4NQII_cjs.EmailService; }
|
|
12
12
|
});
|
|
13
13
|
Object.defineProperty(exports, "SES_REGIONS_WITHOUT_SMTP", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkYVP4NQII_cjs.SES_REGIONS_WITHOUT_SMTP; }
|
|
16
16
|
});
|
|
17
17
|
Object.defineProperty(exports, "emailTemplates", {
|
|
18
18
|
enumerable: true,
|
|
19
|
-
get: function () { return
|
|
19
|
+
get: function () { return chunkYVP4NQII_cjs.emailTemplates; }
|
|
20
20
|
});
|
|
21
21
|
Object.defineProperty(exports, "sesRegionSupportsSmtp", {
|
|
22
22
|
enumerable: true,
|
|
23
|
-
get: function () { return
|
|
23
|
+
get: function () { return chunkYVP4NQII_cjs.sesRegionSupportsSmtp; }
|
|
24
24
|
});
|
|
25
25
|
Object.defineProperty(exports, "sesSmtpHost", {
|
|
26
26
|
enumerable: true,
|
|
27
|
-
get: function () { return
|
|
27
|
+
get: function () { return chunkYVP4NQII_cjs.sesSmtpHost; }
|
|
28
28
|
});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { EmailService, SES_REGIONS_WITHOUT_SMTP, emailTemplates, sesRegionSupportsSmtp, sesSmtpHost } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { EmailService, SES_REGIONS_WITHOUT_SMTP, emailTemplates, sesRegionSupportsSmtp, sesSmtpHost } from './chunk-KAOHOHCA.js';
|
|
2
|
+
import './chunk-3VZAAQUV.js';
|
|
3
3
|
import './chunk-SHUYVCID.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkRHYVNRYG_cjs = require('./chunk-RHYVNRYG.cjs');
|
|
4
4
|
require('./chunk-UEE4PTTB.cjs');
|
|
5
5
|
require('./chunk-USNT2KNT.cjs');
|
|
6
6
|
|
|
@@ -8,9 +8,9 @@ require('./chunk-USNT2KNT.cjs');
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "emitOrderNotificationTrigger", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkRHYVNRYG_cjs.emitOrderNotificationTrigger; }
|
|
12
12
|
});
|
|
13
13
|
Object.defineProperty(exports, "fireOrderNotificationTrigger", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkRHYVNRYG_cjs.fireOrderNotificationTrigger; }
|
|
16
16
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ORDER_INVOICE_EMAIL_ELIGIBLE_STATUSES, isOrderEligibleForInvoiceEmail, resolveOrderInvoicePdfBytes, streamOrderInvoicePdf } from './chunk-
|
|
1
|
+
export { ORDER_INVOICE_EMAIL_ELIGIBLE_STATUSES, isOrderEligibleForInvoiceEmail, resolveOrderInvoicePdfBytes, streamOrderInvoicePdf } from './chunk-MWEK7N3F.js';
|
|
2
2
|
import './chunk-JC6DLWTE.js';
|
|
3
|
-
import './chunk-
|
|
3
|
+
import './chunk-3VZAAQUV.js';
|
|
4
4
|
import './chunk-SHUYVCID.js';
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk7L556RGL_cjs = require('./chunk-7L556RGL.cjs');
|
|
4
4
|
require('./chunk-UPLVMVRX.cjs');
|
|
5
|
-
require('./chunk-
|
|
5
|
+
require('./chunk-JLDHK2QE.cjs');
|
|
6
6
|
require('./chunk-USNT2KNT.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, "ORDER_INVOICE_EMAIL_ELIGIBLE_STATUSES", {
|
|
11
11
|
enumerable: true,
|
|
12
|
-
get: function () { return
|
|
12
|
+
get: function () { return chunk7L556RGL_cjs.ORDER_INVOICE_EMAIL_ELIGIBLE_STATUSES; }
|
|
13
13
|
});
|
|
14
14
|
Object.defineProperty(exports, "isOrderEligibleForInvoiceEmail", {
|
|
15
15
|
enumerable: true,
|
|
16
|
-
get: function () { return
|
|
16
|
+
get: function () { return chunk7L556RGL_cjs.isOrderEligibleForInvoiceEmail; }
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "resolveOrderInvoicePdfBytes", {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function () { return
|
|
20
|
+
get: function () { return chunk7L556RGL_cjs.resolveOrderInvoicePdfBytes; }
|
|
21
21
|
});
|
|
22
22
|
Object.defineProperty(exports, "streamOrderInvoicePdf", {
|
|
23
23
|
enumerable: true,
|
|
24
|
-
get: function () { return
|
|
24
|
+
get: function () { return chunk7L556RGL_cjs.streamOrderInvoicePdf; }
|
|
25
25
|
});
|