@gravitywelluk/email-generator
Version:
A library to help generate email templates
32 lines (31 loc) • 1.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateHTMLEmail = void 0;
const debug_1 = require("@gravitywelluk/debug");
const debug = (0, debug_1.createDebug)("EMAILS:PREPARE-EMAIL");
/**
* Populate a html template replacing handlebar style values with your named values
*
* @param htmlTemplate The html string template with params {%param%}
* @param emailData The email data to load into the template
*
* @returns interpolated email string template
*/
const generateHTMLEmail = (htmlTemplate, emailData) => {
debug.info("Preparing email", emailData);
let finalTemplate = htmlTemplate;
// Matches anything in curly braces with percent symbols {%appUrl%}, {%firstName%} etc.
const placeholders = htmlTemplate.match(/\{%(.*?)%\}/g);
placeholders === null || placeholders === void 0 ? void 0 : placeholders.forEach(placeholder => {
const placeholderKey = placeholder.substring(2, placeholder.length - 2);
const replacement = emailData[placeholderKey];
if (!replacement) {
throw new Error(`${placeholder} is required`);
}
if (replacement) {
finalTemplate = finalTemplate.replace(placeholder, replacement);
}
});
return finalTemplate;
};
exports.generateHTMLEmail = generateHTMLEmail;