{"version":3,"sources":["jsdelivr-header.js","/npm/nodemailer-wrapper@1.2.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,IAAI,KAAO,QAAQ,QACf,aAAe,QAAQ,UAAU,aACjC,WAAa,QAAQ,cACrB,SAAW,QAAQ,wBACnB,SAAW,QAAQ,YACnB,YAAc,QAAQ,yBACtB,UAAY,QAAQ,uBACpB,MAAQ,QAAQ,SAChB,EAAI,QAAQ,UAEZ,OAAS,SAAS,EAAgB,GAEpC,IACI,EADA,EAAO,KAEP,EAAa,GACE,IAAI,aAOvB,IAAI,EAAO,WAAY,EA+KvB,OA1KE,QAAQ,GAAG,UAAU,WACnB,SAAS,WAAW,OAAM,WACxB,QAAQ,IAAI,mEAAoE,SAChF,QAAQ,KAAK,EACf,GACF,IAEA,SAAS,WAAW,GAAG,QAAQ,SAAS,GACtC,QAAQ,IAAI,2BAA6B,EAC3C,IAEA,SAAS,WAAW,GAAG,SAAS,SAAS,GACvC,QAAQ,IAAI,6BAA8B,EAAgB,EAC5D,IAGA,SAAS,WAAW,GAAG,gBAAgB,WACrC,QAAQ,IAAI,2CACd,IAIS,WAET,IAAK,EACH,MAAM,IAAI,MAAM,uCAOlB,GAHA,SAAS,QAAQ,GAGb,EAAiB,CACnB,IAAI,EAAa,EAAgB,OAG/B,EADoC,SAAlC,EAAgB,cACJ,WAAW,gBAAgB,SAAS,IAEpC,WAAW,gBAAgB,EAE7C,CAGA,EAAK,KAAK,SACZ,CA4HA,GAEO,CACL,UA7Hc,WAMd,MALa,CACX,aAAc,EACd,mBAAoB,EAIxB,EAuHE,YArHgB,SAAS,EAAU,GAWnC,OATA,EAAY,GAAY,EAEpB,GACF,EAAW,KAAK,GAGlB,EAAS,GAGF,IACT,EA0GE,iBAxGqB,WACrB,OAAO,CACT,EAuGE,UArGsB,SAAS,GAgB/B,OAfI,EAAW,OAEb,YAAY,WAAW,OAAO,GAAY,SAAS,GAC7C,GACF,EAAS,GAIX,EAAW,OAAS,EACpB,EAAS,KACX,IAEA,EAAS,MAGJ,IACT,EAqFE,KAnFc,SAAS,GACvB,EAAY,GAAY,EAQxB,MAAM,UAAU,CACd,SAAS,GACP,YAAY,KAAK,CAAC,GAAG,SAAS,EAAK,GACjC,GAAI,EAAK,OAAO,EAAS,GACzB,EAAS,KAAM,EACjB,GACF,EACA,SAAS,EAAQ,GACf,EAAE,KAAK,GAAQ,SAAS,GAClB,GACF,EAAY,SAAS,GAAO,SAAS,EAAK,GAGxC,QAAQ,IAAI,EAAK,UAEjB,EAAS,KAAM,EACjB,GAEJ,GACF,EACA,SAAS,EAAO,GAEd,IAAI,EAAW,IAAI,UACnB,EAAS,KAAO,EAAM,KACtB,EAAS,GAAK,EAAM,GACpB,EAAS,QAAU,EAAM,QACzB,EAAS,KAAO,EAAM,KACtB,EAAS,KAAO,EAAM,KACtB,EAAS,QAAS,EAClB,EAAS,YAAc,EAAM,YAC7B,EAAS,KAAO,IAAI,KAEpB,EAAS,MAAK,SAAS,GACrB,EAAS,KAAM,EACjB,GACF,EACA,SAAS,EAAa,GAEpB,IAAI,EAAK,EAAY,IACrB,YAAY,kBAAkB,GAAI,SAAS,EAAK,GAC9C,GAAI,EAEF,OADA,QAAQ,IAAI,GACL,EAAS,GAGlB,GACF,GACF,IAEC,SAAS,GACV,GAAI,EAAK,OAAO,EAAS,GAEzB,EAAK,KAAK,eAGV,GACF,GACF,EAkBE,MAhBU,SAAS,GACnB,SAAS,WAAW,OAAM,WACxB,QAAQ,KAAK,GACb,GACF,GACF,EAaF,EAGA,KAAK,SAAS,OAAQ,cACtB,OAAO,QAAU","file":"/npm/nodemailer-wrapper@1.2.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.19.2.\n * Original file: /npm/nodemailer-wrapper@1.2.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\n\nvar util = require(\"util\");\nvar EventEmitter = require(\"events\").EventEmitter;\nvar nodemailer = require('nodemailer');\nvar smtpPool = require('nodemailer-smtp-pool');\nvar mongoose = require('mongoose');\nvar EmailOutbox = require('./models/mailerOutbox');\nvar EmailSent = require('./models/mailerSent');\nvar async = require('async');\nvar _ = require('lodash');\n\nvar Mailer = function(databaseConfig, transportConfig) {\n\n  var self = this;\n  var transporter;\n  var addedMails = [];\n  var localEmitter = new EventEmitter();\n  var shouldCloseDatabase = false;\n\n  function Mailer() {\n    EventEmitter.call(this);\n  };\n\n  var noop = function() {};\n\n  var wireEvents = function() {\n\n    // If the Node process ends, close the Mongoose connection \n    process.on('SIGINT', function() {\n      mongoose.connection.close(function() {\n        console.log('Mongoose default connection disconnected through app termination', 'error');\n        process.exit(0);\n      });\n    });\n\n    mongoose.connection.on('open', function(ref) {\n      console.log('Succeeded connected to: ' + databaseConfig);\n    });\n\n    mongoose.connection.on('error', function(err) {\n      console.log('ERROR connecting to: %s %s', databaseConfig, err);\n    });\n\n    // When the connection is disconnected\n    mongoose.connection.on('disconnected', function() {\n      console.log('Mongoose default connection disconnected');\n    });\n\n  };\n\n  var init = function() {\n\n    if (!databaseConfig) {\n      throw new Error(\"database configuration is missing !\");\n    }\n\n    // connect to DB\n    mongoose.connect(databaseConfig);\n\n    // initialize transporter\n    if (transportConfig) {\n      var mailConfig = transportConfig.config;\n\n      if (transportConfig.transportType === 'smtp') {\n        transporter = nodemailer.createTransport(smtpPool(mailConfig));\n      } else {\n        transporter = nodemailer.createTransport(mailConfig);\n      }\n    }\n\n    // trigger onInit\n    self.emit('onInit');\n  };\n\n  var getConfig = function() {\n    var config = {\n      mailerConfig: transportConfig,\n      dbConnectionString: databaseConfig\n    };\n\n    return config;\n  };\n\n  var prepareMail = function(mailData, callback) {\n    // Make sure a callback is defined.\n    callback = (callback || noop);\n\n    if (mailData) {\n      addedMails.push(mailData);\n    }\n\n    callback(addedMails);\n\n    // Return this object reference to allow for method chaining.\n    return (this);\n  };\n\n  var getPreparedMails = function() {\n    return addedMails;\n  };\n\n  var savePreparedMails = function(callback) {\n    if (addedMails.length) {\n\n      EmailOutbox.collection.insert(addedMails, function(err) {\n        if (err) {\n          callback(err);\n        }\n\n        // clear array\n        addedMails.length = 0;\n        callback(null);\n      });\n    } else {\n      callback(null);\n    }\n\n    return (this);\n  };\n\n  var sendMails = function(callback) {\n    callback = (callback || noop);\n\n    var counter = 0;\n    var sentMails = [];\n    var successIDMails = [];\n    var falseIDMails = [];\n    var sendCounter = 0;\n\n    async.waterfall([\n      function(callback) {\n        EmailOutbox.find({}, function(err, emails) {\n          if (err) return callback(err);\n          callback(null, emails);\n        });\n      },\n      function(emails, callback) {\n        _.each(emails, function(email) {\n          if (transporter) {\n            transporter.sendMail(email, function(err, info) {\n              sendCounter++;\n\n              console.log(info.response);\n\n              callback(null, email);\n            });\n          }\n        });\n      },\n      function(email, callback) {\n\n        var sentMail = new EmailSent();\n        sentMail.from = email.from;\n        sentMail.to = email.to;\n        sentMail.subject = email.subject;\n        sentMail.text = email.text;\n        sentMail.html = email.html;\n        sentMail.status = true;\n        sentMail.attachments = email.attachments;\n        sentMail.sent = new Date();\n\n        sentMail.save(function(err) {\n          callback(null, email);\n        });\n      },\n      function(outboxEmail, callback) {\n\n        var id = outboxEmail._id;\n        EmailOutbox.findByIdAndRemove(id, function(err, user) {\n          if (err) {\n            console.log(err);\n            return callback(err);\n          }\n\n          callback();\n        });\n      }\n\n    ], function(err) {\n      if (err) return callback(err);\n\n      self.emit('onCompleted');\n\n      // call the caller\n      callback();\n    });\n  };\n\n  var close = function(callback) {\n    mongoose.connection.close(function() {\n      process.exit(0);\n      callback();\n    });\n  };\n\n  wireEvents();\n  init();\n\n  return {\n    getConfig: getConfig,\n    prepareMail: prepareMail,\n    getPreparedMails: getPreparedMails,\n    saveMails: savePreparedMails,\n    send: sendMails,\n    close: close\n  }\n};\n\n// extend the EventEmitter class\nutil.inherits(Mailer, EventEmitter);\nmodule.exports = Mailer;\n"]}