node_modules: update

This commit is contained in:
Dawid Dziurla
2020-07-09 15:48:05 +02:00
parent 80f113f0ef
commit 73116f5945
14 changed files with 164 additions and 99 deletions

View File

@ -1,5 +1,8 @@
module.exports = {
printWidth: 160,
tabWidth: 4,
singleQuote: true
singleQuote: true,
endOfLine: 'lf',
trailingComma: 'none',
arrowParens: 'avoid'
};

View File

@ -1,5 +1,14 @@
# CHANGELOG
## 6.4.10 2020-06-17
- Fixed RFC822 output for MailComposer when using invalid content-type value. Mostly relevant if message attachments have stragne content-type values set.
## 6.4.7 2020-05-28
- Always set charset=utf-8 for Content-Type headers
- Catch error whn using invalid crypto.sign input
## 6.4.6 2020-03-20
- fix: `requeueAttempts=n` should requeue `n` times (Patrick Malouin) [a27ed2f7]

View File

@ -100,12 +100,7 @@ class MailComposer {
if (attachment.filename) {
data.filename = attachment.filename;
} else if (!isMessageNode && attachment.filename !== false) {
data.filename =
(attachment.path || attachment.href || '')
.split('/')
.pop()
.split('?')
.shift() || 'attachment-' + (i + 1);
data.filename = (attachment.path || attachment.href || '').split('/').pop().split('?').shift() || 'attachment-' + (i + 1);
if (data.filename.indexOf('.') < 0) {
data.filename += '.' + mimeFuncs.detectExtension(data.contentType);
}
@ -207,7 +202,7 @@ class MailComposer {
content: this.mail.text
};
}
text.contentType = 'text/plain' + (!text.encoding && mimeFuncs.isPlainText(text.content) ? '' : '; charset=utf-8');
text.contentType = 'text/plain; charset=utf-8';
}
if (this.mail.watchHtml) {
@ -221,7 +216,7 @@ class MailComposer {
content: this.mail.watchHtml
};
}
watchHtml.contentType = 'text/watch-html' + (!watchHtml.encoding && mimeFuncs.isPlainText(watchHtml.content) ? '' : '; charset=utf-8');
watchHtml.contentType = 'text/watch-html; charset=utf-8';
}
if (this.mail.amp) {
@ -232,7 +227,7 @@ class MailComposer {
content: this.mail.amp
};
}
amp.contentType = 'text/x-amp-html' + (!amp.encoding && mimeFuncs.isPlainText(amp.content) ? '' : '; charset=utf-8');
amp.contentType = 'text/x-amp-html; charset=utf-8';
}
// only include the calendar alternative if there are no attachments
@ -261,12 +256,7 @@ class MailComposer {
}
eventObject.filename = false;
eventObject.contentType =
'text/calendar; charset="utf-8"; method=' +
(eventObject.method || 'PUBLISH')
.toString()
.trim()
.toUpperCase();
eventObject.contentType = 'text/calendar; charset=utf-8; method=' + (eventObject.method || 'PUBLISH').toString().trim().toUpperCase();
if (!eventObject.headers) {
eventObject.headers = {};
}
@ -280,7 +270,7 @@ class MailComposer {
content: this.mail.html
};
}
html.contentType = 'text/html' + (!html.encoding && mimeFuncs.isPlainText(html.content) ? '' : '; charset=utf-8');
html.contentType = 'text/html; charset=utf-8';
}
[]

View File

