From 8949aa3bec7744c20c6b045fa08c75586bbb66f4 Mon Sep 17 00:00:00 2001 From: rejas Date: Tue, 31 Aug 2021 21:41:27 +0200 Subject: [PATCH 01/13] Add common method for updating suntimes --- .../default/weather/providers/ukmetoffice.js | 18 +----------------- .../default/weather/providers/weathergov.js | 18 +----------------- modules/default/weather/weatherobject.js | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 34 deletions(-) diff --git a/modules/default/weather/providers/ukmetoffice.js b/modules/default/weather/providers/ukmetoffice.js index 27127806..d2443866 100755 --- a/modules/default/weather/providers/ukmetoffice.js +++ b/modules/default/weather/providers/ukmetoffice.js @@ -116,9 +116,7 @@ WeatherProvider.register("ukmetoffice", { } // determine the sunrise/sunset times - not supplied in UK Met Office data - let times = this.calcAstroData(location); - currentWeather.sunrise = times[0]; - currentWeather.sunset = times[1]; + currentWeather.updateSunTime(location.lat, location.lon); return currentWeather; }, @@ -154,20 +152,6 @@ WeatherProvider.register("ukmetoffice", { return days; }, - /* - * calculate the astronomical data - */ - calcAstroData(location) { - const sunTimes = []; - - // determine the sunrise/sunset times - let times = SunCalc.getTimes(new Date(), location.lat, location.lon); - sunTimes.push(moment(times.sunrise, "X")); - sunTimes.push(moment(times.sunset, "X")); - - return sunTimes; - }, - /* * Convert the Met Office icons to a more usable name. */ diff --git a/modules/default/weather/providers/weathergov.js b/modules/default/weather/providers/weathergov.js index ab46b4ee..9dc1fddf 100755 --- a/modules/default/weather/providers/weathergov.js +++ b/modules/default/weather/providers/weathergov.js @@ -167,9 +167,7 @@ WeatherProvider.register("weathergov", { currentWeather.weatherType = this.convertWeatherType(currentWeatherData.textDescription, isDaytime); // determine the sunrise/sunset times - not supplied in weather.gov data - let times = this.calcAstroData(this.config.lat, this.config.lon); - currentWeather.sunrise = times[0]; - currentWeather.sunset = times[1]; + currentWeather.updateSunTime(this.config.lat, this.config.lon); return currentWeather; }, @@ -272,20 +270,6 @@ WeatherProvider.register("weathergov", { } }, - /* - * Calculate the astronomical data - */ - calcAstroData(lat, lon) { - const sunTimes = []; - - // determine the sunrise/sunset times - let times = SunCalc.getTimes(new Date(), lat, lon); - sunTimes.push(moment(times.sunrise, "X")); - sunTimes.push(moment(times.sunset, "X")); - - return sunTimes; - }, - /* * Convert the icons to a more usable name. */ diff --git a/modules/default/weather/weatherobject.js b/modules/default/weather/weatherobject.js index 5bd5be9a..b6a840c4 100755 --- a/modules/default/weather/weatherobject.js +++ b/modules/default/weather/weatherobject.js @@ -1,3 +1,5 @@ +/* global SunCalc */ + /* Magic Mirror * Module: Weather * @@ -113,4 +115,16 @@ class WeatherObject { return this.tempUnits === "imperial" ? feelsLike : ((feelsLike - 32) * 5) / 9; } + + /** + * Update the sunrise / sunset time depending on the location + * + * @param {number} lat latitude + * @param {number} lon longitude + */ + updateSunTime(lat, lon) { + let times = SunCalc.getTimes(new Date(), lat, lon); + this.sunrise = moment(times.sunrise, "X"); + this.sunset = moment(times.sunset, "X"); + } } From a7684e3e9f8e877a206c9398a85061cc183dd52a Mon Sep 17 00:00:00 2001 From: rejas Date: Tue, 31 Aug 2021 21:55:43 +0200 Subject: [PATCH 02/13] Add common method for determining if it is daytime --- modules/default/weather/providers/smhi.js | 21 +++++++-------------- modules/default/weather/weatherobject.js | 9 +++++++++ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/modules/default/weather/providers/smhi.js b/modules/default/weather/providers/smhi.js index 244fc1de..5018bdfc 100644 --- a/modules/default/weather/providers/smhi.js +++ b/modules/default/weather/providers/smhi.js @@ -105,7 +105,8 @@ WeatherProvider.register("smhi", { * @returns {WeatherObject} The converted weatherdata at the specified location */ convertWeatherDataToObject(weatherData, coordinates) { - let currentWeather = new WeatherObject("metric", "metric", "metric"); //Weather data is only for Sweden and nobody in Sweden would use imperial + // Weather data is only for Sweden and nobody in Sweden would use imperial + let currentWeather = new WeatherObject("metric", "metric", "metric"); currentWeather.date = moment(weatherData.validTime); let times = SunCalc.getTimes(currentWeather.date.toDate(), coordinates.lat, coordinates.lon); @@ -115,9 +116,11 @@ WeatherProvider.register("smhi", { currentWeather.temperature = this.paramValue(weatherData, "t"); currentWeather.windSpeed = this.paramValue(weatherData, "ws"); currentWeather.windDirection = this.paramValue(weatherData, "wd"); - currentWeather.weatherType = this.convertWeatherType(this.paramValue(weatherData, "Wsymb2"), this.isDayTime(currentWeather)); + currentWeather.weatherType = this.convertWeatherType(this.paramValue(weatherData, "Wsymb2"), currentWeather.isDayTime()); - //Determine the precipitation amount and category and update the weatherObject with it, the valuetype to use can be configured or uses median as default. + // Determine the precipitation amount and category and update the + // weatherObject with it, the valuetype to use can be configured or uses + // median as default. let precipitationValue = this.paramValue(weatherData, this.config.precipitationValue); switch (this.paramValue(weatherData, "pcat")) { // 0 = No precipitation @@ -171,7 +174,7 @@ WeatherProvider.register("smhi", { } //Keep track of what icons has been used for each hour of daytime and use the middle one for the forecast - if (this.isDayTime(weatherObject)) { + if (weatherObject.isDayTime()) { dayWeatherTypes.push(weatherObject.weatherType); } if (dayWeatherTypes.length > 0) { @@ -201,16 +204,6 @@ WeatherProvider.register("smhi", { return { lat: data.geometry.coordinates[0][1], lon: data.geometry.coordinates[0][0] }; }, - /** - * Checks if the weatherObject is at dayTime. - * - * @param {WeatherObject} weatherObject The weatherObject to look at - * @returns {boolean} true if it is at dayTime - */ - isDayTime(weatherObject) { - return weatherObject.date.isBetween(weatherObject.sunrise, weatherObject.sunset, undefined, "[]"); - }, - /** * The distance between the data points is increasing in the data the more distant the prediction is. * Find these gaps and fill them with the previous hours data to make the data returned a complete set. diff --git a/modules/default/weather/weatherobject.js b/modules/default/weather/weatherobject.js index b6a840c4..7495844b 100755 --- a/modules/default/weather/weatherobject.js +++ b/modules/default/weather/weatherobject.js @@ -116,6 +116,15 @@ class WeatherObject { return this.tempUnits === "imperial" ? feelsLike : ((feelsLike - 32) * 5) / 9; } + /** + * Checks if the weatherObject is at dayTime. + * + * @returns {boolean} true if it is at dayTime + */ + isDayTime() { + return this.date.isBetween(this.sunrise, this.sunset, undefined, "[]"); + } + /** * Update the sunrise / sunset time depending on the location * From 43eb760bce66d896327cd13c56cbb2b8e7053e93 Mon Sep 17 00:00:00 2001 From: rejas Date: Tue, 31 Aug 2021 22:01:30 +0200 Subject: [PATCH 03/13] Use isDayTime method --- modules/default/weather/providers/weathergov.js | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/modules/default/weather/providers/weathergov.js b/modules/default/weather/providers/weathergov.js index 9dc1fddf..65600ad3 100755 --- a/modules/default/weather/providers/weathergov.js +++ b/modules/default/weather/providers/weathergov.js @@ -158,17 +158,12 @@ WeatherProvider.register("weathergov", { currentWeather.precipitation = this.convertLength(currentWeatherData.precipitationLastHour.value); currentWeather.feelsLikeTemp = this.convertTemp(currentWeatherData.heatIndex.value); - let isDaytime = true; - if (currentWeatherData.icon.includes("day")) { - isDaytime = true; - } else { - isDaytime = false; - } - currentWeather.weatherType = this.convertWeatherType(currentWeatherData.textDescription, isDaytime); - // determine the sunrise/sunset times - not supplied in weather.gov data currentWeather.updateSunTime(this.config.lat, this.config.lon); + // update weatherType + currentWeather.weatherType = this.convertWeatherType(currentWeatherData.textDescription, currentWeather.isDayTime()); + return currentWeather; }, From f2bc10c5c0bc50e047c1880e2d06e22ed0a5568e Mon Sep 17 00:00:00 2001 From: rejas Date: Tue, 31 Aug 2021 23:26:06 +0200 Subject: [PATCH 04/13] Add tests for new methods --- modules/default/weather/weatherobject.js | 15 ++++++++++++- package-lock.json | 15 ++++++++++++- package.json | 3 ++- tests/unit/functions/weather_object_spec.js | 24 +++++++++++++++++++++ 4 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 tests/unit/functions/weather_object_spec.js diff --git a/modules/default/weather/weatherobject.js b/modules/default/weather/weatherobject.js index 7495844b..2d08f028 100755 --- a/modules/default/weather/weatherobject.js +++ b/modules/default/weather/weatherobject.js @@ -12,6 +12,13 @@ * As soon as we start implementing the forecast, mode properties will be added. */ class WeatherObject { + /** + * + * @param units + * @param tempUnits + * @param windUnits + * @param useKmh + */ constructor(units, tempUnits, windUnits, useKmh) { this.units = units; this.tempUnits = tempUnits; @@ -132,8 +139,14 @@ class WeatherObject { * @param {number} lon longitude */ updateSunTime(lat, lon) { - let times = SunCalc.getTimes(new Date(), lat, lon); + let now = !this.date ? new Date() : this.date.toDate(); + let times = SunCalc.getTimes(now, lat, lon); this.sunrise = moment(times.sunrise, "X"); this.sunset = moment(times.sunset, "X"); } } + +/*************** DO NOT EDIT THE LINE BELOW ***************/ +if (typeof module !== "undefined") { + module.exports = WeatherObject; +} diff --git a/package-lock.json b/package-lock.json index 68a80731..ae6ab35e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,7 +44,8 @@ "stylelint": "^13.13.1", "stylelint-config-prettier": "^8.0.2", "stylelint-config-standard": "^22.0.0", - "stylelint-prettier": "^1.2.0" + "stylelint-prettier": "^1.2.0", + "suncalc": "^1.8.0" }, "engines": { "node": ">=12" @@ -9373,6 +9374,12 @@ "node": ">= 8.0" } }, + "node_modules/suncalc": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/suncalc/-/suncalc-1.8.0.tgz", + "integrity": "sha1-HZiYEJVjB4dQ9JlKlZ5lTYdqy/U=", + "dev": true + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -17712,6 +17719,12 @@ "debug": "^4.1.0" } }, + "suncalc": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/suncalc/-/suncalc-1.8.0.tgz", + "integrity": "sha1-HZiYEJVjB4dQ9JlKlZ5lTYdqy/U=", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", diff --git a/package.json b/package.json index dd96c7af..6bce27aa 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,8 @@ "stylelint": "^13.13.1", "stylelint-config-prettier": "^8.0.2", "stylelint-config-standard": "^22.0.0", - "stylelint-prettier": "^1.2.0" + "stylelint-prettier": "^1.2.0", + "suncalc": "^1.8.0" }, "optionalDependencies": { "electron": "^13.2.3" diff --git a/tests/unit/functions/weather_object_spec.js b/tests/unit/functions/weather_object_spec.js new file mode 100644 index 00000000..8878f377 --- /dev/null +++ b/tests/unit/functions/weather_object_spec.js @@ -0,0 +1,24 @@ +const WeatherObject = require("../../../modules/default/weather/weatherobject.js"); + +global.moment = require("moment"); +global.SunCalc = require("suncalc"); + +describe("WeatherObject", function () { + let weatherobject; + + beforeAll(function () { + weatherobject = new WeatherObject("metric", "metric", "metric", true); + }); + + it("should return true for daytime at noon", function () { + weatherobject.date = moment(12, "HH"); + weatherobject.updateSunTime(-6.774877582342688, 37.63345667023327); + expect(weatherobject.isDayTime()).toBe(true); + }); + + it("should return false for daytime at midnight", function () { + weatherobject.date = moment(0, "HH"); + weatherobject.updateSunTime(-6.774877582342688, 37.63345667023327); + expect(weatherobject.isDayTime()).toBe(false); + }); +}); From be76d5ce9a88138924444a46a129d6a3834f3547 Mon Sep 17 00:00:00 2001 From: rejas Date: Tue, 31 Aug 2021 23:34:22 +0200 Subject: [PATCH 05/13] Use new method in smhi provider --- modules/default/weather/providers/smhi.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/modules/default/weather/providers/smhi.js b/modules/default/weather/providers/smhi.js index 5018bdfc..2869906a 100644 --- a/modules/default/weather/providers/smhi.js +++ b/modules/default/weather/providers/smhi.js @@ -109,9 +109,7 @@ WeatherProvider.register("smhi", { let currentWeather = new WeatherObject("metric", "metric", "metric"); currentWeather.date = moment(weatherData.validTime); - let times = SunCalc.getTimes(currentWeather.date.toDate(), coordinates.lat, coordinates.lon); - currentWeather.sunrise = moment(times.sunrise, "X"); - currentWeather.sunset = moment(times.sunset, "X"); + currentWeather.updateSunTime(coordinates.lat, coordinates.lon); currentWeather.humidity = this.paramValue(weatherData, "r"); currentWeather.temperature = this.paramValue(weatherData, "t"); currentWeather.windSpeed = this.paramValue(weatherData, "ws"); From d7429a4812aa18eaf5a61cf25b6545567ee0f5ae Mon Sep 17 00:00:00 2001 From: rejas Date: Tue, 31 Aug 2021 23:39:40 +0200 Subject: [PATCH 06/13] Add eslint rule for === vs == and fix its occurence --- .eslintrc.json | 1 + modules/default/weather/providers/weathergov.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.eslintrc.json b/.eslintrc.json index 31aae27f..3e685a0d 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -23,6 +23,7 @@ }, "rules": { "prettier/prettier": "error", + "eqeqeq": "error", "no-prototype-builtins": "off", "no-unused-vars": "off" } diff --git a/modules/default/weather/providers/weathergov.js b/modules/default/weather/providers/weathergov.js index 65600ad3..4ae25f56 100755 --- a/modules/default/weather/providers/weathergov.js +++ b/modules/default/weather/providers/weathergov.js @@ -130,7 +130,7 @@ WeatherProvider.register("weathergov", { // excellent, let's fetch some actual wx data this.configURLs = true; // handle 'forecast' config, fall back to 'current' - if (config.type == "forecast") { + if (config.type === "forecast") { this.fetchWeatherForecast(); } else { this.fetchCurrentWeather(); From a9f69f07e68ea1b0e90bdbf4311e514c9286c06b Mon Sep 17 00:00:00 2001 From: rejas Date: Tue, 31 Aug 2021 23:43:33 +0200 Subject: [PATCH 07/13] Update CHANGELOG --- CHANGELOG.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 06693572..d2c00f61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,9 +20,10 @@ _This release is scheduled to be released on 2021-10-01._ - Refactor test configs, use default test config for all tests. - Updated github templates. - Actually test all js and css files when lint script is run. -- Update jsdocs and print warnings during testing too +- Update jsdocs and print warnings during testing too. - Update weathergov provider to try fetching not just current, but also foreacst, when API URLs available. -- Refactored clock layout +- Refactored clock layout. +- Refactored methods from weatherproviders into weatherobject (isDaytime, updateSunTime). ### Fixed From f49312ed13edb06cd3f67d510b14294b25327710 Mon Sep 17 00:00:00 2001 From: rejas Date: Wed, 1 Sep 2021 11:02:06 +0200 Subject: [PATCH 08/13] Update dependencies --- package-lock.json | 239 ++++++++++++++++++++++++++++++++-------------- package.json | 8 +- 2 files changed, 172 insertions(+), 75 deletions(-) diff --git a/package-lock.json b/package-lock.json index ae6ab35e..b19e6a0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,16 +21,16 @@ "iconv-lite": "^0.6.3", "module-alias": "^2.2.2", "moment": "^2.29.1", - "node-fetch": "^2.6.1", + "node-fetch": "^3.0.0", "node-ical": "^0.13.0", "simple-git": "^2.45.0", - "socket.io": "^4.1.3" + "socket.io": "^4.2.0" }, "devDependencies": { "eslint-config-prettier": "^8.3.0", "eslint-plugin-jest": "^24.4.0", "eslint-plugin-jsdoc": "^36.0.8", - "eslint-plugin-prettier": "^3.4.1", + "eslint-plugin-prettier": "^4.0.0", "express-basic-auth": "^1.2.0", "husky": "^7.0.2", "jest": "^27.1.0", @@ -51,7 +51,7 @@ "node": ">=12" }, "optionalDependencies": { - "electron": "^13.2.3" + "electron": "^13.3.0" } }, "node_modules/@babel/code-frame": { @@ -1227,14 +1227,14 @@ "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==" }, "node_modules/@types/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" }, "node_modules/@types/cors": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", - "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" }, "node_modules/@types/graceful-fs": { "version": "4.1.5", @@ -2889,6 +2889,14 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, + "node_modules/data-uri-to-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", + "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", + "engines": { + "node": ">= 6" + } + }, "node_modules/data-urls": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.0.tgz", @@ -3244,9 +3252,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "node_modules/electron": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/electron/-/electron-13.2.3.tgz", - "integrity": "sha512-FzWhbKHjq7ZTpPQFaYiLPL64erC8/BOsu5NlNN9nQ6f7rIP8ygKlNAlQit3vbOcksQAwItDUCIw4sW0mcaRpCA==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-13.3.0.tgz", + "integrity": "sha512-d/BvOLDjI4i7yf9tqCuLL2fFGA2TrM/D9PyRpua+rJolG0qrwp/FohP02L0m+44kmPpofIo4l3NPwLmzyKKimA==", "devOptional": true, "hasInstallScript": true, "dependencies": { @@ -3354,9 +3362,9 @@ } }, "node_modules/engine.io": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.1.1.tgz", - "integrity": "sha512-aMWot7H5aC8L4/T8qMYbLdvKlZOdJTH54FxfdFunTGvhMx1BHkJOntWArsVfgAZVwAO9LC2sryPWRcEeUzCe5w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.2.0.tgz", + "integrity": "sha512-d1DexkQx87IFr1FLuV+0f5kAm1Hk1uOVijLOb+D1sDO2QMb7YjE02VHtZtxo7xIXMgcWLb+vl3HRT0rI9tr4jQ==", "dependencies": { "accepts": "~1.3.4", "base64id": "2.0.0", @@ -3371,9 +3379,9 @@ } }, "node_modules/engine.io-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", - "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.3.tgz", + "integrity": "sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==", "dependencies": { "base64-arraybuffer": "0.1.4" }, @@ -3685,9 +3693,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0" @@ -3696,8 +3704,8 @@ "node": ">=6.0.0" }, "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" }, "peerDependenciesMeta": { "eslint-config-prettier": { @@ -4144,6 +4152,27 @@ "node": ">=10" } }, + "node_modules/fetch-blob": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.2.tgz", + "integrity": "sha512-hunJbvy/6OLjCD0uuhLdp0mMPzP/yd2ssd1t2FCJsaA7wkWhpbp9xfuNVpv7Ll4jFhzp6T4LAupSiV9uOeg0VQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -6962,11 +6991,19 @@ } }, "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.0.0.tgz", + "integrity": "sha512-bKMI+C7/T/SPU1lKnbQbwxptpCrG9ashG+VkytmXCPZyuM9jB6VU+hY0oi4lC8LxTtAeWdckNCTa3nrGsAdA3Q==", + "dependencies": { + "data-uri-to-buffer": "^3.0.1", + "fetch-blob": "^3.1.2" + }, "engines": { - "node": "4.x || >=6.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, "node_modules/node-ical": { @@ -6980,6 +7017,14 @@ "uuid": "^8.3.1" } }, + "node_modules/node-ical/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -8076,6 +8121,15 @@ "node": ">= 6.0.0" } }, + "node_modules/puppeteer-core/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true, + "engines": { + "node": "4.x || >=6.0.0" + } + }, "node_modules/qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -8767,18 +8821,18 @@ } }, "node_modules/socket.io": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.1.3.tgz", - "integrity": "sha512-tLkaY13RcO4nIRh1K2hT5iuotfTaIQw7cVIe0FUykN3SuQi0cm7ALxuyT5/CtDswOMWUzMGTibxYNx/gU7In+Q==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.2.0.tgz", + "integrity": "sha512-sjlGfMmnaWvTRVxGRGWyhd9ctpg4APxWAxu85O/SxekkxHhfxmePWZbaYCkeX5QQX0z1YEnKOlNt6w82E4Nzug==", "dependencies": { - "@types/cookie": "^0.4.0", - "@types/cors": "^2.8.10", + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "~2.0.0", - "debug": "~4.3.1", - "engine.io": "~5.1.1", - "socket.io-adapter": "~2.3.1", + "debug": "~4.3.2", + "engine.io": "~5.2.0", + "socket.io-adapter": "~2.3.2", "socket.io-parser": "~4.0.4" }, "engines": { @@ -8786,9 +8840,9 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.1.tgz", - "integrity": "sha512-8cVkRxI8Nt2wadkY6u60Y4rpW3ejA1rxgcK2JuyIhmF+RMNpTy1QRtkHIDUOf3B4HlQwakMsWbKftMv/71VMmw==" + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.2.tgz", + "integrity": "sha512-PBZpxUPYjmoogY0aoaTmo1643JelsaS1CiAwNjRVdrI0X9Seuc19Y2Wife8k88avW6haG8cznvwbubAZwH4Mtg==" }, "node_modules/socket.io-parser": { "version": "4.0.4", @@ -10034,6 +10088,14 @@ "makeerror": "1.0.x" } }, + "node_modules/web-streams-polyfill": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.1.0.tgz", + "integrity": "sha512-wO9r1YnYe7kFBLHyyVEhV1H8VRWoNiNnuP+v/HUUmSTaRF8F93Kmd3JMrETx0f11GXxRek6OcL2QtjFIdc5WYw==", + "engines": { + "node": ">= 8" + } + }, "node_modules/webdriver": { "version": "6.12.1", "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-6.12.1.tgz", @@ -11480,14 +11542,14 @@ "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==" }, "@types/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" }, "@types/cors": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", - "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" }, "@types/graceful-fs": { "version": "4.1.5", @@ -12763,6 +12825,11 @@ } } }, + "data-uri-to-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", + "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==" + }, "data-urls": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.0.tgz", @@ -13050,9 +13117,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/electron/-/electron-13.2.3.tgz", - "integrity": "sha512-FzWhbKHjq7ZTpPQFaYiLPL64erC8/BOsu5NlNN9nQ6f7rIP8ygKlNAlQit3vbOcksQAwItDUCIw4sW0mcaRpCA==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-13.3.0.tgz", + "integrity": "sha512-d/BvOLDjI4i7yf9tqCuLL2fFGA2TrM/D9PyRpua+rJolG0qrwp/FohP02L0m+44kmPpofIo4l3NPwLmzyKKimA==", "devOptional": true, "requires": { "@electron/get": "^1.0.1", @@ -13125,9 +13192,9 @@ } }, "engine.io": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.1.1.tgz", - "integrity": "sha512-aMWot7H5aC8L4/T8qMYbLdvKlZOdJTH54FxfdFunTGvhMx1BHkJOntWArsVfgAZVwAO9LC2sryPWRcEeUzCe5w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.2.0.tgz", + "integrity": "sha512-d1DexkQx87IFr1FLuV+0f5kAm1Hk1uOVijLOb+D1sDO2QMb7YjE02VHtZtxo7xIXMgcWLb+vl3HRT0rI9tr4jQ==", "requires": { "accepts": "~1.3.4", "base64id": "2.0.0", @@ -13152,9 +13219,9 @@ } }, "engine.io-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", - "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.3.tgz", + "integrity": "sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==", "requires": { "base64-arraybuffer": "0.1.4" } @@ -13372,9 +13439,9 @@ } }, "eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -13727,6 +13794,14 @@ "sax": "^1.2.4" } }, + "fetch-blob": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.2.tgz", + "integrity": "sha512-hunJbvy/6OLjCD0uuhLdp0mMPzP/yd2ssd1t2FCJsaA7wkWhpbp9xfuNVpv7Ll4jFhzp6T4LAupSiV9uOeg0VQ==", + "requires": { + "web-streams-polyfill": "^3.0.3" + } + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -15864,9 +15939,13 @@ } }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.0.0.tgz", + "integrity": "sha512-bKMI+C7/T/SPU1lKnbQbwxptpCrG9ashG+VkytmXCPZyuM9jB6VU+hY0oi4lC8LxTtAeWdckNCTa3nrGsAdA3Q==", + "requires": { + "data-uri-to-buffer": "^3.0.1", + "fetch-blob": "^3.1.2" + } }, "node-ical": { "version": "0.13.0", @@ -15877,6 +15956,13 @@ "node-fetch": "^2.6.1", "rrule": "2.6.8", "uuid": "^8.3.1" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + } } }, "node-int64": { @@ -16709,6 +16795,12 @@ "agent-base": "5", "debug": "4" } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true } } }, @@ -17253,25 +17345,25 @@ } }, "socket.io": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.1.3.tgz", - "integrity": "sha512-tLkaY13RcO4nIRh1K2hT5iuotfTaIQw7cVIe0FUykN3SuQi0cm7ALxuyT5/CtDswOMWUzMGTibxYNx/gU7In+Q==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.2.0.tgz", + "integrity": "sha512-sjlGfMmnaWvTRVxGRGWyhd9ctpg4APxWAxu85O/SxekkxHhfxmePWZbaYCkeX5QQX0z1YEnKOlNt6w82E4Nzug==", "requires": { - "@types/cookie": "^0.4.0", - "@types/cors": "^2.8.10", + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "~2.0.0", - "debug": "~4.3.1", - "engine.io": "~5.1.1", - "socket.io-adapter": "~2.3.1", + "debug": "~4.3.2", + "engine.io": "~5.2.0", + "socket.io-adapter": "~2.3.2", "socket.io-parser": "~4.0.4" } }, "socket.io-adapter": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.1.tgz", - "integrity": "sha512-8cVkRxI8Nt2wadkY6u60Y4rpW3ejA1rxgcK2JuyIhmF+RMNpTy1QRtkHIDUOf3B4HlQwakMsWbKftMv/71VMmw==" + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.2.tgz", + "integrity": "sha512-PBZpxUPYjmoogY0aoaTmo1643JelsaS1CiAwNjRVdrI0X9Seuc19Y2Wife8k88avW6haG8cznvwbubAZwH4Mtg==" }, "socket.io-parser": { "version": "4.0.4", @@ -18204,6 +18296,11 @@ "makeerror": "1.0.x" } }, + "web-streams-polyfill": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.1.0.tgz", + "integrity": "sha512-wO9r1YnYe7kFBLHyyVEhV1H8VRWoNiNnuP+v/HUUmSTaRF8F93Kmd3JMrETx0f11GXxRek6OcL2QtjFIdc5WYw==" + }, "webdriver": { "version": "6.12.1", "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-6.12.1.tgz", diff --git a/package.json b/package.json index 6bce27aa..4ffc8161 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "eslint-config-prettier": "^8.3.0", "eslint-plugin-jest": "^24.4.0", "eslint-plugin-jsdoc": "^36.0.8", - "eslint-plugin-prettier": "^3.4.1", + "eslint-plugin-prettier": "^4.0.0", "express-basic-auth": "^1.2.0", "husky": "^7.0.2", "jest": "^27.1.0", @@ -66,7 +66,7 @@ "suncalc": "^1.8.0" }, "optionalDependencies": { - "electron": "^13.2.3" + "electron": "^13.3.0" }, "dependencies": { "colors": "^1.4.0", @@ -80,10 +80,10 @@ "iconv-lite": "^0.6.3", "module-alias": "^2.2.2", "moment": "^2.29.1", - "node-fetch": "^2.6.1", + "node-fetch": "^3.0.0", "node-ical": "^0.13.0", "simple-git": "^2.45.0", - "socket.io": "^4.1.3" + "socket.io": "^4.2.0" }, "_moduleAliases": { "node_helper": "js/node_helper.js", From c132206543e937109c5423a7862ae2271da1a0fd Mon Sep 17 00:00:00 2001 From: rejas Date: Wed, 1 Sep 2021 20:02:45 +0200 Subject: [PATCH 09/13] Use new method in ukmetofficedatahub provider --- .../weather/providers/ukmetofficedatahub.js | 21 +++---------------- .../default/weather/providers/weatherbit.js | 1 - 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/modules/default/weather/providers/ukmetofficedatahub.js b/modules/default/weather/providers/ukmetofficedatahub.js index 054dce78..1a98dfa2 100644 --- a/modules/default/weather/providers/ukmetofficedatahub.js +++ b/modules/default/weather/providers/ukmetofficedatahub.js @@ -150,11 +150,9 @@ WeatherProvider.register("ukmetofficedatahub", { } // Determine the sunrise/sunset times - (still) not supplied in UK Met Office data - // Passes {longitude, latitude, height} to calcAstroData - // Could just pass lat/long from this.config, but returned data from MO also contains elevation - let times = this.calcAstroData(currentWeatherData.features[0].geometry.coordinates); - currentWeather.sunrise = times[0]; - currentWeather.sunset = times[1]; + // Passes {longitude, latitude} to SunCalc, could pass height to, but + // SunCalc.getTimes doesnt take that into account + currentWeather.updateSunTime(this.config.lat, this.config.lon); return currentWeather; }, @@ -223,7 +221,6 @@ WeatherProvider.register("ukmetofficedatahub", { // Pass on full details so they can be used in custom templates // Note the units of the supplied data when using this (see top of file) - forecastWeather.rawData = forecastDataDays[day]; dailyForecasts.push(forecastWeather); @@ -238,18 +235,6 @@ WeatherProvider.register("ukmetofficedatahub", { this.fetchedLocationName = name; }, - // Calculate sunrise/sunset times - calcAstroData(location) { - const sunTimes = []; - - // Careful to pass values to SunCalc in correct order (latitude, longitude, elevation) - let times = SunCalc.getTimes(new Date(), location[1], location[0], location[2]); - sunTimes.push(moment(times.sunrise, "X")); - sunTimes.push(moment(times.sunset, "X")); - - return sunTimes; - }, - // Convert temperatures to Fahrenheit (from degrees C), if required convertTemp(tempInC) { return this.config.tempUnits === "imperial" ? (tempInC * 9) / 5 + 32 : tempInC; diff --git a/modules/default/weather/providers/weatherbit.js b/modules/default/weather/providers/weatherbit.js index afca0c83..94b9caea 100644 --- a/modules/default/weather/providers/weatherbit.js +++ b/modules/default/weather/providers/weatherbit.js @@ -89,7 +89,6 @@ WeatherProvider.register("weatherbit", { currentWeather.windSpeed = parseFloat(currentWeatherData.data[0].wind_spd); currentWeather.windDirection = currentWeatherData.data[0].wind_dir; currentWeather.weatherType = this.convertWeatherType(currentWeatherData.data[0].weather.icon); - Log.log("Wx Icon: " + currentWeatherData.data[0].weather.icon); currentWeather.sunrise = moment(currentWeatherData.data[0].sunrise, "HH:mm").add(tzOffset, "m"); currentWeather.sunset = moment(currentWeatherData.data[0].sunset, "HH:mm").add(tzOffset, "m"); From e2158716d6c78db3724993352ab8aa53a76ad2fc Mon Sep 17 00:00:00 2001 From: rejas Date: Wed, 1 Sep 2021 11:02:06 +0200 Subject: [PATCH 10/13] Revert "Update dependencies" This reverts commit f49312ed13edb06cd3f67d510b14294b25327710. --- package-lock.json | 239 ++++++++++++++-------------------------------- package.json | 8 +- 2 files changed, 75 insertions(+), 172 deletions(-) diff --git a/package-lock.json b/package-lock.json index b19e6a0d..ae6ab35e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,16 +21,16 @@ "iconv-lite": "^0.6.3", "module-alias": "^2.2.2", "moment": "^2.29.1", - "node-fetch": "^3.0.0", + "node-fetch": "^2.6.1", "node-ical": "^0.13.0", "simple-git": "^2.45.0", - "socket.io": "^4.2.0" + "socket.io": "^4.1.3" }, "devDependencies": { "eslint-config-prettier": "^8.3.0", "eslint-plugin-jest": "^24.4.0", "eslint-plugin-jsdoc": "^36.0.8", - "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-prettier": "^3.4.1", "express-basic-auth": "^1.2.0", "husky": "^7.0.2", "jest": "^27.1.0", @@ -51,7 +51,7 @@ "node": ">=12" }, "optionalDependencies": { - "electron": "^13.3.0" + "electron": "^13.2.3" } }, "node_modules/@babel/code-frame": { @@ -1227,14 +1227,14 @@ "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==" }, "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==" }, "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" }, "node_modules/@types/graceful-fs": { "version": "4.1.5", @@ -2889,14 +2889,6 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, - "node_modules/data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", - "engines": { - "node": ">= 6" - } - }, "node_modules/data-urls": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.0.tgz", @@ -3252,9 +3244,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "node_modules/electron": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-13.3.0.tgz", - "integrity": "sha512-d/BvOLDjI4i7yf9tqCuLL2fFGA2TrM/D9PyRpua+rJolG0qrwp/FohP02L0m+44kmPpofIo4l3NPwLmzyKKimA==", + "version": "13.2.3", + "resolved": "https://registry.npmjs.org/electron/-/electron-13.2.3.tgz", + "integrity": "sha512-FzWhbKHjq7ZTpPQFaYiLPL64erC8/BOsu5NlNN9nQ6f7rIP8ygKlNAlQit3vbOcksQAwItDUCIw4sW0mcaRpCA==", "devOptional": true, "hasInstallScript": true, "dependencies": { @@ -3362,9 +3354,9 @@ } }, "node_modules/engine.io": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.2.0.tgz", - "integrity": "sha512-d1DexkQx87IFr1FLuV+0f5kAm1Hk1uOVijLOb+D1sDO2QMb7YjE02VHtZtxo7xIXMgcWLb+vl3HRT0rI9tr4jQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.1.1.tgz", + "integrity": "sha512-aMWot7H5aC8L4/T8qMYbLdvKlZOdJTH54FxfdFunTGvhMx1BHkJOntWArsVfgAZVwAO9LC2sryPWRcEeUzCe5w==", "dependencies": { "accepts": "~1.3.4", "base64id": "2.0.0", @@ -3379,9 +3371,9 @@ } }, "node_modules/engine.io-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.3.tgz", - "integrity": "sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", "dependencies": { "base64-arraybuffer": "0.1.4" }, @@ -3693,9 +3685,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", - "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0" @@ -3704,8 +3696,8 @@ "node": ">=6.0.0" }, "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" + "eslint": ">=5.0.0", + "prettier": ">=1.13.0" }, "peerDependenciesMeta": { "eslint-config-prettier": { @@ -4152,27 +4144,6 @@ "node": ">=10" } }, - "node_modules/fetch-blob": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.2.tgz", - "integrity": "sha512-hunJbvy/6OLjCD0uuhLdp0mMPzP/yd2ssd1t2FCJsaA7wkWhpbp9xfuNVpv7Ll4jFhzp6T4LAupSiV9uOeg0VQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -6991,19 +6962,11 @@ } }, "node_modules/node-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.0.0.tgz", - "integrity": "sha512-bKMI+C7/T/SPU1lKnbQbwxptpCrG9ashG+VkytmXCPZyuM9jB6VU+hY0oi4lC8LxTtAeWdckNCTa3nrGsAdA3Q==", - "dependencies": { - "data-uri-to-buffer": "^3.0.1", - "fetch-blob": "^3.1.2" - }, + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "node": "4.x || >=6.0.0" } }, "node_modules/node-ical": { @@ -7017,14 +6980,6 @@ "uuid": "^8.3.1" } }, - "node_modules/node-ical/node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "engines": { - "node": "4.x || >=6.0.0" - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -8121,15 +8076,6 @@ "node": ">= 6.0.0" } }, - "node_modules/puppeteer-core/node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, "node_modules/qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -8821,18 +8767,18 @@ } }, "node_modules/socket.io": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.2.0.tgz", - "integrity": "sha512-sjlGfMmnaWvTRVxGRGWyhd9ctpg4APxWAxu85O/SxekkxHhfxmePWZbaYCkeX5QQX0z1YEnKOlNt6w82E4Nzug==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.1.3.tgz", + "integrity": "sha512-tLkaY13RcO4nIRh1K2hT5iuotfTaIQw7cVIe0FUykN3SuQi0cm7ALxuyT5/CtDswOMWUzMGTibxYNx/gU7In+Q==", "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.10", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~5.2.0", - "socket.io-adapter": "~2.3.2", + "debug": "~4.3.1", + "engine.io": "~5.1.1", + "socket.io-adapter": "~2.3.1", "socket.io-parser": "~4.0.4" }, "engines": { @@ -8840,9 +8786,9 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.2.tgz", - "integrity": "sha512-PBZpxUPYjmoogY0aoaTmo1643JelsaS1CiAwNjRVdrI0X9Seuc19Y2Wife8k88avW6haG8cznvwbubAZwH4Mtg==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.1.tgz", + "integrity": "sha512-8cVkRxI8Nt2wadkY6u60Y4rpW3ejA1rxgcK2JuyIhmF+RMNpTy1QRtkHIDUOf3B4HlQwakMsWbKftMv/71VMmw==" }, "node_modules/socket.io-parser": { "version": "4.0.4", @@ -10088,14 +10034,6 @@ "makeerror": "1.0.x" } }, - "node_modules/web-streams-polyfill": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.1.0.tgz", - "integrity": "sha512-wO9r1YnYe7kFBLHyyVEhV1H8VRWoNiNnuP+v/HUUmSTaRF8F93Kmd3JMrETx0f11GXxRek6OcL2QtjFIdc5WYw==", - "engines": { - "node": ">= 8" - } - }, "node_modules/webdriver": { "version": "6.12.1", "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-6.12.1.tgz", @@ -11542,14 +11480,14 @@ "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==" }, "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==" }, "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" }, "@types/graceful-fs": { "version": "4.1.5", @@ -12825,11 +12763,6 @@ } } }, - "data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==" - }, "data-urls": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.0.tgz", @@ -13117,9 +13050,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-13.3.0.tgz", - "integrity": "sha512-d/BvOLDjI4i7yf9tqCuLL2fFGA2TrM/D9PyRpua+rJolG0qrwp/FohP02L0m+44kmPpofIo4l3NPwLmzyKKimA==", + "version": "13.2.3", + "resolved": "https://registry.npmjs.org/electron/-/electron-13.2.3.tgz", + "integrity": "sha512-FzWhbKHjq7ZTpPQFaYiLPL64erC8/BOsu5NlNN9nQ6f7rIP8ygKlNAlQit3vbOcksQAwItDUCIw4sW0mcaRpCA==", "devOptional": true, "requires": { "@electron/get": "^1.0.1", @@ -13192,9 +13125,9 @@ } }, "engine.io": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.2.0.tgz", - "integrity": "sha512-d1DexkQx87IFr1FLuV+0f5kAm1Hk1uOVijLOb+D1sDO2QMb7YjE02VHtZtxo7xIXMgcWLb+vl3HRT0rI9tr4jQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.1.1.tgz", + "integrity": "sha512-aMWot7H5aC8L4/T8qMYbLdvKlZOdJTH54FxfdFunTGvhMx1BHkJOntWArsVfgAZVwAO9LC2sryPWRcEeUzCe5w==", "requires": { "accepts": "~1.3.4", "base64id": "2.0.0", @@ -13219,9 +13152,9 @@ } }, "engine.io-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.3.tgz", - "integrity": "sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", "requires": { "base64-arraybuffer": "0.1.4" } @@ -13439,9 +13372,9 @@ } }, "eslint-plugin-prettier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", - "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -13794,14 +13727,6 @@ "sax": "^1.2.4" } }, - "fetch-blob": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.2.tgz", - "integrity": "sha512-hunJbvy/6OLjCD0uuhLdp0mMPzP/yd2ssd1t2FCJsaA7wkWhpbp9xfuNVpv7Ll4jFhzp6T4LAupSiV9uOeg0VQ==", - "requires": { - "web-streams-polyfill": "^3.0.3" - } - }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -15939,13 +15864,9 @@ } }, "node-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.0.0.tgz", - "integrity": "sha512-bKMI+C7/T/SPU1lKnbQbwxptpCrG9ashG+VkytmXCPZyuM9jB6VU+hY0oi4lC8LxTtAeWdckNCTa3nrGsAdA3Q==", - "requires": { - "data-uri-to-buffer": "^3.0.1", - "fetch-blob": "^3.1.2" - } + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, "node-ical": { "version": "0.13.0", @@ -15956,13 +15877,6 @@ "node-fetch": "^2.6.1", "rrule": "2.6.8", "uuid": "^8.3.1" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - } } }, "node-int64": { @@ -16795,12 +16709,6 @@ "agent-base": "5", "debug": "4" } - }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true } } }, @@ -17345,25 +17253,25 @@ } }, "socket.io": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.2.0.tgz", - "integrity": "sha512-sjlGfMmnaWvTRVxGRGWyhd9ctpg4APxWAxu85O/SxekkxHhfxmePWZbaYCkeX5QQX0z1YEnKOlNt6w82E4Nzug==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.1.3.tgz", + "integrity": "sha512-tLkaY13RcO4nIRh1K2hT5iuotfTaIQw7cVIe0FUykN3SuQi0cm7ALxuyT5/CtDswOMWUzMGTibxYNx/gU7In+Q==", "requires": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.10", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~5.2.0", - "socket.io-adapter": "~2.3.2", + "debug": "~4.3.1", + "engine.io": "~5.1.1", + "socket.io-adapter": "~2.3.1", "socket.io-parser": "~4.0.4" } }, "socket.io-adapter": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.2.tgz", - "integrity": "sha512-PBZpxUPYjmoogY0aoaTmo1643JelsaS1CiAwNjRVdrI0X9Seuc19Y2Wife8k88avW6haG8cznvwbubAZwH4Mtg==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.1.tgz", + "integrity": "sha512-8cVkRxI8Nt2wadkY6u60Y4rpW3ejA1rxgcK2JuyIhmF+RMNpTy1QRtkHIDUOf3B4HlQwakMsWbKftMv/71VMmw==" }, "socket.io-parser": { "version": "4.0.4", @@ -18296,11 +18204,6 @@ "makeerror": "1.0.x" } }, - "web-streams-polyfill": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.1.0.tgz", - "integrity": "sha512-wO9r1YnYe7kFBLHyyVEhV1H8VRWoNiNnuP+v/HUUmSTaRF8F93Kmd3JMrETx0f11GXxRek6OcL2QtjFIdc5WYw==" - }, "webdriver": { "version": "6.12.1", "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-6.12.1.tgz", diff --git a/package.json b/package.json index 4ffc8161..6bce27aa 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "eslint-config-prettier": "^8.3.0", "eslint-plugin-jest": "^24.4.0", "eslint-plugin-jsdoc": "^36.0.8", - "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-prettier": "^3.4.1", "express-basic-auth": "^1.2.0", "husky": "^7.0.2", "jest": "^27.1.0", @@ -66,7 +66,7 @@ "suncalc": "^1.8.0" }, "optionalDependencies": { - "electron": "^13.3.0" + "electron": "^13.2.3" }, "dependencies": { "colors": "^1.4.0", @@ -80,10 +80,10 @@ "iconv-lite": "^0.6.3", "module-alias": "^2.2.2", "moment": "^2.29.1", - "node-fetch": "^3.0.0", + "node-fetch": "^2.6.1", "node-ical": "^0.13.0", "simple-git": "^2.45.0", - "socket.io": "^4.2.0" + "socket.io": "^4.1.3" }, "_moduleAliases": { "node_helper": "js/node_helper.js", From a273266e5ec9ef4042868baed936e4598e39412a Mon Sep 17 00:00:00 2001 From: veeck Date: Thu, 2 Sep 2021 20:35:06 +0200 Subject: [PATCH 11/13] Remove useless returns and now unused jsdoc variables --- .eslintrc.json | 3 ++- modules/default/weather/providers/envcanada.js | 4 ---- modules/default/weather/providers/smhi.js | 2 +- modules/default/weather/providers/ukmetoffice.js | 2 +- modules/default/weather/providers/ukmetofficedatahub.js | 2 +- modules/default/weather/providers/weathergov.js | 2 +- 6 files changed, 6 insertions(+), 9 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 3e685a0d..637b2eb7 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -25,6 +25,7 @@ "prettier/prettier": "error", "eqeqeq": "error", "no-prototype-builtins": "off", - "no-unused-vars": "off" + "no-unused-vars": "off", + "no-useless-return": "error" } } diff --git a/modules/default/weather/providers/envcanada.js b/modules/default/weather/providers/envcanada.js index 0f9ef21e..ea2d5980 100644 --- a/modules/default/weather/providers/envcanada.js +++ b/modules/default/weather/providers/envcanada.js @@ -513,8 +513,6 @@ WeatherProvider.register("envcanada", { weather.maxTemperature = this.convertTemp(nextTemp); } } - - return; }, // @@ -560,8 +558,6 @@ WeatherProvider.register("envcanada", { weather.precipitation = foreGroup[today].querySelector("abbreviatedForecast pop").textContent; weather.precipitationUnits = foreGroup[today].querySelector("abbreviatedForecast pop").getAttribute("units"); } - - return; }, // diff --git a/modules/default/weather/providers/smhi.js b/modules/default/weather/providers/smhi.js index 2869906a..83af249b 100644 --- a/modules/default/weather/providers/smhi.js +++ b/modules/default/weather/providers/smhi.js @@ -1,4 +1,4 @@ -/* global WeatherProvider, WeatherObject, SunCalc */ +/* global WeatherProvider, WeatherObject */ /* Magic Mirror * Module: Weather diff --git a/modules/default/weather/providers/ukmetoffice.js b/modules/default/weather/providers/ukmetoffice.js index d2443866..9166599a 100755 --- a/modules/default/weather/providers/ukmetoffice.js +++ b/modules/default/weather/providers/ukmetoffice.js @@ -1,4 +1,4 @@ -/* global WeatherProvider, WeatherObject, SunCalc */ +/* global WeatherProvider, WeatherObject */ /* Magic Mirror * Module: Weather diff --git a/modules/default/weather/providers/ukmetofficedatahub.js b/modules/default/weather/providers/ukmetofficedatahub.js index 1a98dfa2..21245a4c 100644 --- a/modules/default/weather/providers/ukmetofficedatahub.js +++ b/modules/default/weather/providers/ukmetofficedatahub.js @@ -1,4 +1,4 @@ -/* global WeatherProvider, WeatherObject, SunCalc */ +/* global WeatherProvider, WeatherObject */ /* Magic Mirror * Module: Weather diff --git a/modules/default/weather/providers/weathergov.js b/modules/default/weather/providers/weathergov.js index 4ae25f56..31934784 100755 --- a/modules/default/weather/providers/weathergov.js +++ b/modules/default/weather/providers/weathergov.js @@ -1,4 +1,4 @@ -/* global WeatherProvider, WeatherObject, SunCalc */ +/* global WeatherProvider, WeatherObject */ /* Magic Mirror * Module: Weather From 9ee11654a6fadee2fb605d29e0a877cc1224c1a4 Mon Sep 17 00:00:00 2001 From: veeck Date: Thu, 2 Sep 2021 20:35:43 +0200 Subject: [PATCH 12/13] Update jsdocs --- modules/default/weather/providers/ukmetoffice.js | 6 +++--- modules/default/weather/weatherobject.js | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/modules/default/weather/providers/ukmetoffice.js b/modules/default/weather/providers/ukmetoffice.js index 9166599a..158592bd 100755 --- a/modules/default/weather/providers/ukmetoffice.js +++ b/modules/default/weather/providers/ukmetoffice.js @@ -232,16 +232,16 @@ WeatherProvider.register("ukmetoffice", { return windCardinals.hasOwnProperty(windDirection) ? windCardinals[windDirection] : null; }, - /* + /** * Generates an url with api parameters based on the config. * - * return String - URL params. + * @param {string} forecastType daily or 3hourly forecast + * @returns {string} url */ getParams(forecastType) { let params = "?"; params += "res=" + forecastType; params += "&key=" + this.config.apiKey; - return params; } }); diff --git a/modules/default/weather/weatherobject.js b/modules/default/weather/weatherobject.js index 2d08f028..56eeeeee 100755 --- a/modules/default/weather/weatherobject.js +++ b/modules/default/weather/weatherobject.js @@ -13,11 +13,12 @@ */ class WeatherObject { /** + * Constructor for a WeatherObject * - * @param units - * @param tempUnits - * @param windUnits - * @param useKmh + * @param {string} units what units to use, "imperial" or "metric" + * @param {string} tempUnits what tempunits to use + * @param {string} windUnits what windunits to use + * @param {boolean} useKmh use kmh if true, mps if false */ constructor(units, tempUnits, windUnits, useKmh) { this.units = units; From a7756cec13a723556c46232ea78730bb0536b1f5 Mon Sep 17 00:00:00 2001 From: veeck Date: Thu, 2 Sep 2021 20:37:41 +0200 Subject: [PATCH 13/13] Inline some functions --- modules/default/weather/providers/envcanada.js | 4 +--- modules/default/weather/providers/ukmetofficedatahub.js | 4 +--- modules/default/weather/weatherobject.js | 3 +-- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/modules/default/weather/providers/envcanada.js b/modules/default/weather/providers/envcanada.js index ea2d5980..868ee6e2 100644 --- a/modules/default/weather/providers/envcanada.js +++ b/modules/default/weather/providers/envcanada.js @@ -164,9 +164,7 @@ WeatherProvider.register("envcanada", { // CORS errors when accessing EC // getUrl() { - const path = "https://thingproxy.freeboard.io/fetch/https://dd.weather.gc.ca/citypage_weather/xml/" + this.config.provCode + "/" + this.config.siteCode + "_e.xml"; - - return path; + return "https://thingproxy.freeboard.io/fetch/https://dd.weather.gc.ca/citypage_weather/xml/" + this.config.provCode + "/" + this.config.siteCode + "_e.xml"; }, // diff --git a/modules/default/weather/providers/ukmetofficedatahub.js b/modules/default/weather/providers/ukmetofficedatahub.js index 21245a4c..9603841b 100644 --- a/modules/default/weather/providers/ukmetofficedatahub.js +++ b/modules/default/weather/providers/ukmetofficedatahub.js @@ -71,13 +71,11 @@ WeatherProvider.register("ukmetofficedatahub", { // For DataHub requests, the API key/secret are sent in the headers rather than as query strings. // Headers defined according to Data Hub API (https://metoffice.apiconnect.ibmcloud.com/metoffice/production/api) getHeaders() { - let headers = { + return { accept: "application/json", "x-ibm-client-id": this.config.apiKey, "x-ibm-client-secret": this.config.apiSecret }; - - return headers; }, // Fetch data using supplied URL and request headers diff --git a/modules/default/weather/weatherobject.js b/modules/default/weather/weatherobject.js index 56eeeeee..9224208a 100755 --- a/modules/default/weather/weatherobject.js +++ b/modules/default/weather/weatherobject.js @@ -90,8 +90,7 @@ class WeatherObject { } kmhWindSpeed() { - const windInKmh = this.windUnits === "imperial" ? this.windSpeed * 1.609344 : (this.windSpeed * 60 * 60) / 1000; - return windInKmh; + return this.windUnits === "imperial" ? this.windSpeed * 1.609344 : (this.windSpeed * 60 * 60) / 1000; } nextSunAction() {