@sebastianfoth/winston-nodemailer
Advanced tools
Comparing version 0.0.5 to 0.0.6
export { IErrorDetails } from './error-details.interface'; | ||
export { IWinstonNodemailerOptions } from './winston-nodemailer-options.interface'; | ||
export { ISubjectTemplateData } from './subject-template-data.interface'; | ||
export { IBodyTemplateData } from './body-template-data.interface'; |
import { SendMailOptions } from 'nodemailer'; | ||
import { SmtpOptions } from 'nodemailer-smtp-transport'; | ||
import * as TransportStream from 'winston-transport'; | ||
export interface IWinstonNodemailerOptions extends TransportStream.TransportStreamOptions, SendMailOptions, SmtpOptions { | ||
export interface IWinstonNodemailerOptions extends TransportStream.TransportStreamOptions { | ||
sendMailOptions: SendMailOptions; | ||
smtpOptions: SmtpOptions; | ||
subject: string; | ||
template?: string; | ||
waitUntilSend?: number; | ||
timestamp?: () => string; | ||
} |
@@ -11,5 +11,9 @@ import * as Transport from 'winston-transport'; | ||
private triggered; | ||
private subject; | ||
private template; | ||
constructor(options: IWinstonNodemailerOptions); | ||
log(info: any, callback: LogCallback): void; | ||
private sendMail; | ||
private returnRenderedSubject; | ||
private returnRenderedBody; | ||
} |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const Transport = require("winston-transport"); | ||
const mustache = require("mustache"); | ||
const nodemailer_1 = require("nodemailer"); | ||
const os = require("os"); | ||
class WinstonNodemailer extends Transport { | ||
@@ -13,5 +15,6 @@ constructor(options) { | ||
this.waitUntilSend = options.waitUntilSend || 60000; | ||
this.subject = options.subject || ``; | ||
this.template = options.template || ``; | ||
this.timestamp = options.timestamp || (() => (new Date()).toISOString()); | ||
this.transporter = nodemailer_1.createTransport(options); | ||
console.log(this.transporter); | ||
} | ||
@@ -59,14 +62,44 @@ log(info, callback) { | ||
console.log('timeout'); | ||
this.sendMail(callback); | ||
this.sendMail({ | ||
errorDetails: { | ||
timestamp: this.timestamp(), | ||
level, | ||
message, | ||
meta, | ||
error, | ||
}, | ||
hostname: os.hostname(), | ||
pid: process.pid, | ||
}, { | ||
errorDetails: this.errorDetailsBuffer, | ||
hostname: os.hostname(), | ||
pid: process.pid, | ||
}, callback); | ||
}, this.waitUntilSend); | ||
} | ||
} | ||
sendMail(callback) { | ||
sendMail(subjectTemplateData, bodyTemplateData, callback) { | ||
console.log(this.errorDetailsBuffer.join('')); | ||
this.transporter | ||
.sendMail(Object.assign({}, this.options, { text: this.errorDetailsBuffer.join('') }), callback); | ||
.sendMail(Object.assign({}, this.options.sendMailOptions, this.options.smtpOptions, { subject: this.returnRenderedSubject(this.subject, subjectTemplateData), text: this.returnRenderedBody(this.template, bodyTemplateData) }), callback); | ||
this.errorDetailsBuffer = []; | ||
delete this.triggered; | ||
} | ||
returnRenderedSubject(subject, templateData) { | ||
return mustache.render(subject, { | ||
level: templateData.errorDetails.level, | ||
timestamp: templateData.errorDetails.timestamp, | ||
message: templateData.errorDetails.message, | ||
pid: templateData.pid, | ||
hostname: templateData.hostname | ||
}); | ||
} | ||
returnRenderedBody(subject, templateData) { | ||
return mustache.render(subject, { | ||
errors: templateData.errorDetails, | ||
pid: templateData.pid, | ||
hostname: templateData.hostname | ||
}); | ||
} | ||
} | ||
exports.WinstonNodemailer = WinstonNodemailer; |
{ | ||
"name": "@sebastianfoth/winston-nodemailer", | ||
"version": "0.0.5", | ||
"version": "0.0.6", | ||
"description": "A nodemailer transport for winston 3.x", | ||
@@ -73,2 +73,4 @@ "main": "dist/index.js", | ||
"dependencies": { | ||
"@types/nodemailer": "^4.6.6", | ||
"@types/nodemailer-smtp-transport": "^2.7.4", | ||
"mustache": "^3.0.1", | ||
@@ -75,0 +77,0 @@ "nodemailer": "^5.1.1", |
9361
17
211
9
+ Added@types/nodemailer@^4.6.6
+ Added@types/node@22.13.5(transitive)
+ Added@types/nodemailer@3.1.144.6.8(transitive)
+ Added@types/nodemailer-direct-transport@1.0.35(transitive)
+ Added@types/nodemailer-ses-transport@3.1.6(transitive)
+ Added@types/nodemailer-smtp-transport@2.7.8(transitive)
+ Addedavailable-typed-arrays@1.0.7(transitive)
+ Addedaws-sdk@2.1692.0(transitive)
+ Addedbase64-js@1.5.1(transitive)
+ Addedbuffer@4.9.2(transitive)
+ Addedcall-bind@1.0.8(transitive)
+ Addedcall-bind-apply-helpers@1.0.2(transitive)
+ Addedcall-bound@1.0.3(transitive)
+ Addeddefine-data-property@1.1.4(transitive)
+ Addeddunder-proto@1.0.1(transitive)
+ Addedes-define-property@1.0.1(transitive)
+ Addedes-errors@1.3.0(transitive)
+ Addedes-object-atoms@1.1.1(transitive)
+ Addedevents@1.1.1(transitive)
+ Addedfor-each@0.3.5(transitive)
+ Addedfunction-bind@1.1.2(transitive)
+ Addedget-intrinsic@1.3.0(transitive)
+ Addedget-proto@1.0.1(transitive)
+ Addedgopd@1.2.0(transitive)
+ Addedhas-property-descriptors@1.0.2(transitive)
+ Addedhas-symbols@1.1.0(transitive)
+ Addedhas-tostringtag@1.0.2(transitive)
+ Addedhasown@2.0.2(transitive)
+ Addedieee754@1.1.13(transitive)
+ Addedis-arguments@1.2.0(transitive)
+ Addedis-callable@1.2.7(transitive)
+ Addedis-generator-function@1.1.0(transitive)
+ Addedis-regex@1.2.1(transitive)
+ Addedis-typed-array@1.1.15(transitive)
+ Addedisarray@1.0.0(transitive)
+ Addedjmespath@0.16.0(transitive)
+ Addedmath-intrinsics@1.1.0(transitive)
+ Addedpossible-typed-array-names@1.1.0(transitive)
+ Addedpunycode@1.3.2(transitive)
+ Addedquerystring@0.2.0(transitive)
+ Addedsafe-regex-test@1.1.0(transitive)
+ Addedsax@1.2.1(transitive)
+ Addedset-function-length@1.2.2(transitive)
+ Addedundici-types@6.20.0(transitive)
+ Addedurl@0.10.3(transitive)
+ Addedutil@0.12.5(transitive)
+ Addeduuid@8.0.0(transitive)
+ Addedwhich-typed-array@1.1.18(transitive)
+ Addedxml2js@0.6.2(transitive)
+ Addedxmlbuilder@11.0.1(transitive)