@ -80,11 +80,7 @@ class MimeNode {
/**
* Indicates which encoding should be used for header strings: "Q" or "B"
*/
this.textEncoding = (options.textEncoding || '')
.toString()
.trim()
.charAt(0)
.toUpperCase();
this.textEncoding = (options.textEncoding || '').toString().trim().charAt(0).toUpperCase();
/**
* Immediate parent for this node (or undefined if not set)
@ -441,16 +437,10 @@ class MimeNode {
getTransferEncoding() {
let transferEncoding = false;
let contentType = (this.getHeader('Content-Type') || '')
.toString()
.toLowerCase()
.trim();
let contentType = (this.getHeader('Content-Type') || '').toString().toLowerCase().trim();
if (this.content) {
transferEncoding = (this.getHeader('Content-Transfer-Encoding') || '')
.toString()
.toLowerCase()
.trim();
transferEncoding = (this.getHeader('Content-Transfer-Encoding') || '').toString().toLowerCase().trim();
if (!transferEncoding || !['base64', 'quoted-printable'].includes(transferEncoding)) {
if (/^text\//i.test(contentType)) {
// If there are no special symbols, no need to modify the text
@ -1023,7 +1013,7 @@ class MimeNode {
_handleContentType(structured) {
this.contentType = structured.value.trim().toLowerCase();
this.multipart = this.contentType.split('/').reduce((prev, value) => (prev === 'multipart' ? value : false));
this.multipart = /^multipart\//i.test(this.contentType) ? this.contentType.substr(this.contentType.indexOf('/') + 1) : false;
if (this.multipart) {
this.boundary = structured.params.boundary = structured.params.boundary || this.boundary || this._generateBoundary();

View File

@ -163,7 +163,12 @@ class XOAuth2 extends Stream {
iat,
exp: iat + this.options.serviceRequestTimeout
};
let token = this.jwtSignRS256(tokenData);
let token;
try {
token = this.jwtSignRS256(tokenData);
} catch (err) {
return callback(new Error('Can\x27t generate token. Check your auth options'));
}
urlOptions = {
grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
@ -355,10 +360,7 @@ class XOAuth2 extends Stream {
*/
jwtSignRS256(payload) {
payload = ['{"alg":"RS256","typ":"JWT"}', JSON.stringify(payload)].map(val => this.toBase64URL(val)).join('.');
let signature = crypto
.createSign('RSA-SHA256')
.update(payload)
.sign(this.options.privateKey);
let signature = crypto.createSign('RSA-SHA256').update(payload).sign(this.options.privateKey);
return payload + '.' + this.toBase64URL(signature);
}
}

38
node_modules/nodemailer/package.json generated vendored
View File

@ -1,55 +1,57 @@
{
"_from": "nodemailer@6.4.6",
"_id": "nodemailer@6.4.6",
"_args": [
[
"nodemailer@6.4.10",
"/Users/dawidd6/github/dawidd6/action-send-mail"
]
],
"_from": "nodemailer@6.4.10",
"_id": "nodemailer@6.4.10",
"_inBundle": false,
"_integrity": "sha512-/kJ+FYVEm2HuUlw87hjSqTss+GU35D4giOpdSfGp7DO+5h6RlJj7R94YaYHOkoxu1CSaM0d3WRBtCzwXrY6MKA==",
"_integrity": "sha512-j+pS9CURhPgk6r0ENr7dji+As2xZiHSvZeVnzKniLOw1eRAyM/7flP0u65tCnsapV8JFu+t0l/5VeHsCZEeh9g==",
"_location": "/nodemailer",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "nodemailer@6.4.6",
"raw": "nodemailer@6.4.10",
"name": "nodemailer",
"escapedName": "nodemailer",
"rawSpec": "6.4.6",
"rawSpec": "6.4.10",
"saveSpec": null,
"fetchSpec": "6.4.6"
"fetchSpec": "6.4.10"
},
"_requiredBy": [
"#USER",
"/"
],
"_resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.6.tgz",
"_shasum": "d37f504f6560b36616f646a606894fe18819107f",
"_spec": "nodemailer@6.4.6",
"_where": "/home/dawidd6/github/dawidd6/action-send-mail",
"_resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.10.tgz",
"_spec": "6.4.10",
"_where": "/Users/dawidd6/github/dawidd6/action-send-mail",
"author": {
"name": "Andris Reinman"
},
"bugs": {
"url": "https://github.com/nodemailer/nodemailer/issues"
},
"bundleDependencies": false,
"dependencies": {},
"deprecated": false,
"description": "Easy as cake e-mail sending from your Node.js applications",
"devDependencies": {
"bunyan": "1.8.12",
"chai": "4.2.0",
"eslint-config-nodemailer": "1.2.0",
"eslint-config-prettier": "6.10.0",
"eslint-config-prettier": "6.11.0",
"grunt": "1.1.0",
"grunt-cli": "1.3.2",
"grunt-eslint": "22.0.0",
"grunt-eslint": "23.0.0",
"grunt-mocha-test": "0.13.3",
"libbase64": "1.2.1",
"libmime": "4.2.1",
"libqp": "1.1.0",
"mocha": "7.1.1",
"mocha": "8.0.1",
"nodemailer-ntlm-auth": "1.0.1",
"proxy": "1.0.1",
"proxy-test-server": "1.0.0",
"sinon": "9.0.1",
"sinon": "9.0.2",
"smtp-server": "3.6.0"
},
"engines": {
@ -70,5 +72,5 @@
"postinstall": "node -e \"try{require('./postinstall')}catch(e){}\"",
"test": "grunt"
},
"version": "6.4.6"
"version": "6.4.10"
}

