the-mail
Version:
Mail client for the-framework
122 lines (105 loc) • 8.48 kB
JavaScript
/**
* @class TheMail
*/
;
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=