@yimingliao/cms 0.0.47 → 0.0.49
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/server/index.d.ts +2 -2
- package/dist/server/index.js +11 -10
- package/package.json +1 -1
package/dist/server/index.d.ts
CHANGED
|
@@ -213,8 +213,8 @@ declare function createSendEmail({ transporter, config, }: {
|
|
|
213
213
|
};
|
|
214
214
|
}): (options: SendEmailOptions) => Promise<any>;
|
|
215
215
|
|
|
216
|
-
declare function createRenderEmailTemplate({
|
|
217
|
-
|
|
216
|
+
declare function createRenderEmailTemplate({ logoUrl, logger, }: {
|
|
217
|
+
logoUrl: string;
|
|
218
218
|
logger: Logger;
|
|
219
219
|
}): (templateKey: string, replacements?: Record<string, string>) => Promise<string>;
|
|
220
220
|
|
package/dist/server/index.js
CHANGED
|
@@ -658,36 +658,37 @@ async function readTemplate(filePath) {
|
|
|
658
658
|
}
|
|
659
659
|
}
|
|
660
660
|
function applyReplacements(html, replacements, logger) {
|
|
661
|
-
return html.replace(/\{\{\{(.*?)\}\}\}/g, (_,
|
|
661
|
+
return html.replace(/\{\{\{(.*?)\}\}\}/g, (_, raw) => {
|
|
662
|
+
const key = raw.trim();
|
|
662
663
|
const value = replacements[key];
|
|
663
664
|
if (value == null) {
|
|
664
|
-
logger
|
|
665
|
+
logger.warn({ msg: "Email template variable missing", variable: key });
|
|
665
666
|
return "";
|
|
666
667
|
}
|
|
667
668
|
return value;
|
|
668
669
|
});
|
|
669
670
|
}
|
|
670
671
|
function createRenderEmailTemplate({
|
|
671
|
-
|
|
672
|
+
logoUrl,
|
|
672
673
|
logger
|
|
673
674
|
}) {
|
|
674
675
|
return async function renderEmailTemplate(templateKey, replacements = {}) {
|
|
675
676
|
try {
|
|
676
677
|
const contentPath = path.join(TEMPLATE_DIR, `${templateKey}.html`);
|
|
678
|
+
const vars = {
|
|
679
|
+
LOGO_URL: logoUrl,
|
|
680
|
+
...replacements
|
|
681
|
+
};
|
|
677
682
|
const layoutHtml = await readTemplate(LAYOUT_PATH);
|
|
678
683
|
let contentHtml = await readTemplate(contentPath);
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
{ STORAGE_URL: storageUrl, ...replacements },
|
|
682
|
-
logger
|
|
683
|
-
);
|
|
684
|
-
return layoutHtml.replaceAll("{{{content}}}", contentHtml);
|
|
684
|
+
const merged = layoutHtml.replaceAll("{{{content}}}", contentHtml);
|
|
685
|
+
return applyReplacements(merged, vars, logger);
|
|
685
686
|
} catch (error) {
|
|
686
687
|
logger.error({
|
|
687
688
|
msg: "Email template render failed",
|
|
688
689
|
templateKey,
|
|
689
690
|
templateDir: TEMPLATE_DIR,
|
|
690
|
-
error
|
|
691
|
+
error
|
|
691
692
|
});
|
|
692
693
|
throw new Error(`Email template error: ${templateKey}`);
|
|
693
694
|
}
|