node-notifier
Advanced tools
Comparing version 5.3.0 to 5.4.0
# Changelog | ||
### `v5.4.0` | ||
- Prevent Spotlight from indexing terminal-notifier.app ([#238](https://github.com/mikaelbr/node-notifier/pull/238)) | ||
- Changes from legacy url.parse api | ||
- Adds default timeout to notification center | ||
- Adds mapping from timeout to expire time for linux | ||
- Enables the use of WindowsToaster when using WSL ([#260](https://github.com/mikaelbr/node-notifier/pull/260)) | ||
### `v5.3.0` | ||
@@ -4,0 +12,0 @@ |
@@ -13,3 +13,5 @@ var os = require('os'); | ||
switch (os.type()) { | ||
var osType = utils.isWSL() ? 'WSL' : os.type(); | ||
switch (osType) { | ||
case 'Linux': | ||
@@ -32,2 +34,6 @@ module.exports = new NotifySend(options); | ||
break; | ||
case 'WSL': | ||
module.exports = new WindowsToaster(options); | ||
module.exports.Notification = WindowsToaster; | ||
break; | ||
default: | ||
@@ -34,0 +40,0 @@ if (os.type().match(/BSD$/)) { |
var shellwords = require('shellwords'); | ||
var cp = require('child_process'); | ||
var semver = require('semver'); | ||
var isWSL = require('is-wsl'); | ||
var path = require('path'); | ||
@@ -32,2 +33,3 @@ var url = require('url'); | ||
time: 'expire-time', | ||
timeout: 'expire-time', | ||
e: 'expire-time', | ||
@@ -212,2 +214,6 @@ expire: 'expire-time', | ||
if (!options.wait && !options.timeout) { | ||
options.timeout = 10; | ||
} | ||
options.json = true; | ||
@@ -342,5 +348,4 @@ return options; | ||
// should parse file protocol URL to path | ||
options.p = url | ||
.parse(options.icon) | ||
.pathname.replace(/^\/(\w:\/)/, '$1') | ||
options.p = new url.URL(options.icon).pathname | ||
.replace(/^\/(\w:\/)/, '$1') | ||
.replace(/\//g, '\\'); | ||
@@ -491,2 +496,6 @@ } else { | ||
module.exports.isWSL = function() { | ||
return isWSL; | ||
}; | ||
module.exports.isLessThanWin8 = function() { | ||
@@ -493,0 +502,0 @@ return ( |
@@ -9,3 +9,3 @@ /** | ||
__dirname, | ||
'../vendor/terminal-notifier.app/Contents/MacOS/terminal-notifier' | ||
'../vendor/mac.noindex/terminal-notifier.app/Contents/MacOS/terminal-notifier' | ||
); | ||
@@ -12,0 +12,0 @@ |
@@ -82,3 +82,3 @@ /** | ||
if (!utils.isWin8() && !!this.options.withFallback) { | ||
if (!utils.isWin8() && !utils.isWSL() && !!this.options.withFallback) { | ||
fallback = fallback || new Balloon(this.options); | ||
@@ -85,0 +85,0 @@ return fallback.notify(options, callback); |
{ | ||
"name": "node-notifier", | ||
"version": "5.3.0", | ||
"version": "5.4.0", | ||
"description": "A Node.js module for sending notifications on native Mac, Windows (post and pre 8) and Linux (or Growl as fallback)", | ||
@@ -39,12 +39,12 @@ "main": "index.js", | ||
"devDependencies": { | ||
"eslint": "^5.0.1", | ||
"eslint-config-semistandard": "^12.0.1", | ||
"eslint-config-standard": "^11.0.0", | ||
"eslint-plugin-import": "^2.11.0", | ||
"eslint-plugin-node": "^6.0.1", | ||
"eslint-plugin-promise": "^3.7.0", | ||
"eslint-plugin-standard": "^3.1.0", | ||
"husky": "^0.14.3", | ||
"eslint": "^5.12.1", | ||
"eslint-config-semistandard": "^13.0.0", | ||
"eslint-config-standard": "^12.0.0", | ||
"eslint-plugin-import": "^2.15.0", | ||
"eslint-plugin-node": "^8.0.1", | ||
"eslint-plugin-promise": "^4.0.1", | ||
"eslint-plugin-standard": "^4.0.0", | ||
"husky": "^1.3.1", | ||
"jest": "^23.2.0", | ||
"lint-staged": "^7.1.0", | ||
"lint-staged": "^8.1.0", | ||
"prettier": "^1.12.1" | ||
@@ -54,2 +54,3 @@ }, | ||
"growly": "^1.3.0", | ||
"is-wsl": "^1.1.0", | ||
"semver": "^5.5.0", | ||
@@ -56,0 +57,0 @@ "shellwords": "^0.1.1", |
158
README.md
@@ -1,2 +0,2 @@ | ||
# node-notifier [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][depstat-image]][depstat-url] | ||
# node-notifier [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] | ||
@@ -33,6 +33,6 @@ Send cross platform native notifications using Node.js. Notification Center for macOS, | ||
* **macOS**: >= 10.8 for native notifications, or Growl if earlier. | ||
* **Linux**: `notify-osd` or `libnotify-bin` installed (Ubuntu should have this by default) | ||
* **Windows**: >= 8, or task bar balloons for Windows < 8. Growl as fallback. Growl takes precedence over Windows balloons. | ||
* **General Fallback**: Growl | ||
- **macOS**: >= 10.8 for native notifications, or Growl if earlier. | ||
- **Linux**: `notify-osd` or `libnotify-bin` installed (Ubuntu should have this by default) | ||
- **Windows**: >= 8, or task bar balloons for Windows < 8. Growl as fallback. Growl takes precedence over Windows balloons. | ||
- **General Fallback**: Growl | ||
@@ -49,3 +49,3 @@ See [documentation and flow chart for reporter choice](./DECISION_FLOW.md). | ||
<abbr title="Command Line Interface">CLI</abbr> has moved to separate project: | ||
<abbr title="Command Line Interface">CLI</abbr> has moved to separate project: | ||
<https://github.com/mikaelbr/node-notifier-cli> | ||
@@ -85,3 +85,3 @@ | ||
If you want super fine-grained control, you can customize each reporter individually, | ||
If you want super fine-grained control, you can customize each reporter individually, | ||
allowing you to tune specific options for different systems. | ||
@@ -125,7 +125,7 @@ | ||
* [Notification Center documentation](#usage-notificationcenter) | ||
* [Windows Toaster documentation](#usage-windowstoaster) | ||
* [Windows Balloon documentation](#usage-windowsballoon) | ||
* [Growl documentation](#usage-growl) | ||
* [Notify-send documentation](#usage-notifysend) | ||
- [Notification Center documentation](#usage-notificationcenter) | ||
- [Windows Toaster documentation](#usage-windowstoaster) | ||
- [Windows Balloon documentation](#usage-windowsballoon) | ||
- [Growl documentation](#usage-growl) | ||
- [Notify-send documentation](#usage-notifysend) | ||
@@ -142,10 +142,11 @@ ### Usage: `NotificationCenter` | ||
Because `node-notifier` wraps around [**`terminal-notifier`**](https://github.com/julienXX/terminal-notifier), | ||
you can do anything `terminal-notifier` can, just by passing properties to the `notify` | ||
method. | ||
Because `node-notifier` wraps around [**`terminal-notifier`**](https://github.com/julienXX/terminal-notifier), | ||
you can do anything `terminal-notifier` can, just by passing properties to the `notify` | ||
method. | ||
For example: | ||
* if `terminal-notifier` says `-message`, you can do `{message: 'Foo'}` | ||
* if `terminal-notifier` says `-list ALL`, you can do `{list: 'ALL'}`. | ||
For example: | ||
- if `terminal-notifier` says `-message`, you can do `{message: 'Foo'}` | ||
- if `terminal-notifier` says `-list ALL`, you can do `{list: 'ALL'}`. | ||
Notification is the primary focus of this module, so listing and activating do work, | ||
@@ -168,3 +169,3 @@ but they aren't documented. | ||
subtitle: void 0, | ||
message: void 0, | ||
message: void 0, | ||
sound: false, // Case Sensitive string for location of sound file, or use one of macOS' native sounds (see below) | ||
@@ -189,17 +190,17 @@ icon: 'Terminal Icon', // Absolute Path to Triggering Icon | ||
---- | ||
--- | ||
**Note:** The `wait` option is shorthand for `timeout: 5`. This just sets a timeout | ||
for 5 seconds. It does _not_ make the notification sticky! | ||
**Note:** The `wait` option is shorthand for `timeout: 5`. This just sets a timeout | ||
for 5 seconds. It does _not_ make the notification sticky! | ||
Without `wait` or `timeout`, notifications are just fired and forgotten. They don't | ||
wait for any response. | ||
wait for any response. | ||
To make notifications wait for a response (like activation/click), you must define | ||
To make notifications wait for a response (like activation/click), you must define | ||
a `timeout`. | ||
_Exception:_ If `reply` is defined, it's recommended to set `timeout` to a either | ||
_Exception:_ If `reply` is defined, it's recommended to set `timeout` to a either | ||
high value, or to nothing at all. | ||
---- | ||
--- | ||
@@ -213,27 +214,32 @@ **For macOS notifications: `icon`, `contentImage`, and all forms of `reply`/`actions` require macOS 10.9.** | ||
---- | ||
--- | ||
**See Also:** | ||
* [Example: specific Notification Centers](./example/advanced.js) | ||
* [Example: input](./example/macInput.js). | ||
---- | ||
- [Example: specific Notification Centers](./example/advanced.js) | ||
- [Example: input](./example/macInput.js). | ||
--- | ||
**Custom Path clarification** | ||
`customPath` takes a value of a relative or absolute path to the binary of your | ||
`customPath` takes a value of a relative or absolute path to the binary of your | ||
fork/custom version of **`terminal-notifier`**. | ||
**Example:** `./vendor/terminal-notifier.app/Contents/MacOS/terminal-notifier` | ||
**Example:** `./vendor/mac.noindex/terminal-notifier.app/Contents/MacOS/terminal-notifier` | ||
**Spotlight clarification** | ||
`terminal-notifier.app` resides in a `mac.noindex` folder to prevent Spotlight from indexing the app. | ||
### Usage: `WindowsToaster` | ||
**Note:** There are some limitations for images in native Windows 8 notifications: | ||
* The image must be a PNG image | ||
* The image must be smaller than 1024×1024 px | ||
* The image must be less than 200kb | ||
* The image must be specified using an absolute path | ||
These limitations are due to the Toast notification system. A good tip is to use | ||
- The image must be a PNG image | ||
- The image must be smaller than 1024×1024 px | ||
- The image must be less than 200kb | ||
- The image must be specified using an absolute path | ||
These limitations are due to the Toast notification system. A good tip is to use | ||
something like `path.join` or `path.delimiter` to keep your paths cross-platform. | ||
@@ -243,19 +249,19 @@ | ||
> You can make it work by going to System > Notifications & Actions. The 'toast' | ||
> app needs to have Banners enabled. (You can activate banners by clicking on the | ||
> You can make it work by going to System > Notifications & Actions. The 'toast' | ||
> app needs to have Banners enabled. (You can activate banners by clicking on the | ||
> 'toast' app and setting the 'Show notification banners' to On) | ||
---- | ||
--- | ||
**Windows 10 Fall Creators Update (Version 1709) Note:** | ||
With the Fall Creators Update, Notifications on Windows 10 will only work as | ||
expected if the correct `appID` is specified. Your `appID` must be exactly the same | ||
With the Fall Creators Update, Notifications on Windows 10 will only work as | ||
expected if the correct `appID` is specified. Your `appID` must be exactly the same | ||
value that was registered during the installation of your app. | ||
You can find the ID of your App by searching the registry for the `appID` you | ||
specified at installation of your app. For example: If you use the squirrel | ||
You can find the ID of your App by searching the registry for the `appID` you | ||
specified at installation of your app. For example: If you use the squirrel | ||
framework, your `appID` will be something like `com.squirrel.your.app`. | ||
The default behaviour is to have the underlying toaster applicaton as `appId`. | ||
The default behaviour is to have the underlying toaster applicaton as `appId`. | ||
This works as expected, but shows `SnoreToast` as text in the notification. | ||
@@ -374,9 +380,9 @@ | ||
`node-notifier` is made possible through Open Source Software. | ||
`node-notifier` is made possible through Open Source Software. | ||
A very special thanks to all the modules `node-notifier` uses. | ||
* [`terminal-notifier`](https://github.com/julienXX/terminal-notifier) | ||
* [`Snoretoast`](https://github.com/KDE/snoretoast) | ||
* [`notifu`](http://www.paralint.com/projects/notifu/) | ||
* [`growly`](https://github.com/theabraham/growly/) | ||
- [`terminal-notifier`](https://github.com/julienXX/terminal-notifier) | ||
- [`Snoretoast`](https://github.com/KDE/snoretoast) | ||
- [`notifu`](http://www.paralint.com/projects/notifu/) | ||
- [`growly`](https://github.com/theabraham/growly/) | ||
@@ -389,3 +395,3 @@ [![NPM downloads][npm-downloads]][npm-url] | ||
See note on "Windows 10 Fall Creators Update" in Windows section. | ||
See note on "Windows 10 Fall Creators Update" in Windows section. | ||
_**Short answer:** update your `appId`._ | ||
@@ -395,6 +401,6 @@ | ||
When using `node-notifier` within a tmux session, it can cause a hang in the system. | ||
When using `node-notifier` within a tmux session, it can cause a hang in the system. | ||
This can be solved by following the steps described in [this comment](https://github.com/julienXX/terminal-notifier/issues/115#issuecomment-104214742) | ||
There’s even more info [here](https://github.com/mikaelbr/node-notifier/issues/61#issuecomment-163560801) | ||
There’s even more info [here](https://github.com/mikaelbr/node-notifier/issues/61#issuecomment-163560801) | ||
<https://github.com/mikaelbr/node-notifier/issues/61#issuecomment-163560801>. | ||
@@ -404,14 +410,14 @@ | ||
Even if you define an icon in the configuration object for `node-notifier`, you will | ||
see a small Terminal icon in the notification (see the example at the top of this | ||
document). | ||
Even if you define an icon in the configuration object for `node-notifier`, you will | ||
see a small Terminal icon in the notification (see the example at the top of this | ||
document). | ||
This is the way notifications on macOS work. They always show the icon of the | ||
parent application initiating the notification. For `node-notifier`, `terminal-notifier` | ||
is the initiator, and it has the Terminal icon defined as its icon. | ||
This is the way notifications on macOS work. They always show the icon of the | ||
parent application initiating the notification. For `node-notifier`, `terminal-notifier` | ||
is the initiator, and it has the Terminal icon defined as its icon. | ||
To define your custom icon, you need to fork `terminal-notifier` and build your | ||
custom version with your icon. | ||
To define your custom icon, you need to fork `terminal-notifier` and build your | ||
custom version with your icon. | ||
See [Issue #71 for more info](https://github.com/mikaelbr/node-notifier/issues/71) | ||
See [Issue #71 for more info](https://github.com/mikaelbr/node-notifier/issues/71) | ||
<https://github.com/mikaelbr/node-notifier/issues/71>. | ||
@@ -421,8 +427,8 @@ | ||
If packaging your Electron app as an `asar`, you will find `node-notifier` will fail to load. | ||
If packaging your Electron app as an `asar`, you will find `node-notifier` will fail to load. | ||
Due to the way asar works, you cannot execute a binary from within an `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. | ||
Due to the way asar works, you cannot execute a binary from within an `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. | ||
@@ -435,11 +441,15 @@ You can do so with the following command: | ||
### Using with pkg | ||
For issues using with the pkg module. Check this issue out: https://github.com/mikaelbr/node-notifier/issues/220#issuecomment-425963752 | ||
### Using Webpack | ||
When using `node-notifier` inside of `webpack`, you must add the snippet below to your `webpack.config.js`. | ||
When using `node-notifier` inside of `webpack`, you must add the snippet below to your `webpack.config.js`. | ||
This is necessary because `node-notifier` loads the notifiers from a binary, so it | ||
needs a relative file path. When webpack compiles the modules, it supresses file | ||
directories, causing `node-notifier` to error on certain platforms. | ||
This is necessary because `node-notifier` loads the notifiers from a binary, so it | ||
needs a relative file path. When webpack compiles the modules, it supresses file | ||
directories, causing `node-notifier` to error on certain platforms. | ||
To fix this, you can configure webpack to keep the relative file directories. | ||
To fix this, you can configure webpack to keep the relative file directories. | ||
Do so by append the following code to your `webpack.config.js`: | ||
@@ -463,3 +473,1 @@ | ||
[travis-image]: http://img.shields.io/travis/mikaelbr/node-notifier.svg?style=flat | ||
[depstat-url]: https://gemnasium.com/mikaelbr/node-notifier | ||
[depstat-image]: http://img.shields.io/gemnasium/mikaelbr/node-notifier.svg?style=flat |
Copyleft License
License(Experimental) Copyleft license information was found
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
SPDX disjunction
LicenseSPDX disjunction for an artifact's license information
Found 1 instance in 1 package
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
Non-permissive License
License(Experimental) A license not known to be considered permissive was found
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
SPDX disjunction
LicenseSPDX disjunction for an artifact's license information
Found 1 instance in 1 package
1368519
25
934
458
5
4
70
17
+ Addedis-wsl@^1.1.0
+ Addedis-wsl@1.1.0(transitive)