diff --git a/CHANGELOG.md b/CHANGELOG.md index 638b08b4..70f41f3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ All notable changes to this project will be documented in this file. This project uses [Semantic Versioning](https://semver.org/) +## [Version 1.7.3](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v1.7.3) (2023-01-05) + +## What's Changed + +- Improve error handling, Thanks [@dnicolson](https://github.com/dnicolson/). [#175](https://github.com/OpenWonderLabs/node-switchbot/pull/175) +- Housekeeping and update dependencies + +**Full Changelog**: https://github.com/OpenWonderLabs/node-switchbot/compare/v1.7.2...v1.7.3 + ## [Version 1.7.2](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v1.7.2) (2022-12-26) ## What's Changed diff --git a/lib/switchbot-device.js b/lib/switchbot-device.js index 70bb33df..8fc4f971 100644 --- a/lib/switchbot-device.js +++ b/lib/switchbot-device.js @@ -443,6 +443,9 @@ class SwitchbotDevice { this._connect() .then(() => { + if (!this._chars) { + return reject("No characteristics available."); + } return this._write(this._chars.write, req_buf); }) .then(() => { diff --git a/lib/switchbot.js b/lib/switchbot.js index 96afaf76..fefdb409 100644 --- a/lib/switchbot.js +++ b/lib/switchbot.js @@ -132,7 +132,9 @@ class Switchbot { for (let addr in peripherals) { device_list.push(peripherals[addr]); } - resolve(device_list); + if (device_list.length) { + resolve(device_list); + } }; // Set a handler for the 'discover' event diff --git a/package-lock.json b/package-lock.json index 4a648da7..bd9c1bb3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,24 +1,24 @@ { "name": "node-switchbot", - "version": "1.7.2", + "version": "1.7.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "node-switchbot", - "version": "1.7.2", + "version": "1.7.3", "license": "MIT", "dependencies": { - "@abandonware/noble": "1.9.2-15" + "@abandonware/noble": "^1.9.2-19" }, "devDependencies": { "npm-check-updates": "^16.6.2" } }, "node_modules/@abandonware/bluetooth-hci-socket": { - "version": "0.5.3-9", - "resolved": "https://registry.npmjs.org/@abandonware/bluetooth-hci-socket/-/bluetooth-hci-socket-0.5.3-9.tgz", - "integrity": "sha512-8K84mS7ONrvvx/3MNmI6EchQF4L61c7Dk817oTS5Zb/ivtNyfHRARMKcuoVJLCK+u0Fl1VdgX7EubNwFNJo61Q==", + "version": "0.5.3-10", + "resolved": "https://registry.npmjs.org/@abandonware/bluetooth-hci-socket/-/bluetooth-hci-socket-0.5.3-10.tgz", + "integrity": "sha512-wXHiGmHaHz1pUR6Ix6uut24uTYCWZJL68aP9F056jnnl+U3KrjLT77g9dZHWDAId+9yQN54lLO4MEOIV0z9fUg==", "hasInstallScript": true, "optional": true, "os": [ @@ -28,18 +28,18 @@ "win32" ], "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.5", - "debug": "^4.3.2", - "nan": "^2.15.0" + "@mapbox/node-pre-gyp": "^1.0.10", + "debug": "^4.3.4", + "nan": "^2.17.0" }, "optionalDependencies": { - "usb": "^1.7.2" + "usb": "^1.9.2" } }, "node_modules/@abandonware/noble": { - "version": "1.9.2-15", - "resolved": "https://registry.npmjs.org/@abandonware/noble/-/noble-1.9.2-15.tgz", - "integrity": "sha512-qD9NN5fzvbtHdWYFPDzxY2AveILvDSRX/PTdL0V+CUfyF70ggIJtLBc1WW1hbVMIpu8rZylYgrK+PUEBwIpjCg==", + "version": "1.9.2-19", + "resolved": "https://registry.npmjs.org/@abandonware/noble/-/noble-1.9.2-19.tgz", + "integrity": "sha512-gX2vcWqcHya9tBXvtkLuoaM1G7QljvydSIHkXf0BL5GRGaIIDWH8hQRb+x0Xbd9EiukhQcxvCZTxub+uv3wcQg==", "hasInstallScript": true, "os": [ "darwin", @@ -48,14 +48,16 @@ "win32" ], "dependencies": { - "debug": "^4.3.1", - "node-addon-api": "^3.2.0" + "debug": "^4.3.4", + "napi-thread-safe-callback": "^0.0.6", + "node-addon-api": "^4.3.0", + "node-gyp-build": "^4.5.0" }, "engines": { "node": ">=6" }, "optionalDependencies": { - "@abandonware/bluetooth-hci-socket": "^0.5.3-8" + "@abandonware/bluetooth-hci-socket": "^0.5.3-10" } }, "node_modules/@gar/promisify": { @@ -583,10 +585,16 @@ } }, "node_modules/ci-info": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", - "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz", + "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { "node": ">=8" } @@ -937,9 +945,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", - "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -1538,9 +1546,9 @@ } }, "node_modules/json5": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz", - "integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -2054,6 +2062,11 @@ "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "optional": true }, + "node_modules/napi-thread-safe-callback": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/napi-thread-safe-callback/-/napi-thread-safe-callback-0.0.6.tgz", + "integrity": "sha512-X7uHCOCdY4u0yamDxDrv3jF2NtYc8A1nvPzBQgvpoSX+WB3jAe2cVNsY448V1ucq7Whf9Wdy02HEUoLW5rJKWg==" + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -2064,9 +2077,9 @@ } }, "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" }, "node_modules/node-fetch": { "version": "2.6.7", @@ -2116,7 +2129,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "optional": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -2801,14 +2813,14 @@ } }, "node_modules/rc-config-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.1.tgz", - "integrity": "sha512-S10o85x/szboh7FOxUyU+KuED+gr9V7SEnUBOzSn+vd1K8J2MtkP1RCPWg8Sw5kkuZKr7976bFzacCM6QtAApQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.2.tgz", + "integrity": "sha512-qKTnVWFl9OQYKATPzdfaZIbTxcHziQl92zYSxYC6umhOqyAsoj8H8Gq/+aFjAso68sBdjTz3A7omqeAkkF1MWg==", "dev": true, "dependencies": { "debug": "^4.3.4", "js-yaml": "^4.1.0", - "json5": "^2.2.1", + "json5": "^2.2.2", "require-from-string": "^2.0.2" } }, @@ -3474,12 +3486,6 @@ "node": ">=10.16.0" } }, - "node_modules/usb/node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "optional": true - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -3717,9 +3723,9 @@ "devOptional": true }, "node_modules/yaml": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.0.tgz", - "integrity": "sha512-auf7Gi6QwO7HW//GA9seGvTXVGWl1CM/ADWh1+RxtXr6XOxnT65ovDl9fTi4e0monEyJxCHqDpF6QnFDXmJE4g==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", "dev": true, "engines": { "node": ">= 14" diff --git a/package.json b/package.json index d5469519..30dbbcfd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "node-switchbot", - "version": "1.7.2", + "version": "1.7.3", "description": "The node-switchbot is a Node.js module which allows you to control your Switchbot Devices through Bluetooth (BLE).", "main": "./lib/switchbot.js", "files": [ @@ -34,7 +34,7 @@ }, "readmeFilename": "README.md", "dependencies": { - "@abandonware/noble": "1.9.2-15" + "@abandonware/noble": "^1.9.2-19" }, "devDependencies": { "npm-check-updates": "^16.6.2"