v3.0.0
📦 NPM @3.0.0
☄️ Packosphere @3.0.0
Major Changes
- ☝️ NPM release skipped
v2.xin order to match Meteor's version (NPM release happened one generation later) ⚠️ New way toimportandrequirethe packageimport { MailTime, MongoQueue, RedisQueue } from 'mail-time';⚠️ Decouple from storage, now requires{queue}passed to constructornew MailTime({})⚠️ Removedcallbackfrom.sendMail()method- 🟥 Added support for Redis as Queue storage driver 🥳
- 🍃 MongoDB as optional Queue storage driver 🥳
- ☝️ Now
josktask manager and Queue driver can use different databases
Whats' new
- ✨
ping()method - ✨
cancelMail()method - ✨
onSent()callback option - ✨ new
opts.joskoption forjosklibrary-specific options - ✨ new
opts.queueoption for storage-driver - ✨
opts.retryDelayretry delay in ms, successor toopts.interval - ✨
opts.retriesquantity of retry attempts, successor toopts.maxTries - ✨
opts.concatDelayconcatenation delay in ms, successor toopts.concatThrottling - 👨🔬 A lot of new improved tests
- 📔 Custom Queue API
Changes
- ☝️
.sendMail()now returns{Promise<string>}that can get passed into.cancelMail()method
Dependencies
- 📦
josk@5.0.0, wasv3.1.1 - 📦
deepmerge@4.3.1, wasv4.2.2
Dev Dependencies
- 📦
chai@5.1.0, wasv4.4.1 - 📦
mocha@10.4.0, wasv10.3.0 - 📦 Added
redis@4.6.13
Migrate to v3
Import was in v1/v2:
import MailTime from 'mail-time';Changed in v3 to:
import { MailTime, MongoQueue, RedisQueue } from 'mail-time';new MailTime in v3
Constructor was in v1/v2:
new MailTime({
db,
})Changed in v3 to:
new MailTime({
queue: new MongoQueue({ db }),
josk: {
adapter: {
type: 'mongo',
db: db
}
}
})prefix in v3
Constructor was in v1/v2:
new MailTime({
db,
prefix: 'prefix'
})prefix need to get duplicated in queue constructor in v3:
new MailTime({
prefix: 'prefix',
queue: new MongoQueue({
db: db,
prefix: 'prefix',
}),
josk: {
adapter: {
type: 'mongo',
db: db,
}
}
})sent/failed callback in v3
Constructor was in v1/v2:
MailTime#sendMail(message, (error, details) => {
console.log({error, details})
});Callbacks are removed in v3, onError and onSent should be used instead:
const mailQueue = new MailTime({
queue: new MongoQueue({ db }),
josk: {
adapter: { type: 'mongo', db }
},
onError(error, email, details) {
console.log(`Email "${email.mailOptions.subject}" wasn't sent to ${email.mailOptions.to}`, error, details);
},
onSent(email, details) {
console.log(`Email "${email.mailOptions.subject}" successfully sent to ${email.mailOptions.to}`, details);
},
});
await mailQueue.sendMail(message);