@sugarcube/plugin-mail
Version:
Send email notifications.
63 lines (48 loc) • 1.78 kB
JavaScript
;
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;