UNPKG

the-mail

Version:
122 lines (105 loc) 8.48 kB
/** * @class TheMail */ 'use strict'; import _regeneratorRuntime from "@babel/runtime/regenerator"; import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _classCallCheck from "@babel/runtime/helpers/classCallCheck"; import _createClass from "@babel/runtime/helpers/createClass"; import { clone } from 'asobj'; import { unlessProduction } from 'the-check'; import { toLowerKeys } from './helpers'; import { sendMock, sendSendgrid, sendSMTP } from './sending'; /** @lends TheMail */ var TheMail = /*#__PURE__*/ function () { function TheMail() { var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, TheMail); var env = toLowerKeys(config.env || clone(config, { without: 'name' })); this._env = env; } _createClass(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 = _asyncToGenerator( /*#__PURE__*/ _regeneratorRuntime.mark(function _callee(config) { var env, content, from, subject, to, service; return _regeneratorRuntime.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; }(); export default TheMail; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRoZU1haWwuanMiXSwibmFtZXMiOlsiY2xvbmUiLCJ1bmxlc3NQcm9kdWN0aW9uIiwidG9Mb3dlcktleXMiLCJzZW5kTW9jayIsInNlbmRTZW5kZ3JpZCIsInNlbmRTTVRQIiwiVGhlTWFpbCIsImNvbmZpZyIsImVudiIsIndpdGhvdXQiLCJfZW52IiwicmVxdWlyZWRLZXlzIiwia2V5IiwiRXJyb3IiLCJjb250ZW50IiwiZnJvbSIsInN1YmplY3QiLCJ0byIsInNlcnZpY2UiLCJTdHJpbmciLCJ0b0xvd2VyQ2FzZSIsInRyaW0iLCJ1cmwiXSwibWFwcGluZ3MiOiJBQUFBOzs7QUFHQTs7Ozs7O0FBRUEsU0FBUUEsS0FBUixRQUFvQixPQUFwQjtBQUNBLFNBQVFDLGdCQUFSLFFBQStCLFdBQS9CO0FBQ0EsU0FBUUMsV0FBUixRQUEwQixXQUExQjtBQUNBLFNBQVFDLFFBQVIsRUFBa0JDLFlBQWxCLEVBQWdDQyxRQUFoQyxRQUErQyxXQUEvQztBQUVBOztJQUNNQyxPOzs7QUFDSixxQkFBeUI7QUFBQSxRQUFiQyxNQUFhLHVFQUFKLEVBQUk7O0FBQUE7O0FBQ3ZCLFFBQU1DLEdBQUcsR0FBR04sV0FBVyxDQUFDSyxNQUFNLENBQUNDLEdBQVAsSUFBY1IsS0FBSyxDQUFDTyxNQUFELEVBQVM7QUFBRUUsTUFBQUEsT0FBTyxFQUFFO0FBQVgsS0FBVCxDQUFwQixDQUF2QjtBQUNBLFNBQUtDLElBQUwsR0FBWUYsR0FBWjtBQUNEOzs7OztBQU1EOzs7Ozs7Ozs7OztnREFRV0QsTTs7Ozs7O0FBQ0RDLGdCQUFBQSxHLEdBQVEsSSxDQUFSQSxHO0FBQ1JQLGdCQUFBQSxnQkFBZ0IsQ0FBQyxZQUFNO0FBQ3JCLHNCQUFNVSxZQUFZLEdBQUcsQ0FBQyxNQUFELEVBQVMsSUFBVCxDQUFyQjs7QUFDQSx3Q0FBa0JBLFlBQWxCLGVBQWdDO0FBQTNCLHdCQUFNQyxHQUFHLEdBQUlELFlBQUosSUFBVDs7QUFDSCx3QkFBSSxDQUFDSixNQUFNLENBQUNLLEdBQUQsQ0FBWCxFQUFrQjtBQUNoQiw0QkFBTSxJQUFJQyxLQUFKLDRCQUE4QkQsR0FBOUIsa0JBQU47QUFDRDtBQUNGO0FBQ0YsaUJBUGUsQ0FBaEI7QUFRUUUsZ0JBQUFBLE8sR0FBK0JQLE0sQ0FBL0JPLE8sRUFBU0MsSSxHQUFzQlIsTSxDQUF0QlEsSSxFQUFNQyxPLEdBQWdCVCxNLENBQWhCUyxPLEVBQVNDLEUsR0FBT1YsTSxDQUFQVSxFO0FBQzFCQyxnQkFBQUEsTyxHQUFVQyxNQUFNLENBQUNYLEdBQUcsQ0FBQ1UsT0FBSixJQUFlLE1BQWhCLENBQU4sQ0FDYkUsV0FEYSxHQUViQyxJQUZhLEU7OEJBSVJILE87Z0RBQ0QsTSx1QkFRQSxVLHVCQVNBLE07Ozs7aURBaEJJZixRQUFRLENBQUM7QUFDZFcsa0JBQUFBLE9BQU8sRUFBUEEsT0FEYztBQUVkQyxrQkFBQUEsSUFBSSxFQUFKQSxJQUZjO0FBR2RDLGtCQUFBQSxPQUFPLEVBQVBBLE9BSGM7QUFJZEMsa0JBQUFBLEVBQUUsRUFBRkE7QUFKYyxpQkFBRCxDOzs7aURBUVJiLFlBQVksQ0FBQztBQUNsQlUsa0JBQUFBLE9BQU8sRUFBUEEsT0FEa0I7QUFFbEJDLGtCQUFBQSxJQUFJLEVBQUpBLElBRmtCO0FBR2xCSCxrQkFBQUEsR0FBRyxFQUFFSixHQUFHLENBQUNJLEdBSFM7QUFJbEJJLGtCQUFBQSxPQUFPLEVBQVBBLE9BSmtCO0FBS2xCQyxrQkFBQUEsRUFBRSxFQUFGQTtBQUxrQixpQkFBRCxDOzs7aURBU1paLFFBQVEsQ0FBQztBQUNkUyxrQkFBQUEsT0FBTyxFQUFQQSxPQURjO0FBRWRDLGtCQUFBQSxJQUFJLEVBQUpBLElBRmM7QUFHZEMsa0JBQUFBLE9BQU8sRUFBUEEsT0FIYztBQUlkQyxrQkFBQUEsRUFBRSxFQUFGQSxFQUpjO0FBS2RLLGtCQUFBQSxHQUFHLEVBQUVkLEdBQUcsQ0FBQ2M7QUFMSyxpQkFBRCxDOzs7c0JBU1QsSUFBSVQsS0FBSixzQ0FBd0NMLEdBQUcsQ0FBQ1UsT0FBNUMsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCQXZERjtBQUNSLGFBQU8sS0FBS1IsSUFBWjtBQUNEOzs7Ozs7QUEwREgsZUFBZUosT0FBZiIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBjbGFzcyBUaGVNYWlsXG4gKi9cbid1c2Ugc3RyaWN0J1xuXG5pbXBvcnQge2Nsb25lfSBmcm9tICdhc29iaic7XG5pbXBvcnQge3VubGVzc1Byb2R1Y3Rpb259IGZyb20gJ3RoZS1jaGVjayc7XG5pbXBvcnQge3RvTG93ZXJLZXlzfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHtzZW5kTW9jaywgc2VuZFNlbmRncmlkLCBzZW5kU01UUH0gZnJvbSAnLi9zZW5kaW5nJztcblxuLyoqIEBsZW5kcyBUaGVNYWlsICovXG5jbGFzcyBUaGVNYWlsIHtcbiAgY29uc3RydWN0b3IoY29uZmlnID0ge30pIHtcbiAgICBjb25zdCBlbnYgPSB0b0xvd2VyS2V5cyhjb25maWcuZW52IHx8IGNsb25lKGNvbmZpZywgeyB3aXRob3V0OiAnbmFtZScgfSkpXG4gICAgdGhpcy5fZW52ID0gZW52XG4gIH1cblxuICBnZXQgZW52KCkge1xuICAgIHJldHVybiB0aGlzLl9lbnZcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIG1haWxcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpZy5mcm9tIC0gRnJvbSBhZGRyZXNzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb25maWcudG8gLSBUbyBhZGRyZXNzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb25maWcuc3ViamVjdCAtIE1haWwgc3ViamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29uZmlnLmNvbnRlbnQgLSBNYWlsIGNvbnRlbnRcbiAgICogQHJldHVybnMge1Byb21pc2V9XG4gICAqL1xuICBhc3luYyBzZW5kKGNvbmZpZykge1xuICAgIGNvbnN0IHsgZW52IH0gPSB0aGlzXG4gICAgdW5sZXNzUHJvZHVjdGlvbigoKSA9PiB7XG4gICAgICBjb25zdCByZXF1aXJlZEtleXMgPSBbJ2Zyb20nLCAndG8nXVxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgcmVxdWlyZWRLZXlzKSB7XG4gICAgICAgIGlmICghY29uZmlnW2tleV0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtUaGVNYWlsXSBjb25maWcuJHtrZXl9IGlzIHJlcXVpcmVkYClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgY29uc3QgeyBjb250ZW50LCBmcm9tLCBzdWJqZWN0LCB0byB9ID0gY29uZmlnXG4gICAgY29uc3Qgc2VydmljZSA9IFN0cmluZyhlbnYuc2VydmljZSB8fCAnbW9jaycpXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnRyaW0oKVxuXG4gICAgc3dpdGNoIChzZXJ2aWNlKSB7XG4gICAgICBjYXNlICdtb2NrJzoge1xuICAgICAgICByZXR1cm4gc2VuZE1vY2soe1xuICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgZnJvbSxcbiAgICAgICAgICBzdWJqZWN0LFxuICAgICAgICAgIHRvLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgY2FzZSAnc2VuZGdyaWQnOiB7XG4gICAgICAgIHJldHVybiBzZW5kU2VuZGdyaWQoe1xuICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgZnJvbSxcbiAgICAgICAgICBrZXk6IGVudi5rZXksXG4gICAgICAgICAgc3ViamVjdCxcbiAgICAgICAgICB0byxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3NtdHAnOiB7XG4gICAgICAgIHJldHVybiBzZW5kU01UUCh7XG4gICAgICAgICAgY29udGVudCxcbiAgICAgICAgICBmcm9tLFxuICAgICAgICAgIHN1YmplY3QsXG4gICAgICAgICAgdG8sXG4gICAgICAgICAgdXJsOiBlbnYudXJsLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbVGhlTWFpbF0gVW5rbm93biBzZXJ2aWNlOiAke2Vudi5zZXJ2aWNlfWApXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRoZU1haWw7XG4iXX0=