node-notifier
Advanced tools
+10
-0
| Changelog | ||
| === | ||
| ### `v4.4.0` | ||
| 1. Changes to exec terminal-notifier through execFile to allow for asar-packages | ||
| 2. Adds support for remote growl server | ||
| 3. Adds support for win7 with electron asar-package | ||
| ### `v4.3.1` | ||
| Obligatory patch fix: | ||
| 1. Adds new stdin CLI options to docs | ||
| ### `v4.3.0` | ||
@@ -5,0 +15,0 @@ 1. Adds support for piping messages in to CLI. |
| var net = require('net'); | ||
| var hasGrowl = false; | ||
| var port = 23053; | ||
| module.exports = function (cb) { | ||
| module.exports = function (growlConfig, cb) { | ||
| if (typeof cb == 'undefined') { | ||
| cb = growlConfig; | ||
| growlConfig = {}; | ||
| } | ||
| if (hasGrowl) return cb(hasGrowl); | ||
| var socket = net.connect(port); | ||
| var port = growlConfig.port || 23053; | ||
| var host = growlConfig.host || 'localhost'; | ||
| var socket = net.connect(port, host); | ||
| socket.setTimeout(100); | ||
@@ -10,0 +15,0 @@ |
@@ -31,2 +31,3 @@ /** | ||
| Growl = require('./growl'), | ||
| os = require('os'), | ||
| cloneDeep = require('lodash.clonedeep'); | ||
@@ -83,3 +84,3 @@ | ||
| checkGrowl(function (hasGrowlResult) { | ||
| checkGrowl(notifierOptions, function (hasGrowlResult) { | ||
| hasGrowl = hasGrowlResult; | ||
@@ -101,7 +102,10 @@ | ||
| function doNotification (options, notifierOptions, callback) { | ||
| var is64Bit = os.arch() === 'x64'; | ||
| options = options || {}; | ||
| options = utils.mapToNotifu(options); | ||
| options.p = options.p || 'Node Notification:'; | ||
| var localNotifier = notifierOptions.customPath || notifier; | ||
| var fullNotifierPath = notifier + (is64Bit ? '64' : '') + '.exe'; | ||
| var localNotifier = notifierOptions.customPath || fullNotifierPath; | ||
| if (!options.m) { | ||
@@ -108,0 +112,0 @@ callback(new Error('Message is required.')); |
@@ -5,3 +5,3 @@ /** | ||
| var utils = require('../lib/utils'), | ||
| checkGrowl = require('../lib/checkGrowl'); | ||
| checkGrowl = require('../lib/checkGrowl'), | ||
| growly = require('growly'), | ||
@@ -64,3 +64,3 @@ cloneDeep = require('lodash.clonedeep'); | ||
| checkGrowl(function (didHaveGrowl) { | ||
| checkGrowl(growly, function (didHaveGrowl) { | ||
| hasGrowl = didHaveGrowl; | ||
@@ -67,0 +67,0 @@ if (!didHaveGrowl) return callback(new Error(errorMessageNotFound)); |
@@ -62,3 +62,3 @@ /** | ||
| if(utils.isMountainLion()) { | ||
| utils.command(this.options.customPath || notifier, argsList, actionJackedCallback); | ||
| utils.fileCommand(this.options.customPath || notifier, argsList, actionJackedCallback); | ||
| return this; | ||
@@ -65,0 +65,0 @@ } |
+1
-1
| { | ||
| "name": "node-notifier", | ||
| "version": "4.3.1", | ||
| "version": "4.4.0", | ||
| "description": "A Node.js module for sending notifications on native Mac, Windows (post and pre 8) and Linux (or Growl as fallback)", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
+7
-0
@@ -106,3 +106,10 @@ # node-notifier [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][depstat-image]][depstat-url] | ||
| ## Electron Packaging | ||
| If packaging your Electron app as an asar, you will find that node-notifier will fail to load. Due to the way asar works, you cannot execute a binary from within asar. As a simple solution, when packaging the app into an asar please make sure you --unpack the vendor folder of node-notifier so the module still has access to the notification binaries. To do this, you can do so by using the following command: | ||
| ```bash | ||
| asar pack . app.asar --unpack "./node_modules/node-notifier/vendor/**" | ||
| ``` | ||
| ## Documentation | ||
@@ -109,0 +116,0 @@ |
+44
-0
@@ -12,2 +12,3 @@ var Notify = require('../notifiers/balloon') | ||
| this.originalType = os.type; | ||
| this.originalArch = os.arch; | ||
| os.type = function () { | ||
@@ -21,4 +22,47 @@ return "Windows_NT"; | ||
| os.type = this.originalType; | ||
| os.arch = this.originalArch; | ||
| }); | ||
| it('should use 64 bit notifu', function (done) { | ||
| os.arch = function () { | ||
| return "x64"; | ||
| }; | ||
| var expected = 'notifu64.exe'; | ||
| utils.immediateFileCommand = function (notifier, argsList, callback) { | ||
| notifier.should.endWith(expected); | ||
| done(); | ||
| }; | ||
| var notifier = new Notify(); | ||
| notifier.notify({ | ||
| title: "title", | ||
| message: "body" | ||
| }, function (err) { | ||
| should.not.exist(err); | ||
| }) | ||
| }); | ||
| it('should use 32 bit notifu if 32 arch', function (done) { | ||
| os.arch = function () { | ||
| return "ia32"; | ||
| }; | ||
| var expected = 'notifu.exe'; | ||
| utils.immediateFileCommand = function (notifier, argsList, callback) { | ||
| notifier.should.endWith(expected); | ||
| done(); | ||
| }; | ||
| var notifier = new Notify(); | ||
| notifier.notify({ | ||
| title: "title", | ||
| message: "body" | ||
| }, function (err) { | ||
| should.not.exist(err); | ||
| }) | ||
| }); | ||
| it('should pass on title and body', function (done) { | ||
@@ -25,0 +69,0 @@ var expected = [ '-m', 'body', '-p', 'title', '-q' ]; |
@@ -10,3 +10,3 @@ var NotificationCenter = require('../notifiers/notificationcenter') | ||
| var notifier = null; | ||
| var originalUtils = utils.command; | ||
| var originalUtils = utils.fileCommand; | ||
| var originalMacVersion = utils.isMountainLion; | ||
@@ -85,3 +85,3 @@ var originalType = os.type; | ||
| beforeEach(function () { | ||
| utils.command = function (n, o, cb) { | ||
| utils.fileCommand = function (n, o, cb) { | ||
| cb(null, ""); | ||
@@ -92,3 +92,3 @@ } | ||
| after(function () { | ||
| utils.command = originalUtils; | ||
| utils.fileCommand = originalUtils; | ||
| }); | ||
@@ -122,3 +122,3 @@ | ||
| it('should be able to list all notifications', function(done){ | ||
| utils.command = function (n, o, cb) { | ||
| utils.fileCommand = function (n, o, cb) { | ||
| cb(null, fs.readFileSync(__dirname + '/fixture/listAll.txt').toString()); | ||
@@ -137,3 +137,3 @@ }; | ||
| it('should be able to remove all messages', function(done){ | ||
| utils.command = function (n, o, cb) { | ||
| utils.fileCommand = function (n, o, cb) { | ||
| cb(null, fs.readFileSync(__dirname + '/fixture/removeAll.txt').toString()); | ||
@@ -147,3 +147,3 @@ } | ||
| utils.command = function (n, o, cb) { | ||
| utils.fileCommand = function (n, o, cb) { | ||
| cb(null, ""); | ||
@@ -164,7 +164,7 @@ } | ||
| before(function () { | ||
| this.original = utils.command; | ||
| this.original = utils.fileCommand; | ||
| }); | ||
| after(function () { | ||
| utils.command = this.original; | ||
| utils.fileCommand = this.original; | ||
| }); | ||
@@ -175,3 +175,3 @@ | ||
| utils.command = function (notifier, argsList, callback) { | ||
| utils.fileCommand = function (notifier, argsList, callback) { | ||
| argsList.should.eql(expected); | ||
@@ -199,3 +199,3 @@ done(); | ||
| utils.command = function (notifier, argsList, callback) { | ||
| utils.fileCommand = function (notifier, argsList, callback) { | ||
| argsList.should.eql(expected); | ||
@@ -202,0 +202,0 @@ done(); |
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
1856146
0.11%1383
3.29%344
2.08%