UNPKG

@sugarcube/plugin-mail

Version:
63 lines (48 loc) 1.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.humanDuration = exports.mail = exports.encryptFile = exports.encrypt = exports.createTransporter = void 0; var _nodemailer = _interopRequireDefault(require("nodemailer")); var _gpg = _interopRequireDefault(require("gpg")); var _dateFns = require("date-fns"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const createTransporter = cfg => cfg.debug ? _nodemailer.default.createTransport({ streamTransport: true, newline: "unix", buffer: true }) : _nodemailer.default.createTransport({ host: cfg.smtp_host, port: cfg.smtp_port, auth: { user: cfg.smtp_user, pass: cfg.smtp_password } }); exports.createTransporter = createTransporter; const encrypt = (to, text) => // eslint-disable-next-line promise/avoid-new new Promise((resolve, reject) => _gpg.default.encrypt(text, [`-r ${to}`, "--armor"], (e, encrypted) => { if (e) reject(e); if (encrypted) resolve(encrypted.toString()); reject(); })); exports.encrypt = encrypt; const encryptFile = (to, stream) => // eslint-disable-next-line promise/avoid-new new Promise((resolve, reject) => _gpg.default.encryptStream(stream, [`-r ${to}`, "--armor"], (e, encrypted) => { if (e) reject(e); if (encrypted) resolve(encrypted.toString()); reject(); })); exports.encryptFile = encryptFile; const mail = async (transporter, from, to, message, subject, toEncrypt) => { const text = toEncrypt ? await encrypt(to, message) : message; return transporter.sendMail({ from, subject, to, text }); }; exports.mail = mail; const humanDuration = s => (0, _dateFns.formatDistance)(new Date(0), new Date(s)); exports.humanDuration = humanDuration;