the-mail
Version:
Mail client for the-framework
135 lines (112 loc) • 9.13 kB
JavaScript
/**
* @class TheMail
*/
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _require = require('asobj'),
clone = _require.clone;
var _require2 = require('the-check'),
unlessProduction = _require2.unlessProduction;
var _require3 = require('./helpers'),
toLowerKeys = _require3.toLowerKeys;
var _require4 = require('./sending'),
sendMock = _require4.sendMock,
sendSendgrid = _require4.sendSendgrid,
sendSMTP = _require4.sendSMTP;
/** @lends TheMail */
var TheMail =
/*#__PURE__*/
function () {
function TheMail() {
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
(0, _classCallCheck2.default)(this, TheMail);
var env = toLowerKeys(config.env || clone(config, {
without: 'name'
}));
this._env = env;
}
(0, _createClass2.default)(TheMail, [{
key: "send",
/**
* Send mail
* @param {string} config.from - From address
* @param {string} config.to - To address
* @param {string} config.subject - Mail subject
* @param {string} config.content - Mail content
* @returns {Promise}
*/
value: function () {
var _send = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee(config) {
var env, content, from, subject, to, service;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
env = this.env;
unlessProduction(function () {
var requiredKeys = ['from', 'to'];
for (var _i = 0; _i < requiredKeys.length; _i++) {
var key = requiredKeys[_i];
if (!config[key]) {
throw new Error("[TheMail] config.".concat(key, " is required"));
}
}
});
content = config.content, from = config.from, subject = config.subject, to = config.to;
service = String(env.service || 'mock').toLowerCase().trim();
_context.t0 = service;
_context.next = _context.t0 === 'mock' ? 7 : _context.t0 === 'sendgrid' ? 8 : _context.t0 === 'smtp' ? 9 : 10;
break;
case 7:
return _context.abrupt("return", sendMock({
content: content,
from: from,
subject: subject,
to: to
}));
case 8:
return _context.abrupt("return", sendSendgrid({
content: content,
from: from,
key: env.key,
subject: subject,
to: to
}));
case 9:
return _context.abrupt("return", sendSMTP({
content: content,
from: from,
subject: subject,
to: to,
url: env.url
}));
case 10:
throw new Error("[TheMail] Unknown service: ".concat(env.service));
case 11:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function send(_x) {
return _send.apply(this, arguments);
}
return send;
}()
}, {
key: "env",
get: function get() {
return this._env;
}
}]);
return TheMail;
}();
module.exports = TheMail;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRoZU1haWwuanMiXSwibmFtZXMiOlsicmVxdWlyZSIsImNsb25lIiwidW5sZXNzUHJvZHVjdGlvbiIsInRvTG93ZXJLZXlzIiwic2VuZE1vY2siLCJzZW5kU2VuZGdyaWQiLCJzZW5kU01UUCIsIlRoZU1haWwiLCJjb25maWciLCJlbnYiLCJ3aXRob3V0IiwiX2VudiIsInJlcXVpcmVkS2V5cyIsImtleSIsIkVycm9yIiwiY29udGVudCIsImZyb20iLCJzdWJqZWN0IiwidG8iLCJzZXJ2aWNlIiwiU3RyaW5nIiwidG9Mb3dlckNhc2UiLCJ0cmltIiwidXJsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7OztBQUdBOzs7Ozs7Ozs7Ozs7ZUFFa0JBLE9BQU8sQ0FBQyxPQUFELEM7SUFBakJDLEssWUFBQUEsSzs7Z0JBQ3FCRCxPQUFPLENBQUMsV0FBRCxDO0lBQTVCRSxnQixhQUFBQSxnQjs7Z0JBQ2dCRixPQUFPLENBQUMsV0FBRCxDO0lBQXZCRyxXLGFBQUFBLFc7O2dCQUNxQ0gsT0FBTyxDQUFDLFdBQUQsQztJQUE1Q0ksUSxhQUFBQSxRO0lBQVVDLFksYUFBQUEsWTtJQUFjQyxRLGFBQUFBLFE7QUFFaEM7OztJQUNNQyxPOzs7QUFDSixxQkFBeUI7QUFBQSxRQUFiQyxNQUFhLHVFQUFKLEVBQUk7QUFBQTtBQUN2QixRQUFNQyxHQUFHLEdBQUdOLFdBQVcsQ0FBQ0ssTUFBTSxDQUFDQyxHQUFQLElBQWNSLEtBQUssQ0FBQ08sTUFBRCxFQUFTO0FBQUVFLE1BQUFBLE9BQU8sRUFBRTtBQUFYLEtBQVQsQ0FBcEIsQ0FBdkI7QUFDQSxTQUFLQyxJQUFMLEdBQVlGLEdBQVo7QUFDRDs7Ozs7QUFNRDs7Ozs7Ozs7Ozs7aURBUVdELE07Ozs7OztBQUNEQyxnQkFBQUEsRyxHQUFRLEksQ0FBUkEsRztBQUNSUCxnQkFBQUEsZ0JBQWdCLENBQUMsWUFBTTtBQUNyQixzQkFBTVUsWUFBWSxHQUFHLENBQUMsTUFBRCxFQUFTLElBQVQsQ0FBckI7O0FBQ0Esd0NBQWtCQSxZQUFsQixlQUFnQztBQUEzQix3QkFBTUMsR0FBRyxHQUFJRCxZQUFKLElBQVQ7O0FBQ0gsd0JBQUksQ0FBQ0osTUFBTSxDQUFDSyxHQUFELENBQVgsRUFBa0I7QUFDaEIsNEJBQU0sSUFBSUMsS0FBSiw0QkFBOEJELEdBQTlCLGtCQUFOO0FBQ0Q7QUFDRjtBQUNGLGlCQVBlLENBQWhCO0FBUVFFLGdCQUFBQSxPLEdBQStCUCxNLENBQS9CTyxPLEVBQVNDLEksR0FBc0JSLE0sQ0FBdEJRLEksRUFBTUMsTyxHQUFnQlQsTSxDQUFoQlMsTyxFQUFTQyxFLEdBQU9WLE0sQ0FBUFUsRTtBQUMxQkMsZ0JBQUFBLE8sR0FBVUMsTUFBTSxDQUFDWCxHQUFHLENBQUNVLE9BQUosSUFBZSxNQUFoQixDQUFOLENBQ2JFLFdBRGEsR0FFYkMsSUFGYSxFOzhCQUlSSCxPO2dEQUNELE0sdUJBUUEsVSx1QkFTQSxNOzs7O2lEQWhCSWYsUUFBUSxDQUFDO0FBQ2RXLGtCQUFBQSxPQUFPLEVBQVBBLE9BRGM7QUFFZEMsa0JBQUFBLElBQUksRUFBSkEsSUFGYztBQUdkQyxrQkFBQUEsT0FBTyxFQUFQQSxPQUhjO0FBSWRDLGtCQUFBQSxFQUFFLEVBQUZBO0FBSmMsaUJBQUQsQzs7O2lEQVFSYixZQUFZLENBQUM7QUFDbEJVLGtCQUFBQSxPQUFPLEVBQVBBLE9BRGtCO0FBRWxCQyxrQkFBQUEsSUFBSSxFQUFKQSxJQUZrQjtBQUdsQkgsa0JBQUFBLEdBQUcsRUFBRUosR0FBRyxDQUFDSSxHQUhTO0FBSWxCSSxrQkFBQUEsT0FBTyxFQUFQQSxPQUprQjtBQUtsQkMsa0JBQUFBLEVBQUUsRUFBRkE7QUFMa0IsaUJBQUQsQzs7O2lEQVNaWixRQUFRLENBQUM7QUFDZFMsa0JBQUFBLE9BQU8sRUFBUEEsT0FEYztBQUVkQyxrQkFBQUEsSUFBSSxFQUFKQSxJQUZjO0FBR2RDLGtCQUFBQSxPQUFPLEVBQVBBLE9BSGM7QUFJZEMsa0JBQUFBLEVBQUUsRUFBRkEsRUFKYztBQUtkSyxrQkFBQUEsR0FBRyxFQUFFZCxHQUFHLENBQUNjO0FBTEssaUJBQUQsQzs7O3NCQVNULElBQUlULEtBQUosc0NBQXdDTCxHQUFHLENBQUNVLE9BQTVDLEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QkF2REY7QUFDUixhQUFPLEtBQUtSLElBQVo7QUFDRDs7Ozs7QUEwREhhLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQmxCLE9BQWpCIiwic291cmNlUm9vdCI6Ii4uL2xpYiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGNsYXNzIFRoZU1haWxcbiAqL1xuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgY2xvbmUgfSA9IHJlcXVpcmUoJ2Fzb2JqJylcbmNvbnN0IHsgdW5sZXNzUHJvZHVjdGlvbiB9ID0gcmVxdWlyZSgndGhlLWNoZWNrJylcbmNvbnN0IHsgdG9Mb3dlcktleXMgfSA9IHJlcXVpcmUoJy4vaGVscGVycycpXG5jb25zdCB7IHNlbmRNb2NrLCBzZW5kU2VuZGdyaWQsIHNlbmRTTVRQIH0gPSByZXF1aXJlKCcuL3NlbmRpbmcnKVxuXG4vKiogQGxlbmRzIFRoZU1haWwgKi9cbmNsYXNzIFRoZU1haWwge1xuICBjb25zdHJ1Y3Rvcihjb25maWcgPSB7fSkge1xuICAgIGNvbnN0IGVudiA9IHRvTG93ZXJLZXlzKGNvbmZpZy5lbnYgfHwgY2xvbmUoY29uZmlnLCB7IHdpdGhvdXQ6ICduYW1lJyB9KSlcbiAgICB0aGlzLl9lbnYgPSBlbnZcbiAgfVxuXG4gIGdldCBlbnYoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VudlxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmQgbWFpbFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29uZmlnLmZyb20gLSBGcm9tIGFkZHJlc3NcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpZy50byAtIFRvIGFkZHJlc3NcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpZy5zdWJqZWN0IC0gTWFpbCBzdWJqZWN0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb25maWcuY29udGVudCAtIE1haWwgY29udGVudFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAgICovXG4gIGFzeW5jIHNlbmQoY29uZmlnKSB7XG4gICAgY29uc3QgeyBlbnYgfSA9IHRoaXNcbiAgICB1bmxlc3NQcm9kdWN0aW9uKCgpID0+IHtcbiAgICAgIGNvbnN0IHJlcXVpcmVkS2V5cyA9IFsnZnJvbScsICd0byddXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiByZXF1aXJlZEtleXMpIHtcbiAgICAgICAgaWYgKCFjb25maWdba2V5XSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgW1RoZU1haWxdIGNvbmZpZy4ke2tleX0gaXMgcmVxdWlyZWRgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgICBjb25zdCB7IGNvbnRlbnQsIGZyb20sIHN1YmplY3QsIHRvIH0gPSBjb25maWdcbiAgICBjb25zdCBzZXJ2aWNlID0gU3RyaW5nKGVudi5zZXJ2aWNlIHx8ICdtb2NrJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAudHJpbSgpXG5cbiAgICBzd2l0Y2ggKHNlcnZpY2UpIHtcbiAgICAgIGNhc2UgJ21vY2snOiB7XG4gICAgICAgIHJldHVybiBzZW5kTW9jayh7XG4gICAgICAgICAgY29udGVudCxcbiAgICAgICAgICBmcm9tLFxuICAgICAgICAgIHN1YmplY3QsXG4gICAgICAgICAgdG8sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBjYXNlICdzZW5kZ3JpZCc6IHtcbiAgICAgICAgcmV0dXJuIHNlbmRTZW5kZ3JpZCh7XG4gICAgICAgICAgY29udGVudCxcbiAgICAgICAgICBmcm9tLFxuICAgICAgICAgIGtleTogZW52LmtleSxcbiAgICAgICAgICBzdWJqZWN0LFxuICAgICAgICAgIHRvLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgY2FzZSAnc210cCc6IHtcbiAgICAgICAgcmV0dXJuIHNlbmRTTVRQKHtcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIGZyb20sXG4gICAgICAgICAgc3ViamVjdCxcbiAgICAgICAgICB0byxcbiAgICAgICAgICB1cmw6IGVudi51cmwsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtUaGVNYWlsXSBVbmtub3duIHNlcnZpY2U6ICR7ZW52LnNlcnZpY2V9YClcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUaGVNYWlsXG4iXX0=