From d921315bdecb854f42ce8e0080f486f40fdac9bc Mon Sep 17 00:00:00 2001 From: foxriver76 Date: Mon, 29 Jul 2024 12:47:41 +0200 Subject: [PATCH] stability improvements --- .github/workflows/test-and-release.yml | 6 +- README.md | 1 + build/main.js | 12 +- build/main.js.map | 4 +- package-lock.json | 1347 +++++++++++------------- package.json | 8 +- src/main.ts | 12 +- 7 files changed, 659 insertions(+), 731 deletions(-) diff --git a/.github/workflows/test-and-release.yml b/.github/workflows/test-and-release.yml index f04695b..7856a82 100644 --- a/.github/workflows/test-and-release.yml +++ b/.github/workflows/test-and-release.yml @@ -23,7 +23,7 @@ jobs: steps: - uses: ioBroker/testing-action-check@v1 with: - node-version: '14.x' + node-version: '20.x' # Uncomment the following line if your adapter cannot be installed using 'npm ci' # install-command: 'npm install' type-checking: true @@ -36,7 +36,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - node-version: [14.x, 16.x, 18.x] + node-version: [18.x, 20.x, 22.x] os: [ubuntu-latest, windows-latest, macos-latest] steps: @@ -63,7 +63,7 @@ jobs: steps: - uses: ioBroker/testing-action-deploy@v1 with: - node-version: '14.x' + node-version: '20.x' # Uncomment the following line if your adapter cannot be installed using 'npm ci' # install-command: 'npm install' build: true diff --git a/README.md b/README.md index b97c2f6..398d1b2 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ or any associated subsidiaries, logos or trademarks. ### **WORK IN PROGRESS** * (foxriver76) fixed the pairing process due to changes in json config +* (foxriver76) stability improvements ### 0.5.3 (2023-02-27) * (foxriver76) update lib diff --git a/build/main.js b/build/main.js index 711c4cd..0a63e42 100644 --- a/build/main.js +++ b/build/main.js @@ -203,10 +203,18 @@ class PhilipsTvAndroid extends utils.Adapter { } } }; - await this.tv.launchApplication(googleAssistantCommand); + try { + await this.tv.launchApplication(googleAssistantCommand); + } catch (e) { + this.log.error(`Could not set HDMI input via Google assistant: ${this.errorToText(e)}`); + } break; case "hdmiInput": { - await this.tv.setSource(state.val); + try { + await this.tv.setSource(state.val); + } catch (e) { + this.log.error(`Could not set HDMI input: ${this.errorToText(e)}`); + } break; } default: diff --git a/build/main.js.map b/build/main.js.map index 195c2cc..07f154b 100644 --- a/build/main.js.map +++ b/build/main.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/main.ts"], - "sourcesContent": ["import * as utils from '@iobroker/adapter-core';\nimport { PhilipsTV, Authentication, PhilipsTVConfig, Input } from 'philips-tv-api';\n\ninterface ApplicationCache {\n version: number;\n applications: Application[];\n}\n\ninterface Application {\n /** Application name */\n label: string;\n intent: IntentObject;\n order: number;\n id: string;\n type: string;\n}\n\ninterface IntentObject {\n component: {\n packageName: string;\n className: string;\n };\n action: string;\n}\n\ninterface TVCache {\n version: number;\n id: string;\n listType: string;\n medium: string;\n operator: string;\n installCountry: string;\n Channel: Channel[];\n}\n\ninterface Channel {\n ccid: number;\n preset: string;\n name: string;\n onid: number;\n tsid: number;\n sid: number;\n serviceType: string;\n type: string;\n logoVersion: number;\n}\n\ninterface ActiveChannelObject {\n channel: Channel;\n channelList: ChannelList;\n}\n\ninterface ChannelList {\n id: string;\n version: string;\n}\n\nclass PhilipsTvAndroid extends utils.Adapter {\n private tv: PhilipsTV | undefined;\n private pollingInterval = 5_000;\n private authTimestamp: number | undefined;\n private pollTimer: NodeJS.Timer | undefined;\n private apps: ApplicationCache | undefined;\n private channels: TVCache | undefined;\n private ambilightSupported = false;\n private ambilightPlusHueSupported = false;\n private firstPoll = true;\n private setSourceSupported = false;\n\n public constructor(options: Partial = {}) {\n super({\n ...options,\n name: 'philips-tv'\n });\n this.on('ready', this.onReady.bind(this));\n this.on('stateChange', this.onStateChange.bind(this));\n this.on('message', this.onMessage.bind(this));\n this.on('unload', this.onUnload.bind(this));\n }\n\n /**\n * Is called when databases are connected and adapter received configuration.\n */\n private onReady(): void {\n if (!this.config.ip) {\n this.log.warn('Please specify ip before starting the adapter');\n return;\n }\n\n if (this.config.pollingInterval) {\n this.pollingInterval = this.config.pollingInterval;\n }\n\n // Ensure that v1 and v5 are only selected as Jointspace\n this.config.apiType = this.config.apiVersion === 6 ? this.config.apiType : 'Jointspace';\n\n this.log.info(`Starting with ip \"${this.config.ip}\" (API v${this.config.apiVersion} - ${this.config.apiType})`);\n\n this.subscribeStates('*');\n\n const auth: Authentication = {\n user: this.config.apiUser,\n pass: this.config.apiPass,\n sendImmediately: false\n };\n\n const tvConfig: PhilipsTVConfig = {\n apiVersion: this.config.apiVersion,\n wakeUntilAPIReadyCounter: 100,\n broadcastIP: this.config.broadcastIp,\n wakeOnLanRequests: 1,\n wakeOnLanTimeout: 1_000,\n apiType: this.config.apiType\n };\n\n try {\n this.tv = new PhilipsTV(this.config.ip, this.config.mac, auth, tvConfig, 'ioBroker');\n\n if (!(this.config.apiUser || this.config.apiPass) && this.tv.requiresPairing()) {\n this.log.warn('Please authenticate via the adapter configuration page');\n return;\n }\n\n this.pollTimer = setTimeout(() => {\n this.pollAPI();\n }, this.pollingInterval);\n } catch (e) {\n this.log.error(`Cannot create API client ${this.errorToText(e)}`);\n }\n }\n\n /**\n * Is called when adapter shuts down - callback has to be called under any circumstances!\n */\n private async onUnload(callback: () => void): Promise {\n try {\n if (this.pollTimer) {\n clearTimeout(this.pollTimer);\n }\n\n await this.setStateAsync('settings.power', false, true);\n await this.setStateAsync('info.connection', false, true);\n\n callback();\n } catch {\n callback();\n }\n }\n\n /**\n * Is called if a subscribed state changes\n */\n private async onStateChange(id: string, state: ioBroker.State | null | undefined): Promise {\n if (!state || state.ack) {\n return;\n }\n this.log.debug(`state change ${id}: ${state.val}`);\n\n const idParts = id.split('.');\n\n const command = idParts.pop() as string;\n const channel = idParts.pop() as string;\n\n if (!this.tv) {\n this.log.warn(`Ignoring state change of \"${id}\", because TV is not ready`);\n return;\n }\n\n if (channel === 'keys') {\n const keyName = command.charAt(0).toUpperCase() + command.substring(1);\n this.log.debug(`Sending key \"${keyName}\"`);\n try {\n await this.tv.sendKey(keyName);\n } catch (e) {\n this.log.error(`Could not send key \"${keyName}\": ${this.errorToText(e)}`);\n }\n return;\n }\n\n switch (command) {\n case 'power':\n try {\n if (this.config.mac && state.val) {\n this.log.debug(`WOL to ${this.config.mac}`);\n await this.tv.turnOn();\n } else {\n await this.tv.setPowerState(state.val as boolean);\n }\n } catch (e) {\n this.log.error(`Could not change power state: ${this.errorToText(e)}`);\n }\n break;\n case 'volume':\n try {\n await this.tv.setVolume(state.val as number);\n } catch (e) {\n this.log.error(`Could not change volume: ${this.errorToText(e)}`);\n }\n break;\n case 'muted':\n try {\n await this.tv.setMute(state.val as boolean);\n } catch (e) {\n this.log.error(`Could not change mute status: ${this.errorToText(e)}`);\n }\n break;\n case 'launchApp':\n const appName = state.val as string;\n\n if (!this.apps) {\n this.log.error(`No apps cached, cannot launch \"${appName}\"`);\n return;\n }\n\n const matchingApp = this.apps.applications.find(entry => entry.label === appName);\n\n if (matchingApp) {\n try {\n await this.tv.launchApplication(matchingApp as any);\n } catch (e) {\n this.log.error(`Could not launch application \"${appName}\": ${this.errorToText(e)}`);\n }\n } else {\n this.log.error(`Application \"${appName}\" not found`);\n }\n break;\n case 'launchTvChannel':\n const channelName = state.val as string;\n\n if (!this.channels) {\n this.log.error(`No channels cached, cannot launch \"${channelName}\"`);\n return;\n }\n\n const matchingChannel = this.channels.Channel.find(entry => entry.name === channelName);\n\n if (matchingChannel) {\n try {\n const requestedChannel: Partial = { channel: matchingChannel };\n\n const currentChannel = (await this.tv.getCurrentTVChannel()) as ActiveChannelObject;\n requestedChannel.channelList = currentChannel.channelList;\n\n await this.tv.launchTVChannel(requestedChannel as any);\n } catch (e) {\n this.log.error(`Could not launch TV channel \"${channelName}\": ${this.errorToText(e)}`);\n }\n } else {\n this.log.error(`Channel \"${channelName}\" not found`);\n }\n break;\n case 'ambilightPlusHueActive':\n try {\n await this.tv.setAmbilightPlusHueState(state.val as boolean);\n } catch (e) {\n this.log.error(`Could not change Ambilight + Hue state: ${this.errorToText(e)}`);\n }\n break;\n case 'ambilightActive':\n try {\n await this.tv.setAmbilightState(state.val as boolean);\n } catch (e) {\n this.log.error(`Could not change Ambilight state: ${this.errorToText(e)}`);\n }\n break;\n case 'currentAmbilightConfiguration':\n try {\n await this.tv.sendCustomAmbilightCmd(JSON.parse(state.val as string));\n await this.setForeignStateAsync(id, state.val, true);\n } catch (e) {\n this.log.error(`Could not set Ambilight configuration: ${this.errorToText(e)}`);\n }\n break;\n case 'hdmiInputGoogleAssistant':\n const googleAssistantCommand = {\n intent: {\n extras: { query: `HDMI ${state.val}` },\n action: 'Intent { act=android.intent.action.ASSIST cmp=com.google.android.katniss/com.google.android.apps.tvsearch.app.launch.trampoline.SearchActivityTrampoline flg=0x10200000 }',\n component: {\n packageName: 'com.google.android.katniss',\n className: 'com.google.android.apps.tvsearch.app.launch.trampoline.SearchActivityTrampoline'\n }\n }\n };\n\n await this.tv.launchApplication(googleAssistantCommand);\n break;\n case 'hdmiInput': {\n await this.tv.setSource(state.val as Input);\n break;\n }\n default:\n this.log.warn(`No command implemented for stateChange of \"${id}\"`);\n }\n }\n\n /**\n * Handle messages send to this instance\n * @param obj the message object\n */\n private async onMessage(obj: ioBroker.Message): Promise {\n if (\n !obj.message ||\n typeof obj.message !== 'object' ||\n !('data' in obj.message) ||\n typeof obj.message.data !== 'string'\n ) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Unknown message payload for \"${obj.command}\": ${JSON.stringify(obj.message)}` },\n obj.callback\n );\n return;\n }\n\n if (obj.command === 'pairing') {\n try {\n await this.startPairing(obj.message.data);\n } catch (e: any) {\n if (e.message === 'ETIMEDOUT') {\n this.sendTo(obj.from, obj.command, { error: 'Timeout' }, obj.callback);\n } else {\n this.sendTo(obj.from, obj.command, { error: e.message }, obj.callback);\n }\n }\n } else if (obj.command === 'submitPin') {\n if (!this.authTimestamp) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'You need to request pairing before you can enter the PIN code' },\n obj.callback\n );\n return;\n }\n try {\n await this.performAuthentication(this.authTimestamp, obj.message.data);\n } catch (e) {\n this.sendTo(obj.from, obj.command, { error: this.errorToText(e) }, obj.callback);\n }\n }\n\n this.sendTo(obj.from, obj.command, {}, obj.callback);\n }\n\n /**\n * Starts the pairing procedure\n *\n * @param ip address to pair with\n */\n private async startPairing(ip: string): Promise {\n this.log.info('Start pairing process');\n\n this.tv = new PhilipsTV(ip, undefined, undefined, undefined, 'ioBroker');\n const result = await this.tv.requestPair();\n if (typeof result.timestamp === 'number') {\n this.authTimestamp = result.timestamp;\n }\n }\n\n /**\n * Performs the authentication with given pin\n * @param timestamp timestamp of pairing request\n * @param pin pin shown on tv\n */\n private async performAuthentication(timestamp: number, pin: string): Promise {\n if (!this.tv) {\n this.log.warn('Pairing needs to be started before performing authentication');\n return;\n }\n const res = await this.tv.authorizePair(timestamp as any, pin);\n // res.apiUser and res.apiPass\n const instanceObj = await this.getForeignObjectAsync(`system.adapter.${this.namespace}`);\n if (instanceObj) {\n instanceObj.native.apiUser = res.apiUser;\n instanceObj.native.apiPass = res.apiPass;\n await this.setForeignObjectAsync(`system.adapter.${this.namespace}`, instanceObj);\n }\n }\n\n /**\n * Polls states from API and syncs them to ioBroker\n */\n private async pollAPI(): Promise {\n if (!this.tv) {\n return;\n }\n\n try {\n const volumeRes = await this.tv.getVolume();\n await this.setStateAsync('settings.volume', volumeRes.current, true);\n await this.setStateAsync('settings.muted', volumeRes.muted, true);\n\n const powerRes = await this.tv.getPowerState();\n await this.setStateAsync('settings.power', powerRes.powerstate === 'On', true);\n await this.setStateChangedAsync('info.connection', true, true);\n\n if (this.ambilightSupported) {\n const ambiState = await this.tv.getAmbilightState();\n await this.setStateAsync('settings.ambilightActive', ambiState, true);\n\n const ambiConfig = await this.tv.getCurrentAmbilightConfiguration();\n await this.setStateAsync('settings.currentAmbilightConfiguration', JSON.stringify(ambiConfig), true);\n }\n\n if (this.ambilightPlusHueSupported) {\n const ambiHueState = await this.tv.getAmbilightPlusHueState();\n await this.setStateAsync('settings.ambilightPlusHueActive', ambiHueState, true);\n }\n\n if (this.firstPoll) {\n // do this only once per run\n this.firstPoll = false;\n await this.cacheApps();\n await this.cacheChannels();\n\n // also extend the min/max correctly for volume once\n await this.extendObjectAsync('settings.volume', { common: { min: volumeRes.min, max: volumeRes.max } });\n await this.checkSetSourceSupport();\n await this.checkAmbilightPlusHueSupport();\n await this.checkAmbilightSupport();\n await this.syncSystemInfo();\n }\n } catch (e: any) {\n if (\n e.code === 'ECONNREFUSED' ||\n e.code === 'ETIMEDOUT' ||\n e.code === 'ESOCKETTIMEDOUT' ||\n e.code === 'EHOSTUNREACH'\n ) {\n this.log.debug('The TV seems to be turned off');\n } else {\n this.log.error(`Could not poll API: ${this.errorToText(e)}`);\n }\n await this.setStateChangedAsync('settings.power', false, true);\n await this.setStateChangedAsync('info.connection', false, true);\n }\n\n this.pollTimer = setTimeout(() => {\n this.pollAPI();\n }, this.pollingInterval);\n }\n\n /**\n * Cache apps and ensure object has the cached information\n */\n private async cacheApps(): Promise {\n try {\n this.apps = (await this.tv!.getApplications()) as ApplicationCache;\n const appLabels = this.apps.applications.map(entry => entry.label);\n await this.extendObjectAsync('settings.launchApp', {\n type: 'state',\n common: {\n role: 'text',\n name: 'Launch application',\n type: 'string',\n read: false,\n write: true,\n states: appLabels\n },\n native: {}\n });\n\n await this.extendObjectAsync('settings.hdmiInputGoogleAssistant', {\n type: 'state',\n common: {\n role: 'value',\n name: 'Switch HDMI input',\n type: 'number',\n read: false,\n write: true\n },\n native: {}\n });\n } catch (e) {\n this.log.debug(`No app launch support: ${this.errorToText(e)}`);\n }\n }\n\n /**\n * Cache channels and ensure object has the cached information\n */\n private async cacheChannels(): Promise {\n try {\n this.channels = (await this.tv!.getTVChannels()) as TVCache;\n const channelNames = this.channels.Channel.map(entry => entry.name);\n await this.extendObjectAsync('settings.launchTvChannel', {\n type: 'state',\n common: {\n role: 'text',\n name: 'Launch TV channel',\n type: 'string',\n read: false,\n write: true,\n states: channelNames\n },\n native: {}\n });\n } catch (e) {\n this.log.debug(`No channel launch support: ${this.errorToText(e)}`);\n }\n }\n\n /**\n * Checks if the TV supports ambilight, if so the state is created an flag is set\n */\n private async checkAmbilightSupport(): Promise {\n try {\n const ambiHueState = await this.tv!.getAmbilightState();\n\n await this.extendObjectAsync('settings.ambilightActive', {\n type: 'state',\n common: {\n role: 'switch',\n name: 'Ambilight activation status',\n type: 'boolean',\n read: true,\n write: true\n },\n native: {}\n });\n\n await this.extendObjectAsync('settings.currentAmbilightConfiguration', {\n type: 'state',\n common: {\n role: 'json',\n name: 'Send custom Ambilight command',\n type: 'string',\n read: false,\n write: true,\n def: '{\"styleName\":\"FOLLOW_VIDEO\",\"isExpert\":false,\"menuSetting\":\"GAME\"}'\n },\n native: {}\n });\n\n await this.setStateAsync('settings.ambilightActive', ambiHueState, true);\n this.ambilightSupported = true;\n } catch (e) {\n this.ambilightSupported = false;\n this.log.debug(`No Ambilight plus Hue support: ${this.errorToText(e)}`);\n }\n }\n\n /**\n * Checks if setSource is supported, creates states and sets flag\n */\n private async checkSetSourceSupport(): Promise {\n try {\n if (await this.tv!.supportsSetSource()) {\n this.setSourceSupported = true;\n await this.extendObjectAsync('settings.hdmiInput', {\n type: 'state',\n common: {\n role: 'text',\n name: 'Switch source',\n type: 'string',\n read: false,\n write: true,\n states: ['HDMI 1', 'HDMI 2', 'HDMI 3', 'HDMI 4']\n },\n native: {}\n });\n } else {\n this.setSourceSupported = false;\n }\n } catch (e) {\n this.log.warn(`No \"setSource\" support: ${this.errorToText(e)}`);\n this.setSourceSupported = false;\n }\n }\n\n /**\n * Checks if the TV supports ambilight plus Hue, if so the state is created an flag is set\n */\n private async checkAmbilightPlusHueSupport(): Promise {\n try {\n const ambiHueState = await this.tv!.getAmbilightPlusHueState();\n\n await this.extendObjectAsync('settings.ambilightPlusHueActive', {\n type: 'state',\n common: {\n role: 'switch',\n name: 'Ambilight + Hue activation status',\n type: 'boolean',\n read: true,\n write: true\n },\n native: {}\n });\n\n await this.setStateAsync('settings.ambilightPlusHueActive', ambiHueState, true);\n this.ambilightPlusHueSupported = true;\n } catch (e) {\n this.ambilightPlusHueSupported = false;\n this.log.debug(`No Ambilight plus Hue support: ${this.errorToText(e)}`);\n }\n }\n\n private async syncSystemInfo(): Promise {\n try {\n const res = await this.tv!.info();\n await this.extendForeignObjectAsync(this.namespace, {\n // @ts-expect-error we are allowed to create this as device\n type: 'device',\n common: {\n name: res.name\n },\n native: res\n });\n } catch (e) {\n this.log.error(`Could not synchronize system information: ${this.errorToText(e)}`);\n }\n }\n\n /**\n * Checks if a real error was thrown and returns message, else it stringifies\n *\n * @param error any kind of thrown error\n */\n private errorToText(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n } else {\n return JSON.stringify(error);\n }\n }\n}\n\nif (require.main !== module) {\n // Export the constructor in compact mode\n module.exports = (options: Partial | undefined) => new PhilipsTvAndroid(options);\n} else {\n // otherwise start the instance directly\n (() => new PhilipsTvAndroid())();\n}\n"], - "mappings": "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", + "sourcesContent": ["import * as utils from '@iobroker/adapter-core';\nimport { PhilipsTV, Authentication, PhilipsTVConfig, Input } from 'philips-tv-api';\n\ninterface ApplicationCache {\n version: number;\n applications: Application[];\n}\n\ninterface Application {\n /** Application name */\n label: string;\n intent: IntentObject;\n order: number;\n id: string;\n type: string;\n}\n\ninterface IntentObject {\n component: {\n packageName: string;\n className: string;\n };\n action: string;\n}\n\ninterface TVCache {\n version: number;\n id: string;\n listType: string;\n medium: string;\n operator: string;\n installCountry: string;\n Channel: Channel[];\n}\n\ninterface Channel {\n ccid: number;\n preset: string;\n name: string;\n onid: number;\n tsid: number;\n sid: number;\n serviceType: string;\n type: string;\n logoVersion: number;\n}\n\ninterface ActiveChannelObject {\n channel: Channel;\n channelList: ChannelList;\n}\n\ninterface ChannelList {\n id: string;\n version: string;\n}\n\nclass PhilipsTvAndroid extends utils.Adapter {\n private tv: PhilipsTV | undefined;\n private pollingInterval = 5_000;\n private authTimestamp: number | undefined;\n private pollTimer: NodeJS.Timer | undefined;\n private apps: ApplicationCache | undefined;\n private channels: TVCache | undefined;\n private ambilightSupported = false;\n private ambilightPlusHueSupported = false;\n private firstPoll = true;\n private setSourceSupported = false;\n\n public constructor(options: Partial = {}) {\n super({\n ...options,\n name: 'philips-tv'\n });\n this.on('ready', this.onReady.bind(this));\n this.on('stateChange', this.onStateChange.bind(this));\n this.on('message', this.onMessage.bind(this));\n this.on('unload', this.onUnload.bind(this));\n }\n\n /**\n * Is called when databases are connected and adapter received configuration.\n */\n private onReady(): void {\n if (!this.config.ip) {\n this.log.warn('Please specify ip before starting the adapter');\n return;\n }\n\n if (this.config.pollingInterval) {\n this.pollingInterval = this.config.pollingInterval;\n }\n\n // Ensure that v1 and v5 are only selected as Jointspace\n this.config.apiType = this.config.apiVersion === 6 ? this.config.apiType : 'Jointspace';\n\n this.log.info(`Starting with ip \"${this.config.ip}\" (API v${this.config.apiVersion} - ${this.config.apiType})`);\n\n this.subscribeStates('*');\n\n const auth: Authentication = {\n user: this.config.apiUser,\n pass: this.config.apiPass,\n sendImmediately: false\n };\n\n const tvConfig: PhilipsTVConfig = {\n apiVersion: this.config.apiVersion,\n wakeUntilAPIReadyCounter: 100,\n broadcastIP: this.config.broadcastIp,\n wakeOnLanRequests: 1,\n wakeOnLanTimeout: 1_000,\n apiType: this.config.apiType\n };\n\n try {\n this.tv = new PhilipsTV(this.config.ip, this.config.mac, auth, tvConfig, 'ioBroker');\n\n if (!(this.config.apiUser || this.config.apiPass) && this.tv.requiresPairing()) {\n this.log.warn('Please authenticate via the adapter configuration page');\n return;\n }\n\n this.pollTimer = setTimeout(() => {\n this.pollAPI();\n }, this.pollingInterval);\n } catch (e) {\n this.log.error(`Cannot create API client ${this.errorToText(e)}`);\n }\n }\n\n /**\n * Is called when adapter shuts down - callback has to be called under any circumstances!\n */\n private async onUnload(callback: () => void): Promise {\n try {\n if (this.pollTimer) {\n clearTimeout(this.pollTimer);\n }\n\n await this.setStateAsync('settings.power', false, true);\n await this.setStateAsync('info.connection', false, true);\n\n callback();\n } catch {\n callback();\n }\n }\n\n /**\n * Is called if a subscribed state changes\n */\n private async onStateChange(id: string, state: ioBroker.State | null | undefined): Promise {\n if (!state || state.ack) {\n return;\n }\n this.log.debug(`state change ${id}: ${state.val}`);\n\n const idParts = id.split('.');\n\n const command = idParts.pop() as string;\n const channel = idParts.pop() as string;\n\n if (!this.tv) {\n this.log.warn(`Ignoring state change of \"${id}\", because TV is not ready`);\n return;\n }\n\n if (channel === 'keys') {\n const keyName = command.charAt(0).toUpperCase() + command.substring(1);\n this.log.debug(`Sending key \"${keyName}\"`);\n try {\n await this.tv.sendKey(keyName);\n } catch (e) {\n this.log.error(`Could not send key \"${keyName}\": ${this.errorToText(e)}`);\n }\n return;\n }\n\n switch (command) {\n case 'power':\n try {\n if (this.config.mac && state.val) {\n this.log.debug(`WOL to ${this.config.mac}`);\n await this.tv.turnOn();\n } else {\n await this.tv.setPowerState(state.val as boolean);\n }\n } catch (e) {\n this.log.error(`Could not change power state: ${this.errorToText(e)}`);\n }\n break;\n case 'volume':\n try {\n await this.tv.setVolume(state.val as number);\n } catch (e) {\n this.log.error(`Could not change volume: ${this.errorToText(e)}`);\n }\n break;\n case 'muted':\n try {\n await this.tv.setMute(state.val as boolean);\n } catch (e) {\n this.log.error(`Could not change mute status: ${this.errorToText(e)}`);\n }\n break;\n case 'launchApp':\n const appName = state.val as string;\n\n if (!this.apps) {\n this.log.error(`No apps cached, cannot launch \"${appName}\"`);\n return;\n }\n\n const matchingApp = this.apps.applications.find(entry => entry.label === appName);\n\n if (matchingApp) {\n try {\n await this.tv.launchApplication(matchingApp as any);\n } catch (e) {\n this.log.error(`Could not launch application \"${appName}\": ${this.errorToText(e)}`);\n }\n } else {\n this.log.error(`Application \"${appName}\" not found`);\n }\n break;\n case 'launchTvChannel':\n const channelName = state.val as string;\n\n if (!this.channels) {\n this.log.error(`No channels cached, cannot launch \"${channelName}\"`);\n return;\n }\n\n const matchingChannel = this.channels.Channel.find(entry => entry.name === channelName);\n\n if (matchingChannel) {\n try {\n const requestedChannel: Partial = { channel: matchingChannel };\n\n const currentChannel = (await this.tv.getCurrentTVChannel()) as ActiveChannelObject;\n requestedChannel.channelList = currentChannel.channelList;\n\n await this.tv.launchTVChannel(requestedChannel as any);\n } catch (e) {\n this.log.error(`Could not launch TV channel \"${channelName}\": ${this.errorToText(e)}`);\n }\n } else {\n this.log.error(`Channel \"${channelName}\" not found`);\n }\n break;\n case 'ambilightPlusHueActive':\n try {\n await this.tv.setAmbilightPlusHueState(state.val as boolean);\n } catch (e) {\n this.log.error(`Could not change Ambilight + Hue state: ${this.errorToText(e)}`);\n }\n break;\n case 'ambilightActive':\n try {\n await this.tv.setAmbilightState(state.val as boolean);\n } catch (e) {\n this.log.error(`Could not change Ambilight state: ${this.errorToText(e)}`);\n }\n break;\n case 'currentAmbilightConfiguration':\n try {\n await this.tv.sendCustomAmbilightCmd(JSON.parse(state.val as string));\n await this.setForeignStateAsync(id, state.val, true);\n } catch (e) {\n this.log.error(`Could not set Ambilight configuration: ${this.errorToText(e)}`);\n }\n break;\n case 'hdmiInputGoogleAssistant':\n const googleAssistantCommand = {\n intent: {\n extras: { query: `HDMI ${state.val}` },\n action: 'Intent { act=android.intent.action.ASSIST cmp=com.google.android.katniss/com.google.android.apps.tvsearch.app.launch.trampoline.SearchActivityTrampoline flg=0x10200000 }',\n component: {\n packageName: 'com.google.android.katniss',\n className: 'com.google.android.apps.tvsearch.app.launch.trampoline.SearchActivityTrampoline'\n }\n }\n };\n\n try {\n await this.tv.launchApplication(googleAssistantCommand);\n } catch (e) {\n this.log.error(`Could not set HDMI input via Google assistant: ${this.errorToText(e)}`);\n }\n break;\n case 'hdmiInput': {\n try {\n await this.tv.setSource(state.val as Input);\n } catch (e) {\n this.log.error(`Could not set HDMI input: ${this.errorToText(e)}`);\n }\n break;\n }\n default:\n this.log.warn(`No command implemented for stateChange of \"${id}\"`);\n }\n }\n\n /**\n * Handle messages send to this instance\n * @param obj the message object\n */\n private async onMessage(obj: ioBroker.Message): Promise {\n if (\n !obj.message ||\n typeof obj.message !== 'object' ||\n !('data' in obj.message) ||\n typeof obj.message.data !== 'string'\n ) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Unknown message payload for \"${obj.command}\": ${JSON.stringify(obj.message)}` },\n obj.callback\n );\n return;\n }\n\n if (obj.command === 'pairing') {\n try {\n await this.startPairing(obj.message.data);\n } catch (e: any) {\n if (e.message === 'ETIMEDOUT') {\n this.sendTo(obj.from, obj.command, { error: 'Timeout' }, obj.callback);\n } else {\n this.sendTo(obj.from, obj.command, { error: e.message }, obj.callback);\n }\n }\n } else if (obj.command === 'submitPin') {\n if (!this.authTimestamp) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'You need to request pairing before you can enter the PIN code' },\n obj.callback\n );\n return;\n }\n try {\n await this.performAuthentication(this.authTimestamp, obj.message.data);\n } catch (e) {\n this.sendTo(obj.from, obj.command, { error: this.errorToText(e) }, obj.callback);\n }\n }\n\n this.sendTo(obj.from, obj.command, {}, obj.callback);\n }\n\n /**\n * Starts the pairing procedure\n *\n * @param ip address to pair with\n */\n private async startPairing(ip: string): Promise {\n this.log.info('Start pairing process');\n\n this.tv = new PhilipsTV(ip, undefined, undefined, undefined, 'ioBroker');\n const result = await this.tv.requestPair();\n if (typeof result.timestamp === 'number') {\n this.authTimestamp = result.timestamp;\n }\n }\n\n /**\n * Performs the authentication with given pin\n * @param timestamp timestamp of pairing request\n * @param pin pin shown on tv\n */\n private async performAuthentication(timestamp: number, pin: string): Promise {\n if (!this.tv) {\n this.log.warn('Pairing needs to be started before performing authentication');\n return;\n }\n const res = await this.tv.authorizePair(timestamp as any, pin);\n // res.apiUser and res.apiPass\n const instanceObj = await this.getForeignObjectAsync(`system.adapter.${this.namespace}`);\n if (instanceObj) {\n instanceObj.native.apiUser = res.apiUser;\n instanceObj.native.apiPass = res.apiPass;\n await this.setForeignObjectAsync(`system.adapter.${this.namespace}`, instanceObj);\n }\n }\n\n /**\n * Polls states from API and syncs them to ioBroker\n */\n private async pollAPI(): Promise {\n if (!this.tv) {\n return;\n }\n\n try {\n const volumeRes = await this.tv.getVolume();\n await this.setStateAsync('settings.volume', volumeRes.current, true);\n await this.setStateAsync('settings.muted', volumeRes.muted, true);\n\n const powerRes = await this.tv.getPowerState();\n await this.setStateAsync('settings.power', powerRes.powerstate === 'On', true);\n await this.setStateChangedAsync('info.connection', true, true);\n\n if (this.ambilightSupported) {\n const ambiState = await this.tv.getAmbilightState();\n await this.setStateAsync('settings.ambilightActive', ambiState, true);\n\n const ambiConfig = await this.tv.getCurrentAmbilightConfiguration();\n await this.setStateAsync('settings.currentAmbilightConfiguration', JSON.stringify(ambiConfig), true);\n }\n\n if (this.ambilightPlusHueSupported) {\n const ambiHueState = await this.tv.getAmbilightPlusHueState();\n await this.setStateAsync('settings.ambilightPlusHueActive', ambiHueState, true);\n }\n\n if (this.firstPoll) {\n // do this only once per run\n this.firstPoll = false;\n await this.cacheApps();\n await this.cacheChannels();\n\n // also extend the min/max correctly for volume once\n await this.extendObjectAsync('settings.volume', { common: { min: volumeRes.min, max: volumeRes.max } });\n await this.checkSetSourceSupport();\n await this.checkAmbilightPlusHueSupport();\n await this.checkAmbilightSupport();\n await this.syncSystemInfo();\n }\n } catch (e: any) {\n if (\n e.code === 'ECONNREFUSED' ||\n e.code === 'ETIMEDOUT' ||\n e.code === 'ESOCKETTIMEDOUT' ||\n e.code === 'EHOSTUNREACH'\n ) {\n this.log.debug('The TV seems to be turned off');\n } else {\n this.log.error(`Could not poll API: ${this.errorToText(e)}`);\n }\n await this.setStateChangedAsync('settings.power', false, true);\n await this.setStateChangedAsync('info.connection', false, true);\n }\n\n this.pollTimer = setTimeout(() => {\n this.pollAPI();\n }, this.pollingInterval);\n }\n\n /**\n * Cache apps and ensure object has the cached information\n */\n private async cacheApps(): Promise {\n try {\n this.apps = (await this.tv!.getApplications()) as ApplicationCache;\n const appLabels = this.apps.applications.map(entry => entry.label);\n await this.extendObjectAsync('settings.launchApp', {\n type: 'state',\n common: {\n role: 'text',\n name: 'Launch application',\n type: 'string',\n read: false,\n write: true,\n states: appLabels\n },\n native: {}\n });\n\n await this.extendObjectAsync('settings.hdmiInputGoogleAssistant', {\n type: 'state',\n common: {\n role: 'value',\n name: 'Switch HDMI input',\n type: 'number',\n read: false,\n write: true\n },\n native: {}\n });\n } catch (e) {\n this.log.debug(`No app launch support: ${this.errorToText(e)}`);\n }\n }\n\n /**\n * Cache channels and ensure object has the cached information\n */\n private async cacheChannels(): Promise {\n try {\n this.channels = (await this.tv!.getTVChannels()) as TVCache;\n const channelNames = this.channels.Channel.map(entry => entry.name);\n await this.extendObjectAsync('settings.launchTvChannel', {\n type: 'state',\n common: {\n role: 'text',\n name: 'Launch TV channel',\n type: 'string',\n read: false,\n write: true,\n states: channelNames\n },\n native: {}\n });\n } catch (e) {\n this.log.debug(`No channel launch support: ${this.errorToText(e)}`);\n }\n }\n\n /**\n * Checks if the TV supports ambilight, if so the state is created an flag is set\n */\n private async checkAmbilightSupport(): Promise {\n try {\n const ambiHueState = await this.tv!.getAmbilightState();\n\n await this.extendObjectAsync('settings.ambilightActive', {\n type: 'state',\n common: {\n role: 'switch',\n name: 'Ambilight activation status',\n type: 'boolean',\n read: true,\n write: true\n },\n native: {}\n });\n\n await this.extendObjectAsync('settings.currentAmbilightConfiguration', {\n type: 'state',\n common: {\n role: 'json',\n name: 'Send custom Ambilight command',\n type: 'string',\n read: false,\n write: true,\n def: '{\"styleName\":\"FOLLOW_VIDEO\",\"isExpert\":false,\"menuSetting\":\"GAME\"}'\n },\n native: {}\n });\n\n await this.setStateAsync('settings.ambilightActive', ambiHueState, true);\n this.ambilightSupported = true;\n } catch (e) {\n this.ambilightSupported = false;\n this.log.debug(`No Ambilight plus Hue support: ${this.errorToText(e)}`);\n }\n }\n\n /**\n * Checks if setSource is supported, creates states and sets flag\n */\n private async checkSetSourceSupport(): Promise {\n try {\n if (await this.tv!.supportsSetSource()) {\n this.setSourceSupported = true;\n await this.extendObjectAsync('settings.hdmiInput', {\n type: 'state',\n common: {\n role: 'text',\n name: 'Switch source',\n type: 'string',\n read: false,\n write: true,\n states: ['HDMI 1', 'HDMI 2', 'HDMI 3', 'HDMI 4']\n },\n native: {}\n });\n } else {\n this.setSourceSupported = false;\n }\n } catch (e) {\n this.log.warn(`No \"setSource\" support: ${this.errorToText(e)}`);\n this.setSourceSupported = false;\n }\n }\n\n /**\n * Checks if the TV supports ambilight plus Hue, if so the state is created an flag is set\n */\n private async checkAmbilightPlusHueSupport(): Promise {\n try {\n const ambiHueState = await this.tv!.getAmbilightPlusHueState();\n\n await this.extendObjectAsync('settings.ambilightPlusHueActive', {\n type: 'state',\n common: {\n role: 'switch',\n name: 'Ambilight + Hue activation status',\n type: 'boolean',\n read: true,\n write: true\n },\n native: {}\n });\n\n await this.setStateAsync('settings.ambilightPlusHueActive', ambiHueState, true);\n this.ambilightPlusHueSupported = true;\n } catch (e) {\n this.ambilightPlusHueSupported = false;\n this.log.debug(`No Ambilight plus Hue support: ${this.errorToText(e)}`);\n }\n }\n\n private async syncSystemInfo(): Promise {\n try {\n const res = await this.tv!.info();\n await this.extendForeignObjectAsync(this.namespace, {\n // @ts-expect-error we are allowed to create this as device\n type: 'device',\n common: {\n name: res.name\n },\n native: res\n });\n } catch (e) {\n this.log.error(`Could not synchronize system information: ${this.errorToText(e)}`);\n }\n }\n\n /**\n * Checks if a real error was thrown and returns message, else it stringifies\n *\n * @param error any kind of thrown error\n */\n private errorToText(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n } else {\n return JSON.stringify(error);\n }\n }\n}\n\nif (require.main !== module) {\n // Export the constructor in compact mode\n module.exports = (options: Partial | undefined) => new PhilipsTvAndroid(options);\n} else {\n // otherwise start the instance directly\n (() => new PhilipsTvAndroid())();\n}\n"], + "mappings": "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", "names": [] } diff --git a/package-lock.json b/package-lock.json index 646eb7d..704f8b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,14 +9,14 @@ "version": "0.5.3", "license": "MIT", "dependencies": { - "@iobroker/adapter-core": "^2.6.7", + "@iobroker/adapter-core": "^3.1.6", "philips-tv-api": "https://github.com/foxriver76/philipsandroidtv/tarball/d90e61de1ebf5cf07ab3b90c87d11afe02231025" }, "devDependencies": { - "@alcalzone/release-script": "^3.5.9", - "@alcalzone/release-script-plugin-iobroker": "^3.5.9", + "@alcalzone/release-script": "^3.8.0", + "@alcalzone/release-script-plugin-iobroker": "^3.7.2", "@iobroker/adapter-dev": "^1.2.0", - "@iobroker/testing": "^3.0.2", + "@iobroker/testing": "^4.1.3", "@types/chai": "^4.3.1", "@types/chai-as-promised": "^7.1.5", "@types/mocha": "^9.1.1", @@ -46,43 +46,70 @@ } }, "node_modules/@alcalzone/pak": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@alcalzone/pak/-/pak-0.8.1.tgz", - "integrity": "sha512-sPdxNxdXLH96kbyWLdIljVSIY2N6/qnPqkq5AlWvuizjGQUwHIUtWZHLss9XNDV/hY7YkgdIb9ILHbMTnRBxVQ==", + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@alcalzone/pak/-/pak-0.10.2.tgz", + "integrity": "sha512-v+kM7HlfIVNLDlGBcbZvrG3yVK3rPLH5kIoGRJbCcoHwpUqQbfEMzXAy1ZrfP+zbI5phHw2PhgrXZr3z6nh7Ow==", "dev": true, "dependencies": { - "axios": "^0.26.0", - "execa": "^5.0.0", - "fs-extra": "^10.0.1" + "axios": "^1.6.2", + "execa": "~5.0.1", + "fs-extra": "^10.1.0", + "semver": "^7.3.7", + "tiny-glob": "^0.2.9" } }, "node_modules/@alcalzone/pak/node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", "dev": true, "dependencies": { - "follow-redirects": "^1.14.8" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@alcalzone/pak/node_modules/execa": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.1.tgz", + "integrity": "sha512-4hFTjFbFzQa3aCLobpbPJR/U+VoL1wdV5ozOWjeet0AWDeYr9UFGM1eUFWHX+VtOWFq4p0xXUXfW1YxUaP4fpw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "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.8.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script/-/release-script-3.8.0.tgz", + "integrity": "sha512-9H3imn8o9n3Ekpkie9TMgPeJfgT6WmklCMtOZ1wuwvMw/obNA0Ao1ZZ8CJfHk1YNjiLGmWn0kQFEGTqz4DoD7w==", "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-core": "3.7.0", + "@alcalzone/release-script-plugin-changelog": "3.7.0", + "@alcalzone/release-script-plugin-exec": "3.7.0", + "@alcalzone/release-script-plugin-git": "3.8.0", + "@alcalzone/release-script-plugin-package": "3.7.3", + "@alcalzone/release-script-plugin-version": "3.7.0", "alcalzone-shared": "^4.0.1", - "axios": "^0.27.1", + "axios": "^1.6.2", "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" }, @@ -94,9 +121,9 @@ } }, "node_modules/@alcalzone/release-script-core": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-core/-/release-script-core-3.5.9.tgz", - "integrity": "sha512-rRxosfZMtpDcIm+sPTdwP5oVRBLX1WLYImrp0nUhqOPNN/UD5l9TxNVXDhGUsstXhaRXXBYS2BnOQwR308OfyA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-core/-/release-script-core-3.7.0.tgz", + "integrity": "sha512-4np4dBziwX/aNRhS/gpK8bwa0wpLe7oomzJ7YTUXf5bUtV/UTpN2a9tm5Bp7ElnisKj6N3AqHl4lVXRo4L9hYg==", "dev": true, "dependencies": { "execa": "^5.1.1" @@ -106,12 +133,12 @@ } }, "node_modules/@alcalzone/release-script-plugin-changelog": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-changelog/-/release-script-plugin-changelog-3.5.9.tgz", - "integrity": "sha512-KmOMbjd7ta/Wl2OWQUxMpNza6Sr5/sB7AfV7BC0uCl839StnoivSjqywDfNcgJq97fxMs7hnGT/uYaz7oTUm7A==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-changelog/-/release-script-plugin-changelog-3.7.0.tgz", + "integrity": "sha512-AlLOIjIPP42uBmvcdYkfijYDzolyY6JmfbTmdxQDBLyrgYXnuUr2GaKxbpeWSbvcAuUhNvHCAyI6LI90X3OTEg==", "dev": true, "dependencies": { - "@alcalzone/release-script-core": "3.5.9", + "@alcalzone/release-script-core": "3.7.0", "alcalzone-shared": "^4.0.1", "fs-extra": "^10.1.0" }, @@ -120,12 +147,12 @@ } }, "node_modules/@alcalzone/release-script-plugin-exec": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-exec/-/release-script-plugin-exec-3.5.9.tgz", - "integrity": "sha512-Y6OM+gEpfYYoDvHdzNUtgVZiBAgOzGWZk9yRPF5l8UWE3+tQAyMWavk2m08ExbEICfGV1lb8lRBzAdQaf7/0HA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-exec/-/release-script-plugin-exec-3.7.0.tgz", + "integrity": "sha512-ZhlKGhxa71mLyYB1/ojzik2RKcSAeIjuwKzlWRd6oUvKoZPe7eAjLYneXx5viQC6tvDJE4dvN1NlkFGWsSlZYA==", "dev": true, "dependencies": { - "@alcalzone/release-script-core": "3.5.9", + "@alcalzone/release-script-core": "3.7.0", "alcalzone-shared": "^4.0.1" }, "engines": { @@ -133,12 +160,12 @@ } }, "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.8.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-git/-/release-script-plugin-git-3.8.0.tgz", + "integrity": "sha512-rI9EqSmvMWaNZ5xxOUBZjD4WOv1Enl+/ZxhUoTROq+K/9RYYHQaAXilGWNvnz2DYr14Q+Yx/fs54GXgAVf0scg==", "dev": true, "dependencies": { - "@alcalzone/release-script-core": "3.5.9", + "@alcalzone/release-script-core": "3.7.0", "fs-extra": "^10.1.0" }, "engines": { @@ -146,53 +173,75 @@ } }, "node_modules/@alcalzone/release-script-plugin-iobroker": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-iobroker/-/release-script-plugin-iobroker-3.5.9.tgz", - "integrity": "sha512-0z0wU0HCLEe94JAtDPtarOc0AcqudefRlhA7RddZ6+FRwPOyAg8i37hcDKTo+C7rrk31TwgY2xiPIDjkfBKhyQ==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-iobroker/-/release-script-plugin-iobroker-3.7.2.tgz", + "integrity": "sha512-ezXFyxx2irq7my3BmlBUrzT+QHNsldR9MQYkXs7uyH6lXSkudmqq5EiDW9WckT0Cj9YqIUzoOJhhnZA9M+XTvQ==", "dev": true, "dependencies": { - "@alcalzone/release-script-core": "3.5.9", + "@alcalzone/release-script-core": "3.7.0", "alcalzone-shared": "^4.0.1", - "axios": "^0.27.1", + "axios": "^1.6.2", "fs-extra": "^10.1.0", - "semver": "^7.3.7" + "semver": "^7.5.2" }, "engines": { "node": ">=12.20" } }, + "node_modules/@alcalzone/release-script-plugin-iobroker/node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "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.7.3", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-package/-/release-script-plugin-package-3.7.3.tgz", + "integrity": "sha512-5oKSwbvHs9jRhARJ04eQ7xqig3a7NmPJlhtBxAqUM8+0cjs2g/V1xTxM6o8aZ09uRSdq80YGVxJm871SyszAWQ==", "dev": true, "dependencies": { - "@alcalzone/pak": "^0.8.1", - "@alcalzone/release-script-core": "3.5.9", + "@alcalzone/pak": "^0.10.1", + "@alcalzone/release-script-core": "3.7.0", "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.7.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-version/-/release-script-plugin-version-3.7.0.tgz", + "integrity": "sha512-030NGQeB+mglVz/58cx0WO4QiFChaSd/pz35mnOrUc9PbKWRpzisTVOt4IhCV/++YiAVibJO31NMNzvipPdx4Q==", "dev": true, "dependencies": { - "@alcalzone/release-script-core": "3.5.9", + "@alcalzone/release-script-core": "3.7.0", "alcalzone-shared": "^4.0.1", "fs-extra": "^10.1.0", - "semver": "^7.3.7", + "semver": "^7.5.2", "tiny-glob": "^0.2.9" }, "engines": { "node": ">=12.20" } }, + "node_modules/@alcalzone/release-script/node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/@babel/parser": { "version": "7.19.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", @@ -566,11 +615,14 @@ "dev": true }, "node_modules/@iobroker/adapter-core": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-2.6.7.tgz", - "integrity": "sha512-yDTmWjnsQ+DXRQVnQK97CXXMMs01H3Pl82DSqfx7dYj7RKoUenD75a0xY4QQdHZXG9SIhjNttXVEln0lWvOamA==", - "dependencies": { - "@types/iobroker": "^4.0.5" + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-3.1.6.tgz", + "integrity": "sha512-cArv8IzVsP3r8HivsYwO02e5WueboIH9v66PkHSGtadeUQQKUyxV32dzirM6YArWcI6+Iw5USQgVR9E+ryP3xg==", + "engines": { + "npm": ">=7.0.0" + }, + "peerDependencies": { + "@iobroker/types": "^6.0.0" } }, "node_modules/@iobroker/adapter-dev": { @@ -629,113 +681,71 @@ } }, "node_modules/@iobroker/testing": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@iobroker/testing/-/testing-3.0.2.tgz", - "integrity": "sha512-UxDHAs9DpBpHVd0vaPekBB6T5B7x/5Specz3sb78qpaZIOzTXGJNiY6neNcmsCj1IwBmnNrQKi9NNj7rnXJ9OQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@iobroker/testing/-/testing-4.1.3.tgz", + "integrity": "sha512-PTfvlXQBXDJVX35bkJxzgjuMX6bEjUmB4Dy8+bWLqbOgyq1JQVrRn+ah5IB7hEf+4lP8wD0MpAjXFJTv3zfTvA==", "dev": true, "dependencies": { - "alcalzone-shared": "~4.0.1", - "chai": "^4.3.6", + "alcalzone-shared": "~4.0.3", + "chai": "^4.3.7", "chai-as-promised": "^7.1.1", "debug": "^4.3.4", "fs-extra": "^10.1.0", - "mocha": "^9.2.2", - "sinon": "^13.0.1", + "mocha": "^10.2.0", + "sinon": "^15.0.1", "sinon-chai": "^3.7.0" } }, - "node_modules/@iobroker/testing/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "node_modules/@iobroker/testing/node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "type-detect": "4.0.8" } }, - "node_modules/@iobroker/testing/node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "node_modules/@iobroker/testing/node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@iobroker/testing/node_modules/mocha/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "node_modules/@iobroker/testing/node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", "dev": true, "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" } }, - "node_modules/@iobroker/testing/node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@iobroker/testing/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "node_modules/@iobroker/testing/node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } }, "node_modules/@iobroker/testing/node_modules/sinon": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.2.tgz", - "integrity": "sha512-KvOrztAVqzSJWMDoxM4vM+GPys1df2VBoXm+YciyB/OLMamfS3VXh3oGh5WtrAGSzrgczNWFFY22oKb7Fi5eeA==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.2.0.tgz", + "integrity": "sha512-nPS85arNqwBXaIsFCkolHjGIkFo+Oxu9vbgmBJizLAhqe6P2o3Qmj3KCUoRkfhHtvgDhZdWD3risLHAUJ8npjw==", + "deprecated": "16.1.1", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": "^9.1.2", - "@sinonjs/samsam": "^6.1.1", - "diff": "^5.0.0", - "nise": "^5.1.1", + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^10.3.0", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.4", "supports-color": "^7.2.0" }, "funding": { @@ -743,7 +753,7 @@ "url": "https://opencollective.com/sinon" } }, - "node_modules/@iobroker/testing/node_modules/sinon/node_modules/supports-color": { + "node_modules/@iobroker/testing/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -755,31 +765,13 @@ "node": ">=8" } }, - "node_modules/@iobroker/testing/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, + "node_modules/@iobroker/types": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-6.0.9.tgz", + "integrity": "sha512-8+u5c/cawj5cmnQaW95TJv1vBMs68GaepPko7urvylGfixPE/vJ0nwNq392v67B52PwHPi41kctmR9gNt9M+tw==", + "peer": true, "engines": { - "node": ">=10" - } - }, - "node_modules/@iobroker/testing/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" + "node": ">=12.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -989,14 +981,6 @@ "@types/chai": "*" } }, - "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/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -1040,7 +1024,8 @@ "node_modules/@types/node": { "version": "14.18.32", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.32.tgz", - "integrity": "sha512-Y6S38pFr04yb13qqHf8uk1nHE3lXgQ30WZbv1mLliV9pt0NjvqdWttLcrOYLnXbOafknVYRHZGoMSpR9UwfYow==" + "integrity": "sha512-Y6S38pFr04yb13qqHf8uk1nHE3lXgQ30WZbv1mLliV9pt0NjvqdWttLcrOYLnXbOafknVYRHZGoMSpR9UwfYow==", + "dev": true }, "node_modules/@types/proxyquire": { "version": "1.3.28", @@ -1265,12 +1250,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -1341,12 +1320,12 @@ } }, "node_modules/alcalzone-shared": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/alcalzone-shared/-/alcalzone-shared-4.0.1.tgz", - "integrity": "sha512-6t0LFCIGvBG24grbV93Y1+MJjoyqgUpPOp/PkOcal1ZXXUUMEaZKPu6NfN6e3x5k2P2mnNaY2eXn/VmpWDLzYA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/alcalzone-shared/-/alcalzone-shared-4.0.8.tgz", + "integrity": "sha512-Rr0efCjNL9lw7miDvU8exL87Y42ehsLU2jUGNQUphhnlvxnTMrHeApWgoOSGZvsE2PhxC3KO7Z+VpQ/IbuV3aA==", "dev": true, "dependencies": { - "debug": "^4.3.2" + "debug": "^4.3.4" }, "engines": { "node": ">=12" @@ -1618,18 +1597,18 @@ } }, "node_modules/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.1.0" }, "engines": { "node": ">=4" @@ -1647,6 +1626,15 @@ "chai": ">= 2.1.2 < 5" } }, + "node_modules/chai/node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1676,10 +1664,13 @@ } }, "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -1794,9 +1785,9 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -1823,15 +1814,15 @@ } }, "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, "dependencies": { "type-detect": "^4.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=6" } }, "node_modules/deep-is": { @@ -1849,9 +1840,9 @@ } }, "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "engines": { "node": ">=0.3.1" @@ -2849,9 +2840,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -2968,9 +2959,9 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { "node": "*" @@ -3163,15 +3154,6 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, "node_modules/gtoken": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", @@ -3486,12 +3468,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3630,9 +3606,9 @@ } }, "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", "dev": true }, "node_modules/jwa": { @@ -3749,12 +3725,12 @@ "dev": true }, "node_modules/loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "node_modules/lru-cache": { @@ -3882,17 +3858,26 @@ } }, "node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" } }, + "node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/minimist": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", @@ -3914,32 +3899,31 @@ } }, "node_modules/mocha": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.1.0.tgz", - "integrity": "sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.0.tgz", + "integrity": "sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", @@ -3947,40 +3931,26 @@ }, "engines": { "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" } }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mocha/node_modules/ms": { @@ -3989,24 +3959,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/mocha/node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/mocha/node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, "node_modules/mocha/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -4026,9 +3978,9 @@ } }, "node_modules/mocha/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "engines": { "node": ">=10" @@ -4046,18 +3998,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -4065,16 +4005,34 @@ "dev": true }, "node_modules/nise": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz", - "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": ">=5", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" + } + }, + "node_modules/nise/node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/nise/node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" } }, "node_modules/node-fetch": { @@ -4261,13 +4219,10 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, - "dependencies": { - "isarray": "0.0.1" - } + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "dev": true }, "node_modules/path-type": { "version": "4.0.0", @@ -4423,15 +4378,6 @@ "protobufjs": "^7.0.0" } }, - "node_modules/protobufjs-cli/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/protobufjs-cli/node_modules/glob": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", @@ -4451,24 +4397,18 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/protobufjs-cli/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/protobufjs/node_modules/long": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==", "dev": true }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "node_modules/proxyquire": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz", @@ -4751,13 +4691,10 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -4766,9 +4703,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -5339,9 +5276,9 @@ } }, "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", "dev": true }, "node_modules/wrap-ansi": { @@ -5454,125 +5391,172 @@ }, "dependencies": { "@alcalzone/pak": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@alcalzone/pak/-/pak-0.8.1.tgz", - "integrity": "sha512-sPdxNxdXLH96kbyWLdIljVSIY2N6/qnPqkq5AlWvuizjGQUwHIUtWZHLss9XNDV/hY7YkgdIb9ILHbMTnRBxVQ==", + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@alcalzone/pak/-/pak-0.10.2.tgz", + "integrity": "sha512-v+kM7HlfIVNLDlGBcbZvrG3yVK3rPLH5kIoGRJbCcoHwpUqQbfEMzXAy1ZrfP+zbI5phHw2PhgrXZr3z6nh7Ow==", "dev": true, "requires": { - "axios": "^0.26.0", - "execa": "^5.0.0", - "fs-extra": "^10.0.1" + "axios": "^1.6.2", + "execa": "~5.0.1", + "fs-extra": "^10.1.0", + "semver": "^7.3.7", + "tiny-glob": "^0.2.9" }, "dependencies": { "axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", "dev": true, "requires": { - "follow-redirects": "^1.14.8" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "execa": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.1.tgz", + "integrity": "sha512-4hFTjFbFzQa3aCLobpbPJR/U+VoL1wdV5ozOWjeet0AWDeYr9UFGM1eUFWHX+VtOWFq4p0xXUXfW1YxUaP4fpw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" } } } }, "@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.8.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script/-/release-script-3.8.0.tgz", + "integrity": "sha512-9H3imn8o9n3Ekpkie9TMgPeJfgT6WmklCMtOZ1wuwvMw/obNA0Ao1ZZ8CJfHk1YNjiLGmWn0kQFEGTqz4DoD7w==", "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-core": "3.7.0", + "@alcalzone/release-script-plugin-changelog": "3.7.0", + "@alcalzone/release-script-plugin-exec": "3.7.0", + "@alcalzone/release-script-plugin-git": "3.8.0", + "@alcalzone/release-script-plugin-package": "3.7.3", + "@alcalzone/release-script-plugin-version": "3.7.0", "alcalzone-shared": "^4.0.1", - "axios": "^0.27.1", + "axios": "^1.6.2", "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" + }, + "dependencies": { + "axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dev": true, + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + } } }, "@alcalzone/release-script-core": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-core/-/release-script-core-3.5.9.tgz", - "integrity": "sha512-rRxosfZMtpDcIm+sPTdwP5oVRBLX1WLYImrp0nUhqOPNN/UD5l9TxNVXDhGUsstXhaRXXBYS2BnOQwR308OfyA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-core/-/release-script-core-3.7.0.tgz", + "integrity": "sha512-4np4dBziwX/aNRhS/gpK8bwa0wpLe7oomzJ7YTUXf5bUtV/UTpN2a9tm5Bp7ElnisKj6N3AqHl4lVXRo4L9hYg==", "dev": true, "requires": { "execa": "^5.1.1" } }, "@alcalzone/release-script-plugin-changelog": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-changelog/-/release-script-plugin-changelog-3.5.9.tgz", - "integrity": "sha512-KmOMbjd7ta/Wl2OWQUxMpNza6Sr5/sB7AfV7BC0uCl839StnoivSjqywDfNcgJq97fxMs7hnGT/uYaz7oTUm7A==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-changelog/-/release-script-plugin-changelog-3.7.0.tgz", + "integrity": "sha512-AlLOIjIPP42uBmvcdYkfijYDzolyY6JmfbTmdxQDBLyrgYXnuUr2GaKxbpeWSbvcAuUhNvHCAyI6LI90X3OTEg==", "dev": true, "requires": { - "@alcalzone/release-script-core": "3.5.9", + "@alcalzone/release-script-core": "3.7.0", "alcalzone-shared": "^4.0.1", "fs-extra": "^10.1.0" } }, "@alcalzone/release-script-plugin-exec": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-exec/-/release-script-plugin-exec-3.5.9.tgz", - "integrity": "sha512-Y6OM+gEpfYYoDvHdzNUtgVZiBAgOzGWZk9yRPF5l8UWE3+tQAyMWavk2m08ExbEICfGV1lb8lRBzAdQaf7/0HA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-exec/-/release-script-plugin-exec-3.7.0.tgz", + "integrity": "sha512-ZhlKGhxa71mLyYB1/ojzik2RKcSAeIjuwKzlWRd6oUvKoZPe7eAjLYneXx5viQC6tvDJE4dvN1NlkFGWsSlZYA==", "dev": true, "requires": { - "@alcalzone/release-script-core": "3.5.9", + "@alcalzone/release-script-core": "3.7.0", "alcalzone-shared": "^4.0.1" } }, "@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.8.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-git/-/release-script-plugin-git-3.8.0.tgz", + "integrity": "sha512-rI9EqSmvMWaNZ5xxOUBZjD4WOv1Enl+/ZxhUoTROq+K/9RYYHQaAXilGWNvnz2DYr14Q+Yx/fs54GXgAVf0scg==", "dev": true, "requires": { - "@alcalzone/release-script-core": "3.5.9", + "@alcalzone/release-script-core": "3.7.0", "fs-extra": "^10.1.0" } }, "@alcalzone/release-script-plugin-iobroker": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-iobroker/-/release-script-plugin-iobroker-3.5.9.tgz", - "integrity": "sha512-0z0wU0HCLEe94JAtDPtarOc0AcqudefRlhA7RddZ6+FRwPOyAg8i37hcDKTo+C7rrk31TwgY2xiPIDjkfBKhyQ==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-iobroker/-/release-script-plugin-iobroker-3.7.2.tgz", + "integrity": "sha512-ezXFyxx2irq7my3BmlBUrzT+QHNsldR9MQYkXs7uyH6lXSkudmqq5EiDW9WckT0Cj9YqIUzoOJhhnZA9M+XTvQ==", "dev": true, "requires": { - "@alcalzone/release-script-core": "3.5.9", + "@alcalzone/release-script-core": "3.7.0", "alcalzone-shared": "^4.0.1", - "axios": "^0.27.1", + "axios": "^1.6.2", "fs-extra": "^10.1.0", - "semver": "^7.3.7" + "semver": "^7.5.2" + }, + "dependencies": { + "axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dev": true, + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + } } }, "@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.7.3", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-package/-/release-script-plugin-package-3.7.3.tgz", + "integrity": "sha512-5oKSwbvHs9jRhARJ04eQ7xqig3a7NmPJlhtBxAqUM8+0cjs2g/V1xTxM6o8aZ09uRSdq80YGVxJm871SyszAWQ==", "dev": true, "requires": { - "@alcalzone/pak": "^0.8.1", - "@alcalzone/release-script-core": "3.5.9", + "@alcalzone/pak": "^0.10.1", + "@alcalzone/release-script-core": "3.7.0", "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.7.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-version/-/release-script-plugin-version-3.7.0.tgz", + "integrity": "sha512-030NGQeB+mglVz/58cx0WO4QiFChaSd/pz35mnOrUc9PbKWRpzisTVOt4IhCV/++YiAVibJO31NMNzvipPdx4Q==", "dev": true, "requires": { - "@alcalzone/release-script-core": "3.5.9", + "@alcalzone/release-script-core": "3.7.0", "alcalzone-shared": "^4.0.1", "fs-extra": "^10.1.0", - "semver": "^7.3.7", + "semver": "^7.5.2", "tiny-glob": "^0.2.9" } }, @@ -5830,12 +5814,10 @@ "dev": true }, "@iobroker/adapter-core": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-2.6.7.tgz", - "integrity": "sha512-yDTmWjnsQ+DXRQVnQK97CXXMMs01H3Pl82DSqfx7dYj7RKoUenD75a0xY4QQdHZXG9SIhjNttXVEln0lWvOamA==", - "requires": { - "@types/iobroker": "^4.0.5" - } + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-3.1.6.tgz", + "integrity": "sha512-cArv8IzVsP3r8HivsYwO02e5WueboIH9v66PkHSGtadeUQQKUyxV32dzirM6YArWcI6+Iw5USQgVR9E+ryP3xg==", + "requires": {} }, "@iobroker/adapter-dev": { "version": "1.2.0", @@ -5882,132 +5864,92 @@ } }, "@iobroker/testing": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@iobroker/testing/-/testing-3.0.2.tgz", - "integrity": "sha512-UxDHAs9DpBpHVd0vaPekBB6T5B7x/5Specz3sb78qpaZIOzTXGJNiY6neNcmsCj1IwBmnNrQKi9NNj7rnXJ9OQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@iobroker/testing/-/testing-4.1.3.tgz", + "integrity": "sha512-PTfvlXQBXDJVX35bkJxzgjuMX6bEjUmB4Dy8+bWLqbOgyq1JQVrRn+ah5IB7hEf+4lP8wD0MpAjXFJTv3zfTvA==", "dev": true, "requires": { - "alcalzone-shared": "~4.0.1", - "chai": "^4.3.6", + "alcalzone-shared": "~4.0.3", + "chai": "^4.3.7", "chai-as-promised": "^7.1.1", "debug": "^4.3.4", "fs-extra": "^10.1.0", - "mocha": "^9.2.2", - "sinon": "^13.0.1", + "mocha": "^10.2.0", + "sinon": "^15.0.1", "sinon-chai": "^3.7.0" }, "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true + "@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.0" + } }, - "mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", "dev": true, "requires": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" }, "dependencies": { - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", "dev": true, "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "type-detect": "4.0.8" } } } }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "sinon": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.2.tgz", - "integrity": "sha512-KvOrztAVqzSJWMDoxM4vM+GPys1df2VBoXm+YciyB/OLMamfS3VXh3oGh5WtrAGSzrgczNWFFY22oKb7Fi5eeA==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.2.0.tgz", + "integrity": "sha512-nPS85arNqwBXaIsFCkolHjGIkFo+Oxu9vbgmBJizLAhqe6P2o3Qmj3KCUoRkfhHtvgDhZdWD3risLHAUJ8npjw==", "dev": true, "requires": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": "^9.1.2", - "@sinonjs/samsam": "^6.1.1", - "diff": "^5.0.0", - "nise": "^5.1.1", + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^10.3.0", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.4", "supports-color": "^7.2.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "has-flag": "^4.0.0" } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true } } }, + "@iobroker/types": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-6.0.9.tgz", + "integrity": "sha512-8+u5c/cawj5cmnQaW95TJv1vBMs68GaepPko7urvylGfixPE/vJ0nwNq392v67B52PwHPi41kctmR9gNt9M+tw==", + "peer": true + }, "@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", @@ -6200,14 +6142,6 @@ "@types/chai": "*" } }, - "@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/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -6251,7 +6185,8 @@ "@types/node": { "version": "14.18.32", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.32.tgz", - "integrity": "sha512-Y6S38pFr04yb13qqHf8uk1nHE3lXgQ30WZbv1mLliV9pt0NjvqdWttLcrOYLnXbOafknVYRHZGoMSpR9UwfYow==" + "integrity": "sha512-Y6S38pFr04yb13qqHf8uk1nHE3lXgQ30WZbv1mLliV9pt0NjvqdWttLcrOYLnXbOafknVYRHZGoMSpR9UwfYow==", + "dev": true }, "@types/proxyquire": { "version": "1.3.28", @@ -6387,12 +6322,6 @@ "eslint-visitor-keys": "^3.3.0" } }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, "abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -6442,12 +6371,12 @@ } }, "alcalzone-shared": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/alcalzone-shared/-/alcalzone-shared-4.0.1.tgz", - "integrity": "sha512-6t0LFCIGvBG24grbV93Y1+MJjoyqgUpPOp/PkOcal1ZXXUUMEaZKPu6NfN6e3x5k2P2mnNaY2eXn/VmpWDLzYA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/alcalzone-shared/-/alcalzone-shared-4.0.8.tgz", + "integrity": "sha512-Rr0efCjNL9lw7miDvU8exL87Y42ehsLU2jUGNQUphhnlvxnTMrHeApWgoOSGZvsE2PhxC3KO7Z+VpQ/IbuV3aA==", "dev": true, "requires": { - "debug": "^4.3.2" + "debug": "^4.3.4" } }, "ansi-colors": { @@ -6651,18 +6580,26 @@ } }, "chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, "requires": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.1.0" + }, + "dependencies": { + "type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true + } } }, "chai-as-promised": { @@ -6696,10 +6633,13 @@ } }, "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "requires": { + "get-func-name": "^2.0.2" + } }, "chokidar": { "version": "3.5.3", @@ -6788,9 +6728,9 @@ } }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "requires": { "ms": "2.1.2" @@ -6803,9 +6743,9 @@ "dev": true }, "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -6823,9 +6763,9 @@ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true }, "dir-glob": { @@ -7479,9 +7419,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true }, "forever-agent": { @@ -7559,9 +7499,9 @@ "dev": true }, "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true }, "get-stream": { @@ -7707,12 +7647,6 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, "gtoken": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", @@ -7935,12 +7869,6 @@ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -8064,9 +7992,9 @@ } }, "just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", "dev": true }, "jwa": { @@ -8168,12 +8096,12 @@ "dev": true }, "loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "requires": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "lru-cache": { @@ -8271,12 +8199,23 @@ "dev": true }, "minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + } } }, "minimist": { @@ -8291,56 +8230,44 @@ "dev": true }, "mocha": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.1.0.tgz", - "integrity": "sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg==", - "dev": true, - "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.0.tgz", + "integrity": "sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "requires": { - "brace-expansion": "^2.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" } }, "ms": { @@ -8349,18 +8276,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true - }, - "workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -8377,9 +8292,9 @@ } }, "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true } } @@ -8396,12 +8311,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -8409,16 +8318,36 @@ "dev": true }, "nise": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz", - "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", "dev": true, "requires": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": ">=5", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" + }, + "dependencies": { + "@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.0" + } + } } }, "node-fetch": { @@ -8546,13 +8475,10 @@ "dev": true }, "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, - "requires": { - "isarray": "0.0.1" - } + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "dev": true }, "path-type": { "version": "4.0.0", @@ -8667,15 +8593,6 @@ "uglify-js": "^3.7.7" }, "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, "glob": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", @@ -8688,18 +8605,15 @@ "minimatch": "^5.0.1", "once": "^1.3.0" } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } } } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "proxyquire": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz", @@ -8888,18 +8802,15 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -9325,9 +9236,9 @@ "dev": true }, "workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", "dev": true }, "wrap-ansi": { diff --git a/package.json b/package.json index 88fcdd1..9490ecc 100644 --- a/package.json +++ b/package.json @@ -25,14 +25,14 @@ "url": "https://github.com/AlCalzone/ioBroker.philips-tv" }, "dependencies": { - "@iobroker/adapter-core": "^2.6.7", + "@iobroker/adapter-core": "^3.1.6", "philips-tv-api": "https://github.com/foxriver76/philipsandroidtv/tarball/d90e61de1ebf5cf07ab3b90c87d11afe02231025" }, "devDependencies": { - "@alcalzone/release-script": "^3.5.9", - "@alcalzone/release-script-plugin-iobroker": "^3.5.9", + "@alcalzone/release-script": "^3.8.0", + "@alcalzone/release-script-plugin-iobroker": "^3.7.2", "@iobroker/adapter-dev": "^1.2.0", - "@iobroker/testing": "^3.0.2", + "@iobroker/testing": "^4.1.3", "@types/chai": "^4.3.1", "@types/chai-as-promised": "^7.1.5", "@types/mocha": "^9.1.1", diff --git a/src/main.ts b/src/main.ts index 447c84a..2255f82 100644 --- a/src/main.ts +++ b/src/main.ts @@ -283,10 +283,18 @@ class PhilipsTvAndroid extends utils.Adapter { } }; - await this.tv.launchApplication(googleAssistantCommand); + try { + await this.tv.launchApplication(googleAssistantCommand); + } catch (e) { + this.log.error(`Could not set HDMI input via Google assistant: ${this.errorToText(e)}`); + } break; case 'hdmiInput': { - await this.tv.setSource(state.val as Input); + try { + await this.tv.setSource(state.val as Input); + } catch (e) { + this.log.error(`Could not set HDMI input: ${this.errorToText(e)}`); + } break; } default: