node_modules: update

This commit is contained in:
Dawid Dziurla
2021-07-14 08:08:23 +02:00
parent a1ab281c6f
commit ceb614a2c5
33 changed files with 323 additions and 190 deletions

View File

@ -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}`;
}
/**