View File

@ -5,15 +5,28 @@ const packageData = require('./package.json');
const isEnabled = value => !!value && value !== '0' && value !== 'false';
const canUseColor = isEnabled(process.env.npm_config_color);
const text = `=== Nodemailer ${packageData.version} ===
const title = `=== Nodemailer ${packageData.version} ===`;
const text = `
Thank you for using Nodemailer for your email sending needs! While Nodemailer itself is mostly meant to be a SMTP client there are other related projects in the Nodemailer project as well.
For example:
> IMAP API ( https://imapapi.com ) is a server application to easily access IMAP accounts via REST API
> ImapFlow ( https://imapflow.com/ ) is an async IMAP client library for Node.js
> NodemailerApp ( https://nodemailer.com/app/ ) is a cross platform GUI app to debug emails
> Project Pending ( https://projectpending.com/ ) allows you to host DNS of your project domains
> Pending DNS ( https://pendingdns.com/ ) is the DNS server used that powers Project Pending
> Ethereal Email ( https://ethereal.email/ ) is an email testing service that accepts all your test emails
`;
const secs = 4;
const formatCentered = (row, columns) => {
if (columns <= row.length) {
return row;
}
return ' '.repeat(Math.round(columns / 2 - row.length / 2)) + row;
};
const formatRow = (row, columns) => {
if (row.length <= columns) {
return [row];
@ -27,10 +40,12 @@ const formatRow = (row, columns) => {
}
let slice = row.substr(0, columns);
let prefix = slice.charAt(0) === '>' ? ' ' : '';
let match = slice.match(/(\s+)[^\s]*$/);
if (match && match.index) {
let line = row.substr(0, match.index);
row = row.substr(line.length + match[1].length);
row = prefix + row.substr(line.length + match[1].length);
lines.push(line);
} else {
lines.push(row);
@ -44,7 +59,7 @@ const wrapText = text => {
let columns = Number(process.stdout.columns) || 80;
columns = Math.min(columns, 80) - 1;
return text
return (formatCentered(title, columns) + '\n' + text)
.split('\n')
.flatMap(row => formatRow(row, columns))
.join('\n');
@ -56,3 +71,17 @@ const banner = wrapText(text)
.replace(/(https:[^\s)]+)/g, '\u001B[94m $1 \u001B[96m');
console.log(canUseColor ? banner : banner.replace(/\u001B\[\d+m/g, ''));
if (canUseColor) {
process.stdout.write('\u001B[96m');
}
setInterval(() => {
process.stdout.write('.');
}, 500);
setTimeout(() => {
if (canUseColor) {
process.stdout.write('\u001B[0m\n');
}
process.exit(0);
}, secs * 1000 + 100);