var os = require('os'); var utils = require('./lib/utils'); // All notifiers var NotifySend = require('./notifiers/notifysend'); var NotificationCenter = require('./notifiers/notificationcenter'); var WindowsToaster = require('./notifiers/toaster'); var Growl = require('./notifiers/growl'); var WindowsBalloon = require('./notifiers/balloon'); var options = { withFallback: true }; var osType = utils.isWSL() ? 'WSL' : os.type(); switch (osType) { case 'Linux': module.exports = new NotifySend(options); module.exports.Notification = NotifySend; break; case 'Darwin': module.exports = new NotificationCenter(options); module.exports.Notification = NotificationCenter; break; case 'Windows_NT': if (utils.isLessThanWin8()) { module.exports = new WindowsBalloon(options); module.exports.Notification = WindowsBalloon; } else { module.exports = new WindowsToaster(options); module.exports.Notification = WindowsToaster; } break; case 'WSL': module.exports = new WindowsToaster(options); module.exports.Notification = WindowsToaster; break; default: if (os.type().match(/BSD$/)) { module.exports = new NotifySend(options); module.exports.Notification = NotifySend; } else { module.exports = new Growl(options); module.exports.Notification = Growl; } } // Expose notifiers to give full control. module.exports.NotifySend = NotifySend; module.exports.NotificationCenter = NotificationCenter; module.exports.WindowsToaster = WindowsToaster; module.exports.WindowsBalloon = WindowsBalloon; module.exports.Growl = Growl;