mirror of
https://github.com/dawidd6/action-send-mail.git
synced 2025-10-10 05:21:28 +07:00
node_modules: update
This commit is contained in:
51
node_modules/nodemailer/lib/mime-node/index.js
generated
vendored
51
node_modules/nodemailer/lib/mime-node/index.js
generated
vendored
@ -16,6 +16,9 @@ const addressparser = require('../addressparser');
|
||||
const fetch = require('../fetch');
|
||||
const LastNewline = require('./last-newline');
|
||||
|
||||
const LeWindows = require('./le-windows');
|
||||
const LeUnix = require('./le-unix');
|
||||
|
||||
/**
|
||||
* Creates a new mime tree node. Assumes 'multipart/*' as the content type
|
||||
* if it is a branch, anything else counts as leaf. If rootNode is missing from
|
||||
@ -92,6 +95,11 @@ class MimeNode {
|
||||
*/
|
||||
this.hostname = options.hostname;
|
||||
|
||||
/**
|
||||
* If set to 'win' then uses \r\n, if 'linux' then \n. If not set (or `raw` is used) then newlines are kept as is.
|
||||
*/
|
||||
this.newline = options.newline;
|
||||
|
||||
/**
|
||||
* An array for possible child nodes
|
||||
*/
|
||||
@ -626,6 +634,15 @@ class MimeNode {
|
||||
outputStream = transform(outputStream);
|
||||
}
|
||||
|
||||
if (this.newline) {
|
||||
const winbreak = ['win', 'windows', 'dos', '\r\n'].includes(this.newline.toString().toLowerCase());
|
||||
const newlineTransform = winbreak ? new LeWindows() : new LeUnix();
|
||||
|
||||
const stream = outputStream.pipe(newlineTransform);
|
||||
outputStream.on('error', err => stream.emit('error', err));
|
||||
return stream;
|
||||
}
|
||||
|
||||
return outputStream;
|
||||
}
|
||||
|
||||
@ -1130,9 +1147,9 @@ class MimeNode {
|
||||
address.address = this._normalizeAddress(address.address);
|
||||
|
||||
if (!address.name) {
|
||||
values.push(address.address);
|
||||
values.push(address.address.indexOf(' ') >= 0 ? `<${address.address}>` : `${address.address}`);
|
||||
} else if (address.name) {
|
||||
values.push(this._encodeAddressName(address.name) + ' <' + address.address + '>');
|
||||
values.push(`${this._encodeAddressName(address.name)} <${address.address}>`);
|
||||
}
|
||||
|
||||
if (address.address) {
|
||||
@ -1141,9 +1158,8 @@ class MimeNode {
|
||||
}
|
||||
}
|
||||
} else if (address.group) {
|
||||
values.push(
|
||||
this._encodeAddressName(address.name) + ':' + (address.group.length ? this._convertAddresses(address.group, uniqueList) : '').trim() + ';'
|
||||
);
|
||||
let groupListAddresses = (address.group.length ? this._convertAddresses(address.group, uniqueList) : '').trim();
|
||||
values.push(`${this._encodeAddressName(address.name)}:${groupListAddresses};`);
|
||||
}
|
||||
});
|
||||
|
||||
@ -1157,13 +1173,17 @@ class MimeNode {
|
||||
* @return {String} address string
|
||||
*/
|
||||
_normalizeAddress(address) {
|
||||
address = (address || '').toString().trim();
|
||||
address = (address || '')
|
||||
.toString()
|
||||
.replace(/[\x00-\x1F<>]+/g, ' ') // remove unallowed characters
|
||||
.trim();
|
||||
|
||||
let lastAt = address.lastIndexOf('@');
|
||||
if (lastAt < 0) {
|
||||
// Bare username
|
||||
return address;
|
||||
}
|
||||
|
||||
let user = address.substr(0, lastAt);
|
||||
let domain = address.substr(lastAt + 1);
|
||||
|
||||
@ -1172,7 +1192,24 @@ class MimeNode {
|
||||
// 'jõgeva.ee' will be converted to 'xn--jgeva-dua.ee'
|
||||
// non-unicode domains are left as is
|
||||
|
||||
return user + '@' + punycode.toASCII(domain.toLowerCase());
|
||||
let encodedDomain;
|
||||
|
||||
try {
|
||||
encodedDomain = punycode.toASCII(domain.toLowerCase());
|
||||
} catch (err) {
|
||||
// keep as is?
|
||||
}
|
||||
|
||||
if (user.indexOf(' ') >= 0) {
|
||||
if (user.charAt(0) !== '"') {
|
||||
user = '"' + user;
|
||||
}
|
||||
if (user.substr(-1) !== '"') {
|
||||
user = user + '"';
|
||||
}
|
||||
}
|
||||
|
||||
return `${user}@${encodedDomain}`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
43
node_modules/nodemailer/lib/mime-node/le-unix.js
generated
vendored
Normal file
43
node_modules/nodemailer/lib/mime-node/le-unix.js
generated
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
'use strict';
|
||||
|
||||
const stream = require('stream');
|
||||
const Transform = stream.Transform;
|
||||
|
||||
/**
|
||||
* Ensures that only <LF> is used for linebreaks
|
||||
*
|
||||
* @param {Object} options Stream options
|
||||
*/
|
||||
class LeWindows extends Transform {
|
||||
constructor(options) {
|
||||
super(options);
|
||||
// init Transform
|
||||
this.options = options || {};
|
||||
}
|
||||
|
||||
/**
|
||||
* Escapes dots
|
||||
*/
|
||||
_transform(chunk, encoding, done) {
|
||||
let buf;
|
||||
let lastPos = 0;
|
||||
|
||||
for (let i = 0, len = chunk.length; i < len; i++) {
|
||||
if (chunk[i] === 0x0d) {
|
||||
// \n
|
||||
buf = chunk.slice(lastPos, i);
|
||||
lastPos = i + 1;
|
||||
this.push(buf);
|
||||
}
|
||||
}
|
||||
if (lastPos && lastPos < chunk.length) {
|
||||
buf = chunk.slice(lastPos);
|
||||
this.push(buf);
|
||||
} else if (!lastPos) {
|
||||
this.push(chunk);
|
||||
}
|
||||
done();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = LeWindows;
|
52
node_modules/nodemailer/lib/mime-node/le-windows.js
generated
vendored
Normal file
52
node_modules/nodemailer/lib/mime-node/le-windows.js
generated
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
'use strict';
|
||||
|
||||
const stream = require('stream');
|
||||
const Transform = stream.Transform;
|
||||
|
||||
/**
|
||||
* Ensures that only <CR><LF> sequences are used for linebreaks
|
||||
*
|
||||
* @param {Object} options Stream options
|
||||
*/
|
||||
class LeWindows extends Transform {
|
||||
constructor(options) {
|
||||
super(options);
|
||||
// init Transform
|
||||
this.options = options || {};
|
||||
this.lastByte = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Escapes dots
|
||||
*/
|
||||
_transform(chunk, encoding, done) {
|
||||
let buf;
|
||||
let lastPos = 0;
|
||||
|
||||
for (let i = 0, len = chunk.length; i < len; i++) {
|
||||
if (chunk[i] === 0x0a) {
|
||||
// \n
|
||||
if ((i && chunk[i - 1] !== 0x0d) || (!i && this.lastByte !== 0x0d)) {
|
||||
if (i > lastPos) {
|
||||
buf = chunk.slice(lastPos, i);
|
||||
this.push(buf);
|
||||
}
|
||||
this.push(Buffer.from('\r\n'));
|
||||
lastPos = i + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (lastPos && lastPos < chunk.length) {
|
||||
buf = chunk.slice(lastPos);
|
||||
this.push(buf);
|
||||
} else if (!lastPos) {
|
||||
this.push(chunk);
|
||||
}
|
||||
|
||||
this.lastByte = chunk[chunk.length - 1];
|
||||
done();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = LeWindows;
|
Reference in New Issue
Block a user