UNPKG

the-mail

Version:
135 lines (112 loc) 9.13 kB
/** * @class TheMail */ 'use strict'; 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=