UNPKG

nodemailer-mandrill-template-transport

Version:
169 lines (120 loc) 4.84 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (_ref4) { var auth = _ref4.auth; var mandrillClient = new _mandrill.Mandrill(auth.apiKey); var mandrillSend = (0, _lodash2.default)(send, mandrillClient); var validApiRequest = function validApiRequest(callback) { return function (mailerResponse) { return callback(null, mailerResponse); }; }; var invalidApiRequest = function invalidApiRequest(callback) { return function (err) { return callback(err); }; }; return { version: packageInfo.version, name: TRANSPORTER_NAME, client: mandrillClient, send: function send(mail, callback) { return mandrillSend(mail).then(validApiRequest(callback)).catch(invalidApiRequest(callback)); } }; }; var _mandrill = require('mandrill-api/mandrill'); var _addressparser = require('addressparser'); var _addressparser2 = _interopRequireDefault(_addressparser); var _lodash = require('lodash.partial'); var _lodash2 = _interopRequireDefault(_lodash); var _lodash3 = require('lodash.groupby'); var _lodash4 = _interopRequireDefault(_lodash3); var _lodash5 = require('lodash.isundefined'); var _lodash6 = _interopRequireDefault(_lodash5); var _lodash7 = require('lodash.isfunction'); var _lodash8 = _interopRequireDefault(_lodash7); var _lodash9 = require('lodash.isarray'); var _lodash10 = _interopRequireDefault(_lodash9); var _lodash11 = require('lodash.constant'); var _lodash12 = _interopRequireDefault(_lodash11); var _lodash13 = require('lodash.merge'); var _lodash14 = _interopRequireDefault(_lodash13); var _lodash15 = require('lodash.pick'); var _lodash16 = _interopRequireDefault(_lodash15); var _lodash17 = require('lodash.omit'); var _lodash18 = _interopRequireDefault(_lodash17); var _lodash19 = require('lodash.cond'); var _lodash20 = _interopRequireDefault(_lodash19); var _lodash21 = require('lodash.first'); var _lodash22 = _interopRequireDefault(_lodash21); var _lodash23 = require('lodash.flatten'); var _lodash24 = _interopRequireDefault(_lodash23); var _lodash25 = require('lodash.has'); var _lodash26 = _interopRequireDefault(_lodash25); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } var packageInfo = require('../package.json'); var TRANSPORTER_NAME = 'MandrillTemplate'; function formatEmail(type, item) { var hasAddr = function hasAddr(item) { return (0, _lodash26.default)(item, 'address') || (0, _lodash26.default)(item, 'email'); }; return (0, _lodash20.default)([[_lodash6.default, (0, _lodash12.default)([])], [_lodash8.default, function (arr) { return formatEmail(type, arr()); }], [hasAddr, function (arr) { return { email: arr.address, name: arr.name, type: type }; }], [_lodash10.default, function (arr) { return arr.map(function (item) { return formatEmail(type, item); }); }], [(0, _lodash12.default)(true), function (arr) { var emailList = (0, _addressparser2.default)(arr) || []; return emailList.map(function (_ref) { var email = _ref.address; var name = _ref.name; return { email: email, name: name, type: type }; }); }]])(item); } function formatHeader(data) { return (0, _lodash14.default)(data.headers, { 'Reply-To': data.replyTo }); } /* * Need to rewrite this function to be more readable */ function formatMailOptions(data) { var _ref2; var toUnflatten = ['to', 'cc', 'bcc'].map(function (type) { return formatEmail(type, data[type]); }); var to = (_ref2 = []).concat.apply(_ref2, _toConsumableArray((0, _lodash24.default)(toUnflatten))); var _ref3 = (0, _lodash22.default)(formatEmail('from', data.from)) || {}; var from_email = _ref3.email; var from_name = _ref3.name; var message = (0, _lodash14.default)({ headers: formatHeader(data) }, (0, _lodash18.default)(data, 'template_name', 'template_content', 'from', 'cc', 'to', 'bcc', 'replyTo'), { from_email: from_email, from_name: from_name, to: to }); return (0, _lodash14.default)((0, _lodash16.default)(data, 'template_name', 'template_content'), { message: message }); } function send(mandrillClient, mail) { return new Promise(function (resolve, reject) { var onSuccess = function onSuccess(results) { var mailerResponse = (0, _lodash4.default)(results, 'status'); mailerResponse.messageId = (results[0] || {})._id; resolve(mailerResponse); }; var payload = formatMailOptions(mail.data); mandrillClient.messages.sendTemplate(payload, onSuccess, reject); }); }