From dff0822b2e84707dda31d819535da6c0c9c22f82 Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Thu, 29 Jun 2023 15:23:43 +0200 Subject: [PATCH 1/8] added year 2023 --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 27ee7fd..59c0c98 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022 grizzelbee +Copyright (c) 2023 grizzelbee Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 308c904b1c27faa931fcf427b6118e5ebbb711c4 Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Thu, 29 Jun 2023 15:24:09 +0200 Subject: [PATCH 2/8] added year 2023 and removed V from version numbers --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index b661eca..6695d6d 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,7 @@ Basically there are three ways to execute the command: ## Changelog ### **WORK IN PROGRESS** -### v1.5.0 (2023-06-27) +### 1.5.0 (2023-06-27) * (grizzelbee) Deprecated: The current peer name/description will be dropped in one of the next versions. So please move over to Username/Device config. * (grizzelbee) New: Splitted Peer names in config in user and device names; So that you are able to group devices by user * (grizzelbee) New: Some new data fields: connectedPeers, connectedPeersCount, connectedUsers, connectedUsersCount and connection states per user @@ -115,50 +115,50 @@ Basically there are three ways to execute the command: * (grizzelbee) Upd: Dropped support for NodeJS 12 * (grizzelbee) Upd: Added support for NodeJS 18 -### v1.4.1 (2022-10-26) +### 1.4.1 (2022-10-26) * (grizzelbee) New: Showing number of currently connected peers for each interface -### v1.4.0 (2022-09-09) +### 1.4.0 (2022-09-09) * (grizzelbee) New: [#37](https://github.com/Grizzelbee/ioBroker.wireguard/issues/37) Added config options for port and docker container name * (grizzelbee) Chg: Moved over to new jsonConfig Admin UI -### v1.3.2 (2022-09-07) +### 1.3.2 (2022-09-07) * (grizzelbee) New: [#38](https://github.com/Grizzelbee/ioBroker.wireguard/issues/38) Fixed "Adapter doesn't come online" bug caused by pseudo-tty settings -### v1.3.1 (2022-06-26) +### 1.3.1 (2022-06-26) * (grizzelbee) New: [#33](https://github.com/Grizzelbee/ioBroker.wireguard/issues/33) Added button to resume a single peer -### v1.3.0 (2022-06-25) +### 1.3.0 (2022-06-25) * (grizzelbee) New: [#33](https://github.com/Grizzelbee/ioBroker.wireguard/issues/33) Added buttons to suspend single and restore all peers of an interface * (grizzelbee) Chg: Changed polling log entry from info to debug * (grizzelbee) Upd: dependencies got updated -### v1.2.1 (2022-04-24) +### 1.2.1 (2022-04-24) * (grizzelbee) Fixed: [#20](https://github.com/Grizzelbee/ioBroker.wireguard/issues/20) Fixed a bug in tty linking which prevented docker option to work. -### v1.2.0 (2022-04-21) +### 1.2.0 (2022-04-21) * (grizzelbee) New: [#20](https://github.com/Grizzelbee/ioBroker.wireguard/issues/20) Added support for WireGuard inside a docker container -### v1.1.3 (2022-03-31) +### 1.1.3 (2022-03-31) * (grizzelbee) New: Fixed sentry error [WIREGUARD-1](https://sentry.io/organizations/grizzelbee/issues/3027754005/events/?project=6215712) * (grizzelbee) New: Fixed sentry error [WIREGUARD-H](https://sentry.io/organizations/grizzelbee/issues/3129951381/events/?project=6215712) * (grizzelbee) New: Fixed sentry error [WIREGUARD-C](https://sentry.io/organizations/grizzelbee/issues/3036902024/events/?project=6215712) * (grizzelbee) Upd: dependencies got updated -### v1.1.2 (2022-03-17) +### 1.1.2 (2022-03-17) * (grizzelbee) New: Added donate button * (grizzelbee) Upd: dependency update -### v1.1.1 (2022-03-13) +### 1.1.1 (2022-03-13) * (grizzelbee) Upd: Changed titleLang from WireGuard to WireGuard monitoring * (grizzelbee) Upd: dependency update -### v1.1.0 (2022-03-06) +### 1.1.0 (2022-03-06) * (grizzelbee) New: Added support for sudo when using a proper sudoers rule * (grizzelbee) Upd: Documentation update regarding security * (grizzelbee) Upd: dependency update -### v1.0.0 (2022-02-25) +### 1.0.0 (2022-02-25) * (grizzelbee) New: Added individual online state indicator for each interface * (grizzelbee) fix: Improved some data roles * (grizzelbee) fix: Improved documentation @@ -231,4 +231,4 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## Copyright -Copyright (c) 2022 grizzelbee +Copyright (c) 2023 grizzelbee From b3c9f766448e3faffddb73765ea6f31de2bbeb0e Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Fri, 30 Jun 2023 10:51:05 +0200 Subject: [PATCH 3/8] fixes #65 - No names in object tree --- main.js | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/main.js b/main.js index 2c70472..6fe65a3 100644 --- a/main.js +++ b/main.js @@ -430,21 +430,23 @@ class Wireguard extends utils.Adapter { getDescByPeer(peerId){ if (settingsPeerMap[peerId]){ adapter.log.debug(`getDescByPeer: Found config for ${peerId}`); - if (Object.prototype.hasOwnProperty.call(settingsPeerMap[peerId], 'user') && Object.prototype.hasOwnProperty.call(settingsPeerMap[peerId], 'device') ){ - const result = settingsPeerMap[peerId].user + ' - ' + settingsPeerMap[peerId].device; - adapter.log.debug(`getDescByPeer: result=${result}`); - if (result.trim() === '-') { - if (Object.prototype.hasOwnProperty.call(settingsPeerMap[peerId], 'desc') ){ - adapter.log.debug(`getDescByPeer: desc=${settingsPeerMap[peerId].desc}`); - return settingsPeerMap[peerId].desc; - } else return result; - } else if (Object.prototype.hasOwnProperty.call(settingsPeerMap[peerId], 'desc') ){ - return settingsPeerMap[peerId].desc || 'No description given. Please configure some.'; - } else { - return 'No description given. Please configure some.'; + if ( Object.prototype.hasOwnProperty.call(settingsPeerMap[peerId], 'user') || Object.prototype.hasOwnProperty.call(settingsPeerMap[peerId], 'device')){ + // initialize string + let result = ''; + if ( Object.prototype.hasOwnProperty.call(settingsPeerMap[peerId], 'user') ) { + // add user to result if there is some + result += settingsPeerMap[peerId].user; + if (Object.prototype.hasOwnProperty.call(settingsPeerMap[peerId], 'device')) { + // add device to result if there is some - and add a blank if there is already a user + result += (result.length > 0 ? ' ' : '') + settingsPeerMap[peerId].device; + return result; + } } - } else return 'No description given. Please configure some.'; - } adapter.log.debug(`getDescByPeer: Unknown peerId ${peerId}`); + } + } else { + adapter.log.debug(`getDescByPeer: Unknown peerId ${peerId}`); + return ''; + } } /** @@ -509,7 +511,7 @@ class Wireguard extends utils.Adapter { adapter.createOrExtendObject(`${path}.restore_Peer`, { type: 'state', common: { - name: `Bring that temporarily suspended peer back to action.`, + name: `Bring that temporarily suspended peer back into action.`, // 'icon':'' 'read': false, 'write': true, @@ -610,7 +612,7 @@ class Wireguard extends utils.Adapter { } */ obj.type= 'group'; - obj.common.name = adapter.getDescByPeer('Key: '+key); + obj.common.name = adapter.getDescByPeer(key); obj.common.write= true; adapter.createOrExtendObject( `${path}.${key}`, obj, null ); adapter.extractTreeItems(`${path}.${key}`, value); From 3ddc8b5857855d7876d07c5fe5f4130901c2ac97 Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Fri, 7 Jul 2023 09:47:15 +0200 Subject: [PATCH 4/8] added ukranian lang --- admin/i18n/uk/translations.json | 47 +++++++++++++++++++++++++++++++++ admin/src/i18n/uk.json | 5 ++++ admin/src/i18n/zh-cn.json | 5 ++++ 3 files changed, 57 insertions(+) create mode 100644 admin/i18n/uk/translations.json create mode 100644 admin/src/i18n/uk.json create mode 100644 admin/src/i18n/zh-cn.json diff --git a/admin/i18n/uk/translations.json b/admin/i18n/uk/translations.json new file mode 100644 index 0000000..e7d1c7d --- /dev/null +++ b/admin/i18n/uk/translations.json @@ -0,0 +1,47 @@ +{ + "Check if you like to use sudo commands.": "Перевірте, чи любите ви використовувати команди sudo.", + "Check if you use WireGuard in Docker containers.": "Перевірте, чи використовуєте ви WireGuard у контейнерах Docker.", + "Click here to add a new config file": "Натисніть тут, щоб додати новий конфігураційний файл", + "Click here to add a new host": "Натисніть тут, щоб додати нового хоста", + "Click here to add a new translation": "Натисніть тут, щоб додати новий переклад", + "Config file": "Файл конфігурації", + "Example: host: Testhost (same as NAME on main page), Interface: wg0, config file: /etc/wireguard/wg0.conf": "Приклад: хост: Testhost (те саме, що NAME на головній сторінці), інтерфейс: wg0, конфігураційний файл: /etc/wireguard/wg0.conf\":", + "Fully qualified path of the config file for this interface. Often: /etc/wireguard/wg0.conf": "Повний шлях до конфігураційного файлу для цього інтерфейсу. Часто: /etc/wireguard/wg0.conf", + "Host": "Хост", + "Host address": "Адреса хоста (IP)", + "Host name": "Ім'я хоста", + "Important": "важливо", + "Installation_hint_1": "Цей адаптер підтримує WireGuard як на Linux, так і на Windows.", + "Installation_hint_2": "Команда wg має бути в PATH, а користувачеві потрібні права адміністратора.", + "Installation_hint_3": "Порада. Щоб отримати підказки щодо безпеки щодо користувача, що виконується, і sudo, зверніться до файлу ReadMe на github.", + "Installation_hint_4": "Натисніть тут, щоб прочитати поради щодо безпеки на github.", + "Installation_hint_5": "Поставте прапорець у докері, якщо ви запускаєте WireGuard у контейнері докерів;", + "Installation_hint_6": "активуйте sudo, якщо вам потрібно sudo для виконання команди без пароля.", + "Interface name": "Назва інтерфейсу", + "Main config": "Основна конфігурація", + "Main settings": "Основні налаштування", + "May be an IP, DNS-Hostname or FQDN.": "Це може бути IP-адреса, ім’я хоста DNS або FQDN.", + "Name": "Ім'я", + "Name of your WireGuard Docker container.": "Назва вашого контейнера WireGuard Docker.", + "Name of your WireGuard interface. e.g. wg0": "Назва вашого інтерфейсу WireGuard. напр. wg0", + "Name of your WireGuard monitoring user.": "Ім’я вашого користувача моніторингу WireGuard.", + "Password": "Пароль", + "Please add all public key to name translations here. This will make it more convenient for you to identify the peers in the object tree.": "Будь ласка, додайте сюди всі публічні ключі для перекладу імен. Це зробить для вас зручнішим визначення однорангових елементів у дереві об’єктів.", + "Please add all your hosts running a WireGuard server instance which should be monitored.": "Будь ласка, додайте всі ваші хости, на яких працює примірник сервера WireGuard, який має бути", + "Poll interval": "Інтервал опитування", + "Pollinterval - in Seconds.": "Інтервал опитування - у секундах.", + "Public key": "Відкритий ключ", + "Public key to username translations": "Відкритий ключ для перекладу імені користувача", + "Public-Key translations": "Переклади з відкритим ключем", + "The Port your SSH server listens to.": "Порт, який прослуховує ваш сервер SSH.", + "Use sudo": "sudo", + "User": "Користувач", + "WireGuard Config files": "Файли конфігурації WireGuard", + "WireGuard hosts": "Хост WireGuard", + "You need to list all your WireGuard config files here (with full path) to use the peer reactivation feature. For more information please see the readme file on github.": "Вам потрібно перелічити всі файли конфігурації WireGuard (з повним шляхом), щоб скористатися функцією повторної активації. Для отримання додаткової інформації перегляньте файл readme на github.", + "config file": "Файл конфігурації", + "docker": "докер", + "donation": "Якщо вам подобається цей адаптер, подумайте про пожертву на підтримку моєї роботи.", + "sudo": "sudo", + "Name of the referenced host - must be the same as NAME on main config page!": "Ім'я хосту, на який посилається, має збігатися з ім'ям на головній сторінці конфігурації!" +} diff --git a/admin/src/i18n/uk.json b/admin/src/i18n/uk.json new file mode 100644 index 0000000..af69885 --- /dev/null +++ b/admin/src/i18n/uk.json @@ -0,0 +1,5 @@ +{ + "wireguard adapter settings": "Налаштування адаптера для wireguard", + "option1": "варіант1", + "option2": "варіант2" +} diff --git a/admin/src/i18n/zh-cn.json b/admin/src/i18n/zh-cn.json new file mode 100644 index 0000000..158e962 --- /dev/null +++ b/admin/src/i18n/zh-cn.json @@ -0,0 +1,5 @@ +{ + "wireguard adapter settings": "Wireguard 的适配器设置", + "option1": "选项1", + "option2": "选项2" +} From 1d1f604c2d08c0dc9b3002943cf7653af1976ed7 Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Fri, 7 Jul 2023 09:47:25 +0200 Subject: [PATCH 5/8] active development --- README.md | 5 +++ main.js | 108 ++++++++++++++++++++++++++++++++++-------------------- 2 files changed, 74 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 6695d6d..2607d66 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,11 @@ Basically there are three ways to execute the command: ## Changelog ### **WORK IN PROGRESS** + +### 1.5.1 (2023-06-27) +* (grizzelbee) Fix: [#65](https://github.com/Grizzelbee/ioBroker.wireguard/issues/65) Fixed - No names in object tree + + ### 1.5.0 (2023-06-27) * (grizzelbee) Deprecated: The current peer name/description will be dropped in one of the next versions. So please move over to Username/Device config. * (grizzelbee) New: Splitted Peer names in config in user and device names; So that you are able to group devices by user diff --git a/main.js b/main.js index 6fe65a3..7ff9470 100644 --- a/main.js +++ b/main.js @@ -26,10 +26,11 @@ class Wireguard extends utils.Adapter { name: 'wireguard', }); - this.on('ready', this.onReady.bind(this)); this.on('stateChange', this.onStateChange.bind(this)); this.on('unload', this.onUnload.bind(this)); + + const _ifaceOnlineState = this.getKnownInterfaces(); } async onStateChange(id, state){ @@ -90,7 +91,7 @@ class Wireguard extends utils.Adapter { */ async onReady() { // Reset the connection indicator during startup - this.setState('info.connection', false, true); + this.setState('info.connection', true, true); // Initialize your adapter here adapter = this; // preserve adapter reference to address functions etc. correctly later const settings = this.config; @@ -107,7 +108,6 @@ class Wireguard extends utils.Adapter { settingsPeerMap[settings.names[n].pubKey].device = settings.names[n].device; } try{ - // adapter.log.info(`settingsPeerMap => ${JSON.stringify(settingsPeerMap)}`); for (let host=0; host < settings.hosts.length; host++) { timeOuts.push(setInterval(async function pollHost() { const wgRawData = await adapter.getWireguardInfos(settings.hosts[host].name, settings.hosts[host].hostaddress, settings.hosts[host].port, settings.hosts[host].user, settings.hosts[host].password, settings.hosts[host].sudo, settings.hosts[host].docker); @@ -342,12 +342,13 @@ class Wireguard extends utils.Adapter { for ( let i=0; i {adapter.setState(id, value, true);}); } } else { @@ -589,29 +591,21 @@ class Wireguard extends utils.Adapter { finalValue = Number(value*1000); // convert unix time to utc break; } + case 'online': case 'connected': obj.common.role='indicator.reachable'; obj.common.type='boolean'; if (path.split('.').includes('peers')) adapter.setConnectedState(path, value); break; - + case 'users': + obj.common.name='Connect states of users and their devices'; + break; } // If there is an object inside the given structure, dive one level deeper if (typeof value === 'object'){ // It's an object - so iterate deeper - // adapter.log.debug(`Deeper Object: name ${key} | value ${JSON.stringify(value)}`); - // const groupname = adapter.getDescByPeer(key); - // assign group name translation if given on config page - /* - for (let n=0; n < adapter.config.names.length; n++){ - if ( key === adapter.config.names[n].pubKey ){ - groupname = adapter.config.names[n].groupname; - knownPeers.push(key); - break; - } - } - */ obj.type= 'group'; + obj.role= ''; obj.common.name = adapter.getDescByPeer(key); obj.common.write= true; adapter.createOrExtendObject( `${path}.${key}`, obj, null ); @@ -622,6 +616,47 @@ class Wireguard extends utils.Adapter { } } + /** + * gets all already known interfaces from the device tree + * + * + * @returns {object} a list of all devices / interfaces in the device tree with full Id-path + */ + async getKnownInterfaces(){ + return new Promise(resolve => { + adapter.getDevices((err, devices)=>{ + if (!err){ + const result = {}; + for (let n=0; n < devices.length; n++) { + result[ devices[n]._id.split('.').pop() ].online = false; + } + resolve(result); + } + }); + }); + } + /** + * sets all interfaces of a given host to offline to be able to set the proper online state later + * + * @param host string name of the host + * @returns {Promise} + */ + async setKnownInterfacesOffline(host){ + adapter.getDevices((err, devices)=>{ + if (!err){ + // const result = []; + for (let n=0; n < devices.length; n++) { + // result.push(devices[n]._id.split('.').pop()); + adapter.log.debug(`setKnownInterfacesOffline: Host: ${host}; deviceId: ${devices[n]._id}`); + if (devices[n]._id.split('.').pop().split('-').includes(host)) { + adapter.log.debug(`setKnownInterfacesOffline: Setting interface ${devices[n]._id} offline.`); + // adapter.createOrExtendObject(devices[n]._id+'.online', devices[n],false); + adapter.setState(devices[n]._id + '.online', false, true); + } + } + } + }); + } /** * Assign the data to the right host inside the device tree @@ -652,12 +687,13 @@ class Wireguard extends utils.Adapter { // | +-- 0..n (state) // +--------- repeat per peer adapter.log.debug(`Host: ${host} has ${ Object.keys(wgData).length } wireguard interface(s).`); - const knownInterfaces = []; - if (Object.keys(wgData).length === 0){ - adapter.log.error(`No info returned from wg executable. Maybe your WireGuard server is down or the monitoring user is missing permissions!`); - adapter.setState('info.connection', false, true); + adapter.setKnownInterfacesOffline(host); + if ( 0 === Object.keys(wgData).length ){ + adapter.log.warn(`No info returned from wg executable for host ${host}. Maybe your WireGuard server is down or the monitoring user is missing permissions!`); + resolve(''); + // adapter.setState('info.connection', false, true); } else { - adapter.setState('info.connection', true, true); + // adapter.setState('info.connection', true, true); // loop through wg interfaces of current host for (let n=0; n < Object.keys(wgData).length; n++){ const obj = { @@ -670,6 +706,7 @@ class Wireguard extends utils.Adapter { 'type': 'string' } }; + /* const onlineState = { type: 'state', common: { @@ -681,6 +718,8 @@ class Wireguard extends utils.Adapter { 'role':'indicator.reachable' } }; + + */ const restorePeers = { type: 'state', common: { @@ -692,26 +731,17 @@ class Wireguard extends utils.Adapter { 'role':'button' } }; + // todo: Das hier ist quatsch! + // todo: ich muss erst alle bekannten Interfaces auf connected=false setzen um danach alle, + // todo: die hier erwähnt werden auf online zu setzen const baseId = `${host}-${ Object.keys(wgData)[n]}`; - knownInterfaces.push(baseId); + adapter.log.debug(`baseId: ${baseId}`); adapter.createOrExtendObject( baseId, obj, '' ); + // adapter.createOrExtendObject(`${baseId}.online`, onlineState, true); adapter.createOrExtendObject( baseId+'.restore_all_Peers', restorePeers, true ); adapter.subscribeStates(baseId+'.restore_all_Peers'); // loop through children of interface adapter.extractTreeItems(baseId, wgData[Object.keys(wgData)[n]]); - if (n === Object.keys(wgData).length-1){ - // adapter.log.debug(`Going to set online states of interfaces.`); - // set online state of every interface - adapter.getDevices((err, devices)=>{ - for (let i=0; i < devices.length; i++) { - if (knownInterfaces.includes(devices[i]._id.split('.').pop())) { - adapter.createOrExtendObject(`${devices[i]._id}.online`, onlineState, true); - } else { - adapter.createOrExtendObject(`${devices[i]._id}.online`, onlineState, false); - } - } - }); - } } } } catch(error){ From b8f8f791b2e2f1e80f8a79e8fe854f003091dd0b Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Tue, 8 Aug 2023 18:03:44 +0200 Subject: [PATCH 6/8] fixes #64 --- main.js | 97 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 49 insertions(+), 48 deletions(-) diff --git a/main.js b/main.js index 7ff9470..70939f6 100644 --- a/main.js +++ b/main.js @@ -24,13 +24,14 @@ class Wireguard extends utils.Adapter { super({ ...options, name: 'wireguard', + _ifaceOnlineState : {} }); this.on('ready', this.onReady.bind(this)); this.on('stateChange', this.onStateChange.bind(this)); this.on('unload', this.onUnload.bind(this)); - const _ifaceOnlineState = this.getKnownInterfaces(); + // let _ifaceOnlineState; } async onStateChange(id, state){ @@ -91,7 +92,7 @@ class Wireguard extends utils.Adapter { */ async onReady() { // Reset the connection indicator during startup - this.setState('info.connection', true, true); + await this.setState('info.connection', true, true); // Initialize your adapter here adapter = this; // preserve adapter reference to address functions etc. correctly later const settings = this.config; @@ -107,6 +108,9 @@ class Wireguard extends utils.Adapter { settingsPeerMap[settings.names[n].pubKey].desc = settings.names[n].groupname; settingsPeerMap[settings.names[n].pubKey].device = settings.names[n].device; } + // get all already known interfaces from device tree + adapter._knownInterfaces = await adapter.getKnownInterfaces(); + adapter.log.debug(`_knownInterfaces=${JSON.stringify(adapter._knownInterfaces)}`); try{ for (let host=0; host < settings.hosts.length; host++) { timeOuts.push(setInterval(async function pollHost() { @@ -121,7 +125,7 @@ class Wireguard extends utils.Adapter { } } catch(error) { this.log.error(error); - this.setState('info.connection', false, true); + await this.setState('info.connection', false, true); } } @@ -348,7 +352,6 @@ class Wireguard extends utils.Adapter { wg[data[i][0]].publicKey= data[i][2]; wg[data[i][0]].listenPort = data[i][3]; wg[data[i][0]].fwmark = data[i][4]; - wg[data[i][0]].online = true; wg[data[i][0]].peers = {}; wg[data[i][0]].users = {}; } else { @@ -372,7 +375,7 @@ class Wireguard extends utils.Adapter { } // build users perspective if (wg[data[i][0]].peers[data[i][1]].user !== '') { - // there is a user name + // there is a username if ( Object.prototype.hasOwnProperty.call(wg[data[i][0]].users, wg[data[i][0]].peers[data[i][1]].user) ){ // there is already a connected state wg[data[i][0]].users[wg[data[i][0]].peers[data[i][1]].user].connected = ( wg[data[i][0]].users[wg[data[i][0]].peers[data[i][1]].user].connected || wg[data[i][0]].peers[data[i][1]].connected ); @@ -446,7 +449,7 @@ class Wireguard extends utils.Adapter { } } } else { - adapter.log.debug(`getDescByPeer: Unknown peerId ${peerId}`); + adapter.log.silly(`getDescByPeer: Unknown peerId ${peerId}`); return ''; } } @@ -591,7 +594,6 @@ class Wireguard extends utils.Adapter { finalValue = Number(value*1000); // convert unix time to utc break; } - case 'online': case 'connected': obj.common.role='indicator.reachable'; obj.common.type='boolean'; @@ -617,7 +619,7 @@ class Wireguard extends utils.Adapter { } /** - * gets all already known interfaces from the device tree + * gets all already known interfaces from the device tree and sets their online state to false * * * @returns {object} a list of all devices / interfaces in the device tree with full Id-path @@ -627,7 +629,10 @@ class Wireguard extends utils.Adapter { adapter.getDevices((err, devices)=>{ if (!err){ const result = {}; + // adapter.log.debug(`getKnownInterfaces: devices=${JSON.stringify(devices)}; length: ${devices.length}`); for (let n=0; n < devices.length; n++) { + result[ devices[n]._id.split('.').pop() ]={}; + result[ devices[n]._id.split('.').pop() ].id = devices[n]._id; result[ devices[n]._id.split('.').pop() ].online = false; } resolve(result); @@ -635,27 +640,39 @@ class Wireguard extends utils.Adapter { }); }); } + + /** - * sets all interfaces of a given host to offline to be able to set the proper online state later + * sets the online state of all known interfaces of the specified host to false aka offline * - * @param host string name of the host - * @returns {Promise} + * @param host {string} name of the host */ - async setKnownInterfacesOffline(host){ - adapter.getDevices((err, devices)=>{ - if (!err){ - // const result = []; - for (let n=0; n < devices.length; n++) { - // result.push(devices[n]._id.split('.').pop()); - adapter.log.debug(`setKnownInterfacesOffline: Host: ${host}; deviceId: ${devices[n]._id}`); - if (devices[n]._id.split('.').pop().split('-').includes(host)) { - adapter.log.debug(`setKnownInterfacesOffline: Setting interface ${devices[n]._id} offline.`); - // adapter.createOrExtendObject(devices[n]._id+'.online', devices[n],false); - adapter.setState(devices[n]._id + '.online', false, true); - } + async setAllKnownInterfacesOffline(host){ + for (const key in adapter._knownInterfaces){ + if (key.split('-')[0] === host) adapter._knownInterfaces[key].online = false; + } + } + + /** + * sets the online state of all known interfaces in the device tree + */ + setAllKnownInterfacesOnlineState(){ + adapter.log.debug(`setAllKnownInterfacesOnlineState: _knownInterfaces: ${JSON.stringify(adapter._knownInterfaces)}`); + //for (const key in adapter._knownInterfaces) adapter.setState(`${adapter._knownInterfaces[key].id}.online`, adapter._knownInterfaces[key].online, true); + for (const key in adapter._knownInterfaces){ + const onlineState = { + type: 'state', + common: { + name: `Online state of Interface ${key.split('-').pop()} on host ${key.split('-')[0]}`, + // 'icon':'' + 'read' : true, + 'write': false, + 'role' : 'indicator', + 'type' : 'boolean' } - } - }); + }; + adapter.createOrExtendObject(`${adapter._knownInterfaces[key].id}.online`, onlineState, adapter._knownInterfaces[key].online); + } } /** @@ -666,6 +683,8 @@ class Wireguard extends utils.Adapter { * @returns {Promise} */ async updateDevicetree(host, wgData) { + // set all knownInterfaces to offline + await adapter.setAllKnownInterfacesOffline(host); return new Promise(function(resolve, reject) { try{ // device tree structure @@ -687,59 +706,41 @@ class Wireguard extends utils.Adapter { // | +-- 0..n (state) // +--------- repeat per peer adapter.log.debug(`Host: ${host} has ${ Object.keys(wgData).length } wireguard interface(s).`); - adapter.setKnownInterfacesOffline(host); if ( 0 === Object.keys(wgData).length ){ adapter.log.warn(`No info returned from wg executable for host ${host}. Maybe your WireGuard server is down or the monitoring user is missing permissions!`); resolve(''); - // adapter.setState('info.connection', false, true); } else { - // adapter.setState('info.connection', true, true); // loop through wg interfaces of current host for (let n=0; n < Object.keys(wgData).length; n++){ + adapter._knownInterfaces[ `${host}-${Object.keys(wgData)[n]}` ].online = true; const obj = { type: 'device', common: { name: `Interface ${Object.keys(wgData)[n]} on host ${host}`, - // 'icon':'' + 'icon':'mdi:network-interface-card', + // 'icon':'', 'read': true, 'write': false, 'type': 'string' } }; - /* - const onlineState = { - type: 'state', - common: { - name: `Interface is online`, - // 'icon':'' - 'read': true, - 'write': false, - 'type': 'boolean', - 'role':'indicator.reachable' - } - }; - - */ const restorePeers = { type: 'state', common: { name: `Restore all suspended peers.`, - // 'icon':'' + // 'icon':'', 'read': true, 'write': true, 'type': 'boolean', 'role':'button' } }; - // todo: Das hier ist quatsch! - // todo: ich muss erst alle bekannten Interfaces auf connected=false setzen um danach alle, - // todo: die hier erwähnt werden auf online zu setzen const baseId = `${host}-${ Object.keys(wgData)[n]}`; adapter.log.debug(`baseId: ${baseId}`); adapter.createOrExtendObject( baseId, obj, '' ); - // adapter.createOrExtendObject(`${baseId}.online`, onlineState, true); adapter.createOrExtendObject( baseId+'.restore_all_Peers', restorePeers, true ); adapter.subscribeStates(baseId+'.restore_all_Peers'); + adapter.setAllKnownInterfacesOnlineState(); // loop through children of interface adapter.extractTreeItems(baseId, wgData[Object.keys(wgData)[n]]); } From 4dbfdf4046a7a16b916d04b45e40d08cb2094288 Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Tue, 8 Aug 2023 18:03:56 +0200 Subject: [PATCH 7/8] dependencies got updated --- package-lock.json | 783 +++++++++++++++++++++++++++------------------- package.json | 16 +- 2 files changed, 467 insertions(+), 332 deletions(-) diff --git a/package-lock.json b/package-lock.json index 07c5cb5..b3b6881 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,31 +1,31 @@ { "name": "iobroker.wireguard", - "version": "1.4.1", + "version": "1.5.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "iobroker.wireguard", - "version": "1.4.1", + "version": "1.5.0", "license": "MIT", "dependencies": { - "@iobroker/adapter-core": "^2.6.8", + "@iobroker/adapter-core": "^3.0.3", "@iobroker/plugin-sentry": "^1.2.1", "ssh2": "^1.14.0" }, "devDependencies": { - "@alcalzone/release-script": "^3.5.9", - "@babel/cli": "^7.22.5", - "@babel/core": "^7.22.5", + "@alcalzone/release-script": "^3.6.0", + "@babel/cli": "^7.22.10", + "@babel/core": "^7.22.10", "@iobroker/adapter-dev": "^1.2.0", "@iobroker/testing": "^4.1.0", "@material-ui/core": "^4.12.4", - "@snyk/protect": "^1.1185.0", - "@types/gulp": "^4.0.11", + "@snyk/protect": "^1.1200.0", + "@types/gulp": "^4.0.13", "chai": "^4.3.7", "chai-as-promised": "^7.1.1", - "eslint": "^8.43.0", - "eslint-plugin-react": "^7.32.2", + "eslint": "^8.46.0", + "eslint-plugin-react": "^7.33.1", "mocha": "^10.2.0", "parcel-bundler": "^1.5.1", "proxyquire": "^2.1.3", @@ -33,6 +33,15 @@ "sinon-chai": "^3.7.0" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@alcalzone/pak": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@alcalzone/pak/-/pak-0.8.1.tgz", @@ -45,23 +54,23 @@ } }, "node_modules/@alcalzone/release-script": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script/-/release-script-3.5.9.tgz", - "integrity": "sha512-2qBUyh+wd/7KToZGXrJDp8v1nos1jm+xsDiSvI2jv5Co+105N415DCJNtgOvR6s2+/G2lbIZ08oYopl+evHgkw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script/-/release-script-3.6.0.tgz", + "integrity": "sha512-i4Z6QAt5YGm6iM9EYHFCu8MbQ3wwhD2tNp14NxEe6dQnv86BNvikhxfgU4pOkJXW0El/7WgOkFeC9E4fFDBXug==", "dev": true, "dependencies": { "@alcalzone/release-script-core": "3.5.9", "@alcalzone/release-script-plugin-changelog": "3.5.9", "@alcalzone/release-script-plugin-exec": "3.5.9", - "@alcalzone/release-script-plugin-git": "3.5.9", - "@alcalzone/release-script-plugin-package": "3.5.9", - "@alcalzone/release-script-plugin-version": "3.5.9", + "@alcalzone/release-script-plugin-git": "3.6.0", + "@alcalzone/release-script-plugin-package": "3.6.0", + "@alcalzone/release-script-plugin-version": "3.6.0", "alcalzone-shared": "^4.0.1", "axios": "^0.27.1", "enquirer": "^2.3.6", "fs-extra": "^10.1.0", "picocolors": "1.0.0", - "semver": "^7.3.7", + "semver": "^7.5.2", "source-map-support": "^0.5.21", "yargs": "^17.4.1" }, @@ -112,9 +121,9 @@ } }, "node_modules/@alcalzone/release-script-plugin-git": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-git/-/release-script-plugin-git-3.5.9.tgz", - "integrity": "sha512-LT8YSevyLqZFI4rx4ET1qRnqTNnU5rVmQvGFCnC+d375zU5/U2cu19s/WVLChMHkvmUbAwBld+xhqqos2hQrKw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-git/-/release-script-plugin-git-3.6.0.tgz", + "integrity": "sha512-dtGh+GWj6a9w4s/GupRxe28EnluvtXvmM60IbEI6diqXDilclE1baZsBsoLyIgA2mPxt+BJpHEe3bk/ysanbug==", "dev": true, "dependencies": { "@alcalzone/release-script-core": "3.5.9", @@ -125,31 +134,31 @@ } }, "node_modules/@alcalzone/release-script-plugin-package": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-package/-/release-script-plugin-package-3.5.9.tgz", - "integrity": "sha512-jYmWzm9Dvnnc6RWTrZApQbeXzaFYSrHqkEHViAtx5NvBztfH3ANwVl6jS4UEaMm2NbIIq6toWGznVvNtnVzEjg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-package/-/release-script-plugin-package-3.6.0.tgz", + "integrity": "sha512-eISimXzdlRPMjuUoErwI78BbUO2ijU8ac9lEqzM+piYuuCbYmgr7QTH+r2omPQZiXxmRqUqiZ2/+3XSarAIUlg==", "dev": true, "dependencies": { "@alcalzone/pak": "^0.8.1", "@alcalzone/release-script-core": "3.5.9", "alcalzone-shared": "^4.0.1", "fs-extra": "^10.1.0", - "semver": "^7.3.7" + "semver": "^7.5.2" }, "engines": { "node": ">=12.20" } }, "node_modules/@alcalzone/release-script-plugin-version": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-version/-/release-script-plugin-version-3.5.9.tgz", - "integrity": "sha512-CYN49aXx4QSFRWQN11wCC13SK1ZygILlohYlUFkRiA0g6u2G7z1rjW8QZSLXrR6C6gxzR4zL12VJ/xFZqYeuZA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-version/-/release-script-plugin-version-3.6.0.tgz", + "integrity": "sha512-8bVigIbo4oTaA1bl8EpRN6QI2S2mR+G+zFEVj+3dlP5RtgB2JSNUtb91aEnijgaqrvDmy1WwuQP4Z9L7jmL0Pg==", "dev": true, "dependencies": { "@alcalzone/release-script-core": "3.5.9", "alcalzone-shared": "^4.0.1", "fs-extra": "^10.1.0", - "semver": "^7.3.7", + "semver": "^7.5.2", "tiny-glob": "^0.2.9" }, "engines": { @@ -194,9 +203,9 @@ } }, "node_modules/@babel/cli": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.22.5.tgz", - "integrity": "sha512-N5d7MjzwsQ2wppwjhrsicVDhJSqF9labEP/swYiHhio4Ca2XjEehpgPmerjnLQl7BPE59BLud0PTWGYwqFl/cQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.22.10.tgz", + "integrity": "sha512-rM9ZMmaII630zGvtMtQ3P4GyHs28CHLYE9apLG7L8TgaSqcfoIGrlLSLsh4Q8kDTdZQQEXZm1M0nQtOvU/2heg==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", @@ -232,47 +241,119 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz", + "integrity": "sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.22.10", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/compat-data": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", - "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", - "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.10.tgz", + "integrity": "sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.5", - "@babel/parser": "^7.22.5", + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", + "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.10", + "@babel/parser": "^7.22.10", "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5", + "@babel/traverse": "^7.22.10", + "@babel/types": "^7.22.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.2", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -283,21 +364,21 @@ } }, "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", + "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5", + "@babel/types": "^7.22.10", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -331,22 +412,19 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", - "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", + "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.5", + "@babel/compat-data": "^7.22.9", "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.3", + "browserslist": "^4.21.9", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { @@ -359,9 +437,9 @@ } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -516,22 +594,22 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-module-imports": "^7.22.5", "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { @@ -615,9 +693,9 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", - "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { "@babel/types": "^7.22.5" @@ -669,27 +747,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", - "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.10.tgz", + "integrity": "sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==", "dev": true, "dependencies": { "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.22.10", + "@babel/types": "^7.22.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz", + "integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -768,9 +846,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.10.tgz", + "integrity": "sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -2063,19 +2141,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.10.tgz", + "integrity": "sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.10", + "@babel/types": "^7.22.10", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2084,9 +2162,9 @@ } }, "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.10.tgz", + "integrity": "sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.22.5", @@ -2151,23 +2229,23 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz", + "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -2198,9 +2276,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", - "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz", + "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2479,11 +2557,11 @@ "dev": true }, "node_modules/@iobroker/adapter-core": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-2.6.8.tgz", - "integrity": "sha512-xrqtH5RYZ6BvEcDyfuPkajd9el4R6p0VLRYKlnfMafAbxybIN+zfeHvjGI4l8OAHkyP2tcv6boX2Vu0KnMFOHw==", - "dependencies": { - "@types/iobroker": "^4.0.5" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-3.0.3.tgz", + "integrity": "sha512-SZmL69BtUXitnTbidNjlljQKB6CbkBLK9+Tqo/NMsOqHb1RmhPCNKhO4F5o8jc0dW0J6d4VArXryUkL7Ru0WpA==", + "peerDependencies": { + "@iobroker/types": "^5.0.11" } }, "node_modules/@iobroker/adapter-dev": { @@ -2630,6 +2708,15 @@ "url": "https://opencollective.com/sinon" } }, + "node_modules/@iobroker/types": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-5.0.11.tgz", + "integrity": "sha512-H96EQbum1mUVxO8gklWoW+G8R3sJLo2OOrGQHsjPrtKvmYU+UCLOjOMh9TjsYMvwGhPz86Bp8xlZSp5WifmbUA==", + "peer": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -3482,9 +3569,9 @@ "dev": true }, "node_modules/@snyk/protect": { - "version": "1.1185.0", - "resolved": "https://registry.npmjs.org/@snyk/protect/-/protect-1.1185.0.tgz", - "integrity": "sha512-O/CkrH1J4PfLDsxcK9kChZJcyDw3LX5aNDVFl3wlVsmv6GO9JKd8tXTfkAKufL126msPuvuPsga0LlUHqGeFow==", + "version": "1.1200.0", + "resolved": "https://registry.npmjs.org/@snyk/protect/-/protect-1.1200.0.tgz", + "integrity": "sha512-YlCTFVwyfxQlqEXyHtUPHsmhONvR0rLlVHmykzNhd5ggX97gUryLNpwFIhWziQIyCwnOVXjJxDy1Xc9bNP4Nqw==", "dev": true, "bin": { "snyk-protect": "bin/snyk-protect" @@ -3529,9 +3616,9 @@ } }, "node_modules/@types/gulp": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.11.tgz", - "integrity": "sha512-jy0nfcsjiGqO1prNsYMK/bHkTblIBgG04sL2nxPpnP9MyNicHp1SUblomjOla6JoW1qkR67HjFHqIibpPoShNQ==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.13.tgz", + "integrity": "sha512-Ms20Q2tZ3MpThZGn4Ag6e7ifz/oQJFxsuiopqz5oHmhE6q2ohnELgafi5K/pKX/4ntlpidS61v/TXAguYsVcaA==", "dev": true, "dependencies": { "@types/undertaker": ">=1.2.6", @@ -3539,14 +3626,6 @@ "chokidar": "^3.3.1" } }, - "node_modules/@types/iobroker": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/iobroker/-/iobroker-4.0.5.tgz", - "integrity": "sha512-D1tJwuDQEQQQ/cZVFjFjFUhUuMxJbfrz5U2UooiZwhgs69D/t8IowMvBI6Lk4ZR8HnCSxYwWHVRKyQnEMNgJPA==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/linkify-it": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", @@ -3584,7 +3663,8 @@ "node_modules/@types/node": { "version": "17.0.17", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.17.tgz", - "integrity": "sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw==" + "integrity": "sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw==", + "dev": true }, "node_modules/@types/prop-types": { "version": "15.7.4", @@ -6787,27 +6867,27 @@ } }, "node_modules/eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", - "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz", + "integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.43.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.1", + "@eslint/js": "^8.46.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.2", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -6817,7 +6897,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -6827,9 +6906,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -6843,9 +6921,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "version": "7.33.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.1.tgz", + "integrity": "sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==", "dev": true, "dependencies": { "array-includes": "^3.1.6", @@ -6861,7 +6939,7 @@ "object.values": "^1.1.6", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", + "semver": "^6.3.1", "string.prototype.matchall": "^4.0.8" }, "engines": { @@ -6901,18 +6979,18 @@ } }, "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -6926,9 +7004,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -6965,12 +7043,12 @@ } }, "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, @@ -10760,17 +10838,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -15381,6 +15459,12 @@ } }, "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, "@alcalzone/pak": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@alcalzone/pak/-/pak-0.8.1.tgz", @@ -15393,23 +15477,23 @@ } }, "@alcalzone/release-script": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script/-/release-script-3.5.9.tgz", - "integrity": "sha512-2qBUyh+wd/7KToZGXrJDp8v1nos1jm+xsDiSvI2jv5Co+105N415DCJNtgOvR6s2+/G2lbIZ08oYopl+evHgkw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script/-/release-script-3.6.0.tgz", + "integrity": "sha512-i4Z6QAt5YGm6iM9EYHFCu8MbQ3wwhD2tNp14NxEe6dQnv86BNvikhxfgU4pOkJXW0El/7WgOkFeC9E4fFDBXug==", "dev": true, "requires": { "@alcalzone/release-script-core": "3.5.9", "@alcalzone/release-script-plugin-changelog": "3.5.9", "@alcalzone/release-script-plugin-exec": "3.5.9", - "@alcalzone/release-script-plugin-git": "3.5.9", - "@alcalzone/release-script-plugin-package": "3.5.9", - "@alcalzone/release-script-plugin-version": "3.5.9", + "@alcalzone/release-script-plugin-git": "3.6.0", + "@alcalzone/release-script-plugin-package": "3.6.0", + "@alcalzone/release-script-plugin-version": "3.6.0", "alcalzone-shared": "^4.0.1", "axios": "^0.27.1", "enquirer": "^2.3.6", "fs-extra": "^10.1.0", "picocolors": "1.0.0", - "semver": "^7.3.7", + "semver": "^7.5.2", "source-map-support": "^0.5.21", "yargs": "^17.4.1" }, @@ -15468,9 +15552,9 @@ } }, "@alcalzone/release-script-plugin-git": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-git/-/release-script-plugin-git-3.5.9.tgz", - "integrity": "sha512-LT8YSevyLqZFI4rx4ET1qRnqTNnU5rVmQvGFCnC+d375zU5/U2cu19s/WVLChMHkvmUbAwBld+xhqqos2hQrKw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-git/-/release-script-plugin-git-3.6.0.tgz", + "integrity": "sha512-dtGh+GWj6a9w4s/GupRxe28EnluvtXvmM60IbEI6diqXDilclE1baZsBsoLyIgA2mPxt+BJpHEe3bk/ysanbug==", "dev": true, "requires": { "@alcalzone/release-script-core": "3.5.9", @@ -15478,28 +15562,28 @@ } }, "@alcalzone/release-script-plugin-package": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-package/-/release-script-plugin-package-3.5.9.tgz", - "integrity": "sha512-jYmWzm9Dvnnc6RWTrZApQbeXzaFYSrHqkEHViAtx5NvBztfH3ANwVl6jS4UEaMm2NbIIq6toWGznVvNtnVzEjg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-package/-/release-script-plugin-package-3.6.0.tgz", + "integrity": "sha512-eISimXzdlRPMjuUoErwI78BbUO2ijU8ac9lEqzM+piYuuCbYmgr7QTH+r2omPQZiXxmRqUqiZ2/+3XSarAIUlg==", "dev": true, "requires": { "@alcalzone/pak": "^0.8.1", "@alcalzone/release-script-core": "3.5.9", "alcalzone-shared": "^4.0.1", "fs-extra": "^10.1.0", - "semver": "^7.3.7" + "semver": "^7.5.2" } }, "@alcalzone/release-script-plugin-version": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-version/-/release-script-plugin-version-3.5.9.tgz", - "integrity": "sha512-CYN49aXx4QSFRWQN11wCC13SK1ZygILlohYlUFkRiA0g6u2G7z1rjW8QZSLXrR6C6gxzR4zL12VJ/xFZqYeuZA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-version/-/release-script-plugin-version-3.6.0.tgz", + "integrity": "sha512-8bVigIbo4oTaA1bl8EpRN6QI2S2mR+G+zFEVj+3dlP5RtgB2JSNUtb91aEnijgaqrvDmy1WwuQP4Z9L7jmL0Pg==", "dev": true, "requires": { "@alcalzone/release-script-core": "3.5.9", "alcalzone-shared": "^4.0.1", "fs-extra": "^10.1.0", - "semver": "^7.3.7", + "semver": "^7.5.2", "tiny-glob": "^0.2.9" } }, @@ -15514,9 +15598,9 @@ } }, "@babel/cli": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.22.5.tgz", - "integrity": "sha512-N5d7MjzwsQ2wppwjhrsicVDhJSqF9labEP/swYiHhio4Ca2XjEehpgPmerjnLQl7BPE59BLud0PTWGYwqFl/cQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.22.10.tgz", + "integrity": "sha512-rM9ZMmaII630zGvtMtQ3P4GyHs28CHLYE9apLG7L8TgaSqcfoIGrlLSLsh4Q8kDTdZQQEXZm1M0nQtOvU/2heg==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.17", @@ -15539,58 +15623,117 @@ } }, "@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz", + "integrity": "sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==", "dev": true, "requires": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.22.10", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "@babel/compat-data": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", - "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", "dev": true }, "@babel/core": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", - "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.10.tgz", + "integrity": "sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==", "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.5", - "@babel/parser": "^7.22.5", + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", + "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.10", + "@babel/parser": "^7.22.10", "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5", + "@babel/traverse": "^7.22.10", + "@babel/types": "^7.22.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.2", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", + "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", "dev": true, "requires": { - "@babel/types": "^7.22.5", + "@babel/types": "^7.22.10", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -15615,16 +15758,16 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", - "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", + "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.22.5", + "@babel/compat-data": "^7.22.9", "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.3", + "browserslist": "^4.21.9", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "dependencies": { "lru-cache": { @@ -15637,9 +15780,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, "yallist": { @@ -15760,19 +15903,16 @@ } }, "@babel/helper-module-transforms": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-module-imports": "^7.22.5", "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" } }, "@babel/helper-optimise-call-expression": { @@ -15835,9 +15975,9 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", - "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "requires": { "@babel/types": "^7.22.5" @@ -15874,24 +16014,24 @@ } }, "@babel/helpers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", - "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.10.tgz", + "integrity": "sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==", "dev": true, "requires": { "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.22.10", + "@babel/types": "^7.22.10" } }, "@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz", + "integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "dependencies": { @@ -15954,9 +16094,9 @@ } }, "@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.10.tgz", + "integrity": "sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -16820,27 +16960,27 @@ } }, "@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.10.tgz", + "integrity": "sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig==", "dev": true, "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.10", + "@babel/types": "^7.22.10", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.10.tgz", + "integrity": "sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==", "dev": true, "requires": { "@babel/helper-string-parser": "^7.22.5", @@ -16878,20 +17018,20 @@ } }, "@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", "dev": true }, "@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz", + "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -16912,9 +17052,9 @@ } }, "@eslint/js": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", - "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz", + "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==", "dev": true }, "@esm2cjs/execa": { @@ -17103,12 +17243,10 @@ "dev": true }, "@iobroker/adapter-core": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-2.6.8.tgz", - "integrity": "sha512-xrqtH5RYZ6BvEcDyfuPkajd9el4R6p0VLRYKlnfMafAbxybIN+zfeHvjGI4l8OAHkyP2tcv6boX2Vu0KnMFOHw==", - "requires": { - "@types/iobroker": "^4.0.5" - } + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-3.0.3.tgz", + "integrity": "sha512-SZmL69BtUXitnTbidNjlljQKB6CbkBLK9+Tqo/NMsOqHb1RmhPCNKhO4F5o8jc0dW0J6d4VArXryUkL7Ru0WpA==", + "requires": {} }, "@iobroker/adapter-dev": { "version": "1.2.0", @@ -17243,6 +17381,12 @@ } } }, + "@iobroker/types": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-5.0.11.tgz", + "integrity": "sha512-H96EQbum1mUVxO8gklWoW+G8R3sJLo2OOrGQHsjPrtKvmYU+UCLOjOMh9TjsYMvwGhPz86Bp8xlZSp5WifmbUA==", + "peer": true + }, "@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -17926,9 +18070,9 @@ "dev": true }, "@snyk/protect": { - "version": "1.1185.0", - "resolved": "https://registry.npmjs.org/@snyk/protect/-/protect-1.1185.0.tgz", - "integrity": "sha512-O/CkrH1J4PfLDsxcK9kChZJcyDw3LX5aNDVFl3wlVsmv6GO9JKd8tXTfkAKufL126msPuvuPsga0LlUHqGeFow==", + "version": "1.1200.0", + "resolved": "https://registry.npmjs.org/@snyk/protect/-/protect-1.1200.0.tgz", + "integrity": "sha512-YlCTFVwyfxQlqEXyHtUPHsmhONvR0rLlVHmykzNhd5ggX97gUryLNpwFIhWziQIyCwnOVXjJxDy1Xc9bNP4Nqw==", "dev": true }, "@tootallnate/once": { @@ -17964,9 +18108,9 @@ } }, "@types/gulp": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.11.tgz", - "integrity": "sha512-jy0nfcsjiGqO1prNsYMK/bHkTblIBgG04sL2nxPpnP9MyNicHp1SUblomjOla6JoW1qkR67HjFHqIibpPoShNQ==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.13.tgz", + "integrity": "sha512-Ms20Q2tZ3MpThZGn4Ag6e7ifz/oQJFxsuiopqz5oHmhE6q2ohnELgafi5K/pKX/4ntlpidS61v/TXAguYsVcaA==", "dev": true, "requires": { "@types/undertaker": ">=1.2.6", @@ -17974,14 +18118,6 @@ "chokidar": "^3.3.1" } }, - "@types/iobroker": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/iobroker/-/iobroker-4.0.5.tgz", - "integrity": "sha512-D1tJwuDQEQQQ/cZVFjFjFUhUuMxJbfrz5U2UooiZwhgs69D/t8IowMvBI6Lk4ZR8HnCSxYwWHVRKyQnEMNgJPA==", - "requires": { - "@types/node": "*" - } - }, "@types/linkify-it": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", @@ -18019,7 +18155,8 @@ "@types/node": { "version": "17.0.17", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.17.tgz", - "integrity": "sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw==" + "integrity": "sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw==", + "dev": true }, "@types/prop-types": { "version": "15.7.4", @@ -20508,27 +20645,27 @@ } }, "eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", - "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz", + "integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.43.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.1", + "@eslint/js": "^8.46.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.2", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -20538,7 +20675,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -20548,9 +20684,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "dependencies": { @@ -20575,9 +20710,9 @@ } }, "eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "version": "7.33.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.1.tgz", + "integrity": "sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==", "dev": true, "requires": { "array-includes": "^3.1.6", @@ -20593,7 +20728,7 @@ "object.values": "^1.1.6", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", + "semver": "^6.3.1", "string.prototype.matchall": "^4.0.8" }, "dependencies": { @@ -20618,17 +20753,17 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -20636,18 +20771,18 @@ } }, "eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", "dev": true }, "espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" } @@ -23626,17 +23761,17 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, "ora": { diff --git a/package.json b/package.json index dab2b92..a014ac6 100644 --- a/package.json +++ b/package.json @@ -17,23 +17,23 @@ "url": "https://github.com/Grizzelbee/ioBroker.wireguard.git" }, "dependencies": { - "@iobroker/adapter-core": "^2.6.8", + "@iobroker/adapter-core": "^3.0.3", "@iobroker/plugin-sentry": "^1.2.1", "ssh2": "^1.14.0" }, "devDependencies": { - "@alcalzone/release-script": "^3.5.9", - "@babel/cli": "^7.22.5", - "@babel/core": "^7.22.5", + "@alcalzone/release-script": "^3.6.0", + "@babel/cli": "^7.22.10", + "@babel/core": "^7.22.10", "@iobroker/adapter-dev": "^1.2.0", "@iobroker/testing": "^4.1.0", "@material-ui/core": "^4.12.4", - "@snyk/protect": "^1.1185.0", - "@types/gulp": "^4.0.11", + "@snyk/protect": "^1.1200.0", + "@types/gulp": "^4.0.13", "chai": "^4.3.7", "chai-as-promised": "^7.1.1", - "eslint": "^8.43.0", - "eslint-plugin-react": "^7.32.2", + "eslint": "^8.46.0", + "eslint-plugin-react": "^7.33.1", "mocha": "^10.2.0", "parcel-bundler": "^1.5.1", "proxyquire": "^2.1.3", From 77fdaefa833403018c3aefc189771bea56955586 Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Tue, 8 Aug 2023 18:12:20 +0200 Subject: [PATCH 8/8] Version 1.5.1 --- README.md | 9 +++++---- io-package.json | 15 ++++++++++++++- package.json | 2 +- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 2607d66..5de56eb 100644 --- a/README.md +++ b/README.md @@ -107,16 +107,17 @@ Basically there are three ways to execute the command: ### **WORK IN PROGRESS** -### 1.5.1 (2023-06-27) -* (grizzelbee) Fix: [#65](https://github.com/Grizzelbee/ioBroker.wireguard/issues/65) Fixed - No names in object tree - +### 1.5.1 (2023-08-08) +* (grizzelbee) Fix: [#65](https://github.com/Grizzelbee/ioBroker.wireguard/issues/65) No names in object tree +* (grizzelbee) Fix: [#64](https://github.com/Grizzelbee/ioBroker.wireguard/issues/64) Online state of interface isn't set correctly if more than one server is queried +* (grizzelbee) Upd: Dependencies got updated ### 1.5.0 (2023-06-27) * (grizzelbee) Deprecated: The current peer name/description will be dropped in one of the next versions. So please move over to Username/Device config. * (grizzelbee) New: Splitted Peer names in config in user and device names; So that you are able to group devices by user * (grizzelbee) New: Some new data fields: connectedPeers, connectedPeersCount, connectedUsers, connectedUsersCount and connection states per user * (grizzelbee) Fix: [#61](https://github.com/Grizzelbee/ioBroker.wireguard/issues/61) Fixed continuous recreation of objects -* (grizzelbee) Upd: Dependencies got updates +* (grizzelbee) Upd: Dependencies got updated * (grizzelbee) Upd: Dropped support for NodeJS 12 * (grizzelbee) Upd: Added support for NodeJS 18 diff --git a/io-package.json b/io-package.json index fa385c9..bbe13fb 100644 --- a/io-package.json +++ b/io-package.json @@ -1,8 +1,21 @@ { "common": { "name": "wireguard", - "version": "1.5.0", + "version": "1.5.1", "news": { + "1.5.1": { + "en": "Fixed: No names in object tree\nFixed: Online state of interface isn't set correctly if more than one server is queried\nDependencies got updated", + "de": "Behoben: Keine Namen im Objektbaum\nBehoben: Der Online-Status der Schnittstelle wird nicht korrekt eingestellt, wenn mehr als ein Server abgefragt wird\nAbhängigkeiten wurden aktualisiert", + "ru": "Исправлено: нет имен в дереве объектов. \n Исправлено: онлайн-состояние интерфейса устанавливается неправильно, если запрашивается более одного сервера. \n Зависимости были обновлены.", + "pt": "Corrigido: Sem nomes na árvore de objetos\nCorrigido: O estado online da interface não é definido corretamente se mais de um servidor for consultado\nAs dependências foram atualizadas", + "nl": "Opgelost: geen namen in de objectboom \n Opgelost: de online status van de interface is niet correct ingesteld als meer dan één server wordt opgevraagd \n Afhankelijkheden zijn bijgewerkt", + "fr": "Corrigé : aucun nom dans l'arborescence d'objets\nCorrigé : l'état en ligne de l'interface n'est pas défini correctement si plusieurs serveurs sont interrogés\nLes dépendances ont été mises à jour", + "it": "Risolto: nessun nome nell'albero degli oggetti\n Risolto: lo stato online dell'interfaccia non è impostato correttamente se viene interrogato più di un server\n Le dipendenze sono state aggiornate", + "es": "Solucionado: No hay nombres en el árbol de objetos. \n Solucionado: el estado en línea de la interfaz no se configura correctamente si se consulta más de un servidor. \n Las dependencias se actualizaron.", + "pl": "Naprawiono: brak nazw w drzewie obiektów\nNaprawiono: stan online interfejsu nie jest ustawiony poprawnie, jeśli zapytano więcej niż jeden serwer\nZaktualizowano zależności", + "uk": "Виправлено: немає імен у дереві об’єктів\nВиправлено: онлайн-стан інтерфейсу встановлено неправильно, якщо запитується більше ніж один сервер\nЗалежності оновлено", + "zh-cn": "已修复:对象树中没有名称\n已修复:如果查询多个服务器,则无法正确设置接口的在线状态\n依赖项已更新" + }, "1.5.0": { "en": "New: Splitted Peer names in config in user and device names; So that you are able to group devices by user\nNew: Some new data fields: connectedPeers, connectedPeersCount, connectedUsers, connectedUsersCount and connection states per user\nFix: Fixed continuous recreation of objects", "de": "Neu: Aufgeteilte Peer-Namen in der Konfiguration in Benutzer- und Gerätenamen; Damit Sie Geräte nach Benutzer gruppieren können\nNeu: Einige neue Datenfelder: connectedPeers, connectedPeersCount, connectedUsers, connectedUsersCount und Verbindungsstatus pro Benutzer\nFix: Kontinuierliche Neuerstellung von Objekten behoben", diff --git a/package.json b/package.json index a014ac6..0713503 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "iobroker.wireguard", - "version": "1.5.0", + "version": "1.5.1", "description": "Connect to WireGuard hosts and grab connection information on peers", "author": { "name": "grizzelbee",