diff --git a/.github/auto-merge.yml b/.github/auto-merge.yml
new file mode 100644
index 00000000..3f5fbe36
--- /dev/null
+++ b/.github/auto-merge.yml
@@ -0,0 +1,17 @@
+# Configure here which dependency updates should be merged automatically.
+# The recommended configuration is the following:
+- match:
+ # Only merge patches for production dependencies
+ dependency_type: production
+ update_type: "semver:patch"
+- match:
+ # Except for security fixes, here we allow minor patches
+ dependency_type: production
+ update_type: "security:minor"
+- match:
+ # and development dependencies can have a minor update, too
+ dependency_type: development
+ update_type: "semver:minor"
+
+# The syntax is based on the legacy dependabot v1 automerged_updates syntax, see:
+# https://dependabot.com/docs/config-file/#automerged_updates
\ No newline at end of file
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 00000000..d50c0738
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,24 @@
+version: 2
+updates:
+ - package-ecosystem: github-actions
+ directory: "/"
+ schedule:
+ interval: monthly
+ time: "04:00"
+ timezone: Europe/Berlin
+ - package-ecosystem: npm
+ directory: "/"
+ schedule:
+ interval: monthly
+ time: "04:00"
+ timezone: Europe/Berlin
+ open-pull-requests-limit: 5
+ versioning-strategy: increase
+ - package-ecosystem: npm
+ directory: "/src"
+ schedule:
+ interval: monthly
+ time: "04:00"
+ timezone: Europe/Berlin
+ open-pull-requests-limit: 5
+ versioning-strategy: increase
\ No newline at end of file
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
new file mode 100644
index 00000000..673f75a8
--- /dev/null
+++ b/.github/workflows/codeql.yml
@@ -0,0 +1,41 @@
+name: "CodeQL"
+
+on:
+ push:
+ branches: [ "master" ]
+ pull_request:
+ branches: [ "master" ]
+ schedule:
+ - cron: "46 19 * * 0"
+
+jobs:
+ analyze:
+ name: Analyze
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language: [ javascript ]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v2
+ with:
+ languages: ${{ matrix.language }}
+ queries: +security-and-quality
+
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v2
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v2
+ with:
+ category: "/language:${{ matrix.language }}"
diff --git a/.github/workflows/dependabot-automerge.yml b/.github/workflows/dependabot-automerge.yml
new file mode 100644
index 00000000..7ebd3105
--- /dev/null
+++ b/.github/workflows/dependabot-automerge.yml
@@ -0,0 +1,22 @@
+# Automatically merge Dependabot PRs when version comparison is within the range
+# that is configured in .github/auto-merge.yml
+
+name: Auto-Merge Dependabot PRs
+
+on:
+ pull_request_target:
+
+jobs:
+ auto-merge:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v3
+
+ - name: Check if PR should be auto-merged
+ uses: ahmadnassri/action-dependabot-auto-merge@v2
+ with:
+ # This must be a personal access token with push access
+ github-token: ${{ secrets.AUTO_MERGE_TOKEN }}
+ # By default, squash and merge, so Github chooses nice commit messages
+ command: squash and merge
\ No newline at end of file
diff --git a/.github/workflows/test-and-release.yml b/.github/workflows/test-and-release.yml
index c8bd8852..aa415ea3 100644
--- a/.github/workflows/test-and-release.yml
+++ b/.github/workflows/test-and-release.yml
@@ -34,7 +34,7 @@ jobs:
node-version: ${{ matrix.node-version }}
- name: Install Dependencies
- run: npm ci
+ run: npm i
- name: Lint source code
run: npm run lint
@@ -50,7 +50,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
- node-version: [12.x, 14.x, 16.x]
+ node-version: [14.x, 16.x, 18.x]
os: [ubuntu-latest, macos-latest]
steps:
@@ -63,7 +63,7 @@ jobs:
node-version: ${{ matrix.node-version }}
- name: Install Dependencies
- run: npm ci
+ run: npm i
- name: Run unit tests
run: npm run test:unit
diff --git a/.gitignore b/.gitignore
index 9ef37a17..7de9f69e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,4 @@ admin/i18n/*/flat.txt
debugidentify.js
.devcontainer
docs
+package-lock.json
diff --git a/.npmignore b/.npmignore
deleted file mode 100644
index 608f2030..00000000
--- a/.npmignore
+++ /dev/null
@@ -1,12 +0,0 @@
-gulpfile.js
-admin/i18n
-tasks
-node_modules
-.idea
-.git
-/node_modules
-test
-.travis.yml
-appveyor.yml
-.devcontainer
-docs
diff --git a/.releaseconfig.json b/.releaseconfig.json
new file mode 100644
index 00000000..6f9d0f55
--- /dev/null
+++ b/.releaseconfig.json
@@ -0,0 +1,3 @@
+{
+ "plugins": ["iobroker", "license"]
+}
diff --git a/README.md b/README.md
index 98bfa1fc..3faa787c 100644
--- a/README.md
+++ b/README.md
@@ -10,17 +10,12 @@
[](https://www.npmjs.com/package/iobroker.zigbee)
## ioBroker adapter for Zigbee devices via TI cc2531/cc2530/cc26x2r/cc2538 and deCONZ ConBee/RaspBee.
-
-With the Zigbee-coordinator based on Texas Instruments SoC, deCONZ ConBee/RaspBee modules, Silicon Labs EZSP v8 or ZIGate USB-TTL it creates its own zigbee-network, into which zigbee-devices are connected. By work directly with the coordinator, the driver allows you to manage devices without additional application / gateways / bridge from device manufacturers (Xiaomi / TRADFRI / Hue / Tuya). About the device Zigbee-network can be read [here (in English)](https://www.zigbee2mqtt.io/information/zigbee_network.html).
+With the Zigbee-coordinator based on `Texas Instruments SoC, deCONZ ConBee/RaspBee` modules, `Silicon Labs EZSP v8` or `ZIGate USB-TTL` it creates its own zigbee-network, into which zigbee-devices are connected. By work directly with the coordinator, the driver allows you to manage devices without additional application / gateways / bridge from device manufacturers (Xiaomi / TRADFRI / Hue / Tuya). About the device Zigbee-network can be read [here (in English)](https://www.zigbee2mqtt.io/information/zigbee_network.html).
## Hardware
-
-
One coordinator device is required for each zigbee Adapter instance. The device must be flashed with the respective coordinator firmware. A list of supported coordinators, the necessary equipment for the firmware and the device preparation process for different coordinator devices are described [here (in English)](https://www.zigbee2mqtt.io/guide/adapters/) or [here (in Russian)](https://myzigbee.ru/books/%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D0%B2%D0%BA%D0%B8/page/%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D0%B2%D0%BA%D0%B0-cc2531cc2530)
-
### Texas Instruments SoC
-
Recommended devices are based on either the CC2652 or CC1352 chip. Devices based on cc253x chips are still supported but are no longer recommended.
Only CC26xx/cc1352/cc2538 Devices support extraction of the NVRam backup which should allow to swap coordinator hardware without having to reconnect all zigbee devices to the network.
Current firmware files for these devices can be found [on GitHub](https://github.com/Koenkk/Z-Stack-firmware)
@@ -32,9 +27,7 @@ Current firmware files for these devices can be found [on GitHub](https://github
-
### Dresden Elektronik SoC
-
recommended:
@@ -45,23 +38,18 @@ no longer recommended:
- ConBee I
- RaspBee
-While Conbee/RaspBee Support is no longer considered experimental in the zigbee-herdsman and zigbee-herdsman-converters libraries used by the zigbee Adapter, use of these devices with the adapter may limit functionality. Known issues are:
+While `Conbee/RaspBee` Support is no longer considered experimental in the zigbee-herdsman and zigbee-herdsman-converters libraries used by the zigbee Adapter, use of these devices with the adapter may limit functionality. Known issues are:
- link quality display may be incorrect
- device map metrics may be incorrect
- NVRam Backup is not supported.
### Silicon Labs SoC
-
-Support for [Silicon Lab Zigbee](https://www.silabs.com/wireless/zigbee) based adapters is experimental. The initial support for EZSP v8 is still not yet considered stable and the project is in need of more developers volenteering to help with this integration. Please refer to the respective documentation on [this page](https://www.zigbee2mqtt.io/guide/adapters/) and [ongoing development discussion](https://github.com/Koenkk/zigbee-herdsman/issues/319) with regards to the state of Silabs EmberZNet Serial Protocol (EZSP) adapter implementation integration into the zigbee-herdsman and zigbee-herdsman-converters libraries which it depends on.
-
+Support for [Silicon Lab Zigbee](https://www.silabs.com/wireless/zigbee) based adapters is experimental. The initial support for EZSP v8 is still not yet considered stable and the project is in need of more developers volunteering to help with this integration. Please refer to the respective documentation on [this page](https://www.zigbee2mqtt.io/guide/adapters/) and [ongoing development discussion](https://github.com/Koenkk/zigbee-herdsman/issues/319) with regard to the state of Silabs EmberZNet Serial Protocol (EZSP) adapter implementation integration into the zigbee-herdsman and zigbee-herdsman-converters libraries which it depends on.
### ZiGate SoC
-
-Support for [ZiGate](https://zigate.fr) based adapters is experimental. The initial support for ZiGate is still not yet considered stable and the project is in need of more developers volenteering to help with this integration. Please refer to the respective documentation on [this page](https://www.zigbee2mqtt.io/guide/adapters/) and [ongoing development discussion](https://github.com/Koenkk/zigbee-herdsman/issues/242) with regards to the state of ZiGate adapter implementation into the zigbee-herdsman and zigbee-herdsman-converters libraries which it depends on.
-
+Support for [ZiGate](https://zigate.fr) based adapters is experimental. The initial support for ZiGate is still not yet considered stable and the project is in need of more developers volunteering to help with this integration. Please refer to the respective documentation on [this page](https://www.zigbee2mqtt.io/guide/adapters/) and [ongoing development discussion](https://github.com/Koenkk/zigbee-herdsman/issues/242) with regard to the state of ZiGate adapter implementation into the zigbee-herdsman and zigbee-herdsman-converters libraries which it depends on.
## Work with adapter
-

To start the driver, you must specify the name of the port on which the Zigbee-module (stick) is connected. Usually this is the port `/dev/ttyACM0` or `/dev/ttyUSB0` for the UART-connection. Or you can find with `ls -l /dev/serial/by-id` the device direct.
@@ -69,7 +57,6 @@ To start the driver, you must specify the name of the port on which the Zigbee-m
open the settings and change port

-
For Windows this will be the COM port number.
Starting from version 1.0.0 you can also use *tcp connection* for cases using esp8266 (or other microcontrollers) as serial-bridge. For example `tcp://192.168.1.46:8880`. Read more info here https://www.zigbee2mqtt.io/information/connecting_cc2530#via-an-esp8266
@@ -92,18 +79,14 @@ It is a Zigbee feature, intended for example to switch bulbs synchronized. Assig
Note: Not all devices support groups (not supported by end devices like sensors).
-
### Binding
-
https://www.zigbee2mqtt.io/information/binding
### Developer Tab
-
-This is a tool for advanced users to test currently unsupported devices or enhance this adapters functionality. More instructions can be found on tab.
+This is a tool for advanced users to test currently unsupported devices or enhance this adapter's functionality. More instructions can be found on tab.

## Additional info
-
There is a [friendly project](https://github.com/koenkk/zigbee2mqtt) with similar functionality on the same technologies, where you can work with the same devices using the MQTT protocol. Therefore, if any improvements or support for new zigbee-devices occur in the Zigbee2MQTT project, we can transfer and add the same functionality to this adapter. If you notice this, then write the issue - we'll postpone it.
There are knowledge bases that can be useful for working with Zigbee-devices and equipment:
@@ -111,11 +94,9 @@ There are knowledge bases that can be useful for working with Zigbee-devices and
* in Russian https://myzigbee.ru/
## Supported devices
-
Works with devices from this list https://github.com/ioBroker/ioBroker.zigbee/wiki/Supported-devices
## Donate
-
You can thank the authors by these links:
* to Kirov Ilya https://www.paypal.me/goofyk
* to Arthur Rupp https://paypal.me/ArthurRupp
@@ -131,7 +112,6 @@ You can thank the authors by these links:
### **WORK IN PROGRESS**
-->
-
## Changelog
### 1.7.7 (2022-11-24)
* dep update
@@ -179,8 +159,8 @@ You can thank the authors by these links:
- when a pingable device is marked active (from being inactive) it will be pinged again.
- inactive devices are excluded from OTA updates.
* (asgothian) Group rework part 2:
- - state device.groups will now be deleted with state Cleanup
- - state info.groups is now obsolete and will be deleted at adapter start (after transferring data to
+ - state `device.groups` will now be deleted with state Cleanup
+ - state `info.groups` is now obsolete and will be deleted at adapter start (after transferring data to
the new storage)
* (asgothian) Device name persistance.
- Changes to device names made within the zigbee adapter are stored in the file dev_names.json. This file
@@ -194,7 +174,7 @@ You can thank the authors by these links:
### 1.6.12 (2022-01)
* (asgothian) Groups were newly revised (read [here](https://github.com/ioBroker/ioBroker.zigbee/pull/1327) )
- - object device.groups is obsolet..the old one is no longer up to date
+ - object `device.groups` is obsolet. The old one is no longer up to date
### 1.6.9 (2021-12)
* (simatec) fix admin Dark-Mode
diff --git a/admin/admin.js b/admin/admin.js
index 398d618f..581bd5fd 100644
--- a/admin/admin.js
+++ b/admin/admin.js
@@ -1389,12 +1389,14 @@ function getComPorts(onChange) {
// }, 1000);
// return;
// }
- if (!list) return;
+ if (!list) {
+ return;
+ }
const element = $('#ports');
for (let j = 0; j < list.length; j++) {
- element.append('
' + list[j].comName +'');
+ element.append('' + list[j].comName + (list[j].name ? (' [' + list[j].name + ']') : '') + '');
}
- $('#ports a').click(function() {
+ $('#ports a').click(function () {
$('#port').val($(this).text());
Materialize.updateTextFields();
onChange();
diff --git a/appveyor.yml b/appveyor.yml
deleted file mode 100644
index 76b457f7..00000000
--- a/appveyor.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-version: 'test-{build}'
-environment:
- matrix:
- - nodejs_version: '12'
- - nodejs_version: '14'
- - nodejs_version: '16'
-platform:
- - x86
- - x64
-clone_folder: 'c:\projects\%APPVEYOR_PROJECT_NAME%'
-install:
- - ps: 'Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version) $env:platform'
- - ps: '$NpmVersion = (npm -v).Substring(0,1)'
- - ps: 'if($NpmVersion -eq 5) { npm install -g npm@5 }'
- - ps: npm --version
- - npm install
-test_script:
- - echo %cd%
- - node --version
- - npm --version
- - 'npm run test:package'
- - 'npm run test:unit'
- - 'npm run test:integration'
-build: 'off'
diff --git a/lib/backup.js b/lib/backup.js
index 665ac702..208b81d5 100644
--- a/lib/backup.js
+++ b/lib/backup.js
@@ -49,7 +49,7 @@ class Backup {
}
}
- async configure (zigbeeOptions) {
+ async configure(zigbeeOptions) {
this.zigbeeOptions = zigbeeOptions;
this.backup(zigbeeOptions);
const allBackupFiles = this.listBackupsFiles(zigbeeOptions);
@@ -121,7 +121,7 @@ class Backup {
delBackupsFiles(options, files) {
const arr = files.length;
if (arr > 10) {
- this.info('delete old Backup files. keep only last 10')
+ this.info('delete old Backup files. keep only last 10');
}
for (let i = 10; i < files.length; i++) {
diff --git a/lib/binding.js b/lib/binding.js
index b5250fd6..5717b5d4 100644
--- a/lib/binding.js
+++ b/lib/binding.js
@@ -34,7 +34,7 @@ class Binding {
debug(msg) {
this.adapter.log.debug(msg);
}
-
+
warn(msg) {
this.adapter.log.warn(msg);
}
@@ -86,21 +86,23 @@ class Binding {
}
extractDeviceId(stateId) {
- if (stateId)
+ if (stateId) {
return stateId.replace(`${this.adapter.namespace}.`, '');
+ }
return '';
}
getBindEp(ep) {
- if (ep)
+ if (ep) {
return parseInt(ep.split('_')[0]);
+ }
this.warn(`getBindEp called with illegal ep: ${safeJsonStringify(ep)}`);
return 0;
}
getBindCl(ep) {
- return (ep.indexOf('_') > 0) ? ep.split('_')[1] : null;
+ return ep.indexOf('_') > 0 ? ep.split('_')[1] : null;
}
async doBindUnbind(type, bind_source, bind_source_ep, bind_target, bind_target_ep, callback) {
@@ -123,8 +125,7 @@ class Binding {
if (!source || !target) {
this.error('Devices not found');
- if (callback) callback('Devices not found');
- return;
+ return callback && callback('Devices not found');
}
const sourceName = source.name;
const targetName = target.name;
@@ -144,8 +145,7 @@ class Binding {
}
if (!found) {
this.debug(`No bind clusters`);
- if (callback) callback(`No bind clusters`);
- return;
+ return callback && callback(`No bind clusters`);
} else {
let ok = true;
for (const clID of clusters) {
@@ -171,23 +171,23 @@ class Binding {
`Failed to ${type} cluster '${cluster}' from '${sourceName}' to ` +
`'${targetName}' (${error})`,
);
- if (callback) callback(`Failed to ${type} cluster '${cluster}' from '${sourceName}' to '${targetName}' (${error})`);
+ callback && callback(`Failed to ${type} cluster '${cluster}' from '${sourceName}' to '${targetName}' (${error})`);
ok = false;
break;
}
}
}
- if (ok && callback) callback(undefined, id);
+ ok && callback && callback(undefined, id);
}
} catch (error) {
this.error(`Failed to doBindUnbind ${error.stack}`);
- if (callback) callback(`Failed to doBindUnbind ${error.stack}`);
+ callback && callback(`Failed to doBindUnbind ${error.stack}`);
}
}
async addBinding(from, command, params, callback) {
try {
- this.debug('addBinding message: ' + JSON.stringify(params));
+ this.debug(`addBinding message: ${JSON.stringify(params)}`);
const bind_source = params.bind_source,
bind_source_ep = params.bind_source_ep,
bind_target = params.bind_target,
@@ -207,9 +207,8 @@ class Binding {
type: 'state',
common: {name: id},
}, () => {
- this.adapter.setState(stateId, JSON.stringify(params), true, () => {
- callback();
- });
+ this.adapter.setState(stateId, JSON.stringify(params), true, () =>
+ callback());
});
}
});
@@ -221,7 +220,7 @@ class Binding {
async editBinding(from, command, params, callback) {
try {
- this.debug('editBinding message: ' + JSON.stringify(params));
+ this.debug(`editBinding message: ${JSON.stringify(params)}`);
const old_id = params.id,
bind_source = params.bind_source,
bind_source_ep = params.bind_source_ep,
@@ -229,7 +228,7 @@ class Binding {
bind_target_ep = params.bind_target_ep,
id = this.getBindingId(bind_source, bind_source_ep, bind_target, bind_target_ep);
if (old_id !== id) {
- await this.delBinding(from, command, old_id, async (err)=>{
+ await this.delBinding(from, command, old_id, async err => {
if (err) {
callback(err);
} else {
@@ -242,7 +241,7 @@ class Binding {
await this.doBindUnbind(type , bind_source, bind_source_ep, 'coordinator', '1');
this.debug('Successfully ' + (type === 'bind' ? 'bound' : 'unbound') + ' Coordinator from ' + bind_source);
} catch (e) {
- this.error('Could not ' + type + ' Coordinator from ' + bind_source + ': ' + JSON.stringify(e));
+ this.error(`Could not ${type} Coordinator from ${bind_source}: ${JSON.stringify(e)}`);
}
}
} catch (error) {
@@ -252,17 +251,17 @@ class Binding {
async delBinding(from, command, bind_id, callback) {
try {
- this.debug('delBinding message: ' + JSON.stringify(bind_id));
+ this.debug(`delBinding message: ${JSON.stringify(bind_id)}`);
const stateId = `info.${bind_id}`;
this.adapter.getStateAsync(stateId)
- .then(async (stateV) => {
- this.debug('found state: ' + JSON.stringify(stateV));
+ .then(async stateV => {
+ this.debug(`found state: ${JSON.stringify(stateV)}`);
const params = JSON.parse(stateV.val);
const bind_source = params.bind_source,
bind_source_ep = params.bind_source_ep,
bind_target = params.bind_target,
bind_target_ep = params.bind_target_ep;
- await this.doBindUnbind('unbind', bind_source, bind_source_ep, bind_target, bind_target_ep, async (err) => {
+ await this.doBindUnbind('unbind', bind_source, bind_source_ep, bind_target, bind_target_ep, async err => {
if (err) {
callback({error: err});
} else {
@@ -308,11 +307,11 @@ class Binding {
}
});
return Promise.all(chain).then(() => {
- this.debug('getBinding result: ' + JSON.stringify(binding));
+ this.debug(`getBinding result: ${JSON.stringify(binding)}`);
callback(binding);
});
} else {
- this.debug('getBinding result: ' + JSON.stringify(binding));
+ this.debug(`getBinding result: ${JSON.stringify(binding)}`);
callback(binding);
}
});
diff --git a/lib/colors.js b/lib/colors.js
index b6258e01..4b5ef740 100644
--- a/lib/colors.js
+++ b/lib/colors.js
@@ -1,6 +1,5 @@
'use strict';
-
const namedColors = {
mediumvioletred: {
rgb: '#c71585',
@@ -424,15 +423,15 @@ const namedColors = {
},
};
-function NamedColorToRGBstring(name)
-{
+function namedColorToRGBstring(name) {
const lowerName = name.toLowerCase();
- if (namedColors.hasOwnProperty(lowerName)) return namedColors[lowerName].rgb;
+ if (namedColors.hasOwnProperty(lowerName)) {
+ return namedColors[lowerName].rgb;
+ }
return '#0088FF';
}
-function ParseColor(rgbstring)
-{
+function parseColor(rgbstring) {
if (typeof(rgbstring) === 'string') {
const lowerName = rgbstring.toLowerCase();
if (namedColors.hasOwnProperty(lowerName))
@@ -446,15 +445,18 @@ function ParseColor(rgbstring)
oneColor.b = val % 256;
return oneColor;
}
- return {r:0,g:128,b:255};
+
+ return {r: 0,g: 128,b: 255};
}
-function NamedColorToRGB(name)
-{
- if (namedColors.hasOwnProperty(name)) return ParseColor(namedColors[name].rgb);
- return {r:0,g:128,b:255};
+function namedColorToRGB(name) {
+ if (namedColors.hasOwnProperty(name)) {
+ return parseColor(namedColors[name].rgb);
+ }
+
+ return {r: 0, g: 128, b: 255};
}
-exports.NamedColorToRGB = NamedColorToRGB;
-exports.NamedCOlorToRGBString = NamedColorToRGBstring;
-exports.ParseColor = ParseColor;
+exports.NamedColorToRGB = namedColorToRGB;
+exports.NamedCOlorToRGBString = namedColorToRGBstring;
+exports.ParseColor = parseColor;
diff --git a/lib/commands.js b/lib/commands.js
index 44b533cc..02789663 100644
--- a/lib/commands.js
+++ b/lib/commands.js
@@ -112,7 +112,6 @@ class Commands {
}
}
-
letsPairing(from, command, message, callback) {
if (this.zbController) {
let devId = '';
@@ -123,11 +122,11 @@ class Commands {
this.adapter.logToPairing('Pairing started ' + devId, true);
let cTimer = Number(this.adapter.config.countDown);
- if (!this.adapter.config.countDown || cTimer == 0) {
+ if (!this.adapter.config.countDown || !cTimer) {
cTimer = 60;
}
- this.zbController.permitJoin(cTimer, devId, (err) => {
+ this.zbController.permitJoin(cTimer, devId, err => {
if (!err) {
// set pairing mode on
this.adapter.setState('info.pairingMode', true);
@@ -149,7 +148,7 @@ class Commands {
this.adapter.logToPairing('Touchlink reset started ', true);
let cTimer = Number(this.adapter.config.countDown);
- if (!this.adapter.config.countDown || cTimer == 0) {
+ if (!this.adapter.config.countDown || !cTimer) {
cTimer = 60;
}
@@ -170,20 +169,18 @@ class Commands {
const groups = {};
let rooms;
this.adapter.getEnumsAsync('enum.rooms')
- .then((enums) => {
+ .then(enums => {
// rooms
rooms = enums['enum.rooms'];
})
- .then(() => {
- // get all adapter devices
- return this.adapter.getDevicesAsync();
- })
- .then(async (result) => {
- const alls = (id) ? await this.adapter.getStatesAsync(id+'.*') : await this.adapter.getStatesAsync('*');
- const allst = (id) ? await this.adapter.getStatesOfAsync(id) : await this.adapter.getStatesOfAsync();
- result = result.filter((item)=>!id || id == item._id);
+ // get all adapter devices
+ .then(() => this.adapter.getDevicesAsync())
+ .then(async result => {
+ const alls = id ? await this.adapter.getStatesAsync(id + '.*') : await this.adapter.getStatesAsync('*');
+ const allst = id ? await this.adapter.getStatesOfAsync(id) : await this.adapter.getStatesOfAsync();
+ result = result.filter(item => !id || id === item._id);
// get device states and groups
- result.forEach(async (devInfo) => {
+ result.forEach(async devInfo => {
if (devInfo._id) {
// groups
// const grState = alls[`${devInfo._id}.groups`];
@@ -192,31 +189,31 @@ class Commands {
// }
// battery and link_quality
const lqState = alls[`${devInfo._id}.link_quality`];
- devInfo.link_quality = (lqState) ? lqState.val: undefined;
- devInfo.link_quality_lc = (lqState) ? lqState.lc: undefined;
+ devInfo.link_quality = lqState ? lqState.val: undefined;
+ devInfo.link_quality_lc = lqState ? lqState.lc: undefined;
const batState = alls[`${devInfo._id}.battery`];
- devInfo.battery = (batState) ? batState.val: undefined;
+ devInfo.battery = batState ? batState.val: undefined;
// devInfo.states = states || {};
- const states = allst.filter((item)=>item._id.startsWith(devInfo._id));
+ const states = allst.filter(item => item._id.startsWith(devInfo._id));
// put only allowed states
- devInfo.statesDef = (states || []).filter((stateDef)=>{
+ devInfo.statesDef = (states || []).filter(stateDef => {
const sid = stateDef._id;
const name = sid.split('.').pop();
- if (disallowedDashStates.includes(name)) return false;
- return true;
- }).map((stateDef)=>{
+ return !disallowedDashStates.includes(name);
+
+ }).map(stateDef => {
const name = stateDef.common.name;
const devname = devInfo.common.name;
// replace state
return {
id: stateDef._id,
- name: (typeof name === 'string') ? name.replace(devname, '') : name,
+ name: typeof name === 'string' ? name.replace(devname, '') : name,
type: stateDef.common.type,
read: stateDef.common.read,
write: stateDef.common.write,
- val: (alls[stateDef._id]) ? alls[stateDef._id].val : undefined,
+ val: alls[stateDef._id] ? alls[stateDef._id].val : undefined,
role: stateDef.common.role,
unit: stateDef.common.unit,
states: stateDef.common.states,
@@ -226,7 +223,7 @@ class Commands {
});
return result;
})
- .then(async (result) => {
+ .then(async result => {
// combine info
const devices = [];
for (const devInfo of result) {
@@ -237,40 +234,37 @@ class Commands {
const match = /zigbee.\d.group_([0-9]+)/.exec(devInfo._id);
if (match && match.length > 1) {
const groupmembers = await this.zbController.getGroupMembersFromController(match[1]);
- this.debug('group members: ' + JSON.stringify(groupmembers));
+ this.debug(`group members: ${JSON.stringify(groupmembers)}`);
if (groupmembers && groupmembers.length > 0) {
const memberinfo = [];
for (const member of groupmembers) {
if (groups) {
const grouparray = groups[member.ieee];
- if (grouparray)
- {
+ if (grouparray) {
if (!grouparray.includes(match[1])) {
- groups[member.ieee].push(match[1])
+ groups[member.ieee].push(match[1]);
}
}
else groups[member.ieee] = [match[1]];
}
- const device = await this.adapter.getObjectAsync(this.adapter.namespace + '.' + member.ieee.substr(2));
+ const device = await this.adapter.getObjectAsync(`${this.adapter.namespace}.${member.ieee.substr(2)}`);
if (device) {
member.device = device.common.name;
- }
- else {
+ } else {
member.device = 'unknown';
}
memberinfo.push(member);
}
devInfo.memberinfo = memberinfo;
- this.debug('memberinfo: ' + JSON.stringify(devInfo.memberinfo));
+ this.debug(`memberinfo: ${JSON.stringify(devInfo.memberinfo)}`);
}
}
- }
- else
- {
+ } else {
const modelDesc = statesMapping.findModel(devInfo.common.type);
devInfo.icon = (modelDesc && modelDesc.icon) ? modelDesc.icon : 'img/unknown.png';
- devInfo.vendor = (modelDesc) ? modelDesc.vendor : '';
+ devInfo.vendor = modelDesc ? modelDesc.vendor : '';
}
+
const id = getZbId(devInfo._id);
devInfo.info = await this.zbController.resolveEntity(id);
@@ -279,10 +273,11 @@ class Commands {
if (!rooms.hasOwnProperty(room) ||
!rooms[room] ||
!rooms[room].common ||
- !rooms[room].common.members) {
+ !rooms[room].common.members
+ ) {
continue;
}
- if (rooms[room].common.members.indexOf(devInfo._id) !== -1) {
+ if (rooms[room].common.members.includes(devInfo._id)) {
devInfo.rooms.push(rooms[room].common.name);
}
}
@@ -295,18 +290,20 @@ class Commands {
.then(async (devices) => {
// fill group info
for (const groupdev in groups) {
- this.debug('GetDevices scanning group ' + groupdev + ' ' + JSON.stringify(groups[groupdev]))
- const device = devices.find((dev) =>( groupdev === getZbId(dev._id) ))
+ this.debug(`GetDevices scanning group ${groupdev} ${JSON.stringify(groups[groupdev])}`);
+ const device = devices.find((dev) =>( groupdev === getZbId(dev._id) ));
if (device) {
- device.groups = groups[groupdev]
- this.debug('adding group info to device ' + groupdev);
+ device.groups = groups[groupdev];
+ this.debug(`adding group info to device ${groupdev}`);
}
}
// append devices that paired but not created
if (!id) {
for (const d of pairedDevices) {
const device = await this.zbController.resolveEntity(d.ieeeAddr);
- if (!device) continue;
+ if (!device) {
+ continue;
+ }
const exists = devices.find((dev) => (dev._id && device.device.ieeeAddr === getZbId(dev._id)));
if (!exists) {
devices.push({
@@ -325,13 +322,11 @@ class Commands {
}
return devices;
})
- .then((devices) => {
- this.debug('getDevices result: ' + JSON.stringify(devices));
+ .then(devices => {
+ this.debug(`getDevices result: ${JSON.stringify(devices)}`);
this.adapter.sendTo(from, command, devices, callback);
})
- .catch((err) => {
- this.error('getDevices error: ' + err.stack);
- });
+ .catch(err => this.error(`getDevices error: ${err.stack}`));
} else {
this.adapter.sendTo(from, command, {error: 'You need save and run adapter before pairing!'}, callback);
}
@@ -352,17 +347,16 @@ class Commands {
const coordinatorVersion = await this.adapter.zbController.herdsman.getCoordinatorVersion();
- await this.adapter.getForeignObject('system.adapter.' + this.adapter.namespace, (err, obj) => {
+ await this.adapter.getForeignObject(`system.adapter.${this.adapter.namespace}`, (err, obj) => {
if (!err && obj) {
if (obj.common.installedFrom && obj.common.installedFrom.includes('://')) {
const instFrom = obj.common.installedFrom;
- coordinatorinfo.installSource = instFrom.replace('tarball','commit');
+ coordinatorinfo.installSource = instFrom.replace('tarball', 'commit');
} else {
coordinatorinfo.installSource = obj.common.installedFrom;
}
}
- try
- {
+ try {
coordinatorinfo.port = obj.native.port;
coordinatorinfo.channel = obj.native.channel;
coordinatorinfo.installedVersion = obj.native.version;
@@ -370,24 +364,40 @@ class Commands {
coordinatorinfo.type = coordinatorVersion.type;
const meta = coordinatorVersion.meta;
if (meta) {
- if (meta.hasOwnProperty('revision')) coordinatorinfo.revision = meta.revision;
+ if (meta.hasOwnProperty('revision')) {
+ coordinatorinfo.revision = meta.revision;
+ }
let vt = 'x-';
- if (meta.hasOwnProperty('transportrev')) vt = meta.transportrev + '-';
- if (meta.hasOwnProperty('product')) vt = vt + meta.product + '.';
- else vt = vt + 'x.';
- if (meta.hasOwnProperty('majorrel')) vt = vt + meta.majorrel + '.';
- else vt = vt + 'x.';
- if (meta.hasOwnProperty('minorrel')) vt = vt + meta.minorrel + '.';
- else vt = vt + 'x.';
- if (meta.hasOwnProperty('maintrel')) vt = vt + meta.maintrel + '.';
- else vt = vt + 'x.';
+ if (meta.hasOwnProperty('transportrev')) {
+ vt = meta.transportrev + '-';
+ }
+ if (meta.hasOwnProperty('product')) {
+ vt = vt + meta.product + '.';
+ } else {
+ vt = vt + 'x.';
+ }
+ if (meta.hasOwnProperty('majorrel')) {
+ vt = vt + meta.majorrel + '.';
+ } else {
+ vt = vt + 'x.';
+ }
+ if (meta.hasOwnProperty('minorrel')) {
+ vt = vt + meta.minorrel + '.';
+ } else {
+ vt = vt + 'x.';
+ }
+ if (meta.hasOwnProperty('maintrel')) {
+ vt = vt + meta.maintrel + '.';
+ } else {
+ vt = vt + 'x.';
+ }
coordinatorinfo.version = vt;
}
}
}
catch { this.warn('exception raised in getCoordinatorInfo');}
- this.debug('getCoorinatorInfo result: ' + JSON.stringify(coordinatorinfo));
+ this.debug(`getCoorinatorInfo result: ${JSON.stringify(coordinatorinfo)}`);
this.adapter.sendTo(from, command, coordinatorinfo, callback);
});
} else {
@@ -407,28 +417,26 @@ class Commands {
deleteDevice(from, command, msg, callback) {
if (this.zbController && this.stController) {
- this.debug('deleteDevice message: ' + JSON.stringify(msg));
+ this.debug(`deleteDevice message: ${JSON.stringify(msg)}`);
const id = msg.id;
const force = msg.force;
const sysid = id.replace(this.adapter.namespace + '.', '0x');
const devId = id.replace(this.adapter.namespace + '.', '');
- this.debug('deleteDevice sysid: ' + sysid);
+ this.debug(`deleteDevice sysid: ${sysid}`);
const dev = this.zbController.getDevice(sysid);
if (!dev) {
this.debug('Not found!');
- this.debug('Try delete dev ' + devId + ' from iobroker.');
- this.stController.deleteDeviceStates(devId, () => {
- this.adapter.sendTo(from, command, {}, callback);
- });
+ this.debug(`Try delete dev ${devId} from iobroker.`);
+ this.stController.deleteDeviceStates(devId, () =>
+ this.adapter.sendTo(from, command, {}, callback));
return;
}
- this.zbController.remove(sysid, force, (err) => {
+ this.zbController.remove(sysid, force, err => {
if (!err) {
- this.stController.deleteDeviceStates(devId, () => {
- this.adapter.sendTo(from, command, {}, callback);
- });
+ this.stController.deleteDeviceStates(devId, () =>
+ this.adapter.sendTo(from, command, {}, callback));
} else {
- this.debug('Error on remove! ' + err);
+ this.debug(`Error on remove! ${err}`);
this.adapter.sendTo(from, command, {error: err}, callback);
}
});
@@ -453,7 +461,7 @@ class Commands {
async getChannels(from, command, message, callback) {
if (this.zbController) {
const result = await this.zbController.getChannelsEnergy();
- this.debug('getChannels result: ' + JSON.stringify(result));
+ this.debug(`getChannels result: ${JSON.stringify(result)}`);
this.adapter.sendTo(from, command, result, callback);
} else {
this.adapter.sendTo(
@@ -466,10 +474,10 @@ class Commands {
async setDeviceActivated(from, command, msg, callback) {
if (this.stController) {
- const id = msg.id;
- const targetstate = msg.deactivated;
- this.stController.setDeviceActivated(id, targetstate);
- this.adapter.sendTo(from, command, {}, callback);
+ const id = msg.id;
+ const targetstate = msg.deactivated;
+ this.stController.setDeviceActivated(id, targetstate);
+ this.adapter.sendTo(from, command, {}, callback);
}
}
diff --git a/lib/developer.js b/lib/developer.js
index 9459a83f..a56200e5 100755
--- a/lib/developer.js
+++ b/lib/developer.js
@@ -38,9 +38,8 @@ class Developer {
if (typeof obj === 'object' && obj.command) {
switch (obj.command) {
case 'reset':
- this.zbController.reset(obj.message.mode, function (err) {
- this.adapter.sendTo(obj.from, obj.command, err, obj.callback);
- }.bind(this));
+ this.zbController.reset(obj.message.mode, err =>
+ this.adapter.sendTo(obj.from, obj.command, err, obj.callback));
break;
case 'sendToZigbee':
this.sendToZigbee(obj);
@@ -94,7 +93,7 @@ class Developer {
cmd = zcl.Utils.getCluster(cid).getCommand(obj.message.cmd);
}
else if (cmdType === 'functionalResp') {
- cmd = zcl.Utils.getCluster(cid).getCommandResponse(obj.message.cmd);
+ cmd = zcl.Utils.getCluster(cid).getCommandResponse(obj.message.cmd);
}
else if (cmdType === 'foundation') {
cmd = zcl.Utils.getGlobalCommand((obj.message.cmd));
@@ -106,7 +105,7 @@ class Developer {
const publishTarget = this.zbController.getDevice(devId) ? devId : this.zbController.getGroup(parseInt(devId));
if (!publishTarget) {
- this.adapter.sendTo(obj.from, obj.command, {localErr: 'Device or group ' + devId + ' not found!'}, obj.callback);
+ this.adapter.sendTo(obj.from, obj.command, {localErr: `Device or group ${devId} not found!`}, obj.callback);
return;
}
if (!cid || !cmd) {
@@ -137,8 +136,8 @@ class Developer {
result.statusCode = exception.code;
this.adapter.sendTo(obj.from, obj.command, result, obj.callback);
} else {
- this.error('SendToZigbee failed! (' + exception + ')');
- // exception (Error class) cannot be send to adapter, send string message instead!
+ this.error(`SendToZigbee failed! (${exception})`);
+ // exception (Error class) cannot be sent to adapter, send string message instead!
this.adapter.sendTo(obj.from, obj.command, {msg: exception.message}, obj.callback);
}
}
diff --git a/lib/devices.js b/lib/devices.js
index 58d40562..6e7d4be2 100644
--- a/lib/devices.js
+++ b/lib/devices.js
@@ -1,9 +1,9 @@
'use strict';
-const states = require(__dirname + '/states.js').states;
-const utils = require(__dirname + '/utils.js');
-const rgb = require(__dirname + '/rgb.js');
-const applyExposes = require(__dirname + '/exposes.js').applyExposes;
+const states = require('./states.js').states;
+const utils = require('./utils.js');
+const rgb = require('./rgb.js');
+const applyExposes = require('./exposes.js').applyExposes;
// return list of changing states when incoming state is changed
@@ -23,7 +23,7 @@ const comb = {
// index: -1, // before main change
// timeout: 0,
index: 1, // after main change
- timeout: timeout,
+ timeout,
}];
}
} else if (disableQueue || options.state) {
@@ -32,7 +32,7 @@ const comb = {
stateDesc: states.state,
value: false,
index: 1, // after main change
- timeout: timeout,
+ timeout,
}];
}
}
@@ -42,20 +42,22 @@ const comb = {
if (state.id === states.effect_json.id) {
const effectjson = {};
try {
- if (options.hasOwnProperty('effect_speed'))
+ if (options.hasOwnProperty('effect_speed')) {
effectjson.speed = options.effect_speed;
- if (options.hasOwnProperty('effect_type'))
+ }
+ if (options.hasOwnProperty('effect_type')) {
effectjson.effect = options.effect_type;
-
- if (options.hasOwnProperty('effect_colors'))
+ }
+ if (options.hasOwnProperty('effect_colors')) {
effectjson.colors = rgb.colorsArrayFromString(options.effect_colors);
+ }
// effectjson = JSON.parse(value);
}
catch {
const effectjson = {
- colors:[{r: 255,g: 0,b: 0},{r: 0,g: 255,b: 0},{r: 0,g: 0,b: 255}],
- speed:10,
- effect:'glow',
+ colors: [{r: 255, g: 0, b: 0}, {r: 0, g: 255, b: 0}, {r: 0, g: 0, b: 255}],
+ speed: 10,
+ effect: 'glow',
};
if (options.hasOwnProperty('effect_speed'))
effectjson.speed = options.effect_speed;
@@ -131,29 +133,30 @@ const freepad_states = [states.battery];
function getKey(object, value) {
for (const key in object) {
- if (object[key]==value) return key;
+ if (object[key] == value) {
+ return key;
+ }
}
}
const unitLookup = {
'temperature': 'C',
- 'humidity':'%',
- 'altitude':'m',
- 'pressure':'Pa',
- 'quality':'ppm',
- 'particle_size':'psize',
- 'voltage':'V',
- 'current':'A',
- 'energy':'Wh',
- 'power':'W',
- 'frequency':'Hz',
- 'power_factor':'pf',
- 'illuminance_lux':'lx',
-
+ 'humidity': '%',
+ 'altitude': 'm',
+ 'pressure': 'Pa',
+ 'quality': 'ppm',
+ 'particle_size': 'psize',
+ 'voltage': 'V',
+ 'current': 'A',
+ 'energy': 'Wh',
+ 'power': 'W',
+ 'frequency': 'Hz',
+ 'power_factor': 'pf',
+ 'illuminance_lux': 'lx',
};
const generator = {
- gledopto: (entity) => {
+ gledopto: entity => {
if (entity.mapped.model === 'GL-C-008-2ID') {
return gl_lightStatesWithColor.concat(gl8_white_channel);
} else if (entity.mapped.model === 'GL-C-007-2ID') {
@@ -162,86 +165,75 @@ const generator = {
return lightStatesWithColor;
}
},
- freepad: (entity) => {
+ freepad: entity => {
const freepad_st = [];
const ecount = entity.device.endpoints.length;
for (let i = 1; i <= ecount; i++) {
- freepad_st.push(
- {
- id: `btn${i}_single`,
- prop: 'action',
- name: `Button ${i} click event`,
- icon: undefined,
- role: 'button',
- write: false,
- read: true,
- type: 'boolean',
- isEvent: true,
- getter: payload => (payload.action === `button_${i}_single`) ? true : undefined,
- }
- );
- freepad_st.push(
- {
- id: `btn${i}_double`,
- prop: 'action',
- name: `Button ${i} double click event`,
- icon: undefined,
- role: 'button',
- write: false,
- read: true,
- type: 'boolean',
- isEvent: true,
- getter: payload => (payload.action === `button_${i}_double`) ? true : undefined,
- }
- );
- freepad_st.push(
- {
- id: `btn${i}_hold`,
- prop: 'action',
- name: `Button ${i} hold`,
- icon: undefined,
- role: 'button',
- write: false,
- read: true,
- type: 'boolean',
- getter: payload => (payload.action === `button_${i}_hold`) ? true : (payload.action === `button_${i}_release`) ? false : undefined,
- }
- );
- freepad_st.push(
- {
- id: `btn${i}_triple`,
- prop: 'action',
- name: `Button ${i} triple click event`,
- icon: undefined,
- role: 'button',
- write: false,
- read: true,
- type: 'boolean',
- isEvent: true,
- getter: payload => (payload.action === `button_${i}_triple`) ? true : undefined,
- lazy: true,
- }
- );
- freepad_st.push(
- {
- id: `btn${i}_quadruple`,
- prop: 'action',
- name: `Button ${i} quadruple click event`,
- icon: undefined,
- role: 'button',
- write: false,
- read: true,
- type: 'boolean',
- isEvent: true,
- getter: payload => (payload.action === `button_${i}_quadruple`) ? true : undefined,
- lazy: true,
- }
- );
-
+ freepad_st.push({
+ id: `btn${i}_single`,
+ prop: 'action',
+ name: `Button ${i} click event`,
+ icon: undefined,
+ role: 'button',
+ write: false,
+ read: true,
+ type: 'boolean',
+ isEvent: true,
+ getter: payload => (payload.action === `button_${i}_single`) ? true : undefined,
+ });
+ freepad_st.push({
+ id: `btn${i}_double`,
+ prop: 'action',
+ name: `Button ${i} double click event`,
+ icon: undefined,
+ role: 'button',
+ write: false,
+ read: true,
+ type: 'boolean',
+ isEvent: true,
+ getter: payload => (payload.action === `button_${i}_double`) ? true : undefined,
+ });
+ freepad_st.push({
+ id: `btn${i}_hold`,
+ prop: 'action',
+ name: `Button ${i} hold`,
+ icon: undefined,
+ role: 'button',
+ write: false,
+ read: true,
+ type: 'boolean',
+ getter: payload => (payload.action === `button_${i}_hold`) ? true : (payload.action === `button_${i}_release`) ? false : undefined,
+ });
+ freepad_st.push({
+ id: `btn${i}_triple`,
+ prop: 'action',
+ name: `Button ${i} triple click event`,
+ icon: undefined,
+ role: 'button',
+ write: false,
+ read: true,
+ type: 'boolean',
+ isEvent: true,
+ getter: payload => (payload.action === `button_${i}_triple`) ? true : undefined,
+ lazy: true,
+ });
+ freepad_st.push({
+ id: `btn${i}_quadruple`,
+ prop: 'action',
+ name: `Button ${i} quadruple click event`,
+ icon: undefined,
+ role: 'button',
+ write: false,
+ read: true,
+ type: 'boolean',
+ isEvent: true,
+ getter: payload => (payload.action === `button_${i}_quadruple`) ? true : undefined,
+ lazy: true,
+ });
}
return freepad_states.concat(freepad_st);
},
- ptvo_switch_channels: (entity) =>{
+ ptvo_switch_channels: entity =>{
const devstates = [states.ptvo_trigger,states.ptvo_interval];
for (const endpoint of entity.device.endpoints) {
const epID = endpoint.ID;
@@ -269,7 +261,9 @@ const generator = {
if (payload.hasOwnProperty(`device_${epName}`)) {
id = (typeof(payload[`device_${epName}`]) == 'string' ? payload[`device_${epName}`].replace(/[-. ]/g, ''):'unset');
- } else if (payload.hasOwnProperty(`voltage_${epName}`)) id = 'voltage';
+ } else if (payload.hasOwnProperty(`voltage_${epName}`)) {
+ id = 'voltage';
+ }
let unit = undefined;
let measurement = undefined;
for (const item in payload) {
@@ -283,12 +277,12 @@ const generator = {
}
}
}
- if (measurement && id != 'voltage')
- rv.stateid = id + '_'+measurement;
+ if (measurement && id !== 'voltage')
+ rv.stateid = `${id}_${measurement}`;
else
rv.stateid = id;
rv.value = payload[epName];
- rv.name = (measurement? measurement + ' 0x'+ id: '0x'+id);
+ rv.name = measurement? `${measurement} 0x${id}`: `0x${id}`;
rv.unit = unit;
rv.role = measurement;
@@ -306,8 +300,8 @@ const generator = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload[`state_${epName}`] === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload[`state_${epName}`] === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
epname: epName,
setattr: 'state',
});
@@ -323,7 +317,7 @@ const generator = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === `single_${epName}`) ? true : undefined,
+ getter: payload => payload.action === `single_${epName}` ? true : undefined,
});
devstates.push({
id: `channel_${epID}.double`,
@@ -335,7 +329,7 @@ const generator = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === `double_${epName}`) ? true : undefined,
+ getter: payload => payload.action === `double_${epName}` ? true : undefined,
});
devstates.push({
id: `channel_${epID}.tripple`,
@@ -347,7 +341,7 @@ const generator = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === `tripple_${epName}`) ? true : undefined,
+ getter: payload => payload.action === `tripple_${epName}` ? true : undefined,
});
}
if (endpoint.supportsOutputCluster('genLevelCtrl')) {
@@ -362,12 +356,8 @@ const generator = {
unit: '',
min: 0,
max: 100,
- getter: payload => {
- return utils.bulbLevelToAdapterLevel(payload[`brightness_${epName}`]);
- },
- setter: (value) => {
- return utils.adapterLevelToBulbLevel(value);
- },
+ getter: payload => utils.bulbLevelToAdapterLevel(payload[`brightness_${epName}`]),
+ setter: value => utils.adapterLevelToBulbLevel(value),
epname: epName,
setattr: 'brightness',
});
@@ -386,9 +376,7 @@ const generator = {
getter: payload => { //l3=0 brightness_l3=0
return payload[`${epName}`]; //return payload[`brightness_${epName}`];
},
- setter: (value) => {
- return value;
- },
+ setter: value => value,
epname: epName
});
}
@@ -438,9 +426,15 @@ const generator = {
read: true,
type: 'boolean',
getter: payload => {
- if ((payload.action_group % ecount) != (epidx % ecount)) return undefined;
- if (payload.action == 'brightness_move_up') return true;
- if (payload.action == 'brightness_stop') return false;
+ if ((payload.action_group % ecount) != (epidx % ecount)) {
+ return undefined;
+ }
+ if (payload.action === 'brightness_move_up') {
+ return true;
+ }
+ if (payload.action === 'brightness_stop') {
+ return false;
+ }
return undefined;
},
});
@@ -454,9 +448,15 @@ const generator = {
read: true,
type: 'boolean',
getter: payload => {
- if ((payload.action_group % ecount) != (epidx % ecount)) return undefined;
- if (payload.action == 'brightness_move_down') return true;
- if (payload.action == 'brightness_stop') return false;
+ if ((payload.action_group % ecount) != (epidx % ecount)) {
+ return undefined;
+ }
+ if (payload.action === 'brightness_move_down') {
+ return true;
+ }
+ if (payload.action === 'brightness_stop') {
+ return false;
+ }
return undefined;
},
});
@@ -502,8 +502,8 @@ const generator = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload[`state_${epName}`] === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload[`state_${epName}`] === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
epname: epName,
setattr: 'state',
});
@@ -519,7 +519,7 @@ const generator = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === `single_${epName}`) ? true : undefined,
+ getter: payload => payload.action === `single_${epName}` ? true : undefined,
});
devstates.push({
id: `btn_${epID}_double`,
@@ -531,7 +531,7 @@ const generator = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === `double_${epName}`) ? true : undefined,
+ getter: payload => payload.action === `double_${epName}` ? true : undefined,
});
devstates.push({
id: `btn_${epID}_tripple`,
@@ -543,7 +543,7 @@ const generator = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === `tripple_${epName}`) ? true : undefined,
+ getter: payload => payload.action === `tripple_${epName}` ? true : undefined,
});
}
if (endpoint.supportsOutputCluster('genLevelCtrl')) {
@@ -558,12 +558,8 @@ const generator = {
unit: '',
min: 0,
max: 100,
- getter: payload => {
- return utils.bulbLevelToAdapterLevel(payload[`brightness_${epName}`]);
- },
- setter: (value) => {
- return utils.adapterLevelToBulbLevel(value);
- },
+ getter: payload => utils.bulbLevelToAdapterLevel(payload[`brightness_${epName}`]),
+ setter: value => utils.adapterLevelToBulbLevel(value),
epname: epName,
setattr: 'brightness',
});
@@ -824,7 +820,7 @@ const devices = [
models: ['ZNCLDJ11LM'],
icon: 'img/aqara_curtain.png',
states: [states.curtain_position, states.curtain_running, states.curtain_stop, states.curtain_xiaomi_reverse_direction,
- states.curtain_xiaomi_reset_limits, states.curtain_xiaomi_hand_open],
+ states.curtain_xiaomi_reset_limits, states.curtain_xiaomi_hand_open],
},
{
models: ['WXCJKG11LM'],
@@ -3044,7 +3040,7 @@ const devices = [
states: generator.icasa_remote,
},
- /* images only for admin */
+ /* ------------ images only for admin ------------------- */
{
models: ['E1812'],
icon: 'img/ikea_E1812.png',
@@ -3075,13 +3071,12 @@ const devices = [
},
{
models: ['TI0001-cover'],
- icon: 'img/TI0001-cover.png',
+ icon: 'img/TI0001-cover.png',
},
{
models: ['E1603/E1702/E1708'],
icon: 'img/ikea_control_outlet.png',
},
-
];
const commonStates = [
@@ -3094,12 +3089,11 @@ const commonStates = [
const groupStates = [states.brightness_step].concat(lightStatesWithColor);
-
function getByModel() {
const byModel = new Map();
for (const device of devices) {
for (const model of device.models) {
- const stripModel = model.replace(/\0.*$/g, '').trim();
+ const stripModel = model.replace(/0.*$/g, '').trim();
byModel.set(stripModel, device);
}
}
@@ -3121,25 +3115,22 @@ function fillStatesWithExposes(allExcludesObj) {
function removeEmptyStates(devices) {
for (const device of devices) {
if (Array.isArray(device.states)) {
- device.states = device.states.filter((el) => el !== undefined);
+ device.states = device.states.filter(el => el !== undefined);
}
}
}
-
function findModel(model) {
const byModel = getByModel();
- const stripModel = (model) ? model.replace(/\0.*$/g, '').trim() : '';
+ const stripModel = (model) ? model.replace(/0.*$/g, '').trim() : '';
return byModel.get(stripModel);
}
-
-
module.exports = {
- devices: devices,
- commonStates: commonStates,
- groupStates: groupStates,
+ devices,
+ commonStates,
+ groupStates,
groupsState: states.groups,
- fillStatesWithExposes: fillStatesWithExposes,
- findModel: findModel
+ fillStatesWithExposes,
+ findModel,
};
diff --git a/lib/exclude.js b/lib/exclude.js
index d5f4d23b..c2714f1d 100644
--- a/lib/exclude.js
+++ b/lib/exclude.js
@@ -27,13 +27,12 @@ class Exclude {
debug(msg) {
this.adapter.log.debug(msg);
}
-
+
warn(msg) {
this.adapter.log.warn(msg);
}
-
/**
* @param {ioBroker.Message} obj
*/
@@ -42,24 +41,21 @@ class Exclude {
switch (obj.command) {
case 'addExclude':
if (obj && obj.message && typeof obj.message === 'object') {
- this.addExclude(obj.from, obj.command, obj.message, (err)=>{
- this.adapter.sendTo(obj.from, obj.command, err, obj.callback);
- });
+ this.addExclude(obj.from, obj.command, obj.message, err =>
+ this.adapter.sendTo(obj.from, obj.command, err, obj.callback));
}
break;
case 'getExclude':
if (obj && obj.message && typeof obj.message === 'object') {
- this.getExclude((exclude)=>{
- this.adapter.sendTo(obj.from, obj.command, exclude, obj.callback);
- });
+ this.getExclude(exclude =>
+ this.adapter.sendTo(obj.from, obj.command, exclude, obj.callback));
}
break;
case 'delExclude':
if (obj && obj.message) {
- this.delExclude(obj.from, obj.command, obj.message, (err)=>{
- this.adapter.sendTo(obj.from, obj.command, err, obj.callback);
- });
+ this.delExclude(obj.from, obj.command, obj.message, err =>
+ this.adapter.sendTo(obj.from, obj.command, err, obj.callback));
}
break;
}
@@ -69,13 +65,14 @@ class Exclude {
getExcludeId(exclude_target) {
return `${this.extractDeviceId(exclude_target)}`;
}
-
+
extractDeviceId(stateId) {
- if (stateId)
+ if (stateId) {
return stateId.replace(`${this.adapter.namespace}.`, '');
+ }
return '';
}
-
+
extractExcludeId(stateId) {
return stateId.replace(`${this.adapter.namespace}.exclude.`, '');
}
@@ -94,27 +91,25 @@ class Exclude {
{
type: 'state',
common: {name: exclude_mod},
- }, () => {
- this.adapter.setState(stateId, exclude_mod, true, () => {
- callback();
- });
- }
+ },
+ () => this.adapter.setState(stateId, exclude_mod, true, () =>
+ callback()),
);
} catch (error) {
this.error(`Failed to addExclude ${error.stack}`);
throw new Error(`Failed to addExclude ${error.stack}`);
}
}
+
async delExclude(from, command, exclude_id, callback) {
try {
- this.debug('delExclude message: ' + JSON.stringify(exclude_id));
+ this.debug(`delExclude message: ${JSON.stringify(exclude_id)}`);
const stateId = `exclude.${exclude_id}`;
this.adapter.getStateAsync(stateId)
.then(async (stateV) => {
- this.debug('found state: ' + JSON.stringify(stateV));
- this.adapter.deleteState(null, 'exclude', exclude_id, async () => {
- callback();
- });
+ this.debug(`found state: ${JSON.stringify(stateV)}`);
+ this.adapter.deleteState(null, 'exclude', exclude_id, async () =>
+ callback());
});
} catch (error) {
this.error(`Failed to delExclude ${error.stack}`);
@@ -130,32 +125,31 @@ class Exclude {
const exc = [];
states.forEach(state => {
if (state._id.startsWith(`${this.adapter.namespace}.exclude`)) {
- exc.push(new Promise(resolve => {
- return this.adapter.getStateAsync(state._id)
+ exc.push(new Promise(resolve =>
+ this.adapter.getStateAsync(state._id)
.then(stateVa => {
if (stateVa !== null) {
const val = {
id: this.extractExcludeId(state._id),
- name : stateVa.val
+ name: stateVa.val
};
if (this.extractExcludeId(state._id) !== 'all') {
exclude.push(val);
}
}
resolve();
- });
- }));
+ })));
}
});
- return Promise.all(exc).then(() => {
- const arrExclude = JSON.stringify(exclude);
- this.debug('getExclude result: ' + arrExclude);
- this.adapter.setState('exclude.all', arrExclude, true, () => {
- callback(exclude);
+ return Promise.all(exc)
+ .then(() => {
+ const arrExclude = JSON.stringify(exclude);
+ this.debug(`getExclude result: ${arrExclude}`);
+ this.adapter.setState('exclude.all', arrExclude, true, () =>
+ callback(exclude));
});
- });
} else {
- this.debug('getExclude result: ' + JSON.stringify(exclude));
+ this.debug(`getExclude result: ${JSON.stringify(exclude)}`);
callback(exclude);
}
});
diff --git a/lib/exposes.js b/lib/exposes.js
index d08a596d..2ac2cdd2 100644
--- a/lib/exposes.js
+++ b/lib/exposes.js
@@ -1,10 +1,10 @@
'use strict';
const zigbeeHerdsmanConverters = require('zigbee-herdsman-converters');
-const statesDefs = require(__dirname + '/states.js').states;
-const rgb = require(__dirname + '/rgb.js');
-const utils = require(__dirname + '/utils.js');
-const colors = require(__dirname + '/colors.js');
+const statesDefs = require('./states.js').states;
+const rgb = require('./rgb.js');
+const utils = require('./utils.js');
+const colors = require('./colors.js');
const ea = zigbeeHerdsmanConverters.exposes.access;
function genState(expose, role, name, desc) {
@@ -32,7 +32,7 @@ function genState(expose, role, name, desc) {
state.getter = payload => (payload[propName] === (expose.value_on || 'ON'));
}
else {
- state.getter = payload => ( undefined);
+ state.getter = payload => undefined;
}
if (writable) {
state.setter = (value) => (value) ? (expose.value_on || 'ON') : ((expose.value_off != undefined) ? expose.value_off : 'OFF');
@@ -72,7 +72,7 @@ function genState(expose, role, name, desc) {
write: writable,
read: true,
type: 'string',
- states: expose.values.map((item) => `${item}:${item}`).join(';'),
+ states: expose.values.map(item => `${item}:${item}`).join(';'),
};
if (expose.endpoint) {
state.epname = expose.endpoint;
@@ -103,8 +103,6 @@ function genState(expose, role, name, desc) {
return state;
}
-
-
function createFromExposes(model, def) {
const states = [];
// make the different (set and get) part of state is updatable if different exposes is used for get and set
@@ -121,22 +119,24 @@ function createFromExposes(model, def) {
if (state === undefined) {
return 0;
}
- if (access === undefined) access = ea.ALL;
+ if (access === undefined) {
+ access = ea.ALL;
+ }
state.readable = (access & ea.STATE) > 0;
state.writable = (access & ea.SET) > 0;
- const stateExists = states.findIndex( (element, index, array) => (element.id === state.id ));
- if (stateExists < 0 ) {
+ const stateExists = states.findIndex( (element, index, array) => element.id === state.id);
+ if (stateExists < 0) {
state.write = state.writable;
- if (! state.writable) {
- if ( state.hasOwnProperty('setter') ) {
+ if (!state.writable) {
+ if (state.hasOwnProperty('setter')) {
delete state.setter;
}
- if ( state.hasOwnProperty('setattr') ) {
+ if (state.hasOwnProperty('setattr')) {
delete state.setattr;
}
}
- if (! state.readable) {
- if (state.hasOwnProperty('getter') ) {
+ if (!state.readable) {
+ if (state.hasOwnProperty('getter')) {
//to awid some worning on unprocessed data
state.getter = payload => ( undefined );
}
@@ -144,7 +144,7 @@ function createFromExposes(model, def) {
return states.push(state);
}
else {
- if ( (state.readable) && (! states[stateExists].readable ) ) {
+ if ((state.readable) && (!states[stateExists].readable)) {
states[stateExists].read = state.read;
// as state is readable, it can't be button or event
if (states[stateExists].role === 'button') {
@@ -160,58 +160,58 @@ function createFromExposes(model, def) {
// trying to remove the `prop` property, as main key for get and set,
// as it can be different in new and old states, and leave only:
// setattr for old and id for new
- if (( state.hasOwnProperty('prop') ) && (state.prop === state.id)) {
+ if ((state.hasOwnProperty('prop')) && (state.prop === state.id)) {
if ( states[stateExists].hasOwnProperty('prop') ) {
if (states[stateExists].prop !== states[stateExists].id) {
- if (! states[stateExists].hasOwnProperty('setattr')) {
+ if (!states[stateExists].hasOwnProperty('setattr')) {
states[stateExists].setattr = states[stateExists].prop;
}
}
delete states[stateExists].prop;
}
- }
- else if ( state.hasOwnProperty('prop') ) {
+ } else if ( state.hasOwnProperty('prop') ) {
states[stateExists].prop = state.prop;
}
states[stateExists].readable = true;
}
- if ( (state.writable) && (! states[stateExists].writable ) ) {
+ if ((state.writable) && (!states[stateExists].writable)) {
states[stateExists].write = state.writable;
// use new state `setter`
- if ( state.hasOwnProperty('setter') ) {
+ if (state.hasOwnProperty('setter')) {
states[stateExists].setter = state.setter;
}
// use new state `setterOpt`
- if ( state.hasOwnProperty('setterOpt') ) {
+ if (state.hasOwnProperty('setterOpt')) {
states[stateExists].setterOpt = state.setterOpt;
}
// use new state `inOptions`
- if ( state.hasOwnProperty('inOptions') ) {
+ if (state.hasOwnProperty('inOptions')) {
states[stateExists].inOptions = state.inOptions;
}
// as we have new state, responsible for set, we have to use new `isOption`
// or remove it
- if (((! state.hasOwnProperty('isOption') ) || (state.isOptions === false))
+ if (((!state.hasOwnProperty('isOption')) || (state.isOptions === false))
&& (states[stateExists].hasOwnProperty('isOption'))) {
delete states[stateExists].isOption;
- }
- else {
+ } else {
states[stateExists].isOption = state.isOption;
}
+
// use new `setattr` or `prop` as `setattr`
- if ( state.hasOwnProperty('setattr') ) {
+ if (state.hasOwnProperty('setattr')) {
states[stateExists].setattr = state.setattr;
- }
- else if ( state.hasOwnProperty('prop') ) {
+ } else if (state.hasOwnProperty('prop')) {
states[stateExists].setattr = state.prop;
}
+
// remove `prop` equal to if, due to prop is uses as key in set and get
- if ( states[stateExists].prop === states[stateExists].id) {
+ if (states[stateExists].prop === states[stateExists].id) {
delete states[stateExists].prop;
}
- if ( state.hasOwnProperty('epname') ) {
+ if (state.hasOwnProperty('epname')) {
states[stateExists].epname = state.epname;
}
+
states[stateExists].writable = true;
}
return states.length;
@@ -242,6 +242,7 @@ function createFromExposes(model, def) {
}, prop.access);
break;
}
+
case 'brightness': {
const stateNameB = expose.endpoint ? `brightness_${expose.endpoint}` : 'brightness';
pushToStates({
@@ -255,12 +256,8 @@ function createFromExposes(model, def) {
min: 0, // ignore expose.value_min
max: 100, // ignore expose.value_max
inOptions: true,
- getter: payload => {
- return utils.bulbLevelToAdapterLevel(payload[stateNameB]);
- },
- setter: (value) => {
- return utils.adapterLevelToBulbLevel(value);
- },
+ getter: payload => utils.bulbLevelToAdapterLevel(payload[stateNameB]),
+ setter: value => utils.adapterLevelToBulbLevel(value),
setterOpt: (value, options) => {
const hasTransitionTime = options && options.hasOwnProperty('transition_time');
const transitionTime = hasTransitionTime ? options.transition_time : 0;
@@ -268,7 +265,7 @@ function createFromExposes(model, def) {
preparedOptions.brightness = utils.adapterLevelToBulbLevel(value);
return preparedOptions;
},
- readResponse: (resp) => {
+ readResponse: resp => {
const respObj = resp[0];
if (respObj.status === 0 && respObj.attrData != undefined) {
return utils.bulbLevelToAdapterLevel(respObj.attrData);
@@ -282,30 +279,30 @@ function createFromExposes(model, def) {
}
case 'color_temp': {
const stateNameT = expose.endpoint ? `colortemp_${expose.endpoint}` : 'colortemp';
- pushToStates({
- id: stateNameT,
- prop: expose.endpoint ? `color_temp_${expose.endpoint}` : 'color_temp',
- name: `Color temperature ${expose.endpoint ? expose.endpoint : ''}`.trim(),
- icon: undefined,
- role: 'level.color.temperature',
- write: true,
- read: true,
- type: 'number',
- // Ignore min and max value, so setting mireds and Kelvin with conversion to mireds works.
- // https://github.com/ioBroker/ioBroker.zigbee/pull/1433#issuecomment-1113837035
- min: undefined,
- max: undefined,
- setter: (value) => {
- return utils.toMired(value);
- },
- setterOpt: (value, options) => {
- const hasTransitionTime = options && options.hasOwnProperty('transition_time');
- const transitionTime = hasTransitionTime ? options.transition_time : 0;
- return {...options, transition: transitionTime};
+ pushToStates(
+ {
+ id: stateNameT,
+ prop: expose.endpoint ? `color_temp_${expose.endpoint}` : 'color_temp',
+ name: `Color temperature ${expose.endpoint ? expose.endpoint : ''}`.trim(),
+ icon: undefined,
+ role: 'level.color.temperature',
+ write: true,
+ read: true,
+ type: 'number',
+ // Ignore min and max value, so setting mireds and Kelvin with conversion to mireds works.
+ // https://github.com/ioBroker/ioBroker.zigbee/pull/1433#issuecomment-1113837035
+ min: undefined,
+ max: undefined,
+ setter: value => utils.toMired(value),
+ setterOpt: (value, options) => {
+ const hasTransitionTime = options && options.hasOwnProperty('transition_time');
+ const transitionTime = hasTransitionTime ? options.transition_time : 0;
+ return {...options, transition: transitionTime};
+ },
+ epname: expose.endpoint,
+ setattr: 'color_temp',
},
- epname: expose.endpoint,
- setattr: 'color_temp',
- }, prop.access);
+ prop.access);
pushToStates(statesDefs.colortemp_move, prop.access);
break;
}
@@ -320,7 +317,7 @@ function createFromExposes(model, def) {
write: true,
read: true,
type: 'string',
- setter: (value) => {
+ setter: value => {
// convert RGB to XY for set
/*
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(value);
@@ -342,9 +339,8 @@ function createFromExposes(model, def) {
xy = rgb.rgb_to_cie(rgbcolor.r, rgbcolor.g, rgbcolor.b);
return {
x: xy[0],
- y: xy[1]
+ y: xy[1],
};
-
},
setterOpt: (value, options) => {
const hasTransitionTime = options && options.hasOwnProperty('transition_time');
@@ -354,7 +350,7 @@ function createFromExposes(model, def) {
getter: payload => {
if (payload.color && payload.color.hasOwnProperty('x') && payload.color.hasOwnProperty('y')) {
const colorval = rgb.cie_to_rgb(payload.color.x, payload.color.y);
- return '#' + utils.decimalToHex(colorval[0]) + utils.decimalToHex(colorval[1]) + utils.decimalToHex(colorval[2]);
+ return `#${utils.decimalToHex(colorval[0])}${utils.decimalToHex(colorval[1])}${utils.decimalToHex(colorval[2])}`;
} else {
return undefined;
}
@@ -375,14 +371,13 @@ function createFromExposes(model, def) {
write: true,
read: true,
type: 'string',
- setter: (value) => {
+ setter: value => {
const _rgb = colors.ParseColor(value);
const hsv = rgb.rgbToHSV(_rgb.r, _rgb.g, _rgb.b, true);
return {
hue: Math.min(Math.max(hsv.h,1),359),
saturation: hsv.s,
// brightness: Math.floor(hsv.v * 2.55),
-
};
},
setterOpt: (value, options) => {
@@ -396,7 +391,7 @@ function createFromExposes(model, def) {
pushToStates({
id: expose.endpoint ? `hue_${expose.endpoint}` : 'hue',
prop: expose.endpoint ? `color_${expose.endpoint}` : 'color',
- name: `Hue ${expose.endpoint ? expose.endpoint : ''}`.trim(),
+ name: `Hue ${expose.endpoint || ''}`.trim(),
icon: undefined,
role: 'level.color.hue',
write: true,
@@ -423,11 +418,12 @@ function createFromExposes(model, def) {
const hue_correction_table = [];
options.hue_calibration.split(',').forEach(element => {
const match = /([0-9]+):([0-9]+)/.exec(element);
- if (match && match.length ==3)
- hue_correction_table.push({ in: Number(match[1]), out: Number(match[2])});
+ if (match && match.length === 3)
+ hue_correction_table.push({in: Number(match[1]), out: Number(match[2])});
});
- if (hue_correction_table.length > 0)
+ if (hue_correction_table.length > 0) {
return {...options, transition: transitionTime, hue_correction: hue_correction_table};
+ }
}
return {...options, transition: transitionTime};
},
@@ -445,12 +441,10 @@ function createFromExposes(model, def) {
min: 0,
max: 100,
inOptions: true,
- setter: (value, options) => {
- return {
- hue: options.hue,
- saturation: value,
- };
- },
+ setter: (value, options) => ({
+ hue: options.hue,
+ saturation: value,
+ }),
setterOpt: (value, options) => {
const hasTransitionTime = options && options.hasOwnProperty('transition_time');
const transitionTime = hasTransitionTime ? options.transition_time : 0;
@@ -463,11 +457,12 @@ function createFromExposes(model, def) {
const hue_correction_table = [];
options.hue_calibration.split(',').forEach(element => {
const match = /([0-9]+):([0-9]+)/.exec(element);
- if (match && match.length ==3)
+ if (match && match.length === 3)
hue_correction_table.push({ in: Number(match[1]), out: Number(match[2])});
});
- if (hue_correction_table.length > 0)
+ if (hue_correction_table.length > 0) {
return {...options, transition: transitionTime, hue_correction: hue_correction_table};
+ }
}
return {...options, transition: transitionTime};
},
@@ -485,12 +480,10 @@ function createFromExposes(model, def) {
read: false,
type: 'string',
inOptions: true,
- setter: (value, options) => {
- return {
- hue: options.hue,
- saturation: options.saturation,
- };
- },
+ setter: (value, options) => ({
+ hue: options.hue,
+ saturation: options.saturation,
+ }),
setterOpt: (value, options) => {
const hasTransitionTime = options && options.hasOwnProperty('transition_time');
const transitionTime = hasTransitionTime ? options.transition_time : 0;
@@ -498,20 +491,20 @@ function createFromExposes(model, def) {
if (hasHueCalibrationTable)
try {
return {...options, transition: transitionTime, hue_correction: JSON.parse(options.hue_calibration)};
- }
- catch {
+ } catch {
const hue_correction_table = [];
options.hue_calibration.split(',').forEach(element => {
const match = /([0-9]+):([0-9]+)/.exec(element);
- if (match && match.length ==3)
+ if (match && match.length === 3) {
hue_correction_table.push({ in: Number(match[1]), out: Number(match[2])});
+ }
});
- if (hue_correction_table.length > 0)
+ if (hue_correction_table.length > 0) {
return {...options, transition: transitionTime, hue_correction: hue_correction_table};
+ }
}
return {...options, transition: transitionTime};
},
-
}, prop.access);
break;
}
@@ -582,19 +575,20 @@ function createFromExposes(model, def) {
break;
}
}
- if (state) pushToStates(state, expose.access);
+ if (state) {
+ pushToStates(state, expose.access);
+ }
break;
case 'enum':
switch (expose.name) {
case 'action': {
-
// Ansatz:
- // Action aufspalten in 2 Blöcke:
- // Action (bekommt text ausser hold und release, auto reset nach 250 ms)
- // Hold: wird gesetzt bei hold, gelöscht bei passendem Release
-
+ // Action aufspalten in 2 Blöcke:
+ // Action (bekommt text ausser hold und release, auto reset nach 250 ms)
+ // Hold: wird gesetzt bei hold, gelöscht bei passendem Release
+
if (!Array.isArray(expose.values)) break;
const hasHold = expose.values.find((actionName) => actionName.includes('hold'));
const hasRelease = expose.values.find((actionName) => actionName.includes('release'));
@@ -613,7 +607,7 @@ function createFromExposes(model, def) {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === actionName) ? true : (payload.action === releaseActionName) ? false : undefined,
+ getter: payload => payload.action === actionName ? true : (payload.action === releaseActionName ? false : undefined),
};
} else {
state = {
@@ -625,7 +619,7 @@ function createFromExposes(model, def) {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === actionName) ? true : undefined,
+ getter: payload => payload.action === actionName ? true : undefined,
isEvent: true,
};
}
@@ -676,7 +670,9 @@ function createFromExposes(model, def) {
break;
}
}
- if (state) pushToStates(state, expose.access);
+ if (state) {
+ pushToStates(state, expose.access);
+ }
break;
case 'text':
@@ -739,7 +735,7 @@ function createFromExposes(model, def) {
return result;
};
st.setattr = expose.property;
- };
+ }
// if we have a composite expose, the payload will be an object {expose.property : {prop.property: value}}
if (prop.access & ea.STATE) {
st.getter = payload => {
@@ -750,11 +746,10 @@ function createFromExposes(model, def) {
return undefined;
}
};
+ } else {
+ st.getter = payload => undefined;
}
- else {
- st.getter = payload => { return undefined };
- }
- ;
+
pushToStates(st, prop.access);
}
break;
@@ -764,8 +759,8 @@ function createFromExposes(model, def) {
}
const newDev = {
models: [model],
- icon: icon,
- states: states,
+ icon,
+ states,
exposed: true,
};
// make the function code printable in log
@@ -775,11 +770,11 @@ function createFromExposes(model, def) {
}
function applyExposes(mappedDevices, byModel, allExcludesObj) {
- // for exlude search
+ // for exclude search
const allExcludesStr = JSON.stringify(allExcludesObj);
// create or update device from exposes
for (const deviceDef of zigbeeHerdsmanConverters.definitions) {
- const strippedModel = (deviceDef.model) ? deviceDef.model.replace(/\0.*$/g, '').trim() : '';
+ const strippedModel = (deviceDef.model) ? deviceDef.model.replace(/0.*$/g, '').trim() : '';
// check if device is mapped
const existsMap = byModel.get(strippedModel);
@@ -794,7 +789,7 @@ function applyExposes(mappedDevices, byModel, allExcludesObj) {
existsMap.exposed = true;
}
} catch (e) {
- console.log(`Wrong expose devicedefinition ${deviceDef.vendor} ${deviceDef.model}` );
+ console.log(`Wrong expose devicedefinition ${deviceDef.vendor} ${deviceDef.model}`);
}
}
}
diff --git a/lib/groups.js b/lib/groups.js
index fad12c10..dc172670 100644
--- a/lib/groups.js
+++ b/lib/groups.js
@@ -2,7 +2,6 @@
const statesMapping = require('./devices');
-
class Groups {
constructor(adapter) {
this.adapter = adapter;
@@ -13,12 +12,12 @@ class Groups {
this.zbController = zbController;
this.stController = stController;
this.adapter.getStateAsync('info.groups')
- .then((groupsState) => {
+ .then(groupsState => {
const groups = (groupsState && groupsState.val) ? JSON.parse(groupsState.val) : {};
for (const gid in groups) {
stController.storeDeviceName(`group_${gid}`, groups[gid]);
}
-// this.Adapter.deleteState('info.groups');
+ // this.Adapter.deleteState('info.groups');
this.syncGroups();
});
}
@@ -77,15 +76,16 @@ class Groups {
for (const member of groupmembers) {
const nwk = member.deviceNetworkAddress;
const device = this.zbController.getDeviceByNetworkAddress(nwk);
- if (device && device.ieeeAddr) members.push( { device:device.ieeeAddr } );
+ if (device && device.ieeeAddr) {
+ members.push({device: device.ieeeAddr});
+ }
}
- }
- else {
+ } else {
return undefined;
}
} catch (error) {
- if (error) this.error('getGroupMembersFromController: error is ' + JSON.stringify(error) + ' ' + JSON.stringify(new Error().stack));
+ if (error) this.error(`getGroupMembersFromController: error is ${JSON.stringify(error)} ${JSON.stringify(new Error().stack)}`);
else this.error('unidentifed error in getGroupMembersFromController');
}
return members;
@@ -94,10 +94,10 @@ class Groups {
async getGroups(obj) {
const response = { groups: {} };
try {
-// const groupsState = await this.adapter.getStateAsync('info.groups');
+ // const groupsState = await this.adapter.getStateAsync('info.groups');
const herdsmanGroups = await this.zbController.getGroups();
-// const groups = (groupsState && groupsState.val) ? JSON.parse(groupsState.val) : {};
+ // const groups = (groupsState && groupsState.val) ? JSON.parse(groupsState.val) : {};
const groups = {};
if (typeof herdsmanGroups === 'object') {
@@ -108,25 +108,21 @@ class Groups {
}
}
}
- this.debug('getGroups result: ' + JSON.stringify(groups));
+ this.debug(`getGroups result: ${JSON.stringify(groups)}`);
response.groups = groups;
- }
- catch (error) {
+ } catch (error) {
response.error = `getGroups: caught error: ${error}`;
this.error(`getGroups: caught error: ${error}`);
- }
- finally {
- if (obj)
- this.adapter.sendTo(obj.from, obj.command, response, obj.callback);
-
+ } finally {
+ obj && this.adapter.sendTo(obj.from, obj.command, response, obj.callback);
}
return response.groups;
}
async updateGroupMembership(from, command, message, callback) {
try {
- const groups = (message && message.groups ? message.groups : {});
- const devId = (message && message.id ? message.id : undefined);
+ const groups = message && message.groups ? message.groups : {};
+ const devId = message && message.id ? message.id : undefined;
if (devId === undefined) {
this.adapter.sendTo(from, command, {error: 'No device specified'}, callback);
}
@@ -136,7 +132,7 @@ class Groups {
// this.adapter.setState(id, JSON.stringify(groups), true);
//const current = await this.zbController.getGroupMembersFromController(sysid);
- const errors = []
+ const errors = [];
for (const epid in groups) {
for (const gpid of groups[epid]) {
const gpidn = parseInt(gpid);
@@ -144,18 +140,17 @@ class Groups {
let response = await this.zbController.removeDevFromGroup(sysid,(-gpidn), epid);
if (response && response.error) {
errors.push(response.error);
- this.error("remove dev from group Error: "+ JSON.stringify(response.error));
+ this.error(`remove dev from group Error: ${JSON.stringify(response.error)}`);
}
- }
- else if (gpidn > 0){
+ } else if (gpidn > 0){
let response = await this.zbController.addDevToGroup(sysid,(gpidn), epid);
if (response && response.error) {
errors.push(response.error);
- this.error("add dev to group Error: "+ JSON.stringify(response.error));
+ this.error(`add dev to group Error: ${JSON.stringify(response.error)}`);
}
-
+ } else {
+ this.warn('illegal group id 0');
}
- else this.warn('illegal group id 0');
}
}
} catch (e) {
@@ -174,11 +169,13 @@ class Groups {
};
for (const member of members) {
const entity = await this.zbController.resolveEntity(member.device);
- if (!entity) return false;
+ if (!entity) {
+ return false;
+ }
this.debug(`entity: ${JSON.stringify(entity)}`);
const mappedModel = entity.mapped;
- this.debug('Mapped Model: ' + JSON.stringify(mappedModel));
- const converter = mappedModel.toZigbee.find((c) => c && (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id)));
+ this.debug(`Mapped Model: ${JSON.stringify(mappedModel)}`);
+ const converter = mappedModel.toZigbee.find(c => c && (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id)));
if (!converter) {
result.unsupported.push(member.device);
continue;
@@ -199,12 +196,12 @@ class Groups {
throw error;
}
if (result.unread.length>0) {
- this.warn('unread ' + stateDesc.id + ' change for group members ' + JSON.stringify(result.unread));
+ this.warn(`unread ${stateDesc.id} change for group members ${JSON.stringify(result.unread)}`);
}
}
async deleteGroup(from, command, message) {
-/*
+ /*
const members = await this.getGroupMembersFromController(parseInt(message));
if (members && members.length) {
for (const member of members) {
@@ -227,27 +224,26 @@ class Groups {
const objGroups = (groupsEntry && groupsEntry.val ? JSON.parse(groupsEntry.val) : {});
delete objGroups[message.toString()];
await this.adapter.setStateAsync('info.groups', JSON.stringify(objGroups), true);
-*/
+ */
await this.zbController.removeGroupById(message);
await this.stController.deleteDeviceStatesAsync(`group_${parseInt(message)}`);
}
async renameGroup(from, command, message) {
-
-// const groupsEntry = await this.adapter.getStateAsync('info.groups');
-// const objGroups = (groupsEntry && groupsEntry.val ? JSON.parse(groupsEntry.val) : {});
+ // const groupsEntry = await this.adapter.getStateAsync('info.groups');
+ // const objGroups = (groupsEntry && groupsEntry.val ? JSON.parse(groupsEntry.val) : {});
const name = message.name;
const id = `group_${message.id}`;
this.stController.storeDeviceName(id, name);
try {
- await this.zbController.verifyGroupExists(message.id);
- }
- catch (e)
- {
- if (e && e.hasOwnProperty('code')) this.warn('renameGroup caught error ' + JSON.stringify(e.code));
+ await this.zbController.verifyGroupExists(message.id);
+ } catch (e) {
+ if (e && e.hasOwnProperty('code')) {
+ this.warn(`renameGroup caught error ${JSON.stringify(e.code)}`);
+ }
}
-// objGroups[message.id.toString()] = message.name;
-// await this.adapter.setStateAsync('info.groups', JSON.stringify(objGroups), true);
+ // objGroups[message.id.toString()] = message.name;
+ // await this.adapter.setStateAsync('info.groups', JSON.stringify(objGroups), true);
const group = await this.adapter.getStateAsync(id);
if (!group) {
@@ -255,12 +251,14 @@ class Groups {
this.adapter.setObjectNotExists(id, {
type: 'device',
common: {name: name, type: 'group'},
- native: {id: id}
+ native: {id}
}, () => {
- this.adapter.extendObject(id , {common: {name: name, type: 'group'}});
+ this.adapter.extendObject(id, {common: {name, type: 'group'}});
// create writable states for groups from their devices
for (const stateInd in statesMapping.groupStates) {
- if (!statesMapping.groupStates.hasOwnProperty(stateInd)) continue;
+ if (!statesMapping.groupStates.hasOwnProperty(stateInd)) {
+ continue;
+ }
const statedesc = statesMapping.groupStates[stateInd];
const common = {
name: statedesc.name,
@@ -279,16 +277,15 @@ class Groups {
}
}
-
async syncGroups() {
const groups = await this.getGroups();
const chain = [];
const usedGroupsIds = [];
for (const j in groups) {
if (groups.hasOwnProperty(j)) {
- const id = `group_${j}`,
- name = groups[j];
- chain.push(new Promise((resolve) => {
+ const id = `group_${j}`;
+ const name = groups[j];
+ chain.push(new Promise(resolve => {
this.adapter.setObjectNotExists(id, {
type: 'device',
common: {name: name, type: 'group'},
@@ -297,7 +294,9 @@ class Groups {
this.adapter.extendObject(id, {common: {type: 'group'}});
// create writable states for groups from their devices
for (const stateInd in statesMapping.groupStates) {
- if (!statesMapping.groupStates.hasOwnProperty(stateInd)) continue;
+ if (!statesMapping.groupStates.hasOwnProperty(stateInd)) {
+ continue;
+ }
const statedesc = statesMapping.groupStates[stateInd];
const common = {
name: statedesc.name,
@@ -318,8 +317,8 @@ class Groups {
usedGroupsIds.push(parseInt(j));
}
}
- chain.push(new Promise((resolve) => {
- // remove unused adpter groups
+ chain.push(new Promise(resolve => {
+ // remove unused adapter groups
this.adapter.getDevices((err, devices) => {
if (!err) {
devices.forEach((dev) => {
@@ -334,9 +333,9 @@ class Groups {
resolve();
});
}));
- Promise.all(chain);
- }
+ await Promise.all(chain);
+ }
}
module.exports = Groups;
diff --git a/lib/json.js b/lib/json.js
index 1b9eee35..39dc63ce 100644
--- a/lib/json.js
+++ b/lib/json.js
@@ -3,15 +3,14 @@
const hasProp = Object.prototype.hasOwnProperty;
function throwsMessage(err) {
- return '[Throws: ' + (err ? err.message : '?') + ']';
+ return `[Throws: ${err ? err.message : '?'}]`;
}
function safeGetValueFromPropertyOnObject(obj, property) {
if (hasProp.call(obj, property)) {
try {
return obj[property];
- }
- catch (err) {
+ } catch (err) {
return throwsMessage(err);
}
}
@@ -27,7 +26,7 @@ function ensureProperties(obj) {
return obj;
}
- if (seen.indexOf(obj) !== -1) {
+ if (seen.includes(obj)) {
return '[Circular]';
}
seen.push(obj);
diff --git a/lib/networkmap.js b/lib/networkmap.js
index 65798ce4..fafc347f 100644
--- a/lib/networkmap.js
+++ b/lib/networkmap.js
@@ -46,8 +46,8 @@ class NetworkMap {
getMap(from, command, callback) {
if (this.zbController) {
- this.zbController.getMap((networkmap) => {
- this.adapter.log.debug('getMap result: ' + JSON.stringify(networkmap));
+ this.zbController.getMap(networkmap => {
+ this.adapter.log.debug(`getMap result: ${JSON.stringify(networkmap)}`);
this.adapter.sendTo(from, command, networkmap, callback);
});
}
diff --git a/lib/ota.js b/lib/ota.js
index 02f2e95e..e2a72c3e 100755
--- a/lib/ota.js
+++ b/lib/ota.js
@@ -65,16 +65,24 @@ class Ota {
// do not attempt update for a device which has been deactivated or is unavailable
const stateObj = await this.adapter.getObjectAsync(obj.message.devId);
if (stateObj && stateObj.common && stateObj.common.deactivated) {
- this.warn(`Device ${obj.message.devId} is deactivated, skipping...`);
- this.adapter.sendTo(obj.from, obj.command, {status: 'fail', device: getZbId(obj.message.devId), msg: 'Device is deactivated'}, obj.callback);
- return;
+ this.warn(`Device ${obj.message.devId} is deactivated, skipping...`);
+ this.adapter.sendTo(obj.from, obj.command, {
+ status: 'fail',
+ device: getZbId(obj.message.devId),
+ msg: 'Device is deactivated'
+ }, obj.callback);
+ return;
}
- const availablestate = await this.adapter.getStateAsync(obj.message.devId.replace(this.namespace + '.', '') + '.available');
- const lqi = await this.adapter.getStateAsync(obj.message.devId.replace(this.namespace + '.', '') + '.link_quality');
+ const availablestate = await this.adapter.getStateAsync(`${obj.message.devId.replace(this.namespace + '.', '')}.available`);
+ const lqi = await this.adapter.getStateAsync(`${obj.message.devId.replace(this.namespace + '.', '')}.link_quality`);
if ((availablestate && (!availablestate.val)) || (lqi && lqi.val < 1)) {
- this.warn(`Device ${obj.message.devId} is marked unavailable, skipping...`);
- this.adapter.sendTo(obj.from, obj.command, {status: 'fail', device: getZbId(obj.message.devId), msg: 'Device is marked unavailable'}, obj.callback);
- return;
+ this.warn(`Device ${obj.message.devId} is marked unavailable, skipping...`);
+ this.adapter.sendTo(obj.from, obj.command, {
+ status: 'fail',
+ device: getZbId(obj.message.devId),
+ msg: 'Device is marked unavailable'
+ }, obj.callback);
+ return;
}
this.inProgress.add(device.device.ieeeAddr);
const result = {status: 'unknown', device: device ? device.name : null};
@@ -113,14 +121,14 @@ class Ota {
// do not attempt update for a device which has been deactivated or is unavailable
const stateObj = await this.adapter.getObjectAsync(obj.message.devId);
if (stateObj && stateObj.common && stateObj.common.deactivated) {
- this.warn(`Device ${obj.message.devId} is deactivated, skipping...`);
- return;
+ this.warn(`Device ${obj.message.devId} is deactivated, skipping...`);
+ return;
}
- const availablestate = await this.adapter.getStateAsync(obj.message.devId.replace(this.namespace + '.', '') + '.available');
- const lqi = await this.adapter.getStateAsync(obj.message.devId.replace(this.namespace + '.', '') + '.link_quality');
+ const availablestate = await this.adapter.getStateAsync(`${obj.message.devId.replace(this.namespace + '.', '')}.available`);
+ const lqi = await this.adapter.getStateAsync(`${obj.message.devId.replace(this.namespace + '.', '')}.link_quality`);
if ((availablestate && (!availablestate.val)) || (lqi && lqi.val < 1)) {
- this.warn(`Device ${obj.message.devId} is marked unavailable, skipping...`);
- return;
+ this.warn(`Device ${obj.message.devId} is marked unavailable, skipping...`);
+ return;
}
this.inProgress.add(device.device.ieeeAddr);
const result = {status: 'unknown', device: device ? device.name : null};
@@ -140,7 +148,7 @@ class Ota {
const to = await this.readSoftwareBuildIDAndDateCode(device.device, true);
const [fromS, toS] = [JSON.stringify(from_), JSON.stringify(to)];
result.status = 'success';
- result.msg = `Finished update of '${device.name}'` + (to ? `, from '${fromS}' to '${toS}'` : ``);
+ result.msg = `Finished update of '${device.name}'${to ? `, from '${fromS}' to '${toS}'` : ``}`;
this.info(result.msg);
this.adapter.sendTo(obj.from, obj.command, result, obj.callback);
} catch (error) {
diff --git a/lib/rgb.js b/lib/rgb.js
index 59fcd45f..7d25cf57 100644
--- a/lib/rgb.js
+++ b/lib/rgb.js
@@ -61,23 +61,19 @@ function cie_to_rgb(x, y, brightness) {
//Convert to RGB using Wide RGB D65 conversion
let red = X * 1.656492 - Y * 0.354851 - Z * 0.255038;
- let green = -X * 0.707196 + Y * 1.655397 + Z * 0.036152;
+ let green = -X * 0.707196 + Y * 1.655397 + Z * 0.036152;
let blue = X * 0.051713 - Y * 0.121364 + Z * 1.011530;
//If red, green or blue is larger than 1.0 set it back to the maximum of 1.0
if (red > blue && red > green && red > 1.0) {
-
green = green / red;
blue = blue / red;
red = 1.0;
- }
- else if (green > blue && green > red && green > 1.0) {
-
+ } else if (green > blue && green > red && green > 1.0) {
red = red / green;
blue = blue / green;
green = 1.0;
- }
- else if (blue > red && blue > green && blue > 1.0) {
+ } else if (blue > red && blue > green && blue > 1.0) {
red = red / blue;
green = green / blue;
@@ -89,7 +85,6 @@ function cie_to_rgb(x, y, brightness) {
green = green <= 0.0031308 ? 12.92 * green : (1.0 + 0.055) * Math.pow(green, (1.0 / 2.4)) - 0.055;
blue = blue <= 0.0031308 ? 12.92 * blue : (1.0 + 0.055) * Math.pow(blue, (1.0 / 2.4)) - 0.055;
-
//Convert normalized decimal to decimal
red = Math.round(red * 255);
green = Math.round(green * 255);
@@ -120,18 +115,18 @@ function cie_to_rgb(x, y, brightness) {
*/
function rgb_to_cie(red, green, blue) {
// Apply a gamma correction to the RGB values, which makes the color more vivid and more the like the color displayed on the screen of your device
- red = (red > 0.04045) ? Math.pow((red + 0.055) / (1.0 + 0.055), 2.4) : (red / 12.92);
- green = (green > 0.04045) ? Math.pow((green + 0.055) / (1.0 + 0.055), 2.4) : (green / 12.92);
- blue = (blue > 0.04045) ? Math.pow((blue + 0.055) / (1.0 + 0.055), 2.4) : (blue / 12.92);
+ red = (red > 0.04045) ? Math.pow((red + 0.055) / (1.0 + 0.055), 2.4) : (red / 12.92);
+ green = (green > 0.04045) ? Math.pow((green + 0.055) / (1.0 + 0.055), 2.4) : (green / 12.92);
+ blue = (blue > 0.04045) ? Math.pow((blue + 0.055) / (1.0 + 0.055), 2.4) : (blue / 12.92);
// RGB values to XYZ using the Wide RGB D65 conversion formula
- const X = red * 0.664511 + green * 0.154324 + blue * 0.162028;
- const Y = red * 0.283881 + green * 0.668433 + blue * 0.047685;
- const Z = red * 0.000088 + green * 0.072310 + blue * 0.986039;
+ const X = red * 0.664511 + green * 0.154324 + blue * 0.162028;
+ const Y = red * 0.283881 + green * 0.668433 + blue * 0.047685;
+ const Z = red * 0.000088 + green * 0.072310 + blue * 0.986039;
// Calculate the xy values from the XYZ values
- let x = (X / (X + Y + Z)).toFixed(4);
- let y = (Y / (X + Y + Z)).toFixed(4);
+ let x = (X / (X + Y + Z)).toFixed(4);
+ let y = (Y / (X + Y + Z)).toFixed(4);
if (isNaN(x)) {
x = 0;
@@ -152,7 +147,9 @@ function hsvToRGB(h, s, v) {
let r; let g; let b;
if (arguments.length === 1) {
- s = h.s, v = h.v, h = h.h;
+ s = h.s;
+ v = h.v;
+ h = h.h;
}
const i = Math.floor(h * 6);
const f = h * 6 - i;
@@ -176,7 +173,9 @@ function hsvToRGB(h, s, v) {
function rgbToHSV(r, g, b, numeric) {
if (arguments.length === 1) {
- g = r.g, b = r.b, r = r.r;
+ g = r.g;
+ b = r.b;
+ r = r.r;
}
const max = Math.max(r, g, b); const min = Math.min(r, g, b);
const d = max - min;
@@ -190,11 +189,13 @@ function rgbToHSV(r, g, b, numeric) {
case g: h = (b - r) + d * 2; h /= 6 * d; break;
case b: h = (r - g) + d * 4; h /= 6 * d; break;
}
- if (numeric) return {
- h: Math.round(h*360),
- s: Math.round(s*100),
- v: Math.round(v*100),
- };
+ if (numeric) {
+ return {
+ h: Math.round(h*360),
+ s: Math.round(s*100),
+ v: Math.round(v*100),
+ };
+ }
return {
h: (h * 360).toFixed(3),
s: (s * 100).toFixed(3),
@@ -204,20 +205,17 @@ function rgbToHSV(r, g, b, numeric) {
function colorArrayFromString(value) {
if (typeof(value) === 'string') {
const rv = [];
- value.split(',').forEach(element => {
- rv.push(colors.ParseColor(element));
- });
+ value.split(',').forEach(element =>
+ rv.push(colors.ParseColor(element)));
return rv;
}
- return [{r:0,g:128,b:255}];
+ return [{r: 0, g: 128, b: 255}];
}
-function colorStringFromRGBArray(payload)
-{
- let rv = []
- payload.forEach(element => {
- rv.push(rgb_to_rgbstring(element));
- });
+function colorStringFromRGBArray(payload) {
+ const rv = [];
+ payload.forEach(element =>
+ rv.push(rgb_to_rgbstring(element)));
return rv.toString();
}
@@ -228,21 +226,26 @@ function hsv_to_cie(h,s,v){
function rgb_to_rgbstring(element) {
let col = '#';
- if (element && element.hasOwnProperty("r"))
- col = col + element.r.toString(16).padStart(2, '0');
- else col = col + '00';
- if (element && element.hasOwnProperty("g"))
- col = col + element.g.toString(16).padStart(2, '0');
- else col = col + '00';
- if (element && element.hasOwnProperty("b"))
- col = col + element.b.toString(16).padStart(2, '0');
- else col = col + '00';
+ if (element && element.hasOwnProperty('r')) {
+ col = col + element.r.toString(16).padStart(2, '0');
+ } else {
+ col = col + '00';
+ }
+ if (element && element.hasOwnProperty('g')) {
+ col = col + element.g.toString(16).padStart(2, '0');
+ } else {
+ col = col + '00';
+ }
+ if (element && element.hasOwnProperty('b')) {
+ col = col + element.b.toString(16).padStart(2, '0');
+ } else {
+ col = col + '00';
+ }
return col;
}
-
function hsvToRGBString(h,s,v) {
- return rgb_to_rgbstring(hsvToRGB(h,s,v))
+ return rgb_to_rgbstring(hsvToRGB(h,s,v));
}
exports.hsv_to_cie = hsv_to_cie;
diff --git a/lib/seriallist.js b/lib/seriallist.js
index 0c66e4cb..87d9ef30 100644
--- a/lib/seriallist.js
+++ b/lib/seriallist.js
@@ -18,7 +18,7 @@ class SerialList {
if (obj.callback) {
this.listSerial()
.then((ports) => {
- this.adapter.log.debug('List of ports: ' + JSON.stringify(ports));
+ this.adapter.log.debug(`List of ports: ${JSON.stringify(ports)}`);
this.adapter.sendTo(obj.from, obj.command, ports, obj.callback);
}).catch((err) => {
this.adapter.log.error(`List of ports error: ${err}`);
@@ -31,9 +31,9 @@ class SerialList {
}
listSerial() {
- return serialPortUtils.find([{}]).then((ports) => {
- return ports.map((port) => {return {comName: port};});
- });
+ return serialPortUtils.find([{}])
+ .then(ports =>
+ ports.map(port => ({comName: port})));
}
}
diff --git a/lib/states.js b/lib/states.js
index 2d2a893e..e08ffdcd 100644
--- a/lib/states.js
+++ b/lib/states.js
@@ -2,9 +2,9 @@
/*eslint no-unused-vars: ['off']*/
-const rgb = require(__dirname + '/rgb.js');
-const utils = require(__dirname + '/utils.js');
-const colors = require(__dirname + '/colors.js');
+const rgb = require('./rgb.js');
+const utils = require('./utils.js');
+const colors = require('./colors.js');
/* states for device:
id - sysname of state, id
@@ -43,20 +43,20 @@ const nameLookup = {
const unitLookup = {
'temperature': 'C',
- 'humidity':'%',
- 'altitude':'m',
- 'pressure':'Pa',
- 'quality':'ppm',
- 'particle_size':'psize',
- 'voltage':'V',
- 'current':'A',
- 'energy':'Wh',
- 'power':'W',
- 'frequency':'Hz',
- 'power_factor':'pf',
- 'illuminance_lux':'lx',
-
+ 'humidity': '%',
+ 'altitude': 'm',
+ 'pressure': 'Pa',
+ 'quality': 'ppm',
+ 'particle_size': 'psize',
+ 'voltage': 'V',
+ 'current': 'A',
+ 'energy': 'Wh',
+ 'power': 'W',
+ 'frequency': 'Hz',
+ 'power_factor': 'pf',
+ 'illuminance_lux': 'lx',
};
+
const timers = {};
const states = {
@@ -140,7 +140,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'single') ? true : undefined,
+ getter: payload => payload.click === 'single' ? true : undefined,
},
double_click: {
id: 'double_click',
@@ -152,7 +152,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'double') ? true : undefined,
+ getter: payload => payload.click === 'double' ? true : undefined,
},
action: {
id: 'action',
@@ -173,7 +173,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'single') ? true : undefined,
+ getter: payload => payload.action === 'single' ? true : undefined,
},
action_click: {
id: 'click',
@@ -185,7 +185,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'click') ? true : undefined,
+ getter: payload => payload.action === 'click' ? true : undefined,
},
action_double_click: {
id: 'double_click',
@@ -197,7 +197,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'double') ? true : undefined,
+ getter: payload => payload.action === 'double' ? true : undefined,
},
action_group: {
id: 'action_group',
@@ -218,7 +218,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'triple') ? true : undefined,
+ getter: payload => payload.click === 'triple' ? true : undefined,
},
quad_click: {
id: 'quad_click',
@@ -230,7 +230,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'quadruple') ? true : undefined,
+ getter: payload => payload.click === 'quadruple' ? true : undefined,
},
many_click: {
id: 'many_click',
@@ -242,7 +242,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'many') ? true : undefined,
+ getter: payload => payload.click === 'many' ? true : undefined,
},
long_click: {
id: 'long_click',
@@ -254,7 +254,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'long') ? true : undefined,
+ getter: payload => payload.click === 'long' ? true : undefined,
},
action_long_click: {
id: 'long_click',
@@ -266,7 +266,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'long') ? true : undefined,
+ getter: payload => payload.action === 'long' ? true : undefined,
},
long_press: {
id: 'long_press',
@@ -277,7 +277,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.click === 'long') ? true : (payload.click === 'long_release') ? false : undefined,
+ getter: payload => payload.click === 'long' ? true : payload.click === 'long_release' ? false : undefined,
},
voltage: {
id: 'voltage',
@@ -324,7 +324,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'left') ? true : undefined,
+ getter: payload => payload.click === 'left' ? true : undefined,
},
right_click: {
id: 'right_click',
@@ -336,7 +336,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'right') ? true : undefined,
+ getter: payload => payload.click === 'right' ? true : undefined,
},
both_click: {
id: 'both_click',
@@ -348,7 +348,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'both') ? true : undefined,
+ getter: payload => payload.click === 'both' ? true : undefined,
},
left_click_single: {
id: 'left_click',
@@ -360,7 +360,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'left_single') ? true : undefined,
+ getter: payload => payload.click === 'left_single' ? true : undefined,
},
right_click_single: {
id: 'right_click',
@@ -372,7 +372,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'right_single') ? true : undefined,
+ getter: payload => payload.click === 'right_single' ? true : undefined,
},
both_click_single: {
id: 'both_click',
@@ -384,7 +384,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'both_single') ? true : undefined,
+ getter: payload => payload.click === 'both_single' ? true : undefined,
},
left_click_long: {
id: 'left_click_long',
@@ -396,7 +396,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'left_long') ? true : undefined,
+ getter: payload => payload.click === 'left_long' ? true : undefined,
},
left_click_double: {
id: 'left_click_double',
@@ -408,7 +408,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'left_double') ? true : undefined,
+ getter: payload => payload.click === 'left_double' ? true : undefined,
},
right_click_long: {
id: 'right_click_long',
@@ -420,7 +420,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'right_long') ? true : undefined,
+ getter: payload => payload.click === 'right_long' ? true : undefined,
},
right_click_double: {
id: 'right_click_double',
@@ -432,7 +432,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'right_double') ? true : undefined,
+ getter: payload => payload.click === 'right_double' ? true : undefined,
},
both_click_long: {
id: 'both_click_long',
@@ -444,7 +444,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'both_long') ? true : undefined,
+ getter: payload => payload.click === 'both_long' ? true : undefined,
},
both_click_double: {
id: 'both_click_double',
@@ -456,7 +456,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'both_double') ? true : undefined,
+ getter: payload => payload.click === 'both_double' ? true : undefined,
},
state: {
id: 'state',
@@ -466,10 +466,10 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setterOpt: (value, options) => {
- const stateValue = (value ? 'ON' : 'OFF');
+ const stateValue = value ? 'ON' : 'OFF';
return {...options, state: stateValue};
},
inOptions: true,
@@ -482,8 +482,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
epname: 'default',
},
left_state: {
@@ -495,8 +495,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_left === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_left === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'left',
},
@@ -509,8 +509,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_right === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_right === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'right',
},
@@ -523,8 +523,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_center === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_center === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'center',
},
@@ -537,7 +537,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.button_left === 'hold')
+ getter: payload => payload.button_left === 'hold',
},
right_button: {
id: 'right_button',
@@ -548,7 +548,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.button_right === 'hold'),
+ getter: payload => payload.button_right === 'hold',
},
temperature: {
id: 'temperature',
@@ -784,7 +784,7 @@ const states = {
write: false,
read: true,
type: 'string',
- getter: payload => (payload.action === 'armmode_disarm') ? false : true,
+ getter: payload => payload.action !== 'armmode_disarm',
},
heiman_smart_controller_arm_mode: {
id: 'arm_mode',
@@ -795,7 +795,7 @@ const states = {
write: false,
read: true,
type: 'string',
- getter: payload => (payload.action === 'armmode_arm_all_zones') ? 'full' : 'partial',
+ getter: payload => payload.action === 'armmode_arm_all_zones' ? 'full' : 'partial',
},
heiman_smart_controller_emergency: {
id: 'emergency',
@@ -806,7 +806,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'emergency') ? true : false,
+ getter: payload => payload.action === 'emergency',
},
heiman_execute_warning: { // for HEIMAN HS2WD-E
id: 'execute_warning',
@@ -817,9 +817,7 @@ const states = {
write: true,
read: true,
type: 'number',
- setter: (value) => {
- return {strobe: true, duration: value};
- },
+ setter: value => ({strobe: true, duration: value}),
},
heiman_execute_warning_strobe_only: { // for HEIMAN HS2WD-E
id: 'execute_warning_strobe_only',
@@ -830,9 +828,7 @@ const states = {
write: true,
read: true,
type: 'number',
- setter: (value) => {
- return {mode: 'stop', strobe: true, duration: value};
- },
+ setter: value => ({mode: 'stop', strobe: true, duration: value}),
},
bitron_execute_warning: { // for Biton AV2010/24A
id: 'execute_warning',
@@ -843,9 +839,7 @@ const states = {
write: true,
read: true,
type: 'number',
- setter: (value) => {
- return {strobe: false, duration: value};
- },
+ setter: value => ({strobe: false, duration: value}),
},
shake: {
id: 'shake',
@@ -857,7 +851,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'shake') ? true : undefined,
+ getter: payload => payload.action === 'shake' ? true : undefined,
},
wakeup: {
id: 'wakeup',
@@ -869,7 +863,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'wakeup') ? true : undefined,
+ getter: payload => payload.action === 'wakeup' ? true : undefined,
},
fall: {
id: 'fall',
@@ -881,7 +875,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'fall') ? true : undefined,
+ getter: payload => payload.action === 'fall' ? true : undefined,
},
tap: {
id: 'tap',
@@ -893,7 +887,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'tap') ? true : undefined,
+ getter: payload => payload.action === 'tap' ? true : undefined,
},
tap_side: {
id: 'tap_side',
@@ -904,7 +898,7 @@ const states = {
write: false,
read: true,
type: 'number',
- getter: payload => (payload.action === 'tap') ? payload.side : undefined,
+ getter: payload => payload.action === 'tap' ? payload.side : undefined,
},
slide: {
id: 'slide',
@@ -916,7 +910,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'slide') ? true : undefined,
+ getter: payload => payload.action === 'slide' ? true : undefined,
},
slide_side: {
id: 'slide_side',
@@ -927,7 +921,7 @@ const states = {
write: false,
read: true,
type: 'number',
- getter: payload => (payload.action === 'slide') ? payload.side : undefined,
+ getter: payload => payload.action === 'slide' ? payload.side : undefined,
},
flip180: {
id: 'flip180',
@@ -939,7 +933,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'flip180') ? true : undefined,
+ getter: payload => payload.action === 'flip180' ? true : undefined,
},
flip180_side: {
id: 'flip180_side',
@@ -950,7 +944,7 @@ const states = {
write: false,
read: true,
type: 'number',
- getter: payload => (payload.action === 'flip180') ? payload.side : undefined,
+ getter: payload => payload.action === 'flip180' ? payload.side : undefined,
},
flip90: {
id: 'flip90',
@@ -962,7 +956,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'flip90') ? true : undefined,
+ getter: payload => payload.action === 'flip90' ? true : undefined,
},
flip90_from: {
id: 'flip90_from',
@@ -973,7 +967,7 @@ const states = {
write: false,
read: true,
type: 'number',
- getter: payload => (payload.action === 'flip90') ? payload.from_side : undefined,
+ getter: payload => payload.action === 'flip90' ? payload.from_side : undefined,
},
flip90_to: {
id: 'flip90_to',
@@ -984,7 +978,7 @@ const states = {
write: false,
read: true,
type: 'number',
- getter: payload => (payload.action === 'flip90') ? payload.to_side : undefined,
+ getter: payload => payload.action === 'flip90' ? payload.to_side : undefined,
},
rotate_left: {
id: 'rotate_left',
@@ -996,7 +990,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'rotate_left') ? true : undefined,
+ getter: payload => payload.action === 'rotate_left' ? true : undefined,
},
rotate_right: {
id: 'rotate_right',
@@ -1008,7 +1002,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'rotate_right') ? true : undefined,
+ getter: payload => payload.action === 'rotate_right' ? true : undefined,
},
rotate_stop: {
id: 'rotate_stop',
@@ -1020,7 +1014,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'rotate_stop') ? true : undefined,
+ getter: payload => payload.action === 'rotate_stop' ? true : undefined,
},
rotate_angle: {
id: 'rotate_angle',
@@ -1042,7 +1036,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'play_pause') ? true : undefined,
+ getter: payload => payload.action === 'play_pause' ? true : undefined,
},
load_power: {
id: 'load_power',
@@ -1151,9 +1145,7 @@ const states = {
unit: '',
min: 0,
max: 100,
- getter: payload => {
- return utils.bulbLevelToAdapterLevel(payload.brightness);
- },
+ getter: payload => utils.bulbLevelToAdapterLevel(payload.brightness),
},
brightness: {
id: 'brightness',
@@ -1166,12 +1158,8 @@ const states = {
unit: '',
min: 0,
max: 100,
- getter: payload => {
- return utils.bulbLevelToAdapterLevel(payload.brightness);
- },
- setter: (value, options) => {
- return utils.adapterLevelToBulbLevel(value);
- },
+ getter: payload => utils.bulbLevelToAdapterLevel(payload.brightness),
+ setter: (value, options) => utils.adapterLevelToBulbLevel(value),
setterOpt: (value, options) => {
const hasTransitionTime = options && options.hasOwnProperty('transition_time');
const transitionTime = hasTransitionTime ? options.transition_time : 0;
@@ -1179,7 +1167,7 @@ const states = {
preparedOptions.brightness = utils.adapterLevelToBulbLevel(value);
return preparedOptions;
},
- readResponse: (resp) => {
+ readResponse: resp => {
const respObj = resp[0];
if (respObj.status === 0 && respObj.attrData != undefined) {
return utils.bulbLevelToAdapterLevel(respObj.attrData);
@@ -1195,7 +1183,7 @@ const states = {
write: true,
read: true,
type: 'number',
- setter: (value) => {
+ setter: value => {
return utils.toMired(value);
},
setterOpt: (value, options) => {
@@ -1214,7 +1202,7 @@ const states = {
write: true,
read: true,
type: 'string',
- setter: (value) => {
+ setter: value => {
// convert RGB to XY for set
// const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(value);
@@ -1243,7 +1231,7 @@ const states = {
getter: payload => {
if (payload.color && payload.color.hasOwnProperty('x') && payload.color.hasOwnProperty('y')) {
const colorval = rgb.cie_to_rgb(payload.color.x, payload.color.y);
- return '#' + utils.decimalToHex(colorval[0]) + utils.decimalToHex(colorval[1]) + utils.decimalToHex(colorval[2]);
+ return `#${utils.decimalToHex(colorval[0])}${utils.decimalToHex(colorval[1])}${utils.decimalToHex(colorval[2])}`;
} else {
return undefined;
}
@@ -1269,7 +1257,7 @@ const states = {
write: true,
read: true,
type: 'boolean',
- setter: (value) => {
+ setter: value => {
return {button: 'single', state: value ? 'decoupled' : 'control_relay'};
},
},
@@ -1282,7 +1270,7 @@ const states = {
write: true,
read: true,
type: 'boolean',
- setter: (value) => {
+ setter: value => {
return {button: 'left', state: value ? 'decoupled' : 'control_left_relay'};
},
},
@@ -1295,7 +1283,7 @@ const states = {
write: true,
read: true,
type: 'boolean',
- setter: (value) => {
+ setter: value => {
return {button: 'right', state: value ? 'decoupled' : 'control_right_relay'};
},
},
@@ -1345,7 +1333,7 @@ const states = {
write: false,
read: true,
type: 'string',
- getter: payload => (payload.action === 'circle_click') ? 'press' : (payload.action === 'circle_hold') ? 'hold' : undefined,
+ getter: payload => payload.action === 'circle_click' ? 'press' : payload.action === 'circle_hold' ? 'hold' : undefined,
},
switch_state: {
id: 'state',
@@ -1356,7 +1344,7 @@ const states = {
write: false,
read: true,
type: 'string',
- getter: payload => (payload.action === 'up') ? 'up' : (payload.action === 'down') ? 'down' : (payload.action === 'circle_click') ? 'circle' : undefined,
+ getter: payload => payload.action === 'up' ? 'up' : payload.action === 'down' ? 'down' : payload.action === 'circle_click' ? 'circle' : undefined,
},
switch_hold: {
id: 'hold',
@@ -1367,7 +1355,7 @@ const states = {
write: false,
read: true,
type: 'string',
- getter: payload => (payload.action === 'up_hold') ? 'up' : (payload.action === 'down_hold') ? 'down' : (payload.action === 'circle_hold') ? 'circle': undefined,
+ getter: payload => payload.action === 'up_hold' ? 'up' : payload.action === 'down_hold' ? 'down' : payload.action === 'circle_hold' ? 'circle': undefined,
},
switch_release: {
id: 'release',
@@ -1378,7 +1366,7 @@ const states = {
write: false,
read: true,
type: 'string',
- getter: payload => (payload.action === 'up_release') ? 'up' : (payload.action === 'down_release') ? 'down' : (payload.action === 'circle_release') ? 'circle': undefined,
+ getter: payload => payload.action === 'up_release' ? 'up' : payload.action === 'down_release' ? 'down' : payload.action === 'circle_release' ? 'circle': undefined,
},
// new RWL states
rwl_state: {
@@ -1390,7 +1378,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'on-press') ? true : (payload.action === 'off-press') ? false : undefined,
+ getter: payload => payload.action === 'on-press' ? true : payload.action === 'off-press' ? false : undefined,
},
rwl_up_button: {
id: 'up_button',
@@ -1402,7 +1390,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'up-press') ? true : undefined
+ getter: payload => payload.action === 'up-press' ? true : undefined
},
rwl_up_hold: {
id: 'up_hold',
@@ -1414,7 +1402,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'up-hold') ? true : undefined
+ getter: payload => payload.action === 'up-hold' ? true : undefined
},
rwl_down_button: {
id: 'down_button',
@@ -1426,7 +1414,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'down-press') ? true : undefined
+ getter: payload => payload.action === 'down-press' ? true : undefined
},
rwl_down_hold: {
id: 'down_hold',
@@ -1438,7 +1426,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'down-hold') ? true : undefined
+ getter: payload => payload.action === 'down-hold' ? true : undefined
},
rwl_counter: {
id: 'click_count',
@@ -1485,8 +1473,8 @@ const states = {
min: 0,
max: 2,
epname: 'ep2',
- getter: (payload) => (['low','medium','high'].indexOf(payload)),
- setter: (value) => (['low','medium','high'][value]),
+ getter: payload => ['low','medium','high'].indexOf(payload,),
+ setter: value => ['low','medium','high'][value],
},
*/
sml_sensitivity: {
@@ -1541,8 +1529,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: (payload) => (payload.state_left === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_left === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'left',
},
@@ -1555,8 +1543,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: (payload) => (payload.state_right === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_right === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'right',
},
@@ -1569,8 +1557,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: (payload) => (payload.state_center === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_center === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'center',
},
@@ -1583,8 +1571,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: (payload) => (payload.state_bottom_left === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_bottom_left === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'bottom_left',
},
@@ -1597,8 +1585,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: (payload) => (payload.state_bottom_right === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_bottom_right === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'bottom_right',
},
@@ -1611,8 +1599,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: (payload) => (payload.state_top_left === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_top_left === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'top_left',
},
@@ -1625,8 +1613,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: (payload) => (payload.state_top_right === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_top_right === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'top_right',
},
@@ -1640,7 +1628,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'vibration') ? true : undefined,
+ getter: payload => payload.action === 'vibration' ? true : undefined,
},
tilt_action: {
id: 'tilt',
@@ -1652,7 +1640,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'tilt') ? true : undefined,
+ getter: payload => payload.action === 'tilt' ? true : undefined,
},
drop_action: {
id: 'drop',
@@ -1664,7 +1652,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'drop') ? true : undefined,
+ getter: payload => payload.action === 'drop' ? true : undefined,
},
tilt_angle: {
id: 'tilt_angle',
@@ -1736,7 +1724,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'toggle') ? true : undefined,
+ getter: payload => payload.action === 'toggle' ? true : undefined,
},
E1524_hold: {
id: 'hold',
@@ -1748,7 +1736,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'toggle_hold') ? true : undefined,
+ getter: payload => payload.action === 'toggle_hold' ? true : undefined,
},
E1524_left_click: {
id: 'left_click',
@@ -1760,7 +1748,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'arrow_left_click') ? true : undefined,
+ getter: payload => payload.action === 'arrow_left_click' ? true : undefined,
},
E1524_right_click: {
id: 'right_click',
@@ -1772,7 +1760,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'arrow_right_click') ? true : undefined,
+ getter: payload => payload.action === 'arrow_right_click' ? true : undefined,
},
E1524_left_button: {
id: 'left_button',
@@ -1783,7 +1771,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'arrow_left_hold') ? true : (payload.action === 'arrow_left_release') ? false : undefined,
+ getter: payload => payload.action === 'arrow_left_hold' ? true : payload.action === 'arrow_left_release' ? false : undefined,
},
E1524_right_button: {
id: 'right_button',
@@ -1794,7 +1782,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'arrow_right_hold') ? true : (payload.action === 'arrow_right_release') ? false : undefined,
+ getter: payload => payload.action === 'arrow_right_hold' ? true : payload.action === 'arrow_right_release' ? false : undefined,
},
E1524_up_click: {
@@ -1807,7 +1795,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'brightness_up_click') ? true : undefined,
+ getter: payload => payload.action === 'brightness_up_click' ? true : undefined,
},
E1524_down_click: {
id: 'down_click',
@@ -1819,7 +1807,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'brightness_down_click') ? true : undefined,
+ getter: payload => payload.action === 'brightness_down_click' ? true : undefined,
},
E1524_up_button: {
id: 'up_button',
@@ -1830,7 +1818,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'brightness_up_hold') ? true : (payload.action === 'brightness_up_release') ? false : undefined,
+ getter: payload => payload.action === 'brightness_up_hold' ? true : payload.action === 'brightness_up_release' ? false : undefined,
},
E1743_onoff: {
id: 'state',
@@ -1841,7 +1829,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.click === 'on') ? true : ((payload.click === 'off') ? false : undefined),
+ getter: payload => payload.click === 'on' ? true : (payload.click === 'off' ? false : undefined),
},
E1743_up_button: {
id: 'up_button',
@@ -1852,7 +1840,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.click === 'brightness_up') ? true : ((payload.click === 'brightness_stop') ? false : undefined),
+ getter: payload => payload.click === 'brightness_up' ? true : (payload.click === 'brightness_stop' ? false : undefined),
},
E1743_down_button: {
id: 'down_button',
@@ -1863,7 +1851,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.click === 'brightness_down') ? true : ((payload.click === 'brightness_stop') ? false : undefined),
+ getter: payload => payload.click === 'brightness_down' ? true : (payload.click === 'brightness_stop' ? false : undefined),
},
E1524_down_button: {
id: 'down_button',
@@ -1874,7 +1862,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'brightness_down_hold') ? true : (payload.action === 'brightness_down_release') ? false : undefined,
+ getter: payload => payload.action === 'brightness_down_hold' ? true : payload.action === 'brightness_down_release' ? false : undefined,
},
tint404011_onoff: {
id: 'state',
@@ -1885,7 +1873,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'on') ? true : ((payload.action === 'off') ? false : undefined),
+ getter: payload => payload.action === 'on' ? true : (payload.action === 'off' ? false : undefined),
},
tint404011_brightness_up_click: {
id: 'brightness_up_click',
@@ -1897,7 +1885,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'brightness_up_click') ? true : undefined,
+ getter: payload => payload.action === 'brightness_up_click' ? true : undefined,
},
tint404011_brightness_up_hold: {
id: 'brightness_up_hold',
@@ -1909,7 +1897,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: false,
- getter: payload => (payload.action === 'brightness_up_hold') ? true : ( payload.action === 'brightness_up_release' ) ? false : undefined,
+ getter: payload => payload.action === 'brightness_up_hold' ? true : payload.action === 'brightness_up_release' ? false : undefined,
},
tint404011_brightness_down_click: {
id: 'brightness_down_click',
@@ -1921,7 +1909,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'brightness_down_click') ? true : undefined,
+ getter: payload => payload.action === 'brightness_down_click' ? true : undefined,
},
tint404011_brightness_down_hold: {
id: 'brightness_down_hold',
@@ -1933,7 +1921,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: false,
- getter: payload => (payload.action === 'brightness_down_hold') ? true : ( payload.action === 'brightness_down_release' ) ? false : undefined,
+ getter: payload => payload.action === 'brightness_down_hold' ? true : payload.action === 'brightness_down_release' ? false : undefined,
},
tint404011_colortemp_read: {
id: 'colortemp',
@@ -1944,7 +1932,7 @@ const states = {
write: false,
read: true,
type: 'number',
- getter: payload => (payload.action === 'color_temp') ? payload.action_color_temperature : undefined,
+ getter: payload => payload.action === 'color_temp' ? payload.action_color_temperature : undefined,
},
tint404011_color_read: {
id: 'color',
@@ -1955,7 +1943,7 @@ const states = {
write: false,
read: true,
type: 'string',
- getter: (payload) => {
+ getter: payload => {
if( payload.action === 'color_wheel') {
const colorval = rgb.cie_to_rgb(payload.action_color.x, payload.action_color.y);
return '#' + utils.decimalToHex(colorval[0]) + utils.decimalToHex(colorval[1]) + utils.decimalToHex(colorval[2]);
@@ -1975,7 +1963,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'scene_3') ? true : undefined,
+ getter: payload => payload.action === 'scene_3' ? true : undefined,
},
tint404011_scene_sunset: {
// starting with warm-white light at 50% brightness then dims after 15 minutes.
@@ -1989,7 +1977,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'scene_1') ? true : undefined,
+ getter: payload => payload.action === 'scene_1' ? true : undefined,
},
tint404011_scene_party: {
// colourful continuous change of light color
@@ -2002,7 +1990,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'scene_2') ? true : undefined,
+ getter: payload => payload.action === 'scene_2' ? true : undefined,
},
tint404011_scene_nightlight: {
// warm-white light dimmed to 5%
@@ -2015,7 +2003,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'scene_6') ? true : undefined,
+ getter: payload => payload.action === 'scene_6' ? true : undefined,
},
tint404011_scene_bonfire: {
// simulates a bonfire with flickering colours between orange, red and white
@@ -2028,7 +2016,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'scene_4') ? true : undefined,
+ getter: payload => payload.action === 'scene_4' ? true : undefined,
},
tint404011_scene_romance: {
// constantly transitioning colours between red, violet and pink
@@ -2041,7 +2029,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'scene_5') ? true : undefined,
+ getter: payload => payload.action === 'scene_5' ? true : undefined,
},
button_action_on: {
// generic on button with 'action=on' as payload
@@ -2054,7 +2042,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'on') ? true : undefined,
+ getter: payload => payload.action === 'on' ? true : undefined,
},
button_action_off: {
// generic on button with 'action=on' as payload
@@ -2067,7 +2055,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'off') ? true : undefined,
+ getter: payload => payload.action === 'off' ? true : undefined,
},
button_action_skip_forward: {
// generic on button with 'action=on' as payload
@@ -2080,7 +2068,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'skip_forward') ? true : undefined,
+ getter: payload => payload.action === 'skip_forward' ? true : undefined,
},
button_action_skip_back: {
// generic on button with 'action=on' as payload
@@ -2093,7 +2081,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'skip_backward') ? true : undefined,
+ getter: payload => payload.action === 'skip_backward' ? true : undefined,
},
button_action_press: {
id: 'button_press',
@@ -2105,7 +2093,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: false,
- getter: payload => (payload.action === 'press') ? true : undefined,
+ getter: payload => payload.action === 'press' ? true : undefined,
},
button_action_hold: {
id: 'button_hold',
@@ -2117,7 +2105,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: false,
- getter: payload => (payload.action === 'hold') ? true : undefined,
+ getter: payload => payload.action === 'hold' ? true : undefined,
},
button_action_release: {
id: 'button_release',
@@ -2129,7 +2117,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: false,
- getter: payload => (payload.action === 'release') ? true : undefined,
+ getter: payload => payload.action === 'release' ? true : undefined,
},
// hvac Thermostat cluster - generic states
@@ -2195,8 +2183,8 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: (payload) => (payload.occupancy % 1 === 1),
- setter: (value) => (value) ? 1 : 0,
+ getter: payload => payload.occupancy % 1 === 1,
+ setter: value => value ? 1 : 0,
setattr: 'state',
epname: 'left',
},
@@ -2381,8 +2369,8 @@ const states = {
min: 0,
max: 100,
unit: '%',
- setter: value => { return Math.round(value * 2.55); },
- getter: payload => { return Math.round(payload.eurotronic_valve_position / 2.55); },
+ setter: value => Math.round(value * 2.55),
+ getter: payload => Math.round(payload.eurotronic_valve_position / 2.55),
},
SPBZ0001_current_heating_setpoint: { //0x4003
id: 'heating_setpnt_current',
@@ -2488,12 +2476,8 @@ const states = {
read: true,
type: 'boolean',
inOptions: true,
- setter: (value, options) => {
- return {child_protection: value};
- },
- setterOpt: (value, options) => {
- return {state: {eurotronic_host_flags: {...options, child_protection: !value}}};
- },
+ setter: (value, options) => ({child_protection: value}),
+ setterOpt: (value, options) => ({state: {eurotronic_host_flags: {...options, child_protection: !value}}}),
getter: payload => payload.eurotronic_host_flags.child_protection,
},
@@ -2507,12 +2491,8 @@ const states = {
read: true,
type: 'boolean',
inOptions: true,
- setter: (value, options) => {
- return {mirror_display: value};
- },
- setterOpt: (value, options) => {
- return {state: {eurotronic_host_flags: {...options, mirror_display: !value}}};
- },
+ setter: (value, options) => ({mirror_display: value}),
+ setterOpt: (value, options) => ({state: {eurotronic_host_flags: {...options, mirror_display: !value}}}),
getter: payload => payload.eurotronic_host_flags.mirror_display,
},
danfoss_window_open: {
@@ -2586,7 +2566,7 @@ const states = {
write: false,
read: true,
type: 'string',
- getter: payload => (payload.mounted_mode ? 'not Mounted' : 'Mounted'),
+ getter: payload => payload.mounted_mode ? 'not Mounted' : 'Mounted',
},
danfoss_algorithm_scale: {
id: 'algorithm_scale_factor',
@@ -2713,7 +2693,7 @@ const states = {
write: false,
read: true,
type: 'number',
- getter: payload => (payload.inserted === 'unknown') ? -1 : (payload.inserted === undefined ? null : parseInt(payload.inserted, 10)),
+ getter: payload => payload.inserted === 'unknown' ? -1 : (payload.inserted === undefined ? null : parseInt(payload.inserted, 10)),
},
forgotten: {
id: 'forgotten',
@@ -2724,7 +2704,7 @@ const states = {
write: false,
read: true,
type: 'number',
- getter: payload => (payload.forgotten === undefined ? null : parseInt(payload.forgotten)),
+ getter: payload => payload.forgotten === undefined ? null : parseInt(payload.forgotten),
},
key_error: {
id: 'key_error',
@@ -2746,8 +2726,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_l1 === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_l1 === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'l1',
},
@@ -2760,8 +2740,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_l2 === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_l2 === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'l2',
},
@@ -2774,8 +2754,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_l1 === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_l1 === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'l1',
},
@@ -2788,8 +2768,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_l2 === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_l2 === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'l2',
},
@@ -2802,8 +2782,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_l3 === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_l3 === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'l3',
},
@@ -2816,7 +2796,7 @@ const states = {
write: true,
read: true,
type: 'string',
- getter: payload => (payload.state === 'LOCK') ? 'locked' : (payload.state === 'UNLOCK') ? 'unlocked' : undefined,
+ getter: payload => payload.state === 'LOCK' ? 'locked' : payload.state === 'UNLOCK' ? 'unlocked' : undefined,
},
DIYRUZ_buzzer: {
id: 'buzzer',
@@ -2827,8 +2807,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: (payload) => (payload.state_center === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_center === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'center',
},
@@ -2927,7 +2907,7 @@ const states = {
min: 0,
max: 100,
unit: '%',
- getter: payload => (payload.position !== null) && !isNaN(payload.position) ? payload.position : undefined,
+ getter: payload => payload.position !== null && !isNaN(payload.position) ? payload.position : undefined,
},
curtain_stop: {
id: 'stop',
@@ -2939,7 +2919,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- setter: value => { return {state: 'stop'}; },
+ setter: value => ({state: 'stop'}),
},
curtain_reverse_direction: {
id: 'reverse_direction',
@@ -2951,9 +2931,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- setterOpt: (value, options) => {
- return {...options, reverse_direction: value};
- },
+ setterOpt: (value, options) => ({...options, reverse_direction: value}),
},
curtain_xiaomi_reverse_direction: {
id: 'reverse_direction',
@@ -2965,13 +2943,9 @@ const states = {
read: true,
type: 'boolean',
inOptions: true,
- getter: payload => (payload.options !== null) && payload.options.hasOwnProperty('reverse_direction') && !isNaN(payload.options.reverse_direction) ? payload.options.reverse_direction : undefined,
- setterOpt: (value, options) => {
- return {...options, reverse_direction: value};
- },
- setter: (value, options) => {
- return {...options, reverse_direction: value};
- },
+ getter: payload => payload.options !== null && payload.options.hasOwnProperty('reverse_direction') && !isNaN(payload.options.reverse_direction) ? payload.options.reverse_direction : undefined,
+ setterOpt: (value, options) => ({...options, reverse_direction: value}),
+ setter: (value, options) => ({...options, reverse_direction: value}),
},
curtain_xiaomi_hand_open: {
id: 'hand_open',
@@ -2983,13 +2957,9 @@ const states = {
read: true,
type: 'boolean',
inOptions: true,
- getter: payload => (payload.options !== null) && payload.options.hasOwnProperty('hand_open') && !isNaN(payload.options.hand_open) ? payload.options.hand_open : undefined,
- setterOpt: (value, options) => {
- return {...options, hand_open: value};
- },
- setter: (value, options) => {
- return {...options, hand_open: value};
- },
+ getter: payload => payload.options !== null && payload.options.hasOwnProperty('hand_open') && !isNaN(payload.options.hand_open) ? payload.options.hand_open : undefined,
+ setterOpt: (value, options) => ({...options, hand_open: value}),
+ setter: (value, options) => ({...options, hand_open: value}),
},
curtain_xiaomi_reset_limits: {
id: 'reset_limits',
@@ -2999,11 +2969,9 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (undefined),
+ getter: payload => undefined,
inOptions: true,
- setter: (value, options) => {
- return {...options, reset_limits: value};
- },
+ setter: (value, options) => ({...options, reset_limits: value}),
},
blind_position: {
id: 'position',
@@ -3017,7 +2985,7 @@ const states = {
min: 0,
max: 100,
unit: '%',
- getter: payload => (payload.position !== null) && !isNaN(payload.position) ? payload.position : undefined,
+ getter: payload => payload.position !== null && !isNaN(payload.position) ? payload.position : undefined,
},
blind_stop: {
id: 'stop',
@@ -3029,7 +2997,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- setter: value => { return 'STOP'; },
+ setter: value => 'STOP',
},
blind_open: {
id: 'open',
@@ -3041,7 +3009,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- setter: value => { return 'OPEN'; },
+ setter: value => 'OPEN',
},
blind_close: {
id: 'close',
@@ -3053,7 +3021,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- setter: value => { return 'CLOSE'; },
+ setter: value => 'CLOSE',
},
hold: {
id: 'hold',
@@ -3064,7 +3032,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'hold') ? true : (payload.action === 'release') ? false : undefined,
+ getter: payload => payload.action === 'hold' ? true : payload.action === 'release' ? false : undefined,
},
keypad_btn1: {
id: 'btn_1',
@@ -3086,7 +3054,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'stop') ? true : false,
+ getter: payload => payload.action === 'stop',
},
ZYCT202_on: {
id: 'off',
@@ -3098,7 +3066,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'on') ? true : false,
+ getter: payload => payload.action === 'on',
},
ZYCT202_off: {
id: 'off',
@@ -3110,7 +3078,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'off') ? true : false,
+ getter: payload => payload.action === 'off',
},
ZYCT202_up: {
id: 'up',
@@ -3122,7 +3090,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'up-press') ? true : false,
+ getter: payload => payload.action === 'up-press',
},
ZYCT202_down: {
id: 'down',
@@ -3134,7 +3102,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'down-press') ? true : false,
+ getter: payload => payload.action === 'down-press',
},
keypad_btn2: {
id: 'btn_2',
@@ -3335,7 +3303,7 @@ const states = {
write: false,
read: true,
type: 'string',
- getter: payload => (payload.occupancy === true) ? payload.side : undefined,
+ getter: payload => payload.occupancy === true ? payload.side : undefined,
},
btn1_pressed: {
id: 'btn_1_pressed',
@@ -3346,7 +3314,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.btn_1 === 'hold') ? true : (payload.btn_1 === 'release') ? false : undefined,
+ getter: payload => payload.btn_1 === 'hold' ? true : payload.btn_1 === 'release' ? false : undefined,
},
btn1_click: {
id: 'btn_1',
@@ -3356,7 +3324,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.btn_1 === 'click') ? true : undefined,
+ getter: payload => payload.btn_1 === 'click' ? true : undefined,
isEvent: true,
},
btn2_pressed: {
@@ -3368,7 +3336,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.btn_2 === 'hold') ? true : (payload.btn_2 === 'release') ? false : undefined,
+ getter: payload => payload.btn_2 === 'hold' ? true : payload.btn_2 === 'release' ? false : undefined,
},
btn2_click: {
id: 'btn_2',
@@ -3378,7 +3346,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.btn_2 === 'click') ? true : undefined,
+ getter: payload => payload.btn_2 === 'click' ? true : undefined,
isEvent: true,
},
btn3_pressed: {
@@ -3390,7 +3358,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.btn_3 === 'hold') ? true : (payload.btn_3 === 'release') ? false : undefined,
+ getter: payload => payload.btn_3 === 'hold' ? true : payload.btn_3 === 'release' ? false : undefined,
},
btn3_click: {
id: 'btn_3',
@@ -3400,7 +3368,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.btn_3 === 'click') ? true : undefined,
+ getter: payload => payload.btn_3 === 'click' ? true : undefined,
isEvent: true,
},
btn4_pressed: {
@@ -3412,7 +3380,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.btn_4 === 'hold') ? true : (payload.btn_4 === 'release') ? false : undefined,
+ getter: payload => payload.btn_4 === 'hold' ? true : payload.btn_4 === 'release' ? false : undefined,
},
btn4_click: {
id: 'btn_4',
@@ -3422,7 +3390,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.btn_4 === 'click') ? true : undefined,
+ getter: payload => payload.btn_4 === 'click' ? true : undefined,
isEvent: true,
},
aqara_opple_1: {
@@ -3434,7 +3402,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_1_single') ? true : undefined,
+ getter: payload => payload.action === 'button_1_single' ? true : undefined,
isEvent: true,
},
aqara_opple_1_double: {
@@ -3446,7 +3414,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_1_double') ? true : undefined,
+ getter: payload => payload.action === 'button_1_double' ? true : undefined,
isEvent: true,
},
aqara_opple_1_triple: {
@@ -3458,7 +3426,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_1_triple') ? true : undefined,
+ getter: payload => payload.action === 'button_1_triple' ? true : undefined,
isEvent: true,
},
aqara_opple_1_hold: {
@@ -3470,7 +3438,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_1_hold') ? true : (payload.action === 'button_1_release') ? false : undefined,
+ getter: payload => payload.action === 'button_1_hold' ? true : payload.action === 'button_1_release' ? false : undefined,
},
aqara_opple_2: {
id: 'button_2_click',
@@ -3481,7 +3449,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_2_single') ? true : undefined,
+ getter: payload => payload.action === 'button_2_single' ? true : undefined,
isEvent: true,
},
aqara_opple_2_double: {
@@ -3493,7 +3461,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_2_double') ? true : undefined,
+ getter: payload => payload.action === 'button_2_double' ? true : undefined,
isEvent: true,
},
aqara_opple_2_triple: {
@@ -3505,7 +3473,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_2_triple') ? true : undefined,
+ getter: payload => payload.action === 'button_2_triple' ? true : undefined,
isEvent: true,
},
aqara_opple_2_hold: {
@@ -3517,7 +3485,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_2_hold') ? true : (payload.action === 'button_2_release') ? false : undefined,
+ getter: payload => payload.action === 'button_2_hold' ? true : payload.action === 'button_2_release' ? false : undefined,
},
aqara_opple_3: {
id: 'button_3_click',
@@ -3528,7 +3496,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_3_single') ? true : undefined,
+ getter: payload => payload.action === 'button_3_single' ? true : undefined,
isEvent: true,
},
aqara_opple_3_double: {
@@ -3540,7 +3508,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_3_double') ? true : undefined,
+ getter: payload => payload.action === 'button_3_double' ? true : undefined,
isEvent: true,
},
aqara_opple_3_triple: {
@@ -3552,7 +3520,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_3_triple') ? true : undefined,
+ getter: payload => payload.action === 'button_3_triple' ? true : undefined,
isEvent: true,
},
aqara_opple_3_hold: {
@@ -3564,7 +3532,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_3_hold') ? true : (payload.action === 'button_3_release') ? false : undefined,
+ getter: payload => payload.action === 'button_3_hold' ? true : payload.action === 'button_3_release' ? false : undefined,
},
aqara_opple_4: {
id: 'button_4_click',
@@ -3575,7 +3543,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_4_single') ? true : undefined,
+ getter: payload => payload.action === 'button_4_single' ? true : undefined,
isEvent: true,
},
aqara_opple_4_double: {
@@ -3587,7 +3555,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_4_double') ? true : undefined,
+ getter: payload => payload.action === 'button_4_double' ? true : undefined,
isEvent: true,
},
aqara_opple_4_triple: {
@@ -3599,7 +3567,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_4_triple') ? true : undefined,
+ getter: payload => payload.action === 'button_4_triple' ? true : undefined,
isEvent: true,
},
aqara_opple_4_hold: {
@@ -3611,7 +3579,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_4_hold') ? true : (payload.action === 'button_4_release') ? false : undefined,
+ getter: payload => payload.action === 'button_4_hold' ? true : payload.action === 'button_4_release' ? false : undefined,
},
aqara_opple_5: {
id: 'button_5_click',
@@ -3622,7 +3590,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_5_single') ? true : undefined,
+ getter: payload => payload.action === 'button_5_single' ? true : undefined,
isEvent: true,
},
aqara_opple_5_double: {
@@ -3634,7 +3602,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_5_double') ? true : undefined,
+ getter: payload => payload.action === 'button_5_double' ? true : undefined,
isEvent: true,
},
aqara_opple_5_triple: {
@@ -3646,7 +3614,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_5_triple') ? true : undefined,
+ getter: payload => payload.action === 'button_5_triple' ? true : undefined,
isEvent: true,
},
aqara_opple_5_hold: {
@@ -3658,7 +3626,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_5_hold') ? true : (payload.action === 'button_5_release') ? false : undefined,
+ getter: payload => payload.action === 'button_5_hold' ? true : payload.action === 'button_5_release' ? false : undefined,
},
aqara_opple_6: {
id: 'button_6_click',
@@ -3669,7 +3637,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_6_single') ? true : undefined,
+ getter: payload => payload.action === 'button_6_single' ? true : undefined,
isEvent: true,
},
aqara_opple_6_double: {
@@ -3681,7 +3649,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_6_double') ? true : undefined,
+ getter: payload => payload.action === 'button_6_double' ? true : undefined,
isEvent: true,
},
aqara_opple_6_triple: {
@@ -3693,7 +3661,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_6_triple') ? true : undefined,
+ getter: payload => payload.action === 'button_6_triple' ? true : undefined,
isEvent: true,
},
aqara_opple_6_hold: {
@@ -3705,7 +3673,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'button_6_hold') ? true : (payload.action === 'button_6_release') ? false : undefined,
+ getter: payload => payload.action === 'button_6_hold' ? true : payload.action === 'button_6_release' ? false : undefined,
},
aqara_opple_mode: {
id: 'mode',
@@ -3716,7 +3684,7 @@ const states = {
write: true,
read: true,
type: 'boolean',
- setter: (value) => (value) ? 'command' : 'event',
+ setter: value => value ? 'command' : 'event',
},
genOnOff: {
id: 'genOnOff',
@@ -3728,7 +3696,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: false,
- getter: payload => (payload.click === 'on' ? true : payload.click === 'off' ? false : undefined),
+ getter: payload => payload.click === 'on' ? true : payload.click === 'off' ? false : undefined,
},
sensitivity: {
id: 'sensitivity',
@@ -3751,7 +3719,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'release') ? true : undefined,
+ getter: payload => payload.click === 'release' ? true : undefined,
},
cover_open: {
id: 'cover_open',
@@ -3763,7 +3731,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'open') ? true : undefined,
+ getter: payload => payload.click === 'open' ? true : undefined,
},
cover_release: {
id: 'cover_release',
@@ -3775,7 +3743,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'release') ? true : undefined,
+ getter: payload => payload.click === 'release' ? true : undefined,
},
cover_close: {
id: 'cover_close',
@@ -3787,7 +3755,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.click === 'close') ? true : undefined,
+ getter: payload => payload.click === 'close' ? true : undefined,
},
disarm: {
id: 'disarm',
@@ -3799,7 +3767,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'disarm') ? true : undefined,
+ getter: payload => payload.action === 'disarm' ? true : undefined,
},
arm_stay: {
id: 'arm_stay',
@@ -3811,7 +3779,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'arm_day_zones') ? true : undefined,
+ getter: payload => payload.action === 'arm_day_zones' ? true : undefined,
},
arm_away: {
id: 'arm_away',
@@ -3823,7 +3791,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'arm_all_zones') ? true : undefined,
+ getter: payload => payload.action === 'arm_all_zones' ? true : undefined,
},
emergency: {
id: 'emergency',
@@ -3835,7 +3803,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'emergency') ? true : undefined,
+ getter: payload => payload.action === 'emergency' ? true : undefined,
},
white_brightness: {
id: 'white_brightness',
@@ -3873,8 +3841,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
epname: 'white',
},
white_colortemp: {
@@ -3929,8 +3897,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
epname: 'cct',
},
white8_colortemp: {
@@ -3957,11 +3925,9 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
- setterOpt: (value, options) => {
- return {...options, state: {white_value: -1}};
- },
+ getter: payload => payload.state === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
+ setterOpt: (value, options) => ({...options, state: {white_value: -1}}),
inOptions: true,
epname: 'rgb',
},
@@ -4016,13 +3982,13 @@ const states = {
write: true,
read: true,
type: 'string',
- setter: (value) => {
+ setter: value => {
let xy = [0, 0];
const rgbcolor = colors.ParseColor(value);
xy = rgb.rgb_to_cie(rgbcolor.r, rgbcolor.g, rgbcolor.b);
return {
x: xy[0],
- y: xy[1]
+ y: xy[1],
};
},
setterOpt: (value, options) => {
@@ -4041,8 +4007,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.system_mode === 'heat'),
- setter: (value) => (value) ? 'heat' : 'off',
+ getter: payload => payload.system_mode === 'heat',
+ setter: value => value ? 'heat' : 'off',
},
moes_trv_system_mode: {
id: 'system_mode',
@@ -4065,7 +4031,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.heat === 'ON'),
+ getter: payload => payload.heat === 'ON',
},
moes_trv_sensor: {
id: 'sensor',
@@ -4077,7 +4043,7 @@ const states = {
read: true,
type: 'string', // valid: IN, AL, OU
states: 'IN:IN;AL:AL;OU:OU',
- setter: (value) => (value) === 'IN' ? 0 : (value) === 'AL' ? 1 : (value) === 'OU' ? 2 : 0,
+ setter: value => value === 'IN' ? 0 : (value === 'AL' ? 1 : (value === 'OU' ? 2 : 0)),
},
tuya_trv_target_temperature: {
id: 'target_temperature',
@@ -4101,8 +4067,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.child_lock === 'LOCKED'),
- setter: (value) => (value) ? 'LOCK': 'UNLOCK',
+ getter: payload => payload.child_lock === 'LOCKED',
+ setter: value => value ? 'LOCK': 'UNLOCK',
},
tuya_trv_window_detected: {
id: 'window_detected',
@@ -4113,7 +4079,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.window_detection === 'ON'),
+ getter: payload => payload.window_detection === 'ON',
},
tuya_trv_valve_detected: {
id: 'valve_detected',
@@ -4124,7 +4090,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.valve_detection === 'ON'),
+ getter: payload => payload.valve_detection === 'ON',
},
tuya_trv_auto_lock: {
id: 'auto_lock',
@@ -4135,7 +4101,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.auto_lock === 'AUTO'),
+ getter: payload => payload.auto_lock === 'AUTO',
},
tuya_trv_min_temp: {
id: 'min_temperature',
@@ -4233,8 +4199,8 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'ON') ? true : false,
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.action === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
},
climate_system_mode: {
id: 'mode',
@@ -4292,7 +4258,7 @@ const states = {
write: false,
read: true,
type: 'number',
- getter: payload => (payload.click === 'off') ? 0 : (payload.click === 'on') ? 1 : parseInt(payload.click) + 1,
+ getter: payload => payload.click === 'off' ? 0 : (payload.click === 'on' ? 1 : (parseInt(payload.click) + 1)),
},
icasa_click: {
id: 'click',
@@ -4303,7 +4269,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.click === 'off') ? false : (payload.click === 'on') ? true : undefined,
+ getter: payload => payload.click === 'off' ? false : (payload.click === 'on' ? true : undefined),
},
icasa_action: {
id: 'rotation',
@@ -4314,7 +4280,7 @@ const states = {
write: false,
read: true,
type: 'string',
- getter: payload => (payload.action === 'rotate_left') ? 'left' : (payload.action === 'rotate_right') ? 'right' : (payload.action === 'rotate_stop') ? 'stop' : undefined,
+ getter: payload => payload.action === 'rotate_left' ? 'left' : (payload.action === 'rotate_right' ? 'right' : (payload.action === 'rotate_stop' ? 'stop' : undefined)),
},
icasa_brightness: {
id: 'brightness',
@@ -4336,8 +4302,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_top === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_top === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'top',
},
@@ -4350,8 +4316,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_bottom === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_bottom === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'bottom',
},
@@ -4384,7 +4350,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '2_single') ? true : undefined,
+ getter: payload => payload.action === '2_single' ? true : undefined,
isEvent: true,
},
ts0042_left_click: {
@@ -4396,7 +4362,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '1_single') ? true : undefined,
+ getter: payload => payload.action === '1_single' ? true : undefined,
isEvent: true,
},
ts0042_right_double: {
@@ -4408,7 +4374,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '2_double') ? true : undefined,
+ getter: payload => payload.action === '2_double' ? true : undefined,
isEvent: true,
},
ts0042_left_double: {
@@ -4420,7 +4386,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '1_double') ? true : undefined,
+ getter: payload => payload.action === '1_double' ? true : undefined,
isEvent: true,
},
ts0042_right_hold: {
@@ -4432,7 +4398,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '2_hold') ? true : undefined,
+ getter: payload => payload.action === '2_hold' ? true : undefined,
isEvent: true,
},
ts0042_left_hold: {
@@ -4444,7 +4410,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '1_hold') ? true : undefined,
+ getter: payload => payload.action === '1_hold' ? true : undefined,
isEvent: true,
},
ts0043_right_click: {
@@ -4456,7 +4422,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '3_single') ? true : undefined,
+ getter: payload => payload.action === '3_single' ? true : undefined,
isEvent: true,
},
ts0043_middle_click: {
@@ -4468,7 +4434,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '2_single') ? true : undefined,
+ getter: payload => payload.action === '2_single' ? true : undefined,
isEvent: true,
},
ts0043_left_click: {
@@ -4480,7 +4446,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '1_single') ? true : undefined,
+ getter: payload => payload.action === '1_single' ? true : undefined,
isEvent: true,
},
ts0043_right_double: {
@@ -4492,7 +4458,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '3_double') ? true : undefined,
+ getter: payload => payload.action === '3_double' ? true : undefined,
isEvent: true,
},
ts0043_middle_double: {
@@ -4504,7 +4470,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '2_double') ? true : undefined,
+ getter: payload => payload.action === '2_double' ? true : undefined,
isEvent: true,
},
ts0043_left_double: {
@@ -4516,7 +4482,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '1_double') ? true : undefined,
+ getter: payload => payload.action === '1_double' ? true : undefined,
isEvent: true,
},
ts0043_right_hold: {
@@ -4528,7 +4494,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '3_hold') ? true : undefined,
+ getter: payload => payload.action === '3_hold' ? true : undefined,
isEvent: true,
},
ts0043_middle_hold: {
@@ -4540,7 +4506,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '2_hold') ? true : undefined,
+ getter: payload => payload.action === '2_hold' ? true : undefined,
isEvent: true,
},
ts0043_left_hold: {
@@ -4552,7 +4518,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === '1_hold') ? true : undefined,
+ getter: payload => payload.action === '1_hold' ? true : undefined,
isEvent: true,
},
rm01_row_2: {
@@ -4564,8 +4530,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'row_2_on') ? true : (payload.action === 'row_2_off') ? false : undefined,
- setter: (value) => (value) ? 'row_2_on' : 'row_2_off',
+ getter: payload => payload.action === 'row_2_on' ? true : payload.action === 'row_2_off' ? false : undefined,
+ setter: value => value ? 'row_2_on' : 'row_2_off',
},
rm01_row_3: {
id: 'rm01_row_3',
@@ -4576,8 +4542,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'row_3_on') ? true : (payload.action === 'row_3_off') ? false : undefined,
- setter: (value) => (value) ? 'row_3_on' : 'row_3_off',
+ getter: payload => payload.action === 'row_3_on' ? true : payload.action === 'row_3_off' ? false : undefined,
+ setter: value => value ? 'row_3_on' : 'row_3_off',
},
rm01_row_4: {
id: 'rm01_row_4',
@@ -4588,8 +4554,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'row_4_on') ? true : (payload.action === 'row_4_off') ? false : undefined,
- setter: (value) => (value) ? 'row_4_on' : 'row_4_off',
+ getter: payload => payload.action === 'row_4_on' ? true : (payload.action === 'row_4_off' ? false : undefined),
+ setter: value => value ? 'row_4_on' : 'row_4_off',
},
left_top_click: {
id: 'left_top_click',
@@ -4601,7 +4567,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'left_top_click') ? true : undefined,
+ getter: payload => payload.action === 'left_top_click' ? true : undefined,
},
right_top_click: {
id: 'right_top_click',
@@ -4613,7 +4579,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'right_top_click') ? true : undefined,
+ getter: payload => payload.action === 'right_top_click' ? true : undefined,
},
left_bottom_click: {
id: 'left_bottom_click',
@@ -4625,7 +4591,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'left_bottom_click') ? true : undefined,
+ getter: payload => payload.action === 'left_bottom_click' ? true : undefined,
},
right_bottom_click: {
id: 'right_bottom_click',
@@ -4637,7 +4603,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'right_bottom_click') ? true : undefined,
+ getter: payload => payload.action === 'right_bottom_click' ? true : undefined,
},
left_top_hold: {
id: 'left_top_hold',
@@ -4649,7 +4615,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'left_top_hold') ? true : undefined,
+ getter: payload => payload.action === 'left_top_hold' ? true : undefined,
},
right_top_hold: {
id: 'right_top_hold',
@@ -4661,7 +4627,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'right_top_hold') ? true : undefined,
+ getter: payload => payload.action === 'right_top_hold' ? true : undefined,
},
left_bottom_hold: {
id: 'left_bottom_hold',
@@ -4673,7 +4639,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'left_bottom_hold') ? true : undefined,
+ getter: payload => payload.action === 'left_bottom_hold' ? true : undefined,
},
right_bottom_hold: {
id: 'right_bottom_hold',
@@ -4685,7 +4651,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'right_bottom_hold') ? true : undefined,
+ getter: payload => payload.action === 'right_bottom_hold' ? true : undefined,
},
left_top_release: {
id: 'left_top_release',
@@ -4697,7 +4663,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'left_top_release') ? true : undefined,
+ getter: payload => payload.action === 'left_top_release' ? true : undefined,
},
right_top_release: {
id: 'right_top_release',
@@ -4709,7 +4675,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'right_top_release') ? true : undefined,
+ getter: payload => payload.action === 'right_top_release' ? true : undefined,
},
left_bottom_release: {
id: 'left_bottom_release',
@@ -4721,7 +4687,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'left_bottom_release') ? true : undefined,
+ getter: payload => payload.action === 'left_bottom_release' ? true : undefined,
},
right_bottom_release: {
id: 'right_bottom_release',
@@ -4733,7 +4699,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'right_bottom_release') ? true : undefined,
+ getter: payload => payload.action === 'right_bottom_release' ? true : undefined,
},
lumi_left_click: {
id: 'left_click',
@@ -4745,7 +4711,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'left') ? true : undefined,
+ getter: payload => payload.action === 'left' ? true : undefined,
},
lumi_right_click: {
id: 'right_click',
@@ -4757,7 +4723,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'right') ? true : undefined,
+ getter: payload => payload.action === 'right' ? true : undefined,
},
lumi_both_click: {
id: 'both_click',
@@ -4769,7 +4735,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'both') ? true : undefined,
+ getter: payload => payload.action === 'both' ? true : undefined,
},
lumi_left_click_long: {
id: 'left_click_long',
@@ -4781,7 +4747,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'left_long') ? true : undefined,
+ getter: payload => payload.action === 'left_long' ? true : undefined,
},
lumi_right_click_long: {
id: 'right_click_long',
@@ -4793,7 +4759,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'right_long') ? true : undefined,
+ getter: payload => payload.action === 'right_long' ? true : undefined,
},
lumi_left_click_double: {
id: 'left_click_double',
@@ -4805,7 +4771,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'left_double') ? true : undefined,
+ getter: payload => payload.action === 'left_double' ? true : undefined,
},
lumi_right_click_double: {
id: 'right_click_double',
@@ -4817,7 +4783,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'right_double') ? true : undefined,
+ getter: payload => payload.action === 'right_double' ? true : undefined,
},
lumi_both_click_long: {
id: 'both_click_long',
@@ -4829,7 +4795,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'both_long') ? true : undefined,
+ getter: payload => payload.action === 'both_long' ? true : undefined,
},
lumi_both_click_double: {
id: 'both_click_double',
@@ -4841,7 +4807,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'both_double') ? true : undefined,
+ getter: payload => payload.action === 'both_double' ? true : undefined,
},
plug_summdelivered: {
id: 'energy',
@@ -4963,8 +4929,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_l1 === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_l1 === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'l1',
},
@@ -4977,8 +4943,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_l2 === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_l2 === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'l2',
},
@@ -4991,8 +4957,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_l3 === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_l3 === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'l3',
},
@@ -5005,8 +4971,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_l4 === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_l4 === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'l4',
},
@@ -5019,8 +4985,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_l5 === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_l5 === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'l5',
},
@@ -5033,8 +4999,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_l6 === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_l6 === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'l6',
},
@@ -5047,8 +5013,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_l7 === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_l7 === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'l7',
},
@@ -5061,8 +5027,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.state_l8 === 'ON'),
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload.state_l8 === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
setattr: 'state',
epname: 'l8',
},
@@ -5076,7 +5042,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'single_1') ? true : undefined,
+ getter: payload => payload.action === 'single_1' ? true : undefined,
},
btn2_single: {
id: 'btn2_single',
@@ -5088,7 +5054,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'single_2') ? true : undefined,
+ getter: payload => payload.action === 'single_2' ? true : undefined,
},
btn3_single: {
id: 'btn3_single',
@@ -5100,7 +5066,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'single_3') ? true : undefined,
+ getter: payload => payload.action === 'single_3' ? true : undefined,
},
btn4_single: {
id: 'btn4_single',
@@ -5112,7 +5078,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'single_4') ? true : undefined,
+ getter: payload => payload.action === 'single_4' ? true : undefined,
},
btn5_single: {
id: 'btn5_single',
@@ -5124,7 +5090,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'single_5') ? true : undefined,
+ getter: payload => payload.action === 'single_5' ? true : undefined,
},
btn6_single: {
id: 'btn6_single',
@@ -5136,7 +5102,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'single_6') ? true : undefined,
+ getter: payload => payload.action === 'single_6' ? true : undefined,
},
btn7_single: {
id: 'btn7_single',
@@ -5148,7 +5114,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'single_7') ? true : undefined,
+ getter: payload => payload.action === 'single_7' ? true : undefined,
},
btn8_single: {
id: 'btn8_single',
@@ -5160,7 +5126,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'single_8') ? true : undefined,
+ getter: payload => payload.action === 'single_8' ? true : undefined,
},
radioactive_events_per_minute: {
id: 'radioactive_events_per_minute',
@@ -5191,7 +5157,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'on') ? true : ((payload.action === 'off') ? false : undefined),
+ getter: payload => payload.action === 'on' ? true : (payload.action === 'off' ? false : undefined),
},
geiger_sensitivity: {
id: 'sensitivity',
@@ -5211,7 +5177,7 @@ const states = {
write: true,
read: true,
type: 'boolean',
- setter: (value) => (value) ? 'ON' : 'OFF',
+ setter: value => value ? 'ON' : 'OFF',
},
geiger_buzzer_feedback: {
id: 'buzzer_feedback',
@@ -5221,7 +5187,7 @@ const states = {
write: true,
read: true,
type: 'boolean',
- setter: (value) => (value) ? 'ON' : 'OFF',
+ setter: value => value ? 'ON' : 'OFF',
},
geiger_sensors_count: {
id: 'sensors_count',
@@ -5242,7 +5208,7 @@ const states = {
read: true,
type: 'string',
states: '0:СБМ-20/СТС-5/BOI-33;1:СБМ-19/СТС-6;3:Other',
- setter: (value) => parseInt(value),
+ setter: value => parseInt(value),
},
geiger_alert_threshold: {
id: 'alert_threshold',
@@ -5263,7 +5229,7 @@ const states = {
write: false,
read: true,
type: 'string',
- getter: payload => (payload.action.startsWith('scene_')) ? payload.action.split('_')[1] : undefined,
+ getter: payload => payload.action.startsWith('scene_') ? payload.action.split('_')[1] : undefined,
},
brightness_step: {
id: 'brightness_step',
@@ -5335,7 +5301,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'brightness_step_up') ? true : undefined,
+ getter: payload => payload.action === 'brightness_step_up' ? true : undefined,
},
brightness_step_down: {
id: 'brightness_step_down',
@@ -5347,7 +5313,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'brightness_step_down') ? true : undefined,
+ getter: payload => payload.action === 'brightness_step_down' ? true : undefined,
},
brightness_step_up_size: {
id: 'brightness_step_up_size',
@@ -5359,7 +5325,7 @@ const states = {
read: true,
type: 'number',
unit: '',
- getter: payload => (payload.action === 'brightness_step_up') ? payload.action_step_size : undefined,
+ getter: payload => payload.action === 'brightness_step_up' ? payload.action_step_size : undefined,
},
brightness_step_down_size: {
id: 'brightness_step_down_size',
@@ -5371,7 +5337,7 @@ const states = {
read: true,
type: 'number',
unit: '',
- getter: payload => (payload.action === 'brightness_step_down') ? payload.action_step_size : undefined,
+ getter: payload => payload.action === 'brightness_step_down' ? payload.action_step_size : undefined,
},
brightness_stop: {
id: 'brightness_stop',
@@ -5383,7 +5349,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'brightness_stop') ? true : undefined,
+ getter: payload => payload.action === 'brightness_stop' ? true : undefined,
},
color_temperature_move: {
id: 'color_temperature_move',
@@ -5395,7 +5361,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'color_temperature_move') ? true : undefined,
+ getter: payload => payload.action === 'color_temperature_move' ? true : undefined,
},
color_temperature_move_value: {
id: 'color_temperature_move_value',
@@ -5407,7 +5373,7 @@ const states = {
read: true,
type: 'number',
unit: '',
- getter: payload => (payload.action === 'color_temperature_move') ? payload.action_color_temperature : undefined,
+ getter: payload => payload.action === 'color_temperature_move' ? payload.action_color_temperature : undefined,
},
color_move: {
id: 'color_move',
@@ -5419,7 +5385,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'color_move') ? true : undefined,
+ getter: payload => payload.action === 'color_move' ? true : undefined,
},
color_move_value: {
id: 'color_move_value',
@@ -5430,10 +5396,10 @@ const states = {
write: false,
read: true,
type: 'string',
- getter: (payload) => {
+ getter: payload => {
if( payload.action === 'color_move') {
const colorval = rgb.cie_to_rgb(payload.action_color.x, payload.action_color.y);
- return '#' + utils.decimalToHex(colorval[0]) + utils.decimalToHex(colorval[1]) + utils.decimalToHex(colorval[2]);
+ return `#${utils.decimalToHex(colorval[0])}${utils.decimalToHex(colorval[1])}${utils.decimalToHex(colorval[2])}`;
} else {
return undefined;
}
@@ -5449,7 +5415,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'brightness_move_up') ? true : undefined,
+ getter: payload => payload.action === 'brightness_move_up' ? true : undefined,
},
brightness_move_up_size: {
id: 'brightness_move_up_size',
@@ -5461,7 +5427,7 @@ const states = {
read: true,
type: 'number',
unit: '',
- getter: payload => (payload.action === 'brightness_move_up') ? payload.action_rate : undefined,
+ getter: payload => payload.action === 'brightness_move_up' ? payload.action_rate : undefined,
},
brightness_move_down: {
id: 'brightness_move_down',
@@ -5473,7 +5439,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'brightness_move_down') ? true : undefined,
+ getter: payload => payload.action === 'brightness_move_down' ? true : undefined,
},
brightness_move_down_size: {
id: 'brightness_move_down_size',
@@ -5485,7 +5451,7 @@ const states = {
read: true,
type: 'number',
unit: '',
- getter: payload => (payload.action === 'brightness_move_down') ? payload.action_rate : undefined,
+ getter: payload => payload.action === 'brightness_move_down' ? payload.action_rate : undefined,
},
enhanced_move_to_hue_and_saturation: {
id: 'enhanced_move',
@@ -5497,7 +5463,7 @@ const states = {
read: true,
type: 'boolean',
isEvent: true,
- getter: payload => (payload.action === 'enhanced_move_to_hue_and_saturation') ? true : undefined,
+ getter: payload => payload.action === 'enhanced_move_to_hue_and_saturation' ? true : undefined,
},
enhanced_move_enhanced_hue: {
id: 'enhanced_move_enhanced_hue',
@@ -5509,7 +5475,7 @@ const states = {
read: true,
type: 'number',
unit: '',
- getter: payload => (payload.action === 'enhanced_move_to_hue_and_saturation') ? payload.action_enhanced_hue : undefined,
+ getter: payload => payload.action === 'enhanced_move_to_hue_and_saturation' ? payload.action_enhanced_hue : undefined,
},
enhanced_move_hue: {
id: 'enhanced_move_hue',
@@ -5521,7 +5487,7 @@ const states = {
read: true,
type: 'number',
unit: '',
- getter: payload => (payload.action === 'enhanced_move_to_hue_and_saturation') ? payload.action_hue : undefined,
+ getter: payload => payload.action === 'enhanced_move_to_hue_and_saturation' ? payload.action_hue : undefined,
},
enhanced_move_saturation: {
id: 'enhanced_move_saturation',
@@ -5533,7 +5499,7 @@ const states = {
read: true,
type: 'number',
unit: '',
- getter: payload => (payload.action === 'enhanced_move_to_hue_and_saturation') ? payload.action_saturation : undefined,
+ getter: payload => payload.action === 'enhanced_move_to_hue_and_saturation' ? payload.action_saturation : undefined,
},
density: {
id: 'density',
@@ -5642,7 +5608,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'on_1') ? false : ( payload.action === 'off_1' ) ? true : undefined,
+ getter: payload => payload.action === 'on_1' ? false : (payload.action === 'off_1' ? true : undefined),
isEvent: true,
},
rob_2_click: {
@@ -5654,7 +5620,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'on_2') ? false : ( payload.action === 'off_2' ) ? true : undefined,
+ getter: payload => payload.action === 'on_2' ? false : (payload.action === 'off_2' ? true : undefined),
isEvent: true,
},
rob_3_click: {
@@ -5666,7 +5632,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'on_3') ? false : ( payload.action === 'off_3' ) ? true : undefined,
+ getter: payload => payload.action === 'on_3' ? false : (payload.action === 'off_3' ? true : undefined),
isEvent: true,
},
rob_4_click: {
@@ -5678,7 +5644,7 @@ const states = {
write: false,
read: true,
type: 'boolean',
- getter: payload => (payload.action === 'on_4') ? false : ( payload.action === 'off_4' ) ? true : undefined,
+ getter: payload => payload.action === 'on_4' ? false : (payload.action === 'off_4' ? true : undefined),
isEvent: true,
},
@@ -5702,8 +5668,8 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: payload => (payload.child_lock === 'LOCKED'),
- setter: (value) => (value) ? 'LOCKED' : 'UNLOCKED',
+ getter: payload => payload.child_lock === 'LOCKED',
+ setter: value => value ? 'LOCKED' : 'UNLOCKED',
},
volume_percent: {
id: 'volume',
@@ -5767,7 +5733,7 @@ const states = {
write: true,
read: true,
type: 'boolean',
- setter: (value) => (value) ? 'ON' : 'OFF',
+ setter: value => value ? 'ON' : 'OFF',
},
airsense_enable_abc: {
id: 'enable_abc',
@@ -5777,7 +5743,7 @@ const states = {
write: true,
read: true,
type: 'boolean',
- setter: (value) => (value) ? 'ON' : 'OFF',
+ setter: value => value ? 'ON' : 'OFF',
},
airsense_threshold1: {
id: 'threshold1',
@@ -5813,25 +5779,26 @@ const states = {
states: 'steady:steady;snow:snow;rainbow:rainbow;snake:snake;twinkle:twinkle;firework:firework;horizontal_flag:horizontal_flag;waves:waves;updown:updown;vintage:vintage;fading:fading;collide:collide;strobe:strobe;sparkles:sparkles;carnaval:carnaval;glow:glow',
setter: (value, options) => {
const effectjson = {
- colors:[{r: 255,g: 0,b: 0},{r: 0,g: 255,b: 0},{r: 0,g: 0,b: 255}],
- speed:10,
- effect:'glow',
+ colors: [{r: 255, g: 0, b: 0}, {r: 0, g: 255, b: 0}, {r: 0, g: 0, b: 255}],
+ speed: 10,
+ effect: 'glow',
};
- if (options && options.hasOwnProperty('effect_speed'))
+ if (options && options.hasOwnProperty('effect_speed')) {
effectjson.speed = options.effect_speed;
- if (options && options.hasOwnProperty('effect_colors'))
- {
+ }
+ if (options && options.hasOwnProperty('effect_colors')) {
effectjson.colors = rgb.colorArrayFromString(options.effect_colors);
}
effectjson.effect = value;
return effectjson;
},
- getter: (payload) => {
- if (payload && payload.effect && payload.effect.hasOwnProperty('effect')) return payload.effect.effect;
- return "steady";
+ getter: payload => {
+ if (payload && payload.effect && payload.effect.hasOwnProperty('effect')) {
+ return payload.effect.effect;
+ }
+ return 'steady';
}
-
- },
+ },
effect_json: {
id: 'effect_json',
name: 'Effect',
@@ -5844,19 +5811,21 @@ const states = {
setter: (value, options) => {
try {
return JSON.parse(value);
- }
- catch {
+ } catch {
const effectjson = {
- colors:[{r: 255,g: 0,b: 0},{r: 0,g: 255,b: 0},{r: 0,g: 0,b: 255}],
- speed:10,
- effect:'glow',
+ colors: [{r: 255, g: 0, b: 0}, {r: 0, g: 255, b: 0}, {r: 0, g: 0, b: 255}],
+ speed: 10,
+ effect: 'glow',
};
- if (options && options.hasOwnProperty('effect_speed'))
+ if (options && options.hasOwnProperty('effect_speed')) {
effectjson.speed = options.effect_speed;
- if (options && options.hasOwnProperty('effect_colors'))
+ }
+ if (options && options.hasOwnProperty('effect_colors')) {
effectjson.colors = rgb.colorArrayFromString(options.effect_colors);
- if (options && options.hasOwnProperty('effect_type'))
+ }
+ if (options && options.hasOwnProperty('effect_type')) {
effectjson.effect = options.effect_type;
+ }
value = JSON.stringify(effectjson);
return effectjson;
}
@@ -5877,19 +5846,23 @@ const states = {
unit: '',
setter: (value, options) => {
const effectjson = {
- colors:[{r: 255,g: 0,b: 0},{r: 0,g: 255,b: 0},{r: 0,g: 0,b: 255}],
- speed:10,
- effect:'snake',
+ colors:[{r: 255, g: 0, b: 0}, {r: 0, g: 255, b: 0}, {r: 0, g: 0, b: 255}],
+ speed: 10,
+ effect: 'snake',
};
- if (options && options.hasOwnProperty('effect_type'))
+ if (options && options.hasOwnProperty('effect_type')) {
effectjson.effect = options.effect_type;
- if (options && options.hasOwnProperty('effect_colors'))
+ }
+ if (options && options.hasOwnProperty('effect_colors')) {
effectjson.colors = rgb.colorArrayFromString(options.effect_colors);
+ }
effectjson.speed = value;
return effectjson;
},
- getter: (payload) => {
- if (payload && payload.effect && payload.effect.hasOwnProperty('speed')) return payload.effect.speed;
+ getter: payload => {
+ if (payload && payload.effect && payload.effect.hasOwnProperty('speed')) {
+ return payload.effect.speed;
+ }
return 1;
}
},
@@ -5906,20 +5879,24 @@ const states = {
type: 'string',
setter: (value, options) => {
const effectjson = {
- colors:[{r: 255,g: 0,b: 0},{r: 0,g: 255,b: 0},{r: 0,g: 0,b: 255}],
- speed:10,
- effect:'sparkle',
+ colors: [{r: 255, g: 0, b: 0}, {r: 0, g: 255, b: 0}, {r: 0, g: 0, b: 255}],
+ speed: 10,
+ effect: 'sparkle',
};
- if (options && options.hasOwnProperty('effect_speed'))
+ if (options && options.hasOwnProperty('effect_speed')) {
effectjson.speed = options.effect_speed;
- if (options && options.hasOwnProperty('effect_type'))
+ }
+ if (options && options.hasOwnProperty('effect_type')) {
effectjson.effect = options.effect_type;
+ }
effectjson.colors = rgb.colorArrayFromString(value);
return effectjson;
},
- getter: (payload) => {
- if (payload && payload.effect && payload.effect.hasOwnProperty('colors')) return rgb.colorStringFromRGBArray(payload.effect.colors);
+ getter: payload => {
+ if (payload && payload.effect && payload.effect.hasOwnProperty('colors')) {
+ return rgb.colorStringFromRGBArray(payload.effect.colors);
+ }
return '#ffff00,#ff00ff,#00ffff,#0000ff,#00ff00,#ff0000';
}
},
@@ -5949,19 +5926,20 @@ const states = {
const _rgb = colors.ParseColor(value);
const hsv = rgb.rgbToHSV(_rgb.r, _rgb.g, _rgb.b, true);
return {
- hue: Math.min(Math.max(hsv.h,1),359),
+ hue: Math.min(Math.max(hsv.h, 1), 359),
saturation: hsv.s,
brightness: Math.floor(hsv.v * 2.55),
-
};
},
- getter: (payload) => {
+ getter: payload => {
if (payload.color) {
const c = payload.color;
- if (c.hasOwnProperty("h") && c.hasOwnProperty("s") && c.hasOwnProperty("b"))
- return rgb.hsvToRGBString(c.h, c.s, c.b * 100 / 255);
- if (c.hasOwnProperty("h") && c.hasOwnProperty("s") && c.hasOwnProperty("v"))
- return rgb.hsvToRGBString(c.h, c.s, c.v * 100);
+ if (c.hasOwnProperty('h') && c.hasOwnProperty('s') && c.hasOwnProperty('b')) {
+ return rgb.hsvToRGBString(c.h, c.s, c.b * 100 / 255);
+ }
+ if (c.hasOwnProperty('h') && c.hasOwnProperty('s') && c.hasOwnProperty('v')) {
+ return rgb.hsvToRGBString(c.h, c.s, c.v * 100);
+ }
}
},
setterOpt: (value, options) => {
@@ -6002,9 +5980,9 @@ const states = {
type: 'number',
write: false,
read: true,
- getter: (payload) => {
+ getter: payload => {
const rv = {};
- const id = (typeof(payload.device_l1) == 'string' ? payload.device_l1.replace(/[-. ]/g, ''):'unset');
+ const id = typeof(payload.device_l1) == 'string' ? payload.device_l1.replace(/[-. ]/g, '') : 'unset';
let unit = undefined;
let measurement = undefined;
for (const item in payload) {
@@ -6018,12 +5996,13 @@ const states = {
}
}
}
- if (measurement)
- rv.stateid = id + '_'+measurement;
- else
+ if (measurement) {
+ rv.stateid = `${id}_${measurement}`;
+ } else {
rv.stateid = id;
+ }
rv.value = payload.l1;
- rv.name = (measurement? measurement + ' 0x'+ id: '0x'+id);
+ rv.name = measurement ? `${measurement} 0x${id}` : `0x${id}`;
rv.unit = unit;
rv.role = measurement;
@@ -6039,9 +6018,9 @@ const states = {
type: 'number',
write: false,
read: true,
- getter: (payload) => {
+ getter: payload => {
const rv = {};
- const id = (typeof(payload.device_l2) == 'string' ? payload.device_l2.replace(/[-. ]/g, ''):'unset');
+ const id = typeof(payload.device_l2) == 'string' ? payload.device_l2.replace(/[-. ]/g, '') : 'unset';
let unit = undefined;
let measurement = undefined;
for (const item in payload) {
@@ -6055,12 +6034,13 @@ const states = {
}
}
}
- if (measurement)
- rv.stateid = id + '_'+measurement;
- else
+ if (measurement) {
+ rv.stateid = `${id}_${measurement}`;
+ } else {
rv.stateid = id;
+ }
rv.value = payload.l2;
- rv.name = (measurement? measurement + ' 0x'+ id: '0x'+id);
+ rv.name = measurement ? `${measurement} 0x${id}` : `0x${id}`;
rv.unit = unit;
rv.role = measurement;
@@ -6076,9 +6056,9 @@ const states = {
type: 'number',
write: false,
read: true,
- getter: (payload) => {
+ getter: payload => {
const rv = {};
- const id = (typeof(payload.device_l3) == 'string' ? payload.device_l3.replace(/[-. ]/g, ''):'unset');
+ const id = typeof(payload.device_l3) == 'string' ? payload.device_l3.replace(/[-. ]/g, '') : 'unset';
let unit = undefined;
let measurement = undefined;
for (const item in payload) {
@@ -6092,12 +6072,13 @@ const states = {
}
}
}
- if (measurement)
- rv.stateid = id + '_'+measurement;
- else
+ if (measurement) {
+ rv.stateid = `${id}_${measurement}`;
+ } else {
rv.stateid = id;
+ }
rv.value = payload.l3;
- rv.name = (measurement? measurement + ' 0x'+ id: '0x'+id);
+ rv.name = measurement ? `${measurement} 0x${id}`: `0x${id}`;
rv.unit = unit;
rv.role = measurement;
@@ -6113,9 +6094,9 @@ const states = {
type: 'number',
write: false,
read: true,
- getter: (payload) => {
+ getter: payload => {
const rv = {};
- const id = (typeof(payload.device_l4) == 'string' ? payload.device_l4.replace(/[-. ]/g, ''):'unset');
+ const id = typeof(payload.device_l4) == 'string' ? payload.device_l4.replace(/[-. ]/g, '') : 'unset';
let unit = undefined;
let measurement = undefined;
for (const item in payload) {
@@ -6129,12 +6110,13 @@ const states = {
}
}
}
- if (measurement)
- rv.stateid = id + '_'+measurement;
- else
+ if (measurement) {
+ rv.stateid = `${id}_${measurement}`;
+ } else {
rv.stateid = id;
+ }
rv.value = payload.l4;
- rv.name = (measurement? measurement + ' 0x'+ id: '0x'+id);
+ rv.name = measurement ? `${measurement} 0x${id}` : `0x${id}`;
rv.unit = unit;
rv.role = measurement;
@@ -6150,9 +6132,9 @@ const states = {
type: 'number',
write: false,
read: true,
- getter: (payload) => {
+ getter: payload => {
const rv = {};
- const id = (typeof(payload.device_l5) == 'string' ? payload.device_l5.replace(/[-. ]/g, ''):'unset');
+ const id = typeof(payload.device_l5) == 'string' ? payload.device_l5.replace(/[-. ]/g, '') : 'unset';
let unit = undefined;
let measurement = undefined;
for (const item in payload) {
@@ -6166,12 +6148,13 @@ const states = {
}
}
}
- if (measurement)
- rv.stateid = id + '_'+measurement;
- else
+ if (measurement) {
+ rv.stateid = `${id}_${measurement}`;
+ } else {
rv.stateid = id;
+ }
rv.value = payload.l5;
- rv.name = (measurement? measurement + ' 0x'+ id: '0x'+id);
+ rv.name = measurement ? `${measurement} 0x${id}` : `0x${id}`;
rv.unit = unit;
rv.role = measurement;
@@ -6187,9 +6170,9 @@ const states = {
type: 'number',
write: false,
read: true,
- getter: (payload) => {
+ getter: payload => {
const rv = {};
- const id = (typeof(payload.device_l6) == 'string' ? payload.device_l6.replace(/[-. ]/g, ''):'unset');
+ const id = typeof(payload.device_l6) == 'string' ? payload.device_l6.replace(/[-. ]/g, '') : 'unset';
let unit = undefined;
let measurement = undefined;
for (const item in payload) {
@@ -6203,12 +6186,13 @@ const states = {
}
}
}
- if (measurement)
- rv.stateid = id + '_'+measurement;
- else
+ if (measurement) {
+ rv.stateid = `${id}_${measurement}`;
+ } else {
rv.stateid = id;
+ }
rv.value = payload.l6;
- rv.name = (measurement? measurement + ' 0x'+ id: '0x'+id);
+ rv.name = measurement ? `${measurement} 0x${id}` : `0x${id}`;
rv.unit = unit;
rv.role = measurement;
@@ -6224,9 +6208,9 @@ const states = {
type: 'number',
write: false,
read: true,
- getter: (payload) => {
+ getter: payload => {
const rv = {};
- const id = (typeof(payload.device_l7) == 'string' ? payload.device_l7.replace(/[-. ]/g, ''):'unset');
+ const id = typeof(payload.device_l7) == 'string' ? payload.device_l7.replace(/[-. ]/g, '') : 'unset';
let unit = undefined;
let measurement = undefined;
for (const item in payload) {
@@ -6240,12 +6224,13 @@ const states = {
}
}
}
- if (measurement)
- rv.stateid = id + '_'+measurement;
- else
+ if (measurement) {
+ rv.stateid = `${id}_${measurement}`;
+ } else {
rv.stateid = id;
+ }
rv.value = payload.l7;
- rv.name = (measurement? measurement + ' 0x'+ id: '0x'+id);
+ rv.name = measurement ? `${measurement} 0x${id}` : `0x${id}`;
rv.unit = unit;
rv.role = measurement;
@@ -6261,9 +6246,9 @@ const states = {
type: 'number',
write: false,
read: true,
- getter: (payload) => {
+ getter: payload => {
const rv = {};
- const id = (typeof(payload.device_l8) == 'string' ? payload.device_l8.replace(/[-. ]/g, ''):'unset');
+ const id = typeof(payload.device_l8) == 'string' ? payload.device_l8.replace(/[-. ]/g, '') : 'unset';
let unit = undefined;
let measurement = undefined;
for (const item in payload) {
@@ -6277,12 +6262,13 @@ const states = {
}
}
}
- if (measurement)
- rv.stateid = id + '_'+measurement;
- else
+ if (measurement) {
+ rv.stateid = `${id}_${measurement}`;
+ } else {
rv.stateid = id;
+ }
rv.value = payload.l8;
- rv.name = (measurement? measurement + ' 0x'+ id: '0x'+id);
+ rv.name = measurement ? `${measurement} 0x${id}` : `0x${id}`;
rv.unit = unit;
rv.role = measurement;
@@ -6299,8 +6285,8 @@ const states = {
read: true,
type: 'boolean',
setattr: 'l1',
- getter: (payload) => payload === 'ON',
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
},
ptvo_switch_2: {
id: 'channel_2.switch',
@@ -6312,8 +6298,8 @@ const states = {
read: true,
type: 'boolean',
setattr: 'l2',
- getter: (payload) => payload === 'ON',
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
},
ptvo_switch_3: {
id: 'channel_3.switch',
@@ -6325,8 +6311,8 @@ const states = {
read: true,
type: 'boolean',
setattr: 'l3',
- getter: (payload) => payload === 'ON',
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
},
ptvo_switch_4: {
id: 'channel_4.switch',
@@ -6337,7 +6323,7 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: (payload) => payload === 'ON',
+ getter: payload => payload === 'ON',
setattr: 'l4',
},
ptvo_switch_5: {
@@ -6350,8 +6336,8 @@ const states = {
read: true,
type: 'boolean',
setattr: 'l5',
- getter: (payload) => payload === 'ON',
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
},
ptvo_switch_6: {
id: 'channel_6.switch',
@@ -6362,7 +6348,7 @@ const states = {
write: true,
read: true,
type: 'boolean',
- getter: (payload) => payload === 'ON',
+ getter: payload => payload === 'ON',
setattr: 'l6',
},
ptvo_switch_7: {
@@ -6375,8 +6361,8 @@ const states = {
read: true,
type: 'boolean',
setattr: 'l7',
- getter: (payload) => payload === 'ON',
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
},
ptvo_switch_8: {
id: 'channel_8.switch',
@@ -6388,8 +6374,8 @@ const states = {
read: true,
type: 'boolean',
setattr: 'l8',
- getter: (payload) => payload === 'ON',
- setter: (value) => (value) ? 'ON' : 'OFF',
+ getter: payload => payload === 'ON',
+ setter: value => value ? 'ON' : 'OFF',
},
ptvo_trigger: {
id: 'trigger',
@@ -6414,7 +6400,7 @@ const states = {
};
module.exports = {
- states: states,
- unitLookup: unitLookup,
- nameLookup: nameLookup,
+ states,
+ unitLookup,
+ nameLookup,
};
diff --git a/lib/statescontroller.js b/lib/statescontroller.js
index 4a76fcb0..c435bf14 100644
--- a/lib/statescontroller.js
+++ b/lib/statescontroller.js
@@ -7,9 +7,8 @@ const getZbId = require('./utils').getZbId;
const fs = require('fs');
const request = require('request');
-var savedDeviceNames = {};
-var knownUndefinedDevices = {};
-
+let savedDeviceNames = {};
+let knownUndefinedDevices = {};
class StatesController extends EventEmitter {
constructor(adapter) {
@@ -18,19 +17,16 @@ class StatesController extends EventEmitter {
this.adapter.on('stateChange', this.onStateChange.bind(this));
this.query_device_block = [];
this.debugDevices = undefined;
- let fn = adapter.expandFileName('dev_names.json');
+ const fn = adapter.expandFileName('dev_names.json');
this.dev_names_fn = fn.replace('.', '_');
this.retTimeoutHandle = null;
fs.readFile(this.dev_names_fn, (err, data) => {
if (!err) {
- try
- {
+ try {
savedDeviceNames = JSON.parse(data);
- }
- catch
- {
+ } catch {
savedDeviceNames = {};
- };
+ }
}
});
}
@@ -55,68 +51,77 @@ class StatesController extends EventEmitter {
this.adapter.sendError(error, message);
}
- retainDeviceNames()
- {
+ retainDeviceNames() {
clearTimeout(this.retTimeoutHandle);
- this.retTimeoutHanlde = setTimeout(()=> {
- fs.writeFile(this.dev_names_fn, JSON.stringify(savedDeviceNames, null, 2), (err) => {
- if (err)
- this.error('error saving device names: ' + JSON.Stringify(err));
- else
+ this.retTimeoutHanlde = setTimeout(() => {
+ fs.writeFile(this.dev_names_fn, JSON.stringify(savedDeviceNames, null, 2), err => {
+ if (err) {
+ this.error(`error saving device names: ${JSON.stringify(err)}`);
+ } else {
this.debug('saved device names');
- });},5000);
+ }
+ });
+ }, 5000);
}
getDebugDevices() {
this.debugDevices = [];
- this.adapter.getState(this.adapter.namespace + '.info.debugmessages', (err, state) => {
+ this.adapter.getState(`${this.adapter.namespace}.info.debugmessages`, (err, state) => {
if (state) {
- if (typeof(state.val) == 'string' && state.val.length > 2) this.debugDevices = state.val.split(';');
- this.info('debug devices set to ' + JSON.stringify(this.debugDevices));
+ if (typeof(state.val) == 'string' && state.val.length > 2) {
+ this.debugDevices = state.val.split(';');
+ }
+ this.info(`debug devices set to ${JSON.stringify(this.debugDevices)}`);
} else {
this.adapter.setObject('info.debugmessages', {
- 'type': 'state',
- 'common': {
- 'name': 'Log changes as warnings for',
- 'role': '',
- 'type': 'string',
- 'read': true,
- 'write': true,
+ type: 'state',
+ common: {
+ name: 'Log changes as warnings for',
+ role: '',
+ type: 'string',
+ read: true,
+ write: true,
},
- 'native': {},
+ native: {},
});
}
});
this.adapter.setObject('info.undefinedDevices', {
- 'type': 'state',
- 'common': {
- 'name': 'Recorded undefined devices',
- 'role': '',
- 'type': 'string',
- 'read': true,
- 'write': false,
+ type: 'state',
+ common: {
+ name: 'Recorded undefined devices',
+ role: '',
+ type: 'string',
+ read: true,
+ write: false,
},
- 'native': {},
+ native: {},
});
this.adapter.setStateAsync(`info.undefinedDevices`, JSON.stringify(knownUndefinedDevices), true);
}
onStateChange(id, state){
- if (!this.adapter.zbController || !this.adapter.zbController.connected()) return;
- if (this.debugDevices === undefined) this.getDebugDevices();
+ if (!this.adapter.zbController || !this.adapter.zbController.connected()) {
+ return;
+ }
+ if (this.debugDevices === undefined) {
+ this.getDebugDevices();
+ }
if (state && !state.ack) {
- if (id.endsWith('pairingCountdown') || id.endsWith('pairingMessage') || id.endsWith('connection')) return;
+ if (id.endsWith('pairingCountdown') || id.endsWith('pairingMessage') || id.endsWith('connection')) {
+ return;
+ }
if (id.endsWith('debugmessages')) {
- if (typeof(state.val) == 'string' && state.val.length > 2)
+ if (typeof(state.val) == 'string' && state.val.length > 2) {
this.debugDevices = state.val.split(';');
- else {
+
+ } else {
this.debugDevices = [];
}
return;
}
for (const addressPart of this.debugDevices) {
- if (typeof(id) == 'string' && id.indexOf(addressPart) > -1)
- {
+ if (typeof(id) == 'string' && id.indexOf(addressPart) > -1) {
this.warn(`ELEVATED: User stateChange ${id} ${JSON.stringify(state)}`);
break;
}
@@ -134,7 +139,9 @@ class StatesController extends EventEmitter {
this.adapter.getObject(devId, (err, obj) => {
if (obj) {
const model = obj.common.type;
- if (!model) return;
+ if (!model) {
+ return;
+ }
if (obj.common.deactivated) {
this.debug('State Change detected on deactivated Device - ignored');
return;
@@ -142,9 +149,8 @@ class StatesController extends EventEmitter {
if (model === 'group') {
deviceId = parseInt(deviceId.replace('0xgroup_', ''));
}
- this.collectOptions(id.split('.')[2], model, options => {
- this.publishFromState(deviceId, model, stateKey, state, options);
- });
+ this.collectOptions(id.split('.')[2], model, options =>
+ this.publishFromState(deviceId, model, stateKey, state, options));
}
});
}
@@ -158,7 +164,7 @@ class StatesController extends EventEmitter {
callback(result);
return;
}
- const states = devStates.states.filter((statedesc) => statedesc.isOption || statedesc.inOptions);
+ const states = devStates.states.filter(statedesc => statedesc.isOption || statedesc.inOptions);
if (!states) {
callback(result);
return;
@@ -167,7 +173,7 @@ class StatesController extends EventEmitter {
try {
const len = states.length;
states.forEach(statedesc => {
- const id = this.adapter.namespace + '.' + devId + '.' + statedesc.id;
+ const id = `${this.adapter.namespace}.${devId}.${statedesc.id}`;
this.adapter.getState(id, (err, state) => {
cnt = cnt + 1;
if (!err && state) {
@@ -178,16 +184,18 @@ class StatesController extends EventEmitter {
}
});
});
- if (!len) callback(result);
- } catch (error) {
+ if (!len) {
+ callback(result);
+ }
+ } catch (error) {
this.sendError(error);
this.error(`Error collectOptions for ${devId}. Error: ${error.stack}`);
- }
+ }
}
async getDevStates(deviceId, model) {
try {
- let states = [];
+ let states;
let stateModel;
if (model === 'group') {
states = statesMapping.groupStates;
@@ -200,7 +208,7 @@ class StatesController extends EventEmitter {
}
else {
knownUndefinedDevices[deviceId] = 1;
- this.error('Device ' + deviceId + ' "' + model + '" not described in statesMapping.');
+ this.error(`Device ${deviceId} "${model}" not described in statesMapping.`);
}
this.adapter.setStateAsync(`info.undefinedDevices`, JSON.stringify(knownUndefinedDevices), true);
states = statesMapping.commonStates;
@@ -209,11 +217,12 @@ class StatesController extends EventEmitter {
}
if (typeof states === 'function' && !states.prototype) {
const entity = await this.adapter.zbController.resolveEntity(deviceId);
- if (entity)
+ if (entity) {
states = states(entity);
+ }
}
}
- return {states: states, stateModel: stateModel};
+ return {states, stateModel};
} catch (error) {
this.sendError(error);
this.error(`Error getDevStates for ${deviceId}. Error: ${error.stack}`);
@@ -224,8 +233,7 @@ class StatesController extends EventEmitter {
if (this.debugDevices === undefined) this.getDebugDevices();
this.debug(`Change state '${stateKey}' at device ${deviceId} type '${model}'`);
for (const addressPart of this.debugDevices) {
- if (typeof(deviceId) == 'string' && deviceId.indexOf(addressPart) > -1)
- {
+ if (typeof(deviceId) == 'string' && deviceId.includes(addressPart)) {
this.warn(`ELEVATED Change state '${stateKey}' at device ${deviceId} type '${model}'`);
break;
}
@@ -234,8 +242,8 @@ class StatesController extends EventEmitter {
if (!devStates) {
return;
}
- const commonStates = statesMapping.commonStates.find((statedesc) => stateKey === statedesc.id);
- const stateDesc = (commonStates === undefined ? devStates.states.find((statedesc) => stateKey === statedesc.id) : commonStates);
+ const commonStates = statesMapping.commonStates.find(statedesc => stateKey === statedesc.id);
+ const stateDesc = (commonStates === undefined ? devStates.states.find(statedesc => stateKey === statedesc.id) : commonStates);
const stateModel = devStates.stateModel;
if (!stateDesc) {
this.error(`No state available for '${model}' with key '${stateKey}'`);
@@ -243,11 +251,12 @@ class StatesController extends EventEmitter {
}
const value = state.val;
- if (value === undefined || value === '')
+ if (value === undefined || value === '') {
return;
+ }
let stateList = [{stateDesc: stateDesc, value: value, index: 0, timeout: 0}];
if (stateModel && stateModel.linkedStates) {
- stateModel.linkedStates.forEach((linkedFunct) => {
+ stateModel.linkedStates.forEach(linkedFunct => {
try {
if (typeof linkedFunct === 'function') {
const res = linkedFunct(stateDesc, value, options, this.adapter.config.disableQueue);
@@ -256,7 +265,7 @@ class StatesController extends EventEmitter {
}
}
else {
- this.warn('publish from State - LinkedState is not a function ' + JSON.stringify(linkedFunct));
+ this.warn(`publish from State - LinkedState is not a function ${JSON.stringify(linkedFunct)}`);
}
} catch (e) {
this.sendError(e);
@@ -265,17 +274,14 @@ class StatesController extends EventEmitter {
});
// sort by index
- stateList.sort((a, b) => {
- return a.index - b.index;
- });
+ stateList.sort((a, b) => a.index - b.index);
}
- // holds the states for for read after write requests
+ // holds the states for read after write requests
let readAfterWriteStates = [];
if (stateModel && stateModel.readAfterWriteStates) {
- stateModel.readAfterWriteStates.forEach((readAfterWriteStateDesc) => {
- readAfterWriteStates = readAfterWriteStates.concat(readAfterWriteStateDesc.id);
- });
+ stateModel.readAfterWriteStates.forEach((readAfterWriteStateDesc) =>
+ readAfterWriteStates = readAfterWriteStates.concat(readAfterWriteStateDesc.id));
}
this.emit('changed', deviceId, model, stateModel, stateList, options);
@@ -287,42 +293,42 @@ class StatesController extends EventEmitter {
}
setDeviceActivated(id, active) {
- this.adapter.extendObject(id, {common: {deactivated: active }})
+ this.adapter.extendObject(id, {common: {deactivated: active }})
}
storeDeviceName(id, name) {
- savedDeviceNames[id.replace(`${this.adapter.namespace}.`, '')] = name;
- this.retainDeviceNames();
+ savedDeviceNames[id.replace(`${this.adapter.namespace}.`, '')] = name;
+ this.retainDeviceNames();
}
verifyDeviceName(id, name) {
- const savedId = id.replace(`${this.adapter.namespace}.`, '');
- if (!savedDeviceNames.hasOwnProperty(savedId)) {
- savedDeviceNames[savedId] = name;
- this.retainDeviceNames();
- }
- return savedDeviceNames[savedId];
+ const savedId = id.replace(`${this.adapter.namespace}.`, '');
+ if (!savedDeviceNames.hasOwnProperty(savedId)) {
+ savedDeviceNames[savedId] = name;
+ this.retainDeviceNames();
+ }
+ return savedDeviceNames[savedId];
}
deleteDeviceStates(devId, callback) {
this.adapter.getStatesOf(devId, (err, states) => {
if (!err && states) {
- states.forEach((state) => {
- this.adapter.deleteState(devId, null, state._id);
- });
+ states.forEach(state =>
+ this.adapter.deleteState(devId, null, state._id));
}
- this.adapter.deleteDevice(devId, () => {
- callback && callback();
- });
+ this.adapter.deleteDevice(devId, () =>
+ callback && callback());
});
}
async deleteDeviceStatesAsync(devId) {
- const states = await this.adapter.getStatesOf(devId);
- if (states) {
- await this.adapter.deleteState(devId, null, state._id);
- }
- await this.adapter.deleteDevice(devId);
+ const states = await this.adapter.getStatesOf(devId);
+ if (states) {
+ for (const state of states) {
+ await this.adapter.deleteState(devId, null, state._id);
+ }
+ }
+ await this.adapter.deleteDevice(devId);
}
// eslint-disable-next-line no-unused-vars
@@ -342,16 +348,16 @@ class StatesController extends EventEmitter {
} else {
statename = arr[1];
}
- if (commonStates.find((statedesc) => statename === statedesc.id) === undefined &&
- devStates.states.find((statedesc) => statename === statedesc.id) === undefined) {
+ if (commonStates.find(statedesc => statename === statedesc.id) === undefined &&
+ devStates.states.find(statedesc => statename === statedesc.id) === undefined
+ ) {
if (state.common.hasOwnProperty('custom') && !force) {
this.info(`keeping disconnected state ${JSON.stringify(statename)} of ${devId} `);
} else {
this.info(`deleting disconnected state ${JSON.stringify(statename)} of ${devId} `);
this.adapter.deleteState(devId, null, state._id);
}
- }
- else {
+ } else {
this.debug(`keeping connecte state ${JSON.stringify(statename)} of ${devId} `);
}
});
@@ -408,10 +414,11 @@ class StatesController extends EventEmitter {
let hasChanges = false;
if (stobj) {
// update state - not change name and role (user can it changed)
- if (stobj.common.name)
+ if (stobj.common.name) {
delete new_common.name;
- else
- new_common.name = new_name + ' ' + new_common.name;
+ } else {
+ new_common.name = `${new_name} ${new_common.name}`;
+ }
delete new_common.role;
// check whether any common property is different
@@ -432,9 +439,8 @@ class StatesController extends EventEmitter {
// only change object when any common property has changed
if (hasChanges) {
- this.adapter.extendObject(id, {type: 'state', common: new_common, native: {} }, () => {
- value !== undefined && this.setState_typed(id, value, true, (stobj) ? stobj.common.type : new_common.type);
- });
+ this.adapter.extendObject(id, {type: 'state', common: new_common, native: {} }, () =>
+ value !== undefined && this.setState_typed(id, value, true, stobj ? stobj.common.type : new_common.type));
} else if (value !== undefined) {
this.setState_typed(id, value, true, stobj.common.type);
}
@@ -453,19 +459,19 @@ class StatesController extends EventEmitter {
// never set a null or undefined value
if (value === null || value === undefined) return;
if (!type) {
- this.debug("SetState_typed called without type");
+ this.debug('SetState_typed called without type');
// identify datatype, recursively call this function with set datatype
this.adapter.getObject(id, (err, obj) => {
- if (obj && obj.common)
- this.setState_typed(id, value, ack, obj.common.type, callback);
- else {
+ if (obj && obj.common) {
+ this.setState_typed(id, value, ack, obj.common.type, callback);
+ } else {
this.setState_typed(id, value, ack, 'noobj', callback);
}
});
return;
}
- if (typeof value != type) {
- this.debug("SetState_typed : converting " + JSON.stringify(value) + " for " + id + " from " + typeof value + " to " + type);
+ if (typeof value !== type) {
+ this.debug(`SetState_typed : converting ${JSON.stringify(value)} for ${id} from ${typeof value} to ${type}`);
switch (type) {
case 'number':
value = parseFloat(value);
@@ -473,13 +479,14 @@ class StatesController extends EventEmitter {
break;
case 'string':
case 'text': value = JSON.stringify(value); break;
- case 'boolean':
+ case 'boolean': {
if (typeof value == 'number') {
- value = (value != 0);
+ value = value !== 0;
break;
}
const sval = JSON.stringify(value).toLowerCase().trim();
- value = (sval == 'true' || sval == 'yes' || sval == 'on');
+ value = sval === 'true' || sval === 'yes' || sval === 'on';
+ }
break;
}
}
@@ -491,27 +498,27 @@ class StatesController extends EventEmitter {
const id = '' + dev_id;
const modelDesc = statesMapping.findModel(model);
let icon = (modelDesc && modelDesc.icon) ? modelDesc.icon : 'img/unknown.png';
-
+
// download icon if it external and not undef
- if (model === undefined) {
+ if (model === undefined) {
this.warn(`download icon ${__dev_name} for undefined Device not available. Check your devices.`);
} else {
- const model_modif = model.replace(/\//g, '-');
- const pathToIcon = this.adapter.adapterDir + '/admin/img/' + model_modif + '.png';
+ const model_modif = model.replace(/\//g, '-');
+ const pathToIcon = `${this.adapter.adapterDir}/admin/img/${model_modif}.png`;
- if (icon.startsWith('http')) {
- try {
+ if (icon.startsWith('http')) {
+ try {
if (!fs.existsSync(pathToIcon)) {
this.warn(`download icon from ${icon} saved into ${pathToIcon}`);
- this.downloadIcon(icon, pathToIcon);
+ this.downloadIcon(icon, pathToIcon);
}
- icon = 'img/' + model_modif + '.png';
+ icon = `img/${model_modif}.png`;
} catch (e) {
this.debug(`ERROR : icon not found from ${icon} saved into ${pathToIcon}`);
}
}
}
-
+
this.adapter.setObjectNotExists(id, {
type: 'device',
// actually this is an error, so device.common has no attribute type. It must be in native part
@@ -524,27 +531,22 @@ class StatesController extends EventEmitter {
}
async downloadIcon(url, image_path) {
- if (!fs.existsSync(image_path)) {
- return new Promise((resolve, reject) => {
- request.head(url, function (err, res, body) {
- if (err) {
- return reject(err);
- }
- let stream = request(url);
- stream.pipe(
- fs.createWriteStream(image_path)
- .on('error', err => {
- reject(err);
- })
- )
- .on('close', function () {
- resolve();
- });
- });
- });
- }
+ if (!fs.existsSync(image_path)) {
+ return new Promise((resolve, reject) => {
+ request.head(url, (err, res, body) => {
+ if (err) {
+ return reject(err);
+ }
+ const stream = request(url);
+ stream.pipe(
+ fs.createWriteStream(image_path)
+ .on('error', err => reject(err)))
+ .on('close', () => resolve());
+ });
+ });
+ }
}
-
+
async syncDevStates(dev, model) {
const devId = dev.ieeeAddr.substr(2);
// devId - iobroker device id
@@ -555,20 +557,25 @@ class StatesController extends EventEmitter {
const states = statesMapping.commonStates.concat(devStates.states);
for (const stateInd in states) {
- if (!states.hasOwnProperty(stateInd)) continue;
+ if (!states.hasOwnProperty(stateInd)) {
+ continue;
+ }
const statedesc = states[stateInd];
- if (statedesc === undefined)
- {
+ if (statedesc === undefined) {
this.error(`syncDevStates: Illegal state in ${JSON.stringify(dev)} - ${JSON.stringify(stateInd)}`);
return;
}
// Filter out non routers or devices that are battery driven for the availability flag
- if (statedesc.id === 'available')
- if (!(dev.type === 'Router') || dev.powerSource === 'Battery')
+ if (statedesc.id === 'available') {
+ if (!(dev.type === 'Router') || dev.powerSource === 'Battery') {
continue;
+ }
+ }
// lazy states
- if (statedesc.lazy) continue;
+ if (statedesc.lazy) {
+ continue;
+ }
const common = {
name: statedesc.name,
@@ -586,19 +593,16 @@ class StatesController extends EventEmitter {
}
}
-
async getExcludeExposes(allExcludesObj) {
statesMapping.fillStatesWithExposes(allExcludesObj);
}
-
async publishToState(devId, model, payload) {
- const devStates = await this.getDevStates('0x'+devId, model);
+ const devStates = await this.getDevStates(`0x${devId}`, model);
let has_debug=false;
if (this.debugDevices === undefined) this.getDebugDevices();
for (const addressPart of this.debugDevices) {
- if (typeof(devId) == 'string' && devId.indexOf(addressPart) > -1)
- {
+ if (typeof(devId) == 'string' && devId.includes(addressPart)) {
if (payload.hasOwnProperty('msg_from_zigbee')) break;
this.warn(`ELEVATED publishToState: message received '${JSON.stringify(payload)}' from device ${devId} type '${model}'`);
has_debug = true;
@@ -611,8 +615,8 @@ class StatesController extends EventEmitter {
// find states for payload
if (devStates.states !== undefined) {
const states = statesMapping.commonStates.concat(
- devStates.states.filter((statedesc) => payload.hasOwnProperty(statedesc.prop || statedesc.id))
- );
+ devStates.states.filter(statedesc => payload.hasOwnProperty(statedesc.prop || statedesc.id)));
+
for (const stateInd in states) {
const statedesc = states[stateInd];
let value;
@@ -622,10 +626,12 @@ class StatesController extends EventEmitter {
value = payload[statedesc.prop || statedesc.id];
}
// checking value
- if (value === undefined || value === null) continue;
+ if (value === undefined || value === null) {
+ continue;
+ }
let stateID = statedesc.id;
- if (has_debug && statedesc.id != 'msg_from_zigbee') {
+ if (has_debug && statedesc.id !== 'msg_from_zigbee') {
this.warn(`ELEVATED publishToState: value generated '${JSON.stringify(value)}' from device ${devId} for '${statedesc.name}'`);
}
@@ -640,24 +646,24 @@ class StatesController extends EventEmitter {
min: statedesc.min,
max: statedesc.max,
};
- if ( (typeof(value)== 'object') && (value.hasOwnProperty('stateid'))) {
- stateID = stateID + '.' + value.stateid;
- if (value.hasOwnProperty('unit')) common.unit = value.unit;
+ if (typeof value === 'object' && value.hasOwnProperty('stateid')) {
+ stateID = `${stateID}.${value.stateid}`;
+ if (value.hasOwnProperty('unit')) {
+ common.unit = value.unit;
+ }
common.name = (value.name? value.name:value.stateid);
- common.role = (value.role ? 'value.'+value.role:'number');
+ common.role = (value.role ? `value.${value.role}` : 'number');
value = value.value;
}
- // if need return value to back after timeout
+ // if needs to return value to back after timeout
if (statedesc.isEvent) {
this.updateStateWithTimeout(devId, statedesc.id, value, common, 300, !value);
} else {
if (statedesc.prepublish) {
- this.collectOptions(devId, model, (options) => {
- statedesc.prepublish(devId, value, (newvalue) => {
- this.updateState(devId, stateID, newvalue, common);
- }, options);
- });
+ this.collectOptions(devId, model, options =>
+ statedesc.prepublish(devId, value, newvalue =>
+ this.updateState(devId, stateID, newvalue, common), options));
} else {
this.updateState(devId, stateID, value, common);
}
diff --git a/lib/utils.js b/lib/utils.js
index 2a926101..39d77140 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -24,7 +24,7 @@ function bulbLevelToAdapterLevel(bulbLevel) {
// - Bulb level range [2...254] is linearly mapped to adapter level range [1...100].
if (bulbLevel >= 2) {
// Perform linear mapping of range [2...254] to [1...100]
- return (Math.round((bulbLevel - 2) * 99 / 252) + 1);
+ return Math.round((bulbLevel - 2) * 99 / 252) + 1;
} else {
// The bulb is considered off. Even a bulb level of "1" is considered as off.
return 0;
@@ -42,7 +42,7 @@ function adapterLevelToBulbLevel(adapterLevel) {
// Please read the comments there regarding the rules applied here for mapping the values.
if (adapterLevel) {
// Perform linear mapping of range [1...100] to [2...254]
- return (Math.round((adapterLevel - 1) * 252 / 99) + 2);
+ return Math.round((adapterLevel - 1) * 252 / 99) + 2;
} else {
// Switch the bulb off. Some bulbs need "0" (IKEA), others "1" (HUE), and according to the
// ZigBee docs "1" is the "minimum possible level"... we choose "0" here which seems to work.
@@ -53,7 +53,7 @@ function adapterLevelToBulbLevel(adapterLevel) {
function bytesArrayToWordArray(ba) {
const wa = [];
for (let i = 0; i < ba.length; i++) {
- wa[(i / 2) | 0] |= ba[i] << (8*(i % 2));
+ wa[(i / 2) | 0] |= ba[i] << (8 * (i % 2));
}
return wa;
}
@@ -91,24 +91,25 @@ function decimalToHex(decimal, padding) {
function getZbId(adapterDevId) {
const idx = adapterDevId.indexOf('group');
- if (idx > 0) return adapterDevId.substr(idx+6);
- return '0x' + adapterDevId.split('.')[2];
+ if (idx > 0) {
+ return adapterDevId.substr(idx+6);
+ }
+ return `0x${adapterDevId.split('.')[2]}`;
}
function getAdId(adapter, id) {
- return adapter.namespace + '.' + id.split('.')[2]; // iobroker device id
+ return `${adapter.namespace}.${id.split('.')[2]}`; // iobroker device id
}
function flatten(arr) {
- return arr.reduce((flat, toFlatten) => {
- return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);
- }, []);
+ return arr.reduce((flat, toFlatten) =>
+ flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten), []);
}
const forceEndDevice = flatten(
['QBKG03LM', 'QBKG04LM', 'ZNMS13LM', 'ZNMS12LM']
- .map((model) => zigbeeHerdsmanConverters.devices.find((d) => d.model === model))
- .map((mappedModel) => mappedModel.zigbeeModel));
+ .map(model => zigbeeHerdsmanConverters.devices.find((d) => d.model === model))
+ .map(mappedModel => mappedModel.zigbeeModel));
// Xiaomi uses 4151 and 4447 (lumi.plug) as manufacturer ID.
const xiaomiManufacturerID = [4151, 4447];
@@ -117,7 +118,7 @@ const ikeaTradfriManufacturerID = [4476];
function sanitizeImageParameter(parameter) {
const replaceByDash = [/\?/g, /&/g, /[^a-z\d\-_./:]/gi, /[/]/gi];
let sanitized = parameter;
- replaceByDash.forEach((r) => sanitized = sanitized.replace(r, '-'));
+ replaceByDash.forEach(r => sanitized = sanitized.replace(r, '-'));
return sanitized;
}
@@ -132,7 +133,7 @@ function getDeviceIcon(definition) {
return icon;
}
-exports.secondsToMilliseconds = (seconds) => seconds * 1000;
+exports.secondsToMilliseconds = seconds => seconds * 1000;
exports.bulbLevelToAdapterLevel = bulbLevelToAdapterLevel;
exports.adapterLevelToBulbLevel = adapterLevelToBulbLevel;
exports.bytesArrayToWordArray = bytesArrayToWordArray;
@@ -141,11 +142,11 @@ exports.miredKelvinConversion = miredKelvinConversion;
exports.decimalToHex = decimalToHex;
exports.getZbId = getZbId;
exports.getAdId = getAdId;
-exports.isRouter = (device) => device.type === 'Router' && !forceEndDevice.includes(device.modelID);
-exports.isBatteryPowered = (device) => device.powerSource && device.powerSource === 'Battery';
-exports.isXiaomiDevice = (device) => {
- return device.modelID !== 'lumi.router' && xiaomiManufacturerID.includes(device.manufacturerID) &&
- (!device.manufacturerName || !device.manufacturerName.startsWith('Trust'));
-};
-exports.isIkeaTradfriDevice = (device) => ikeaTradfriManufacturerID.includes(device.manufacturerID);
-exports.getDeviceIcon = getDeviceIcon;
+exports.isRouter = device => device.type === 'Router' && !forceEndDevice.includes(device.modelID);
+exports.isBatteryPowered = device => device.powerSource && device.powerSource === 'Battery';
+exports.isXiaomiDevice = device =>
+ device.modelID !== 'lumi.router' &&
+ xiaomiManufacturerID.includes(device.manufacturerID) &&
+ (!device.manufacturerName || !device.manufacturerName.startsWith('Trust'));
+exports.isIkeaTradfriDevice = device => ikeaTradfriManufacturerID.includes(device.manufacturerID);
+exports.getDeviceIcon = getDeviceIcon;
diff --git a/lib/zbBaseExtension.js b/lib/zbBaseExtension.js
index b9f0ffeb..cf1fe89a 100644
--- a/lib/zbBaseExtension.js
+++ b/lib/zbBaseExtension.js
@@ -14,18 +14,18 @@ class BaseExtension {
}
error(message, data) {
- this.zigbee.error(this.name + ':' + message, data);
+ this.zigbee.error(`${this.name}:${message}`, data);
}
warn(message, data) {
- this.zigbee.warn(this.name + ':' + message, data);
+ this.zigbee.warn(`${this.name}:${message}`, data);
}
debug(message, data) {
if (this.elevate_debug)
- this.zigbee.warn('DE ' + this.name + ':' + message, data);
+ this.zigbee.warn(`DE ${this.name}:${message}`, data);
else
- this.zigbee.debug(this.name + ':' + message, data);
+ this.zigbee.debug(`${this.name}:${message}`, data);
}
sendError(error, message) {
diff --git a/lib/zbDelayedAction.js b/lib/zbDelayedAction.js
index 384adaf7..e8634906 100644
--- a/lib/zbDelayedAction.js
+++ b/lib/zbDelayedAction.js
@@ -8,12 +8,11 @@ class DelayedAction extends BaseExtension {
this.actions = {};
this.zigbee.delayAction = this.delayAction.bind(this);
- this.name = "DelayedAction";
+ this.name = 'DelayedAction';
}
setOptions(options) {
- if (typeof(options) != 'object') return false;
- return true;
+ return typeof options === 'object';
}
@@ -30,11 +29,7 @@ class DelayedAction extends BaseExtension {
// return false;
// }
- if (device.interviewing === true) {
- return false;
- }
-
- return true;
+ return device.interviewing !== true;
}
async onZigbeeStarted() {
@@ -97,10 +92,7 @@ class DelayedAction extends BaseExtension {
}
const foundDev = await this.zigbee.getDevice(device.ieeeAddr);
if (!foundDev) {
- this.debug(
- `No found device ${device.ieeeAddr} ${device.modelID}, ` +
- `for doAction`
- );
+ this.debug(`No found device ${device.ieeeAddr} ${device.modelID}, for doAction`);
delete this.actions[device.ieeeAddr];
return;
}
@@ -120,7 +112,7 @@ class DelayedAction extends BaseExtension {
try {
// do action
await actionDef.action(device);
- this.info(`Do action succesfully ${device.ieeeAddr} ${device.modelID}`);
+ this.info(`Do action successfully ${device.ieeeAddr} ${device.modelID}`);
toDelete.push(actionDef);
} catch (error) {
this.sendError(error);
diff --git a/lib/zbDeviceAvailability.js b/lib/zbDeviceAvailability.js
index 3528cbd9..ec487952 100644
--- a/lib/zbDeviceAvailability.js
+++ b/lib/zbDeviceAvailability.js
@@ -44,65 +44,77 @@ class DeviceAvailability extends BaseExtension {
// force publish availability for new devices
this.zigbee.on('new', (entity) => {
// wait for 1s for creating device states
- setTimeout(() => {
- this.publishAvailability(entity.device, true, true);
- }, 1000);
+ setTimeout(() =>
+ this.publishAvailability(entity.device, true, true), 1000);
});
this.startDevicePingQueue = []; // simple fifo array for starting device pings
this.startDevicePingTimeout = null; // handle for the timeout which empties the queue
this.startDevicePingDelay = 200; // 200 ms delay between starting the ping timeout
- this.name = "DeviceAvailability";
+ this.name = 'DeviceAvailability';
this.elevate_debug = false;
}
setOptions(options) {
- if (typeof(options) != 'object') return false;
- if (options.disableActivePing) this.active_ping = false;
- if (options.disableForcedPing) this.forced_ping = false;
- if (typeof(options.pingTimeout)=='number') this.availability_timeout = Math.min(60,options.pingTimeout);
- if (typeof(options.pingCount)=='number') this.max_ping = Math.min(2, options.pingCount);
+ if (typeof options !== 'object') {
+ return false;
+ }
+ if (options.disableActivePing) {
+ this.active_ping = false;
+ }
+ if (options.disableForcedPing) {
+ this.forced_ping = false;
+ }
+ if (typeof options.pingTimeout === 'number') {
+ this.availability_timeout = Math.min(60,options.pingTimeout);
+ }
+ if (typeof options.pingCount === 'number') {
+ this.max_ping = Math.min(2, options.pingCount);
+ }
return true;
}
isPingable(device) {
if (this.active_ping)
{
- if (this.forced_ping && forcedPingable.find((d) => d && d.hasOwnProperty('zigbeeModel') && d.zigbeeModel.includes(device.modelID))) {
+ if (this.forced_ping && forcedPingable.find(d => d && d.hasOwnProperty('zigbeeModel') && d.zigbeeModel.includes(device.modelID))) {
return true;
}
- const result = utils.isRouter(device) && !utils.isBatteryPowered(device);
- return result;
+ return utils.isRouter(device) && !utils.isBatteryPowered(device);
}
return false;
}
async getAllPingableDevices() {
const clients = await this.zigbee.getClients();
- return clients.filter((d) => this.isPingable(d));
+ return clients.filter(d => this.isPingable(d));
}
async registerDevicePing(device, entity) {
- this.debug('register device Ping for ' + JSON.stringify(device.ieeeAddr));
+ this.debug(`register device Ping for ${JSON.stringify(device.ieeeAddr)}`);
this.forcedNonPingable[device.ieeeAddr] = false;
// this.warn(`Called registerDevicePing for '${device}' of '${entity}'`);
- if (!this.isPingable(device)) return;
+ if (!this.isPingable(device)) {
+ return;
+ }
// ensure we do not already have this device in the queue
+ // TODO: Following does not work, may be `if (this.startDevicePingQueue.find(item => item && item.device === device)) { return; }`
this.startDevicePingQueue.forEach(item => {
- if (item && item.device == device)
+ if (item && item.device == device) {
return;
+ }
});
this.number_of_registered_devices++;
this.availability_timeout = Math.max(Math.min(this.number_of_registered_devices * AverageTimeBetweenPings,MaxAvailabilityTimeout ),MinAvailabilityTimeout);
- this.startDevicePingQueue.push({device:device, entity:entity});
- if (this.startDevicePingTimeout == null)
- this.startDevicePingTimeout = setTimeout(async() => {
- await this.startDevicePing();
- }, this.startDevicePingDelay);
+ this.startDevicePingQueue.push({device, entity});
+ if (this.startDevicePingTimeout == null) {
+ this.startDevicePingTimeout = setTimeout(async() =>
+ await this.startDevicePing(), this.startDevicePingDelay);
+ }
}
async deregisterDevicePing(device) {
- this.info('deregister device Ping for deactivated device ' + JSON.stringify(device.ieeeAddr));
+ this.info(`deregister device Ping for deactivated device ${JSON.stringify(device.ieeeAddr)}`);
this.forcedNonPingable[device.ieeeAddr] = true;
if (this.timers[device.ieeeAddr]) {
clearTimeout(this.timers[device.ieeeAddr]);
@@ -114,9 +126,8 @@ class DeviceAvailability extends BaseExtension {
this.startDevicePingTimeout = null;
const item = this.startDevicePingQueue.shift();
if (this.startDevicePingQueue.length >0) {
- this.startDevicePingTimeout = setTimeout(async() => {
- await this.startDevicePing();
- }, this.startDevicePingDelay);
+ this.startDevicePingTimeout = setTimeout(async() =>
+ await this.startDevicePing(), this.startDevicePingDelay);
}
if (item && item.hasOwnProperty('device')) {
this.handleIntervalPingable(item.device, item.entity);
@@ -131,15 +142,13 @@ class DeviceAvailability extends BaseExtension {
const clients = await this.zigbee.getClients();
// this.warn('onZigbeeStarted called');
for (const device of clients) {
-
if (this.isPingable(device)) {
// this.setTimerPingable(device);
} else {
// this.warn(`Setting '${device.ieeeAddr}' as available - battery driven`);
this.publishAvailability(device, true);
- this.timers[device.ieeeAddr] = setInterval(() => {
- this.handleIntervalNotPingable(device);
- },utils.secondsToMilliseconds(this.availability_timeout));
+ this.timers[device.ieeeAddr] = setInterval(() =>
+ this.handleIntervalNotPingable(device), utils.secondsToMilliseconds(this.availability_timeout));
}
}
}
@@ -154,8 +163,8 @@ class DeviceAvailability extends BaseExtension {
if (this.isPingable(device)) {
let pingCount = this.ping_counters[device.ieeeAddr];
if (pingCount === undefined) {
- this.ping_counters[device.ieeeAddr] = { failed: 0, reported: 0};
- pingCount = { failed: 0, reported: 0};
+ this.ping_counters[device.ieeeAddr] = {failed: 0, reported: 0};
+ pingCount = {failed: 0, reported: 0};
}
// first see if we can "ping" the device by reading a Status
@@ -185,26 +194,22 @@ class DeviceAvailability extends BaseExtension {
this.ping_counters[device.ieeeAddr].failed = 0;
} catch (error) {
this.publishAvailability(device, false);
- if (pingCount.failed++ <= this.max_ping)
- {
+ if (pingCount.failed++ <= this.max_ping) {
if (pingCount.failed < 2 && pingCount.reported < this.max_ping) {
this.warn(`Failed to ping ${ieeeAddr} ${device.modelID}`);
pingCount.reported++;
- }
- else {
+ } else {
this.debug(`Failed to ping ${ieeeAddr} ${device.modelID} on ${pingCount} consecutive attempts`);
}
this.setTimerPingable(device, pingCount.failed);
this.ping_counters[device.ieeeAddr]= pingCount;
- }
- else {
+ } else {
this.warn(`Stopping to ping ${ieeeAddr} ${device.modelID} after ${pingCount.failed} ping attempts`);
}
}
}
}
-
async handleIntervalNotPingable(device) {
const entity = await this.zigbee.resolveEntity(device.ieeeAddr);
if (!entity || !device.lastSeen) {
@@ -224,9 +229,8 @@ class DeviceAvailability extends BaseExtension {
if (this.timers[device.ieeeAddr]) {
clearTimeout(this.timers[device.ieeeAddr]);
}
- this.timers[device.ieeeAddr] = setTimeout(async() => {
- await this.handleIntervalPingable(device);
- }, utils.secondsToMilliseconds(this.availability_timeout * factor));
+ this.timers[device.ieeeAddr] = setTimeout(async() =>
+ await this.handleIntervalPingable(device), utils.secondsToMilliseconds(this.availability_timeout * factor));
}
async stop() {
@@ -234,7 +238,7 @@ class DeviceAvailability extends BaseExtension {
clearTimeout(timer);
}
const clients = await this.zigbee.getClients();
- clients.forEach((device) => this.publishAvailability(device, false));
+ clients.forEach(device => this.publishAvailability(device, false));
}
async onReconnect(device) {
@@ -290,8 +294,7 @@ class DeviceAvailability extends BaseExtension {
const pc = this.ping_counters[device.ieeeAddr];
if (pc == undefined) {
this.ping_counters[device.ieeeAddr] = { failed:0, reported:0 };
- }
- else {
+ } else {
this.ping_counters[device.ieeeAddr].failed++;
}
diff --git a/lib/zbDeviceConfigure.js b/lib/zbDeviceConfigure.js
index 07dc4a4e..97052e09 100755
--- a/lib/zbDeviceConfigure.js
+++ b/lib/zbDeviceConfigure.js
@@ -10,20 +10,17 @@ const forcedConfigureOnEachStart = [
zigbeeHerdsmanConverters.devices.find((d) => d.model === 'ZK03840')
];
-
-
class DeviceConfigure extends BaseExtension {
constructor(zigbee, options) {
super(zigbee, options);
this.configuring = new Set();
this.attempts = {};
- this.name = "DeviceConfigure";
+ this.name = 'DeviceConfigure';
}
setOptions(options) {
- if (typeof(options) != 'object') return false;
- return true;
+ return typeof options === 'object';
}
shouldConfigure(device, mappedDevice) {
@@ -37,11 +34,8 @@ class DeviceConfigure extends BaseExtension {
zigbeeHerdsmanConverters.getConfigureKey(mappedDevice)) {
return false;
}
- if (device.interviewing === true) {
- return false;
- }
- return true;
+ return device.interviewing !== true;
}
async onZigbeeStarted() {
@@ -53,7 +47,7 @@ class DeviceConfigure extends BaseExtension {
if (forcedConfigureOnEachStart.find((d) => d && d.hasOwnProperty('zigbeeModel') && d.zigbeeModel.includes(device.modelID))) {
this.debug(`DeviceConfigure ${device.ieeeAddr} ${device.modelID} forced by adapter config`);
- device.meta.configured = -1; // Force a reconfigure for this device
+ device.meta.configured = -1; // Force a reconfiguration for this device
}
if (this.shouldConfigure(device, mappedDevice)) {
this.debug(`DeviceConfigure ${device.ieeeAddr} ${device.modelID} needed`);
@@ -64,9 +58,7 @@ class DeviceConfigure extends BaseExtension {
}
} catch (error) {
this.sendError(error);
- this.error(
- `Failed to DeviceConfigure.onZigbeeStarted (${error.stack})`,
- );
+ this.error(`Failed to DeviceConfigure.onZigbeeStarted (${error.stack})`);
}
}
@@ -78,9 +70,7 @@ class DeviceConfigure extends BaseExtension {
}
} catch (error) {
this.sendError(error);
- this.error(
- `Failed to DeviceConfigure.onZigbeeEvent (${error.stack})`,
- );
+ this.error(`Failed to DeviceConfigure.onZigbeeEvent (${error.stack})`);
}
}
@@ -95,9 +85,7 @@ class DeviceConfigure extends BaseExtension {
}
} catch (error) {
this.sendError(error);
- this.error(
- `Failed to DeviceConfigure.onDeviceRemove (${error.stack})`,
- );
+ this.error(`Failed to DeviceConfigure.onDeviceRemove (${error.stack})`);
}
}
diff --git a/lib/zbDeviceEvent.js b/lib/zbDeviceEvent.js
index fc4129ec..08573216 100644
--- a/lib/zbDeviceEvent.js
+++ b/lib/zbDeviceEvent.js
@@ -6,10 +6,9 @@ const zigbeeHerdsmanConverters = require('zigbee-herdsman-converters');
class DeviceEvent extends BaseExtension {
constructor(zigbee, options) {
super(zigbee, options);
- this.name = "DeviceEvent";
+ this.name = 'DeviceEvent';
}
-
async onZigbeeStarted() {
for (const device of await this.zigbee.getClients()) {
this.callOnEvent(device, 'start', {});
@@ -17,8 +16,8 @@ class DeviceEvent extends BaseExtension {
}
setOptions(options) {
- if (typeof(options) != 'object') return false;
- return true;
+ return typeof options === 'object';
+
}
onZigbeeEvent(data, mappedDevice) {
diff --git a/lib/zigbeecontroller.js b/lib/zigbeecontroller.js
index 2102b2d2..6fefcc30 100644
--- a/lib/zigbeecontroller.js
+++ b/lib/zigbeecontroller.js
@@ -118,13 +118,12 @@ class ZigbeeController extends EventEmitter {
}
this.debug(`Zigbee network parameters: panID=${debNetworkParam.panID} channel=${debNetworkParam.channel} extendedPanID=${extPanIDDebug}`);
-
} catch (e) {
this.sendError(e);
- this.error('Starting zigbee-herdsman problem : ' + JSON.stringify(e.message));
+ this.error(`Starting zigbee-herdsman problem : ${JSON.stringify(e.message)}`);
throw 'Error herdsman start';
}
- // Check if we have to turn off the led
+ // Check if we have to turn off the LED
try {
if (this.disableLed) {
this.info('Disable LED');
@@ -141,7 +140,7 @@ class ZigbeeController extends EventEmitter {
let powerText = 'normal';
if (this.transmitPower != '0') {
- switch(this.transmitPower) {
+ switch (this.transmitPower) {
case '-22':
powerText = 'low';
break;
@@ -157,7 +156,7 @@ class ZigbeeController extends EventEmitter {
}
- this.info(' --> transmitPower : ' + powerText);
+ this.info(` --> transmitPower : ${powerText}`);
try {
await this.herdsman.setTransmitPower(this.transmitPower);
} catch (e) {
@@ -165,7 +164,6 @@ class ZigbeeController extends EventEmitter {
this.info('Unable to set transmit power, unsupported function.');
}
-
// Call extensions
this.callExtensionMethod('onZigbeeStarted', []);
@@ -176,20 +174,21 @@ class ZigbeeController extends EventEmitter {
} else {
this.info(`Currently no devices.`);
}
+
for (const device of devices) {
const entity = await this.resolveEntity(device);
- this.adapter.getObject(device.ieeeAddr.substr(2),(err, obj) => {
- if (obj && obj.common && obj.common.deactivated)
- {
+ this.adapter.getObject(device.ieeeAddr.substr(2), (err, obj) => {
+ if (obj && obj.common && obj.common.deactivated) {
this.callExtensionMethod('deregisterDevicePing', [device, entity]);
- }
- else {
+ } else {
this.callExtensionMethod('registerDevicePing', [device, entity]);
}
});
// ensure that objects for all found clients are present
- if (entity.mapped) this.emit('new', entity);
+ if (entity.mapped) {
+ this.emit('new', entity);
+ }
this.info(
(entity.device.ieeeAddr) +
` (addr ${entity.device.networkAddress}): ` +
@@ -261,8 +260,7 @@ class ZigbeeController extends EventEmitter {
async getGroups() {
try {
- const rv = await this.herdsman.getGroups();
- return rv;
+ return await this.herdsman.getGroups();
} catch (error) {
this.sendError(error);
this.error(JSON.stringify(error));
@@ -271,12 +269,12 @@ class ZigbeeController extends EventEmitter {
}
async removeGroupById(id) {
- const group = await this.getGroupByID(id);
+ const group = await this.getGroupByID(id);
try {
- if (group) group.removeFromDatabase();
+ group && group.removeFromDatabase();
} catch (error) {
this.sendError(error);
- this.error('error in removeGroupById: ' + error);
+ this.error(`error in removeGroupById: ${error}`);
}
}
@@ -290,16 +288,15 @@ class ZigbeeController extends EventEmitter {
}
async verifyGroupExists(id) {
- const nid = (typeof(id) === 'number' ? id:parseInt(id));
+ const nid = (typeof (id) === 'number' ? id : parseInt(id));
let group = await this.herdsman.getGroupByID(nid);
if (!group) {
group = await this.herdsman.createGroup(nid);
group.toZigbee = groupConverters;
group.model = 'group';
- this.debug('verifyGroupExists: created group ' + nid);
- }
- else {
- this.debug('verifyGroupExists: group ' + nid + ' exists');
+ this.debug(`verifyGroupExists: created group ${nid}`);
+ } else {
+ this.debug(`verifyGroupExists: group ${nid} exists`);
}
}
@@ -316,15 +313,17 @@ class ZigbeeController extends EventEmitter {
const device = this.getDeviceByNetworkAddress(nwk);
if (device && device.ieeeAddr) members.push( { ieee:device.ieeeAddr, model:device.modelID, epid:epid, ep:member } );
}
- }
- else {
+ } else {
return undefined;
}
} catch (error) {
this.sendError(error);
- if (error) this.error('getGroupMembersFromController: error is ' + JSON.stringify(error) + ' ' + JSON.stringify(new Error().stack));
- else this.error('unidentifed error in getGroupMembersFromController');
+ if (error) {
+ this.error(`getGroupMembersFromController: error is ${JSON.stringify(error)} ${JSON.stringify(new Error().stack)}`);
+ } else {
+ this.error('unidentified error in getGroupMembersFromController');
+ }
}
return members;
}
@@ -404,7 +403,7 @@ class ZigbeeController extends EventEmitter {
}
}
- async incMsgHandler(message){
+ async incMsgHandler(message) {
this.debug('incoming msg', message);
const device = await this.herdsman.getDeviceByIeeeAddr(message.srcaddr);
if (!device) {
@@ -462,8 +461,8 @@ class ZigbeeController extends EventEmitter {
} else {
this.info('Zigbee: disabling joining new devices.');
}
- try
- {
+
+ try {
if (permitTime && !this.herdsman.getPermitJoin()) {
clearInterval(this._permitJoinInterval);
this._permitJoinTime = permitTime;
@@ -509,6 +508,7 @@ class ZigbeeController extends EventEmitter {
this.debug(`Force remove`);
}
}
+
try {
await device.removeFromDatabase();
} catch (error) {
@@ -518,7 +518,7 @@ class ZigbeeController extends EventEmitter {
this.debug(`Failed to remove from DB ${error.stack}`);
}
this.debug('Remove successful.');
- if (callback) callback();
+ callback && callback();
this.callExtensionMethod(
'onDeviceRemove',
[device],
@@ -527,7 +527,7 @@ class ZigbeeController extends EventEmitter {
} catch (error) {
this.sendError(error);
this.error(`Failed to remove ${error.stack}`);
- if (callback) callback(`Failed to remove ${error.stack}`);
+ callback && callback(`Failed to remove ${error.stack}`);
}
}
@@ -536,7 +536,7 @@ class ZigbeeController extends EventEmitter {
try {
this.debug('handleDeviceLeave', message);
const entity = await this.resolveEntity(message.device || message.ieeeAddr);
- const friendlyName = (entity) ? entity.name : message.ieeeAddr;
+ const friendlyName = entity ? entity.name : message.ieeeAddr;
this.debug(`Device '${friendlyName}' left the network`);
this.emit('leave', message.ieeeAddr);
// Call extensions
@@ -566,7 +566,7 @@ class ZigbeeController extends EventEmitter {
this.sendError(error);
this.error(`Failed to handleDeviceLeave ${error.stack}`);
}
-
+
this.emit('pairing', `Device '${friendlyName}' announced itself`);
if (!this.herdsman.getPermitJoin()) this.callExtensionMethod('registerDevicePing', [message.device, entity]);
// if has modelID so can create device
@@ -650,12 +650,11 @@ class ZigbeeController extends EventEmitter {
async getMap(callback) {
try {
-
const devices = this.herdsman.getDevices(true);
const lqis = [];
const routing = [];
- for (const device of devices.filter((d) => d.type != 'EndDevice')) {
+ for (const device of devices.filter((d) => d.type !== 'EndDevice')) {
const resolved = await this.resolveEntity(device);
let result;
@@ -679,7 +678,7 @@ class ZigbeeController extends EventEmitter {
if (result !== undefined) {
for (const dev of result.neighbors) {
- if (dev.ieeeAddr !== '0xffffffffffffffff' && dev !== undefined) {
+ if (dev !== undefined && dev.ieeeAddr !== '0xffffffffffffffff') {
lqis.push({
parent: resolved.device.ieeeAddr,
networkAddress: dev.networkAddress,
@@ -687,7 +686,7 @@ class ZigbeeController extends EventEmitter {
lqi: dev.linkquality,
relationship: dev.relationship,
depth: dev.depth,
- status: (dev.linkquality > 0) ? 'online' : 'offline',
+ status: dev.linkquality > 0 ? 'online' : 'offline',
});
}
}
@@ -718,11 +717,10 @@ class ZigbeeController extends EventEmitter {
}
}
this.debug(`Routing table succeeded for '${resolved.name}'`);
-
}
this.debug(`Get map succeeded ${safeJsonStringify(lqis)}`);
- if (callback) callback({lqis: lqis, routing: routing});
+ callback && callback({lqis, routing});
} catch (error) {
this.sendError(error);
this.debug(`Failed to get map: ${safeJsonStringify(error.stack)}`);
@@ -755,7 +753,7 @@ class ZigbeeController extends EventEmitter {
if (type === 'foundation') {
cfg.disableDefaultResponse = true;
if (cmd === 'read' && !Array.isArray(zclData)) {
- // needs to be iterateable (string[] | number [])
+ // needs to be iterable (string[] | number [])
zclData[Symbol.iterator] = function* () {
let k;
for (k in this) {
@@ -769,17 +767,15 @@ class ZigbeeController extends EventEmitter {
} else {
result = await endpoint[cmd](cid, zclData, cfg);
}
- if (callback) callback(undefined, result);
- }
- else if(type === 'functionalResp'){
- cfg.disableDefaultResponse = false;
- const result = await endpoint.commandResponse(cid, cmd, zclData, cfg, zclSeqNum);
- if (callback) callback(undefined, result);
- }
- else {
+ callback && callback(undefined, result);
+ } else if (type === 'functionalResp') {
+ cfg.disableDefaultResponse = false;
+ const result = await endpoint.commandResponse(cid, cmd, zclData, cfg, zclSeqNum);
+ callback && callback(undefined, result);
+ } else {
cfg.disableDefaultResponse = false;
const result = await endpoint.command(cid, cmd, zclData, cfg);
- if (callback) callback(undefined, result);
+ callback && callback(undefined, result);
}
}
@@ -790,66 +786,61 @@ class ZigbeeController extends EventEmitter {
this.debug(`addDevFromGroup - entity: ${safeJsonStringify(entity)}`);
this.debug(`addDevFromGroup - group: ${safeJsonStringify(group)}`);
if (epid != undefined) {
- for (const ep of entity.endpoints) {
- if (ep.ID == epid && (ep.inputClusters.includes(4) || ep.outputClusters.includes(4)))
- {
- this.debug(`adding endpoint ${ep.ID} (${epid}) to group ${groupId}`)
- await(ep.addToGroup(group.mapped));
+ for (const ep of entity.endpoints) {
+ if (ep.ID === epid && (ep.inputClusters.includes(4) || ep.outputClusters.includes(4))) {
+ this.debug(`adding endpoint ${ep.ID} (${epid}) to group ${groupId}`);
+ await (ep.addToGroup(group.mapped));
+ }
}
- }
- }
- else
- {
- if (entity.endpoint.inputClusters.includes(4))
- {
- this.debug(`adding endpoint ${entity.endpoint.ID} to group`)
+ } else {
+ if (entity.endpoint.inputClusters.includes(4)) {
+ this.debug(`adding endpoint ${entity.endpoint.ID} to group`);
await entity.endpoint.addToGroup(group.mapped);
- }
- else {
+ } else {
let added = false;
- for (const ep of entity.endpoints)
- {
- if (ep.inputClusters.includes(4))
- {
- this.debug(`adding endpoint ${ep.ID} to group`)
+ for (const ep of entity.endpoints) {
+ if (ep.inputClusters.includes(4)) {
+ this.debug(`adding endpoint ${ep.ID} to group`);
await ep.addToGroup(group.mapped);
added = true;
break;
}
}
- if (!added) throw ('cluster genGroups not supported');
+ if (!added) {
+ throw ('cluster genGroups not supported');
+ }
}
}
} catch (error) {
this.sendError(error);
this.error(`Exception when trying to Add ${devId} to group ${groupId}`, error);
- return { error:`Failed to add ${devId} to group ${groupId}: ${JSON.stringify(error)}` };
+ return {error: `Failed to add ${devId} to group ${groupId}: ${JSON.stringify(error)}`};
}
return {};
}
async removeDevFromGroup(devId, groupId, epid) {
- try {
- const entity = await this.resolveEntity(devId);
- const group = await this.resolveEntity(groupId);
- this.debug(`removeDevFromGroup - entity: ${safeJsonStringify(entity)}`);
- this.debug(`removeDevFromGroup - group: ${safeJsonStringify(group)}`);
- if (epid != undefined) {
- for (const ep of entity.endpoints) {
- if (ep.ID == epid && (ep.inputClusters.includes(4) || ep.outputClusters.includes(4)))
- {
- this.debug(`removing endpoint ${ep.ID} (${epid}) group ${groupId}`)
- await(ep.removeFromGroup(group.mapped))
- }
- }
- } else await entity.endpoint.removeFromGroup(group.mapped);
- } catch (error) {
- this.sendError(error);
- this.error(`Exception when trying remove ${devId} (ep ${epid?epid:entity.endpoint.ID}) from group ${devId}`, error);
- return { error: `Failed to remove dev ${devId} (ep ${epid?epid:entity.endpoint.ID}) from group ${devId}`};
- }
- return {};
+ let entity;
+ try {
+ entity = await this.resolveEntity(devId);
+ const group = await this.resolveEntity(groupId);
+ this.debug(`removeDevFromGroup - entity: ${safeJsonStringify(entity)}`);
+ this.debug(`removeDevFromGroup - group: ${safeJsonStringify(group)}`);
+ if (epid != undefined) {
+ for (const ep of entity.endpoints) {
+ if (ep.ID === epid && (ep.inputClusters.includes(4) || ep.outputClusters.includes(4))) {
+ this.debug(`removing endpoint ${ep.ID} (${epid}) group ${groupId}`);
+ await ep.removeFromGroup(group.mapped);
+ }
+ }
+ } else await entity.endpoint.removeFromGroup(group.mapped);
+ } catch (error) {
+ this.sendError(error);
+ this.error(`Exception when trying remove ${devId} (ep ${epid ? epid : (entity ? entity.endpoint.ID : '')}) from group ${devId}`, error);
+ return {error: `Failed to remove dev ${devId} (ep ${epid ? epid : (entity ? entity.endpoint.ID : '')}) from group ${devId}`};
+ }
+ return {};
}
async removeDevFromAllGroups(devId) {
@@ -857,14 +848,15 @@ class ZigbeeController extends EventEmitter {
const entity = await this.resolveEntity(devId);
this.debug(`entity: ${safeJsonStringify(entity)}`);
for (const ep of entity.endpoints) {
- if (ep.inputClusters.includes(4) || ep.outputClusters.includes(4))
- await ep.removefromAllGroups();
+ if (ep.inputClusters.includes(4) || ep.outputClusters.includes(4)) {
+ await ep.removefromAllGroups();
+ }
}
//await entity.endpoint.removeFromAllGroups();
} catch (error) {
this.sendError(error);
this.error(`Exception when trying remove ${devId} from all groups`, error);
- return { error: `Failed to remove dev ${devId} from all groups: ${error}`};
+ return {error: `Failed to remove dev ${devId} from all groups: ${error}`};
}
return {};
}
@@ -874,7 +866,7 @@ class ZigbeeController extends EventEmitter {
target = !target ? this.getCoordinator() : target;
this.debug(`Binding ${log}`);
- ep.bind(cluster, target, (error) => {
+ ep.bind(cluster, target, error => {
if (error) {
this.sendError(error);
this.error(`Failed to bind ${log} - (${error})`);
@@ -905,11 +897,11 @@ class ZigbeeController extends EventEmitter {
reset(mode, callback) {
try {
this.herdsman.reset(mode);
- if (callback) callback();
+ callback && callback();
} catch (error) {
this.sendError(error);
this.error(`Failed to reset ${error.stack}`);
- if (callback) callback(error);
+ callback && callback(error);
}
}
diff --git a/main.js b/main.js
index e47e78eb..e28594ff 100644
--- a/main.js
+++ b/main.js
@@ -40,21 +40,20 @@ const createByteArray = function (hexString) {
return bytes;
};
-const E_INFO=1;
-const E_DEBUG=2;
-const E_WARN=3;
-const E_ERROR=4;
+const E_INFO = 1;
+const E_DEBUG = 2;
+const E_WARN = 3;
+const E_ERROR = 4;
let _pairingMode = false;
const errorCodes = {
- 9999: { severity:E_INFO, message:'No response'},
- 233: { severity:E_DEBUG, message:'MAC NO ACK'},
- 205: { severity:E_WARN, message:'No network route'},
- 134: { severity:E_WARN, message:'Unnsupported Attribute'},
+ 9999: {severity: E_INFO, message: 'No response'},
+ 233: {severity: E_DEBUG, message: 'MAC NO ACK'},
+ 205: {severity: E_WARN, message: 'No network route'},
+ 134: {severity: E_WARN, message: 'Unsupported Attribute'},
};
-
class Zigbee extends utils.Adapter {
/**
* @param {Partial} [options={}]
@@ -93,14 +92,15 @@ class Zigbee extends utils.Adapter {
case 'SendToDevice': {
let rv = {
success: false,
- loc:-1,
+ loc: -1,
};
+
try {
- rv = await this.SendPayload(obj.message);
- }
- catch (e) {
+ rv = await this.sendPayload(obj.message);
+ } catch (e) {
rv.error = e;
}
+
this.sendTo(obj.from, obj.command, rv, obj.callback);
break;
}
@@ -115,15 +115,15 @@ class Zigbee extends utils.Adapter {
const Sentry = sentryInstance.getSentryObject();
if (Sentry) {
if (message) {
- Sentry.configureScope(scope => {
+ Sentry.configureScope(scope =>
scope.addBreadcrumb({
- type: "error", // predefined types
- category: "error message",
+ type: 'error', // predefined types
+ category: 'error message',
level: Sentry.Severity.Error,
- message: message
- });
- });
+ message
+ }));
}
+
if (typeof error == 'string') {
Sentry.captureException(new Error(error));
} else {
@@ -135,27 +135,31 @@ class Zigbee extends utils.Adapter {
}
filterError(errormessage, message, error) {
- if (error.code === undefined)
- {
- let em = error.stack.match(/failed \((.+?)\) at/);
- if (!em) em = error.stack.match(/failed \((.+?)\)/);
+ if (error.code === undefined) {
+ let em = error.stack.match(/failed \((.+?)\) at/);
+ em = em || error.stack.match(/failed \((.+?)\)/);
this.log.error(`${message} no error code (${(em ? em[1]:'undefined')})`);
this.sendError(error, `${message} no error code`);
this.log.debug(`Stack trace for ${em}: ${error.stack}`);
return;
}
+
const ecode = errorCodes[error.code];
if (ecode === undefined) {
this.log.error(errormessage);
this.sendError(error, errormessage);
return;
}
+
switch (ecode.severity) {
- case E_INFO: this.log.info(`${message}: Code ${error.code} (${ecode.message})`);
+ case E_INFO:
+ this.log.info(`${message}: Code ${error.code} (${ecode.message})`);
break;
- case E_DEBUG: this.log.debug(`${message}: Code ${error.code} (${ecode.message})`);
+ case E_DEBUG:
+ this.log.debug(`${message}: Code ${error.code} (${ecode.message})`);
break;
- case E_WARN: this.log.warn(`${message}: Code ${error.code} (${ecode.message})`);
+ case E_WARN:
+ this.log.warn(`${message}: Code ${error.code} (${ecode.message})`);
break;
case E_ERROR:
this.log.error(`${message}: Code ${error.code} (${ecode.message})`);
@@ -164,6 +168,7 @@ class Zigbee extends utils.Adapter {
default:
this.log.error(`${message}: Code ${error.code} (malformed error)`);
this.sendError(error, `${message}: Code ${error.code} (malformed error)`);
+ break;
}
}
@@ -181,9 +186,8 @@ class Zigbee extends utils.Adapter {
// external converters
this.applyExternalConverters();
// get exclude list from object
- this.getState('exclude.all', (err, state) => {
- this.stController.getExcludeExposes(state);
- });
+ this.getState('exclude.all', (err, state) =>
+ this.stController.getExcludeExposes(state));
this.subscribeStates('*');
// set connection false before connect to zigbee
@@ -212,7 +216,9 @@ class Zigbee extends utils.Adapter {
}
const extfiles = this.config.external.split(';');
for (const moduleName of extfiles) {
- if (!moduleName) continue;
+ if (!moduleName) {
+ continue;
+ }
this.log.info(`Apply converter from module: ${moduleName}`);
const sandbox = {
require,
@@ -231,7 +237,7 @@ class Zigbee extends utils.Adapter {
}
}
- applyExternalConverters(){
+ applyExternalConverters() {
for (const definition of this.getExternalDefinition()) {
const toAdd = {...definition};
delete toAdd['homeassistant'];
@@ -252,16 +258,16 @@ class Zigbee extends utils.Adapter {
// installed version
let gitVers = '';
try {
- this.log.info('Starting Zigbee ' + debugversion);
+ this.log.info(`Starting Zigbee ${debugversion}`);
- await this.getForeignObject('system.adapter.' + this.namespace, (err, obj) => {
+ await this.getForeignObject(`system.adapter.${this.namespace}`, (err, obj) => {
if (!err && obj && obj.common.installedFrom && obj.common.installedFrom.includes('://')) {
const instFrom = obj.common.installedFrom;
- gitVers = gitVers + instFrom.replace('tarball','commit');
+ gitVers = gitVers + instFrom.replace('tarball', 'commit');
} else {
gitVers = obj.common.installedFrom;
}
- this.log.info('Installed Version: ' + gitVers );
+ this.log.info(`Installed Version: ${gitVers}`);
});
await this.zbController.start();
@@ -274,6 +280,7 @@ class Zigbee extends utils.Adapter {
this.log.error(error);
}
this.sendError(error, `Failed to start Zigbee`);
+
if (this.reconnectCounter > 0) {
this.tryToReconnect();
}
@@ -291,10 +298,10 @@ class Zigbee extends utils.Adapter {
tryToReconnect() {
this.reconnectTimer = setTimeout(()=>{
- if (this.config.port.indexOf('tcp://') !== -1) {
- // Controller connect though WiFi.
- // Unlikely USB dongle, connection broken may only caused user unpluged the dongle,
- // WiFi connected gateway is possible that device connection is broken caused by
+ if (this.config.port.includes('tcp://')) {
+ // Controller connect though Wi-Fi.
+ // Unlikely USB dongle, connection broken may only cause user unplugged the dongle,
+ // Wi-Fi connected gateway is possible that device connection is broken caused by
// AP issue or Zigbee gateway power is turned off unexpectedly.
// So try to reconnect gateway every 10 seconds all the time.
this.log.info(`Try to reconnect.`);
@@ -303,7 +310,7 @@ class Zigbee extends utils.Adapter {
this.reconnectCounter -= 1;
}
this.doConnect();
- }, 10*1000); // every 10 seconds
+ }, 10 * 1000); // every 10 seconds
}
async onZigbeeAdapterReady() {
@@ -312,13 +319,13 @@ class Zigbee extends utils.Adapter {
// https://github.com/ioBroker/ioBroker.zigbee/issues/668
const extPanIdFix = this.config.extPanIdFix ? this.config.extPanIdFix : false;
if (!extPanIdFix) {
- const configExtPanId = this.config.extPanID ? '0x'+this.config.extPanID.toLowerCase() : '0xdddddddddddddddd';
+ const configExtPanId = this.config.extPanID ? '0x' + this.config.extPanID.toLowerCase() : '0xdddddddddddddddd';
let networkExtPanId = (await this.zbController.herdsman.getNetworkParameters()).extendedPanID;
let needChange = false;
this.log.debug(`Config value ${configExtPanId} : Network value ${networkExtPanId}`);
const adapterType = this.config.adapterType || 'zstack';
if (adapterType === 'zstack') {
- if (configExtPanId != networkExtPanId) {
+ if (configExtPanId !== networkExtPanId) {
try {
// try to read from nvram
const result = await this.zbController.herdsman.adapter.znp.request(
@@ -334,9 +341,9 @@ class Zigbee extends utils.Adapter {
2, // ZnpCommandStatus.INVALID_PARAM
]
);
- const nwExtPanId = '0x'+result.payload.value.reverse().toString('hex');
+ const nwExtPanId = '0x' + result.payload.value.reverse().toString('hex');
this.log.debug(`Config value ${configExtPanId} : nw value ${nwExtPanId}`);
- if (configExtPanId != nwExtPanId) {
+ if (configExtPanId !== nwExtPanId) {
networkExtPanId = nwExtPanId;
needChange = true;
}
@@ -366,37 +373,36 @@ class Zigbee extends utils.Adapter {
for (const device of devicesFromDB) {
const entity = await this.zbController.resolveEntity(device);
if (entity) {
- const model = (entity.mapped) ? entity.mapped.model : entity.device.modelID;
- this.stController.updateDev(device.ieeeAddr.substr(2), model, model, () => {
- this.stController.syncDevStates(device, model);
- });
+ const model = entity.mapped ? entity.mapped.model : entity.device.modelID;
+ this.stController.updateDev(device.ieeeAddr.substr(2), model, model, () =>
+ this.stController.syncDevStates(device, model));
}
}
await this.callPluginMethod('start', [this.zbController, this.stController]);
}
async checkIfModelUpdate(entity) {
- const model = (entity.mapped) ? entity.mapped.model : entity.device.modelID,
+ const model = entity.mapped ? entity.mapped.model : entity.device.modelID,
device = entity.device,
devId = device.ieeeAddr.substr(2);
+
return new Promise((resolve) => {
this.getObject(devId, (err, obj) => {
- if (obj && obj.common.type != model) {
+ if (obj && obj.common.type !== model) {
// let's change model
this.getStatesOf(devId, (err, states) => {
if (!err && states) {
const chain = [];
- states.forEach((state) => {
- chain.push(this.deleteStateAsync(devId, null, state._id));
- });
- Promise.all(chain).then(()=>{
- this.stController.deleteDeviceStates(devId, () => {
- this.stController.updateDev(devId, model, model, async () => {
- await this.stController.syncDevStates(device, model);
- resolve();
- });
- });
- });
+ states.forEach((state) =>
+ chain.push(this.deleteStateAsync(devId, null, state._id)));
+
+ Promise.all(chain)
+ .then(() =>
+ this.stController.deleteDeviceStates(devId, () =>
+ this.stController.updateDev(devId, model, model, async () => {
+ await this.stController.syncDevStates(device, model);
+ resolve();
+ })));
} else {
resolve();
}
@@ -412,13 +418,14 @@ class Zigbee extends utils.Adapter {
async onZigbeeEvent(type, entity, message){
this.log.debug(`Type ${type} device ${safeJsonStringify(entity)} incoming event: ${safeJsonStringify(message)}`);
- const device = entity.device,
- mappedModel = entity.mapped,
- model = (entity.mapped) ? entity.mapped.model : entity.device.modelID,
- cluster = message.cluster,
- devId = device.ieeeAddr.substr(2),
- meta = {device: device};
- //this assigment give possibility to use iobroker logger in code of the converters, via meta.logger
+ const device = entity.device;
+ const mappedModel = entity.mapped;
+ const model = (entity.mapped) ? entity.mapped.model : entity.device.modelID;
+ const cluster = message.cluster;
+ const devId = device.ieeeAddr.substr(2);
+ const meta = {device};
+
+ // this assigment give possibility to use iobroker logger in code of the converters, via meta.logger
meta.logger = this.log;
await this.checkIfModelUpdate(entity);
@@ -439,12 +446,14 @@ class Zigbee extends utils.Adapter {
}
let converters = mappedModel.fromZigbee.filter(c => c && c.cluster === cluster && (
(c.type instanceof Array) ? c.type.includes(type) : c.type === type));
+
if (!converters.length && type === 'readResponse') {
converters = mappedModel.fromZigbee.filter(c => c.cluster === cluster && (
(c.type instanceof Array) ? c.type.includes('attributeReport') : c.type === 'attributeReport'));
}
+
if (!converters.length) {
- if (type != 'readResponse') {
+ if (type !== 'readResponse') {
this.log.debug(
`No converter available for '${mappedModel.model}' with cluster '${cluster}' and type '${type}'`
);
@@ -476,10 +485,10 @@ class Zigbee extends utils.Adapter {
acknowledgeState(deviceId, model, stateDesc, value) {
if (model === 'group') {
- const stateId = this.namespace + '.group_' + deviceId + '.' + stateDesc.id;
+ const stateId = `${this.namespace}.group_${deviceId}.${stateDesc.id}`;
this.setState(stateId, value, true);
} else {
- const stateId = this.namespace + '.' + deviceId.replace('0x', '') + '.' + stateDesc.id;
+ const stateId = `${this.namespace}.${deviceId.replace('0x', '')}.${stateDesc.id}`;
this.setState(stateId, value, true);
}
}
@@ -492,7 +501,7 @@ class Zigbee extends utils.Adapter {
async publishFromState(deviceId, model, stateModel, stateList, options){
let isGroup = false;
- if (model == 'group') {
+ if (model === 'group') {
isGroup = true;
deviceId = parseInt(deviceId);
}
@@ -503,17 +512,17 @@ class Zigbee extends utils.Adapter {
this.log.debug(`No mapped model for ${model}`);
return;
}
- this.log.debug('Mapped Model: ' + JSON.stringify(mappedModel));
+ this.log.debug(`Mapped Model: ${JSON.stringify(mappedModel)}`);
- stateList.forEach(async(changedState) => {
+ stateList.forEach(async changedState => {
const stateDesc = changedState.stateDesc;
const value = changedState.value;
- if (stateDesc.id == 'send_payload') {
+ if (stateDesc.id === 'send_payload') {
try {
const json_value = JSON.parse(value);
- const payload = { device:deviceId.replace('0x', ''), payload:json_value };
- const result = await(this.SendPayload(payload));
+ const payload = {device: deviceId.replace('0x', ''), payload: json_value};
+ const result = await(this.sendPayload(payload));
if (result.hasOwnProperty('success') && result.success) {
this.acknowledgeState(deviceId, model, stateDesc, value);
}
@@ -532,7 +541,7 @@ class Zigbee extends utils.Adapter {
// if this is the device query state => trigger the device query
// on activation of the 'device_query' state trigger hardware query where possible
- if (stateDesc.id == 'device_query') {
+ if (stateDesc.id === 'device_query') {
if (this.query_device_block.indexOf(deviceId) > -1) {
this.log.warn(`Device query for '${entity.device.ieeeAddr}' blocked`);
return;
@@ -554,16 +563,18 @@ class Zigbee extends utils.Adapter {
}
this.log.debug(`Device query for '${entity.device.ieeeAddr}' done`);
const idToRemove = deviceId;
- setTimeout(()=>{
+ setTimeout(() => {
const idx = this.query_device_block.indexOf(idToRemove);
- if (idx > -1) this.query_device_block.splice(idx);
+ if (idx > -1) {
+ this.query_device_block.splice(idx);
+ }
}, 10000);
}
return;
}
return;
}
- const converter = mappedModel.toZigbee.find((c) => c && (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id)));
+ const converter = mappedModel.toZigbee.find(c => c && (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id)));
if (!converter) {
this.log.error(`No converter available for '${model}' with key '${stateDesc.id}' `);
this.sendError(`No converter available for '${model}' with key '${stateDesc.id}' `);
@@ -574,7 +585,7 @@ class Zigbee extends utils.Adapter {
const preparedOptions = (stateDesc.setterOpt) ? stateDesc.setterOpt(value, options) : {};
let syncStateList = [];
if (stateModel && stateModel.syncStates) {
- stateModel.syncStates.forEach((syncFunct) => {
+ stateModel.syncStates.forEach(syncFunct => {
const res = syncFunct(stateDesc, value, options);
if (res) {
syncStateList = syncStateList.concat(res);
@@ -593,12 +604,14 @@ class Zigbee extends utils.Adapter {
target = await this.zbController.resolveEntity(deviceId, epName);
target = target.endpoint;
}
+
this.log.debug(`target: ${safeJsonStringify(target)}`);
+
const meta = {
endpoint_name: epName,
options: preparedOptions,
device: entity.device,
- mapped: (model == 'group') ? [] : mappedModel,
+ mapped: model === 'group' ? [] : mappedModel,
message: {[key]: preparedValue},
logger: this.log,
state: {},
@@ -610,23 +623,24 @@ class Zigbee extends utils.Adapter {
const result = await converter.convertSet(target, key, preparedValue, meta);
this.log.debug(`convert result ${safeJsonStringify(result)}`);
if (result !== undefined) {
- if (stateModel && !isGroup)
+ if (stateModel && !isGroup) {
this.acknowledgeState(deviceId, model, stateDesc, value);
+ }
// process sync state list
this.processSyncStatesList(deviceId, model, syncStateList);
+
if (isGroup) {
await this.callPluginMethod('queryGroupMemberState', [deviceId, stateDesc]);
this.acknowledgeState(deviceId, model, stateDesc, value);
}
}
- } catch(error) {
+ } catch (error) {
this.filterError(`Error ${error.code} on send command to ${deviceId}.`+
` Error: ${error.stack}`, `Send command to ${deviceId} failed with`, error);
}
});
}
- //
- //
+
// This function is introduced to explicitly allow user level scripts to send Commands
// directly to the zigbee device. It utilizes the zigbee-herdsman-converters to generate
// the exact zigbee message to be sent and can be used to set device options which are
@@ -639,74 +653,76 @@ class Zigbee extends utils.Adapter {
// payload: The data to send to the device as JSON object (key/Value pairs)
// endpoint: optional: the endpoint to send the data to, if supported.
//
- async SendPayload(payload) {
+ async sendPayload(payload) {
this.log.debug(`publishToDevice called with ${safeJsonStringify(payload)}`);
- let payload_obj = {};
+ let payloadObj = {};
if (typeof payload === 'string') {
try {
- payload_obj = JSON.parse();
+ payloadObj = JSON.parse(payload);
} catch (e) {
this.log.error(`Unable to parse ${safeJsonStringify(payload)}: ${safeJsonStringify(e)}`);
this.sendError(e, `Unable to parse ${safeJsonStringify(payload)}: ${safeJsonStringify(e)}`);
- return {success:false, error: `Unable to parse ${safeJsonStringify(payload)}: ${safeJsonStringify(e)}`};
+ return {success: false, error: `Unable to parse ${safeJsonStringify(payload)}: ${safeJsonStringify(e)}`};
}
} else if (typeof payload === 'object') {
- payload_obj = payload;
+ payloadObj = payload;
}
- if (payload_obj.hasOwnProperty('device') && payload_obj.hasOwnProperty('payload'))
- {
+
+ if (payloadObj.hasOwnProperty('device') && payloadObj.hasOwnProperty('payload')) {
try {
- const isDevice = payload.device.indexOf('group_') == -1;
+ const isDevice = !payload.device.includes('group_');
const stateList = [];
- const devID = (isDevice ? `0x${payload.device}`:parseInt(payload.device.replace('group_', '')));
+ const devID = isDevice ? `0x${payload.device}`:parseInt(payload.device.replace('group_', ''));
const entity = await this.zbController.resolveEntity(devID);
if (!entity) {
- this.log.error(`Device ${safeJsonStringify(payload_obj.device)} not found`);
- this.sendError(`Device ${safeJsonStringify(payload_obj.device)} not found`);
- return {success: false, error: `Device ${safeJsonStringify(payload_obj.device)} not found`};
+ this.log.error(`Device ${safeJsonStringify(payloadObj.device)} not found`);
+ this.sendError(`Device ${safeJsonStringify(payloadObj.device)} not found`);
+ return {success: false, error: `Device ${safeJsonStringify(payloadObj.device)} not found`};
}
const mappedModel = entity.mapped;
if (!mappedModel) {
- this.log.error(`No Model for Device ${safeJsonStringify(payload_obj.device)}`);
- this.sendError(`No Model for Device ${safeJsonStringify(payload_obj.device)}`);
- return {success: false, error: `No Model for Device ${safeJsonStringify(payload_obj.device)}`};
+ this.log.error(`No Model for Device ${safeJsonStringify(payloadObj.device)}`);
+ this.sendError(`No Model for Device ${safeJsonStringify(payloadObj.device)}`);
+ return {success: false, error: `No Model for Device ${safeJsonStringify(payloadObj.device)}`};
}
- if (typeof payload_obj.payload !== 'object') {
- this.log.error(`Illegal payload type for ${safeJsonStringify(payload_obj.device)}`);
- this.sendError(`Illegal payload type for ${safeJsonStringify(payload_obj.device)}`);
- return {success: false, error: `Illegal payload type for ${safeJsonStringify(payload_obj.device)}`};
+ if (typeof payloadObj.payload !== 'object') {
+ this.log.error(`Illegal payload type for ${safeJsonStringify(payloadObj.device)}`);
+ this.sendError(`Illegal payload type for ${safeJsonStringify(payloadObj.device)}`);
+ return {success: false, error: `Illegal payload type for ${safeJsonStringify(payloadObj.device)}`};
}
- for (const key in payload_obj.payload) {
- if (payload_obj.payload[key] != undefined) {
- const datatype = typeof payload_obj.payload[key];
- stateList.push({stateDesc: {
- id:key,
- prop:key,
- role:'state',
- type:datatype,
- epname:payload_obj.endpoint,
- }, value: payload_obj.payload[key], index:0, timeout:0});
+ for (const key in payloadObj.payload) {
+ if (payloadObj.payload[key] != undefined) {
+ const datatype = typeof payloadObj.payload[key];
+ stateList.push({
+ stateDesc: {
+ id: key,
+ prop: key,
+ role: 'state',
+ type: datatype,
+ epname: payloadObj.endpoint,
+ },
+ value: payloadObj.payload[key],
+ index: 0,
+ timeout: 0,
+ });
}
}
try {
- this.log.debug(`Calling publish to state for ${safeJsonStringify(payload_obj.device)} with ${safeJsonStringify(stateList)}`);
+ this.log.debug(`Calling publish to state for ${safeJsonStringify(payloadObj.device)} with ${safeJsonStringify(stateList)}`);
await this.publishFromState(`0x${payload.device}`, '', undefined, stateList, payload.options);
return {success: true};
- }
- catch (error)
- {
+ } catch (error) {
this.filterError(`Error ${error.code} on send command to ${payload.device}.`+
` Error: ${error.stack}`, `Send command to ${payload.device} failed with`, error);
- return {success:false, error: error};
+ return {success: false, error};
}
+ } catch (e) {
+ return {success: false, error: e};
}
- catch (e) {
- return {success:false, error: e};
- }
-
}
- return {success:false, error: 'missing parameter device or payload in message ' + JSON.stringify(payload)};
+
+ return {success: false, error: `missing parameter device or payload in message ${JSON.stringify(payload)}`};
}
@@ -732,7 +748,7 @@ class Zigbee extends utils.Adapter {
this.log.debug(`Leave device event: ${ieeeAddr}`);
if (ieeeAddr) {
const devId = ieeeAddr.substr(2);
- this.log.debug('Delete device ' + devId + ' from iobroker.');
+ this.log.debug(`Delete device ${devId} from iobroker.`);
this.stController.deleteDeviceStates(devId);
}
}
@@ -756,7 +772,7 @@ class Zigbee extends utils.Adapter {
}
}
}
-
+
/**
* @param {() => void} callback
*/
@@ -856,7 +872,7 @@ class Zigbee extends utils.Adapter {
}
expandFileName(fn) {
- return path.join(utils.getAbsoluteInstanceDataDir(this), fn);
+ return path.join(utils.getAbsoluteInstanceDataDir(this), fn);
}
onLog(level, msg, data) {
@@ -867,8 +883,8 @@ class Zigbee extends utils.Adapter {
logger = this.log.error;
if (data)
data = data.toString();
- this.logToPairing('Error: ' + msg + '. ' + data, true);
- this.sendError('Error: ' + msg + '. ' + data);
+ this.logToPairing(`Error: ${msg}. ${data}`, true);
+ this.sendError(`Error: ${msg}. ${data}`);
break;
case 'debug':
logger = this.log.debug;
@@ -882,9 +898,9 @@ class Zigbee extends utils.Adapter {
}
if (data) {
if (typeof data === 'string') {
- logger(msg + '. ' + data);
+ logger(`${msg}. ${data}`);
} else {
- logger(msg + '. ' + safeJsonStringify(data));
+ logger(`${msg}. ${safeJsonStringify(data)}`);
}
} else {
logger(msg);
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 4c8787ae..00000000
--- a/package-lock.json
+++ /dev/null
@@ -1,13272 +0,0 @@
-{
- "name": "iobroker.zigbee",
- "version": "1.7.7",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "iobroker.zigbee",
- "version": "1.7.7",
- "license": "MIT",
- "dependencies": {
- "@iobroker/adapter-core": "^2.4.0",
- "tar": "^6.0.5",
- "typescript": "^4.0.5",
- "zigbee-herdsman": "0.14.75",
- "zigbee-herdsman-converters": "14.0.673"
- },
- "devDependencies": {
- "@alcalzone/release-script": "~3.4.2",
- "@iobroker/testing": "^2.5.4",
- "axios": "^0.21.1",
- "chai": "^4.3.4",
- "chai-as-promised": "^7.1.1",
- "eslint": "^8.14.0",
- "eslint-config-prettier": "^8.5.0",
- "eslint-plugin-prettier": "^4.0.0",
- "gulp": "^4.0.2",
- "gulp-jsdoc3": "^3.0.0",
- "gulp-replace": "^1.1.3",
- "mixin-deep": "^1.3.2",
- "mocha": "^9.1.3"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@alcalzone/pak": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/@alcalzone/pak/-/pak-0.7.0.tgz",
- "integrity": "sha512-k5cKJ9/19djy6m2klchQp9JyXUQclGyarI5qz+QFeEvHhbN4ewQ41Ty8ToCx0WRN1SJBa9gLzoXMWb1/UH2HHA==",
- "dev": true,
- "dependencies": {
- "axios": "^0.21.1",
- "execa": "^5.0.0",
- "fs-extra": "^9.1.0"
- }
- },
- "node_modules/@alcalzone/pak/node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@alcalzone/release-script": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@alcalzone/release-script/-/release-script-3.4.3.tgz",
- "integrity": "sha512-hI4tp68Y5NMd3HsHfvTK31ZKLLymk0jhZ3QrEQrtPS2OTrHM0IMztiGrMhgNz2tA5qhuQlF6Cdt+PGqKqy+qRA==",
- "dev": true,
- "dependencies": {
- "@alcalzone/release-script-core": "3.4.3",
- "@alcalzone/release-script-plugin-changelog": "3.4.3",
- "@alcalzone/release-script-plugin-exec": "3.4.3",
- "@alcalzone/release-script-plugin-git": "3.4.3",
- "@alcalzone/release-script-plugin-package": "3.4.3",
- "@alcalzone/release-script-plugin-version": "3.4.3",
- "alcalzone-shared": "^4.0.0",
- "axios": "^0.21.4",
- "enquirer": "^2.3.6",
- "fs-extra": "^10.0.0",
- "picocolors": "1.0.0",
- "semver": "^7.3.5",
- "source-map-support": "^0.5.20",
- "yargs": "^17.1.1"
- },
- "bin": {
- "release-script": "bin/release.js"
- },
- "engines": {
- "node": ">=12.20"
- }
- },
- "node_modules/@alcalzone/release-script-core": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@alcalzone/release-script-core/-/release-script-core-3.4.3.tgz",
- "integrity": "sha512-NRXkYBhHmlttRdkmtwbfseUOiyO+5V9E2nnbAyJ9ZnLhiBfczTVqsCEmO8p0icIN+mT6E4RiGFPHqyTRYk2lgg==",
- "dev": true,
- "dependencies": {
- "execa": "^5.1.1"
- },
- "engines": {
- "node": ">=12.20"
- }
- },
- "node_modules/@alcalzone/release-script-plugin-changelog": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-changelog/-/release-script-plugin-changelog-3.4.3.tgz",
- "integrity": "sha512-I8FIfAl8RNvHAp8d6xck6O2szymC0JvXhjopfaKdVCMcG0MZWGOvSxMII0J5blZkYixxJJM4hOZQ8LvOiMWMdw==",
- "dev": true,
- "dependencies": {
- "@alcalzone/release-script-core": "3.4.3",
- "alcalzone-shared": "^4.0.0"
- },
- "engines": {
- "node": ">=12.20"
- }
- },
- "node_modules/@alcalzone/release-script-plugin-exec": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-exec/-/release-script-plugin-exec-3.4.3.tgz",
- "integrity": "sha512-mjmcY+TIqHQ01aIr8fcICCRTNpFpeKBLFbWFNviDvOJz2b4WT3Qu1yhC1XveWr7QpDCXobhHlTlliTThPowNZA==",
- "dev": true,
- "dependencies": {
- "@alcalzone/release-script-core": "3.4.3",
- "alcalzone-shared": "^4.0.0"
- },
- "engines": {
- "node": ">=12.20"
- }
- },
- "node_modules/@alcalzone/release-script-plugin-git": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-git/-/release-script-plugin-git-3.4.3.tgz",
- "integrity": "sha512-AePVCa8eF3BLUKOm89SqTt+4XZhfOPMGbfruO9Cfx5j1zGVst/MY2Pf6PORJD31qHCIW5YmadsOpb0qRXpclAg==",
- "dev": true,
- "dependencies": {
- "@alcalzone/release-script-core": "3.4.3",
- "fs-extra": "^10.0.0"
- },
- "engines": {
- "node": ">=12.20"
- }
- },
- "node_modules/@alcalzone/release-script-plugin-package": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-package/-/release-script-plugin-package-3.4.3.tgz",
- "integrity": "sha512-IxiSoGCDoL8m69bFu4SUndp1MgpmeiaIPSPJxoTPirh+SFDE0UkUZQd/H9gjp/L1FzadA3ysyslmHmwu4GzeRA==",
- "dev": true,
- "dependencies": {
- "@alcalzone/pak": "^0.7.0",
- "@alcalzone/release-script-core": "3.4.3",
- "alcalzone-shared": "^4.0.0",
- "semver": "^7.3.5"
- },
- "engines": {
- "node": ">=12.20"
- }
- },
- "node_modules/@alcalzone/release-script-plugin-version": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-version/-/release-script-plugin-version-3.4.3.tgz",
- "integrity": "sha512-MZWgbMIKDF9kG3KnlwmbA0Eawm7Q+L03qNOutUVP0vBA+1aA6SQPS7Ag10uGldWw7G/DwTdxr9yDb+g8ibwWqw==",
- "dev": true,
- "dependencies": {
- "@alcalzone/release-script-core": "3.4.3",
- "alcalzone-shared": "^4.0.0",
- "semver": "^7.3.5",
- "tiny-glob": "^0.2.9"
- },
- "engines": {
- "node": ">=12.20"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz",
- "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==",
- "dev": true,
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz",
- "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.3.2",
- "globals": "^13.15.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.9.5",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
- "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
- "dev": true,
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.4"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
- "dev": true
- },
- "node_modules/@iobroker/adapter-core": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-2.6.0.tgz",
- "integrity": "sha512-J5Cgy0NK8GWjN1th3yvWCG3tnK8iJJcPaHIoVR8PfpEsz4hffuVGi660vNXqXdiqR5Br09XSJ5h1Pn9af0/taw==",
- "dependencies": {
- "@types/iobroker": "^4.0.1"
- }
- },
- "node_modules/@iobroker/testing": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@iobroker/testing/-/testing-2.6.0.tgz",
- "integrity": "sha512-cbX5Ns/iXtBNmyagNTXWaO7/wrX6F3kUvRDcGJYwiEduJRBuNBq8Y+ciq5vrkkpe6XsE/o3r7G9OxKLxnVzLpg==",
- "dev": true,
- "dependencies": {
- "alcalzone-shared": "~4.0.1",
- "chai": "^4.3.6",
- "chai-as-promised": "^7.1.1",
- "debug": "^4.3.3",
- "fs-extra": "^10.0.1",
- "mocha": "^9.2.2",
- "sinon": "^13.0.1",
- "sinon-chai": "^3.7.0"
- }
- },
- "node_modules/@serialport/binding-abstract": {
- "version": "9.2.3",
- "resolved": "https://registry.npmjs.org/@serialport/binding-abstract/-/binding-abstract-9.2.3.tgz",
- "integrity": "sha512-cQs9tbIlG3P0IrOWyVirqlhWuJ7Ms2Zh9m2108z6Y5UW/iVj6wEOiW8EmK9QX9jmJXYllE7wgGgvVozP5oCj3w==",
- "dependencies": {
- "debug": "^4.3.2"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/serialport/donate"
- }
- },
- "node_modules/@serialport/binding-mock": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/binding-mock/-/binding-mock-9.2.4.tgz",
- "integrity": "sha512-dpEhACCs44oQhh6ajJfJdvQdK38Vq0N4W6iD/gdplglDCK7qXRQCMUjJIeKdS/HSEiWkC3bwumUhUufdsOyT4g==",
- "dependencies": {
- "@serialport/binding-abstract": "9.2.3",
- "debug": "^4.3.2"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/serialport/donate"
- }
- },
- "node_modules/@serialport/bindings": {
- "version": "9.2.8",
- "resolved": "https://registry.npmjs.org/@serialport/bindings/-/bindings-9.2.8.tgz",
- "integrity": "sha512-hSLxTe0tADZ3LMMGwvEJWOC/TaFQTyPeFalUCsJ1lSQ0k6bPF04JwrtB/C81GetmDBTNRY0GlD0SNtKCc7Dr5g==",
- "hasInstallScript": true,
- "dependencies": {
- "@serialport/binding-abstract": "9.2.3",
- "@serialport/parser-readline": "9.2.4",
- "bindings": "^1.5.0",
- "debug": "^4.3.2",
- "nan": "^2.15.0",
- "prebuild-install": "^7.0.0"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/serialport/donate"
- }
- },
- "node_modules/@serialport/parser-byte-length": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/parser-byte-length/-/parser-byte-length-9.2.4.tgz",
- "integrity": "sha512-sQD/iw4ZMU3xW9PLi0/GlvU6Y623jGeWecbMkO7izUo/6P7gtfv1c9ikd5h0kwL8AoAOpQA1lxdHIKox+umBUg==",
- "engines": {
- "node": ">=10.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/serialport/donate"
- }
- },
- "node_modules/@serialport/parser-cctalk": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/parser-cctalk/-/parser-cctalk-9.2.4.tgz",
- "integrity": "sha512-T4TU5vQMwmo9AB3gQLFDWbfJXlW5jd9guEsB/nqKjFHTv0FXPdZ7DQ2TpSp8RnHWxU3GX6kYTaDO20BKzc8GPQ==",
- "engines": {
- "node": ">=10.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/serialport/donate"
- }
- },
- "node_modules/@serialport/parser-delimiter": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-9.2.4.tgz",
- "integrity": "sha512-4nvTAoYAgkxFiXrkI+3CA49Yd43CODjeszh89EK+I9c8wOZ+etZduRCzINYPiy26g7zO+GRAb9FoPCsY+sYcbQ==",
- "engines": {
- "node": ">=10.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/serialport/donate"
- }
- },
- "node_modules/@serialport/parser-inter-byte-timeout": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-9.2.4.tgz",
- "integrity": "sha512-SOAdvr0oBQIOCXX198hiTlxs4JTKg9j5piapw5tNq52fwDOWdbYrFneT/wN04UTMKaDrJuEvXq6T4rv4j7nJ5A==",
- "engines": {
- "node": ">=10.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/serialport/donate"
- }
- },
- "node_modules/@serialport/parser-readline": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-9.2.4.tgz",
- "integrity": "sha512-Z1/qrZTQUVhNSJP1hd9YfDvq0o7d87rNwAjjRKbVpa7Qi51tG5BnKt43IV3NFMyBlVcRe0rnIb3tJu57E0SOwg==",
- "dependencies": {
- "@serialport/parser-delimiter": "9.2.4"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/serialport/donate"
- }
- },
- "node_modules/@serialport/parser-ready": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/parser-ready/-/parser-ready-9.2.4.tgz",
- "integrity": "sha512-Pyi94Itjl6qAURwIZr/gmZpMAyTmKXThm6vL5DoAWGQjcRHWB0gwv2TY2v7N+mQLJYUKU3cMnvnATXxHm7xjxw==",
- "engines": {
- "node": ">=10.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/serialport/donate"
- }
- },
- "node_modules/@serialport/parser-regex": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/parser-regex/-/parser-regex-9.2.4.tgz",
- "integrity": "sha512-sI/cVvPOYz+Dbv4ZdnW16qAwvXiFf/1pGASQdbveRTlgJDdz7sRNlCBifzfTN2xljwvCTZYqiudKvDdC1TepRQ==",
- "engines": {
- "node": ">=10.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/serialport/donate"
- }
- },
- "node_modules/@serialport/stream": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/stream/-/stream-9.2.4.tgz",
- "integrity": "sha512-bLye8Ub4vUFQGmkh8qEqehr7SE7EJs2yDs0h9jzuL5oKi+F34CFmWkEErO8GAOQ8YNn7p6b3GxUgs+0BrHHDZQ==",
- "dependencies": {
- "debug": "^4.3.2"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/serialport/donate"
- }
- },
- "node_modules/@sinonjs/commons": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
- "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
- "dev": true,
- "dependencies": {
- "type-detect": "4.0.8"
- }
- },
- "node_modules/@sinonjs/fake-timers": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz",
- "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==",
- "dev": true,
- "dependencies": {
- "@sinonjs/commons": "^1.7.0"
- }
- },
- "node_modules/@sinonjs/samsam": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz",
- "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==",
- "dev": true,
- "dependencies": {
- "@sinonjs/commons": "^1.6.0",
- "lodash.get": "^4.4.2",
- "type-detect": "^4.0.8"
- }
- },
- "node_modules/@sinonjs/text-encoding": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz",
- "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==",
- "dev": true
- },
- "node_modules/@types/expect": {
- "version": "1.20.4",
- "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz",
- "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==",
- "dev": true
- },
- "node_modules/@types/iobroker": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/iobroker/-/iobroker-4.0.4.tgz",
- "integrity": "sha512-hioI0Cf73pd0i5QGdJptj4AS+6zpWjBSZ4Vz80VyU/oLO7qgU/UiyO79o/ajAWbNREEVlhCJg8sHCoEAe0Bbaw==",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/linkify-it": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz",
- "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==",
- "dev": true
- },
- "node_modules/@types/markdown-it": {
- "version": "12.2.3",
- "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz",
- "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==",
- "dev": true,
- "dependencies": {
- "@types/linkify-it": "*",
- "@types/mdurl": "*"
- }
- },
- "node_modules/@types/mdurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz",
- "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==",
- "dev": true
- },
- "node_modules/@types/node": {
- "version": "18.0.6",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz",
- "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw=="
- },
- "node_modules/@types/vinyl": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz",
- "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==",
- "dev": true,
- "dependencies": {
- "@types/expect": "^1.20.4",
- "@types/node": "*"
- }
- },
- "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/acorn": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
- "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "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==",
- "dev": true,
- "dependencies": {
- "debug": "^4.3.2"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/ansi-colors": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
- "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/ansi-gray": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
- "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==",
- "dev": true,
- "dependencies": {
- "ansi-wrap": "0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/ansi-wrap": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
- "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/any-promise": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
- },
- "node_modules/anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "dev": true,
- "dependencies": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- }
- },
- "node_modules/anymatch/node_modules/normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
- "dev": true,
- "dependencies": {
- "remove-trailing-separator": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/append-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
- "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==",
- "dev": true,
- "dependencies": {
- "buffer-equal": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/archy": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
- "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",
- "dev": true
- },
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "node_modules/arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-filter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz",
- "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==",
- "dev": true,
- "dependencies": {
- "make-iterator": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-map": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz",
- "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==",
- "dev": true,
- "dependencies": {
- "make-iterator": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-each": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
- "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-initial": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz",
- "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==",
- "dev": true,
- "dependencies": {
- "array-slice": "^1.0.0",
- "is-number": "^4.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-initial/node_modules/is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-last": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz",
- "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==",
- "dev": true,
- "dependencies": {
- "is-number": "^4.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-last/node_modules/is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-slice": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
- "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-sort": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz",
- "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==",
- "dev": true,
- "dependencies": {
- "default-compare": "^1.0.0",
- "get-value": "^2.0.6",
- "kind-of": "^5.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/assertion-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
- "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/async-done": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz",
- "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.2",
- "process-nextick-args": "^2.0.0",
- "stream-exhaust": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/async-each": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
- "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
- "dev": true
- },
- "node_modules/async-settle": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz",
- "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==",
- "dev": true,
- "dependencies": {
- "async-done": "^1.2.2"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "node_modules/at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "dev": true,
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true,
- "bin": {
- "atob": "bin/atob.js"
- },
- "engines": {
- "node": ">= 4.5.0"
- }
- },
- "node_modules/axios": {
- "version": "0.21.4",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
- "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
- "dev": true,
- "dependencies": {
- "follow-redirects": "^1.14.0"
- }
- },
- "node_modules/bach": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz",
- "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==",
- "dev": true,
- "dependencies": {
- "arr-filter": "^1.1.1",
- "arr-flatten": "^1.0.1",
- "arr-map": "^2.0.0",
- "array-each": "^1.0.0",
- "array-initial": "^1.0.0",
- "array-last": "^1.1.1",
- "async-done": "^1.2.2",
- "async-settle": "^1.0.0",
- "now-and-later": "^2.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "node_modules/base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
- "dependencies": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/beeper": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/beeper/-/beeper-2.1.0.tgz",
- "integrity": "sha512-85+CcymhlP0jM4fs4ZMiMRl58VthoN9NRdvi+knXiQpP2UggkSre+A9rOZ0c2g2Vh+pEF5ZAlT+k8dsJNoanAA==",
- "dev": true,
- "dependencies": {
- "yoctodelay": "^1.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/binary-extensions": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
- "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/binaryextensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz",
- "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==",
- "dev": true,
- "engines": {
- "node": ">=0.8"
- },
- "funding": {
- "url": "https://bevry.me/fund"
- }
- },
- "node_modules/bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "dependencies": {
- "file-uri-to-path": "1.0.0"
- }
- },
- "node_modules/bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
- "dependencies": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "node_modules/bl/node_modules/readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
- "dev": true
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "dependencies": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/browser-stdout": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
- "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
- "dev": true
- },
- "node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "node_modules/buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/buffer-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
- "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
- "node_modules/cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "dependencies": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/catharsis": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz",
- "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==",
- "dev": true,
- "dependencies": {
- "lodash": "^4.17.15"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/chai": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
- "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
- "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",
- "pathval": "^1.1.1",
- "type-detect": "^4.0.5"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/chai-as-promised": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz",
- "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==",
- "dev": true,
- "dependencies": {
- "check-error": "^1.0.2"
- },
- "peerDependencies": {
- "chai": ">= 2.1.2 < 5"
- }
- },
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "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==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/chokidar": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
- "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
- "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
- "dev": true,
- "dependencies": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
- },
- "optionalDependencies": {
- "fsevents": "^1.2.7"
- }
- },
- "node_modules/chokidar/node_modules/glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
- "dev": true,
- "dependencies": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- }
- },
- "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "dependencies": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "node_modules/clone": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
- "dev": true,
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/clone-buffer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
- "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/clone-stats": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
- "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==",
- "dev": true
- },
- "node_modules/cloneable-readable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
- "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.1",
- "process-nextick-args": "^2.0.0",
- "readable-stream": "^2.3.5"
- }
- },
- "node_modules/code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/collection-map": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz",
- "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==",
- "dev": true,
- "dependencies": {
- "arr-map": "^2.0.2",
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
- "dev": true,
- "dependencies": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/color-support": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
- "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
- "dev": true,
- "bin": {
- "color-support": "bin.js"
- }
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "node_modules/concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "dev": true,
- "engines": [
- "node >= 0.8"
- ],
- "dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
- "node_modules/convert-source-map": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
- "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.1"
- }
- },
- "node_modules/copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/copy-props": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz",
- "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==",
- "dev": true,
- "dependencies": {
- "each-props": "^1.3.2",
- "is-plain-object": "^5.0.0"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/d": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
- "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
- "dev": true,
- "dependencies": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
- }
- },
- "node_modules/debounce": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
- "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug=="
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/decompress-response": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
- "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
- "dependencies": {
- "mimic-response": "^3.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "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==",
- "dev": true,
- "dependencies": {
- "type-detect": "^4.0.0"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "node_modules/default-compare": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz",
- "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^5.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/default-resolution": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz",
- "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/define-properties": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
- "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
- "dev": true,
- "dependencies": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/detect-file": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
- "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/detect-libc": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
- "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
- "engines": {
- "node": ">=8"
- }
- },
- "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==",
- "dev": true,
- "engines": {
- "node": ">=0.3.1"
- }
- },
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/dom-serializer": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
- "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
- "dev": true,
- "dependencies": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.0",
- "entities": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "node_modules/dom-serializer/node_modules/domhandler": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
- "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
- "dev": true,
- "dependencies": {
- "domelementtype": "^2.2.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ]
- },
- "node_modules/domhandler": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz",
- "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==",
- "dev": true,
- "dependencies": {
- "domelementtype": "^2.0.1"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/domutils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
- "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
- "dev": true,
- "dependencies": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/domutils/node_modules/domhandler": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
- "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
- "dev": true,
- "dependencies": {
- "domelementtype": "^2.2.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/duplexify": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
- "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
- }
- },
- "node_modules/each-props": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz",
- "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.1",
- "object.defaults": "^1.1.0"
- }
- },
- "node_modules/each-props/node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dependencies": {
- "once": "^1.4.0"
- }
- },
- "node_modules/enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
- "dev": true,
- "dependencies": {
- "ansi-colors": "^4.1.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/entities": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
- "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
- "dev": true,
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/es5-ext": {
- "version": "0.10.61",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz",
- "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==",
- "dev": true,
- "hasInstallScript": true,
- "dependencies": {
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.3",
- "next-tick": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
- "dev": true,
- "dependencies": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- }
- },
- "node_modules/es6-symbol": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
- "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
- "dev": true,
- "dependencies": {
- "d": "^1.0.1",
- "ext": "^1.1.2"
- }
- },
- "node_modules/es6-weak-map": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
- "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
- "dev": true,
- "dependencies": {
- "d": "1",
- "es5-ext": "^0.10.46",
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.1"
- }
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint": {
- "version": "8.20.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz",
- "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==",
- "dev": true,
- "dependencies": {
- "@eslint/eslintrc": "^1.3.0",
- "@humanwhocodes/config-array": "^0.9.2",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.1.1",
- "eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.3.0",
- "espree": "^9.3.2",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^6.0.1",
- "globals": "^13.15.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "regexpp": "^3.2.0",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-config-prettier": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
- "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
- "dev": true,
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "node_modules/eslint-plugin-prettier": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz",
- "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==",
- "dev": true,
- "dependencies": {
- "prettier-linter-helpers": "^1.0.0"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "eslint": ">=7.28.0",
- "prettier": ">=2.0.0"
- },
- "peerDependenciesMeta": {
- "eslint-config-prettier": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-scope": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
- "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
- "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/eslint/node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/espree": {
- "version": "9.3.2",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz",
- "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==",
- "dev": true,
- "dependencies": {
- "acorn": "^8.7.1",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "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/expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
- "dev": true,
- "dependencies": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/expand-brackets/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/expand-template": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
- "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/expand-tilde": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
- "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",
- "dev": true,
- "dependencies": {
- "homedir-polyfill": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ext": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz",
- "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==",
- "dev": true,
- "dependencies": {
- "type": "^2.5.0"
- }
- },
- "node_modules/ext/node_modules/type": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz",
- "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==",
- "dev": true
- },
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "dependencies": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fancy-log": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
- "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
- "dev": true,
- "dependencies": {
- "ansi-gray": "^0.1.1",
- "color-support": "^1.1.3",
- "parse-node-version": "^1.0.0",
- "time-stamp": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "node_modules/fast-diff": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
- "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
- "dev": true
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
- },
- "node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/findup-sync": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
- "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
- "dev": true,
- "dependencies": {
- "detect-file": "^1.0.0",
- "is-glob": "^4.0.0",
- "micromatch": "^3.0.4",
- "resolve-dir": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/fined": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
- "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
- "dev": true,
- "dependencies": {
- "expand-tilde": "^2.0.2",
- "is-plain-object": "^2.0.3",
- "object.defaults": "^1.1.0",
- "object.pick": "^1.2.0",
- "parse-filepath": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/fined/node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/flagged-respawn": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
- "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/flat": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
- "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
- "dev": true,
- "bin": {
- "flat": "cli.js"
- }
- },
- "node_modules/flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "dev": true,
- "dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/flatted": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz",
- "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
- "dev": true
- },
- "node_modules/flush-write-stream": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
- "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "readable-stream": "^2.3.6"
- }
- },
- "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==",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
- "node_modules/for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/for-own": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
- "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
- "dev": true,
- "dependencies": {
- "for-in": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
- "dev": true,
- "dependencies": {
- "map-cache": "^0.2.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
- },
- "node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/fs-mkdirp-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
- "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.11",
- "through2": "^2.0.3"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "node_modules/functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
- "dev": true
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true,
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "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==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
- "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/github-from-package": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
- "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw=="
- },
- "node_modules/glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/glob-stream": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
- "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==",
- "dev": true,
- "dependencies": {
- "extend": "^3.0.0",
- "glob": "^7.1.1",
- "glob-parent": "^3.1.0",
- "is-negated-glob": "^1.0.0",
- "ordered-read-streams": "^1.0.0",
- "pumpify": "^1.3.5",
- "readable-stream": "^2.1.5",
- "remove-trailing-separator": "^1.0.1",
- "to-absolute-glob": "^2.0.0",
- "unique-stream": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/glob-stream/node_modules/glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
- "dev": true,
- "dependencies": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- }
- },
- "node_modules/glob-stream/node_modules/is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/glob-watcher": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz",
- "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==",
- "dev": true,
- "dependencies": {
- "anymatch": "^2.0.0",
- "async-done": "^1.2.0",
- "chokidar": "^2.0.0",
- "is-negated-glob": "^1.0.0",
- "just-debounce": "^1.0.0",
- "normalize-path": "^3.0.0",
- "object.defaults": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/global-modules": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
- "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
- "dev": true,
- "dependencies": {
- "global-prefix": "^1.0.1",
- "is-windows": "^1.0.1",
- "resolve-dir": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/global-prefix": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
- "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",
- "dev": true,
- "dependencies": {
- "expand-tilde": "^2.0.2",
- "homedir-polyfill": "^1.0.1",
- "ini": "^1.3.4",
- "is-windows": "^1.0.1",
- "which": "^1.2.14"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/global-prefix/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/globals": {
- "version": "13.17.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
- "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/globalyzer": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
- "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==",
- "dev": true
- },
- "node_modules/globrex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
- "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
- "dev": true
- },
- "node_modules/glogg": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz",
- "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==",
- "dev": true,
- "dependencies": {
- "sparkles": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
- "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/gulp": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz",
- "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==",
- "dev": true,
- "dependencies": {
- "glob-watcher": "^5.0.3",
- "gulp-cli": "^2.2.0",
- "undertaker": "^1.2.1",
- "vinyl-fs": "^3.0.0"
- },
- "bin": {
- "gulp": "bin/gulp.js"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/gulp-cli": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
- "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==",
- "dev": true,
- "dependencies": {
- "ansi-colors": "^1.0.1",
- "archy": "^1.0.0",
- "array-sort": "^1.0.0",
- "color-support": "^1.1.3",
- "concat-stream": "^1.6.0",
- "copy-props": "^2.0.1",
- "fancy-log": "^1.3.2",
- "gulplog": "^1.0.0",
- "interpret": "^1.4.0",
- "isobject": "^3.0.1",
- "liftoff": "^3.1.0",
- "matchdep": "^2.0.0",
- "mute-stdout": "^1.0.0",
- "pretty-hrtime": "^1.0.0",
- "replace-homedir": "^1.0.0",
- "semver-greatest-satisfied-range": "^1.1.0",
- "v8flags": "^3.2.0",
- "yargs": "^7.1.0"
- },
- "bin": {
- "gulp": "bin/gulp.js"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/gulp-cli/node_modules/ansi-colors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
- "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
- "dev": true,
- "dependencies": {
- "ansi-wrap": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==",
- "dev": true,
- "dependencies": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- }
- },
- "node_modules/gulp-cli/node_modules/find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
- "dev": true,
- "dependencies": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
- "dev": true
- },
- "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
- "dev": true,
- "dependencies": {
- "number-is-nan": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
- "dev": true,
- "dependencies": {
- "error-ex": "^1.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
- "dev": true,
- "dependencies": {
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
- "dev": true,
- "dependencies": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",
- "dev": true,
- "dependencies": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
- "dev": true,
- "dependencies": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
- "dev": true,
- "dependencies": {
- "is-utf8": "^0.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==",
- "dev": true,
- "dependencies": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-cli/node_modules/y18n": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
- "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
- "dev": true
- },
- "node_modules/gulp-cli/node_modules/yargs": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz",
- "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==",
- "dev": true,
- "dependencies": {
- "camelcase": "^3.0.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^1.4.0",
- "read-pkg-up": "^1.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^1.0.2",
- "which-module": "^1.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^5.0.1"
- }
- },
- "node_modules/gulp-cli/node_modules/yargs-parser": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz",
- "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==",
- "dev": true,
- "dependencies": {
- "camelcase": "^3.0.0",
- "object.assign": "^4.1.0"
- }
- },
- "node_modules/gulp-jsdoc3": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/gulp-jsdoc3/-/gulp-jsdoc3-3.0.0.tgz",
- "integrity": "sha512-rE2jAwCPA8XFi9g4V3Z3LPhZNjxuMTIYQVMjdqZAQpRfJITLVaUK3xfmiiNTMc7j+fT7pL8Q5yj7ZPRdwCJWNg==",
- "dev": true,
- "dependencies": {
- "ansi-colors": "^4.1.1",
- "beeper": "^2.0.0",
- "debug": "^4.1.1",
- "fancy-log": "^1.3.3",
- "ink-docstrap": "^1.3.2",
- "jsdoc": "^3.6.3",
- "map-stream": "0.0.7",
- "tmp": "0.1.0"
- }
- },
- "node_modules/gulp-replace": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.3.tgz",
- "integrity": "sha512-HcPHpWY4XdF8zxYkDODHnG2+7a3nD/Y8Mfu3aBgMiCFDW3X2GiOKXllsAmILcxe3KZT2BXoN18WrpEFm48KfLQ==",
- "dev": true,
- "dependencies": {
- "@types/node": "^14.14.41",
- "@types/vinyl": "^2.0.4",
- "istextorbinary": "^3.0.0",
- "replacestream": "^4.0.3",
- "yargs-parser": ">=5.0.0-security.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/gulp-replace/node_modules/@types/node": {
- "version": "14.18.22",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.22.tgz",
- "integrity": "sha512-qzaYbXVzin6EPjghf/hTdIbnVW1ErMx8rPzwRNJhlbyJhu2SyqlvjGOY/tbUt6VFyzg56lROcOeSQRInpt63Yw==",
- "dev": true
- },
- "node_modules/gulplog": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
- "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==",
- "dev": true,
- "dependencies": {
- "glogg": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/has-property-descriptors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.1.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
- "dev": true,
- "dependencies": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true,
- "bin": {
- "he": "bin/he"
- }
- },
- "node_modules/homedir-polyfill": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
- "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
- "dev": true,
- "dependencies": {
- "parse-passwd": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "node_modules/htmlparser2": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz",
- "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==",
- "dev": true,
- "dependencies": {
- "domelementtype": "^2.0.1",
- "domhandler": "^3.0.0",
- "domutils": "^2.0.0",
- "entities": "^2.0.0"
- }
- },
- "node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "dev": true,
- "engines": {
- "node": ">=10.17.0"
- }
- },
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/ignore": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
- "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
- },
- "node_modules/ink-docstrap": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/ink-docstrap/-/ink-docstrap-1.3.2.tgz",
- "integrity": "sha512-STx5orGQU1gfrkoI/fMU7lX6CSP7LBGO10gXNgOZhwKhUqbtNjCkYSewJtNnLmWP1tAGN6oyEpG1HFPw5vpa5Q==",
- "dev": true,
- "dependencies": {
- "moment": "^2.14.1",
- "sanitize-html": "^1.13.0"
- }
- },
- "node_modules/interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-absolute": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
- "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
- "dev": true,
- "dependencies": {
- "is-relative": "^1.0.0",
- "is-windows": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
- },
- "node_modules/is-binary-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
- "dev": true,
- "dependencies": {
- "binary-extensions": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "node_modules/is-core-module": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
- "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
- "dev": true,
- "dependencies": {
- "has": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-descriptor/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-negated-glob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
- "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-plain-object": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-relative": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
- "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
- "dev": true,
- "dependencies": {
- "is-unc-path": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-unc-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
- "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
- "dev": true,
- "dependencies": {
- "unc-path-regex": "^0.1.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==",
- "dev": true
- },
- "node_modules/is-valid-glob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
- "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "node_modules/isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/istextorbinary": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz",
- "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==",
- "dev": true,
- "dependencies": {
- "binaryextensions": "^2.2.0",
- "textextensions": "^3.2.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://bevry.me/fund"
- }
- },
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/js2xmlparser": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz",
- "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==",
- "dev": true,
- "dependencies": {
- "xmlcreate": "^2.0.4"
- }
- },
- "node_modules/jsdoc": {
- "version": "3.6.11",
- "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz",
- "integrity": "sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==",
- "dev": true,
- "dependencies": {
- "@babel/parser": "^7.9.4",
- "@types/markdown-it": "^12.2.3",
- "bluebird": "^3.7.2",
- "catharsis": "^0.9.0",
- "escape-string-regexp": "^2.0.0",
- "js2xmlparser": "^4.0.2",
- "klaw": "^3.0.0",
- "markdown-it": "^12.3.2",
- "markdown-it-anchor": "^8.4.1",
- "marked": "^4.0.10",
- "mkdirp": "^1.0.4",
- "requizzle": "^0.2.3",
- "strip-json-comments": "^3.1.0",
- "taffydb": "2.6.2",
- "underscore": "~1.13.2"
- },
- "bin": {
- "jsdoc": "jsdoc.js"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "node_modules/jsdoc/node_modules/escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
- "node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/just-debounce": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz",
- "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==",
- "dev": true
- },
- "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==",
- "dev": true
- },
- "node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/klaw": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz",
- "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.9"
- }
- },
- "node_modules/last-run": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz",
- "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==",
- "dev": true,
- "dependencies": {
- "default-resolution": "^2.0.0",
- "es6-weak-map": "^2.0.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/lazystream": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
- "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
- "dev": true,
- "dependencies": {
- "readable-stream": "^2.0.5"
- },
- "engines": {
- "node": ">= 0.6.3"
- }
- },
- "node_modules/lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==",
- "dev": true,
- "dependencies": {
- "invert-kv": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/lead": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
- "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==",
- "dev": true,
- "dependencies": {
- "flush-write-stream": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/liftoff": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
- "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==",
- "dev": true,
- "dependencies": {
- "extend": "^3.0.0",
- "findup-sync": "^3.0.0",
- "fined": "^1.0.1",
- "flagged-respawn": "^1.0.0",
- "is-plain-object": "^2.0.4",
- "object.map": "^1.0.0",
- "rechoir": "^0.6.2",
- "resolve": "^1.1.7"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/liftoff/node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/linkify-it": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
- "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
- "dev": true,
- "dependencies": {
- "uc.micro": "^1.0.1"
- }
- },
- "node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "node_modules/lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
- "dev": true
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "node_modules/log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/loupe": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
- "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
- "dev": true,
- "dependencies": {
- "get-func-name": "^2.0.0"
- }
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/make-iterator": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
- "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/make-iterator/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/map-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz",
- "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==",
- "dev": true
- },
- "node_modules/map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
- "dev": true,
- "dependencies": {
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/markdown-it": {
- "version": "12.3.2",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
- "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
- "dev": true,
- "dependencies": {
- "argparse": "^2.0.1",
- "entities": "~2.1.0",
- "linkify-it": "^3.0.1",
- "mdurl": "^1.0.1",
- "uc.micro": "^1.0.5"
- },
- "bin": {
- "markdown-it": "bin/markdown-it.js"
- }
- },
- "node_modules/markdown-it-anchor": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.4.tgz",
- "integrity": "sha512-Ul4YVYZNxMJYALpKtu+ZRdrryYt/GlQ5CK+4l1bp/gWXOG2QWElt6AqF3Mih/wfUKdZbNAZVXGR73/n6U/8img==",
- "dev": true,
- "peerDependencies": {
- "@types/markdown-it": "*",
- "markdown-it": "*"
- }
- },
- "node_modules/marked": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.18.tgz",
- "integrity": "sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw==",
- "dev": true,
- "bin": {
- "marked": "bin/marked.js"
- },
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/matchdep": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz",
- "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==",
- "dev": true,
- "dependencies": {
- "findup-sync": "^2.0.0",
- "micromatch": "^3.0.4",
- "resolve": "^1.4.0",
- "stack-trace": "0.0.10"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/matchdep/node_modules/findup-sync": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
- "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==",
- "dev": true,
- "dependencies": {
- "detect-file": "^1.0.0",
- "is-glob": "^3.1.0",
- "micromatch": "^3.0.4",
- "resolve-dir": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/matchdep/node_modules/is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
- "dev": true
- },
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "node_modules/micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch/node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch/node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch/node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/mimic-response": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
- "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
- "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
- },
- "node_modules/minipass": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz",
- "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "dependencies": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dev": true,
- "dependencies": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mixin-deep/node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mixin-deep/node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/mkdirp-classic": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
- },
- "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/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/anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/mocha/node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/mocha/node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/mocha/node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "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==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "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/mocha/node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/mocha/node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/mocha/node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/mocha/node_modules/minimatch": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
- "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/mocha/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/mocha/node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/mocha/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/mocha/node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/mocha/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"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "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==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/moment": {
- "version": "2.29.4",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
- "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "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=="
- },
- "node_modules/mute-stdout": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
- "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/mz": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
- "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
- "dependencies": {
- "any-promise": "^1.0.0",
- "object-assign": "^4.0.1",
- "thenify-all": "^1.0.0"
- }
- },
- "node_modules/nan": {
- "version": "2.16.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz",
- "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA=="
- },
- "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/nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/nanomatch/node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/nanomatch/node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/nanomatch/node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/nanomatch/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/napi-build-utils": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
- "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg=="
- },
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "node_modules/next-tick": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
- "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
- "dev": true
- },
- "node_modules/nise": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz",
- "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==",
- "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"
- }
- },
- "node_modules/node-abi": {
- "version": "3.22.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.22.0.tgz",
- "integrity": "sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w==",
- "dependencies": {
- "semver": "^7.3.5"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/now-and-later": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
- "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
- "dev": true,
- "dependencies": {
- "once": "^1.3.2"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
- "dev": true,
- "dependencies": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.assign": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
- "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "has-symbols": "^1.0.1",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.defaults": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
- "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",
- "dev": true,
- "dependencies": {
- "array-each": "^1.0.1",
- "array-slice": "^1.0.0",
- "for-own": "^1.0.0",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.map": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
- "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==",
- "dev": true,
- "dependencies": {
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.reduce": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz",
- "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==",
- "dev": true,
- "dependencies": {
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/ordered-read-streams": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
- "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==",
- "dev": true,
- "dependencies": {
- "readable-stream": "^2.0.1"
- }
- },
- "node_modules/os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==",
- "dev": true,
- "dependencies": {
- "lcid": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parse-filepath": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
- "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",
- "dev": true,
- "dependencies": {
- "is-absolute": "^1.0.0",
- "map-cache": "^0.2.0",
- "path-root": "^0.1.1"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/parse-node-version": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
- "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/parse-passwd": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
- "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/parse-srcset": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
- "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==",
- "dev": true
- },
- "node_modules/pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
- "dev": true
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "node_modules/path-root": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
- "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",
- "dev": true,
- "dependencies": {
- "path-root-regex": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-root-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
- "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "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"
- }
- },
- "node_modules/path-to-regexp/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/pathval": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
- "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
- "dev": true,
- "dependencies": {
- "pinkie": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss": {
- "version": "7.0.39",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
- "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
- "dev": true,
- "dependencies": {
- "picocolors": "^0.2.1",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss/node_modules/picocolors": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
- "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
- "dev": true
- },
- "node_modules/prebuild-install": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
- "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
- "dependencies": {
- "detect-libc": "^2.0.0",
- "expand-template": "^2.0.3",
- "github-from-package": "0.0.0",
- "minimist": "^1.2.3",
- "mkdirp-classic": "^0.5.3",
- "napi-build-utils": "^1.0.1",
- "node-abi": "^3.3.0",
- "pump": "^3.0.0",
- "rc": "^1.2.7",
- "simple-get": "^4.0.0",
- "tar-fs": "^2.0.0",
- "tunnel-agent": "^0.6.0"
- },
- "bin": {
- "prebuild-install": "bin.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/prebuild-install/node_modules/pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/prettier": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
- "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
- "dev": true,
- "peer": true,
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "node_modules/prettier-linter-helpers": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
- "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
- "dev": true,
- "dependencies": {
- "fast-diff": "^1.1.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/pretty-hrtime": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
- "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "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=="
- },
- "node_modules/pump": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
- "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/pumpify": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
- "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
- "dev": true,
- "dependencies": {
- "duplexify": "^3.6.0",
- "inherits": "^2.0.3",
- "pump": "^2.0.0"
- }
- },
- "node_modules/punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "^5.1.0"
- }
- },
- "node_modules/rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "dependencies": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "bin": {
- "rc": "cli.js"
- }
- },
- "node_modules/rc/node_modules/strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/readdirp": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
- "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
- "dev": true,
- "dependencies": {
- "resolve": "^1.1.6"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/regex-not/node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/regex-not/node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/regex-not/node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
- "node_modules/remove-bom-buffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
- "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5",
- "is-utf8": "^0.2.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/remove-bom-stream": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz",
- "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==",
- "dev": true,
- "dependencies": {
- "remove-bom-buffer": "^3.0.0",
- "safe-buffer": "^5.1.0",
- "through2": "^2.0.3"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
- "dev": true
- },
- "node_modules/repeat-element": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/replace-ext": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
- "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/replace-homedir": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz",
- "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==",
- "dev": true,
- "dependencies": {
- "homedir-polyfill": "^1.0.1",
- "is-absolute": "^1.0.0",
- "remove-trailing-separator": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/replacestream": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz",
- "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==",
- "dev": true,
- "dependencies": {
- "escape-string-regexp": "^1.0.3",
- "object-assign": "^4.0.1",
- "readable-stream": "^2.0.2"
- }
- },
- "node_modules/replacestream/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==",
- "dev": true
- },
- "node_modules/requizzle": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz",
- "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==",
- "dev": true,
- "dependencies": {
- "lodash": "^4.17.14"
- }
- },
- "node_modules/resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
- "dev": true,
- "dependencies": {
- "is-core-module": "^2.9.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-dir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
- "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",
- "dev": true,
- "dependencies": {
- "expand-tilde": "^2.0.0",
- "global-modules": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/resolve-options": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz",
- "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==",
- "dev": true,
- "dependencies": {
- "value-or-function": "^3.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
- "deprecated": "https://github.com/lydell/resolve-url#deprecated",
- "dev": true
- },
- "node_modules/ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true,
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
- "dev": true,
- "dependencies": {
- "ret": "~0.1.10"
- }
- },
- "node_modules/sanitize-html": {
- "version": "1.27.5",
- "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.27.5.tgz",
- "integrity": "sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==",
- "dev": true,
- "dependencies": {
- "htmlparser2": "^4.1.0",
- "lodash": "^4.17.15",
- "parse-srcset": "^1.0.2",
- "postcss": "^7.0.27"
- }
- },
- "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==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/semver-greatest-satisfied-range": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz",
- "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==",
- "dev": true,
- "dependencies": {
- "sver-compat": "^1.5.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "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==",
- "dev": true,
- "dependencies": {
- "randombytes": "^2.1.0"
- }
- },
- "node_modules/serialport": {
- "version": "9.2.8",
- "resolved": "https://registry.npmjs.org/serialport/-/serialport-9.2.8.tgz",
- "integrity": "sha512-FsWpMQgSJxi93JgWl5xM1f9/Z8IjRJuaUEoHqLf8FPBLw7gMhInuHOBhI2onQufWIYPGTz3H3oGcu1nCaK1EfA==",
- "dependencies": {
- "@serialport/binding-mock": "9.2.4",
- "@serialport/bindings": "9.2.8",
- "@serialport/parser-byte-length": "9.2.4",
- "@serialport/parser-cctalk": "9.2.4",
- "@serialport/parser-delimiter": "9.2.4",
- "@serialport/parser-inter-byte-timeout": "9.2.4",
- "@serialport/parser-readline": "9.2.4",
- "@serialport/parser-ready": "9.2.4",
- "@serialport/parser-regex": "9.2.4",
- "@serialport/stream": "9.2.4",
- "debug": "^4.3.2"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/serialport/donate"
- }
- },
- "node_modules/set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
- "dev": true
- },
- "node_modules/set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "node_modules/simple-concat": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
- "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/simple-get": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
- "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "decompress-response": "^6.0.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
- }
- },
- "node_modules/sinon": {
- "version": "13.0.2",
- "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.2.tgz",
- "integrity": "sha512-KvOrztAVqzSJWMDoxM4vM+GPys1df2VBoXm+YciyB/OLMamfS3VXh3oGh5WtrAGSzrgczNWFFY22oKb7Fi5eeA==",
- "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",
- "supports-color": "^7.2.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/sinon"
- }
- },
- "node_modules/sinon-chai": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.7.0.tgz",
- "integrity": "sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==",
- "dev": true,
- "peerDependencies": {
- "chai": "^4.0.0",
- "sinon": ">=4.0.0"
- }
- },
- "node_modules/slip": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/slip/-/slip-1.0.2.tgz",
- "integrity": "sha512-XrcHe3NAcyD3wO+O4I13RcS4/3AF+S9RvGNj9JhJeS02HyImwD2E3QWLrmn9hBfL+fB6yapagwxRkeyYzhk98g=="
- },
- "node_modules/snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "dependencies": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "dependencies": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/snapdragon/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/snapdragon/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-resolve": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
- "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
- "dev": true,
- "dependencies": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/source-map-url": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
- "deprecated": "See https://github.com/lydell/source-map-url#deprecated",
- "dev": true
- },
- "node_modules/sparkles": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
- "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
- "dev": true,
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
- "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
- "dev": true
- },
- "node_modules/split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/split-string/node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/split-string/node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/split-string/node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/stack-trace": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
- "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
- "dev": true,
- "dependencies": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/stream-exhaust": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
- "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==",
- "dev": true
- },
- "node_modules/stream-shift": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
- "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
- "dev": true
- },
- "node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "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==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/sver-compat": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz",
- "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==",
- "dev": true,
- "dependencies": {
- "es6-iterator": "^2.0.1",
- "es6-symbol": "^3.1.1"
- }
- },
- "node_modules/taffydb": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz",
- "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==",
- "dev": true
- },
- "node_modules/tar": {
- "version": "6.1.11",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
- "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
- "dependencies": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^3.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/tar-fs": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
- "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
- "dependencies": {
- "chownr": "^1.1.1",
- "mkdirp-classic": "^0.5.2",
- "pump": "^3.0.0",
- "tar-stream": "^2.1.4"
- }
- },
- "node_modules/tar-fs/node_modules/chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
- },
- "node_modules/tar-fs/node_modules/pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/tar-stream": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
- "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
- "dependencies": {
- "bl": "^4.0.3",
- "end-of-stream": "^1.4.1",
- "fs-constants": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tar-stream/node_modules/readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "node_modules/textextensions": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz",
- "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://bevry.me/fund"
- }
- },
- "node_modules/thenify": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
- "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
- "dependencies": {
- "any-promise": "^1.0.0"
- }
- },
- "node_modules/thenify-all": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
- "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
- "dependencies": {
- "thenify": ">= 3.1.0 < 4"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "node_modules/through2-filter": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
- "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
- "dev": true,
- "dependencies": {
- "through2": "~2.0.0",
- "xtend": "~4.0.0"
- }
- },
- "node_modules/time-stamp": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
- "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/tiny-glob": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
- "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
- "dev": true,
- "dependencies": {
- "globalyzer": "0.1.0",
- "globrex": "^0.1.2"
- }
- },
- "node_modules/tmp": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz",
- "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==",
- "dev": true,
- "dependencies": {
- "rimraf": "^2.6.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tmp/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/to-absolute-glob": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
- "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==",
- "dev": true,
- "dependencies": {
- "is-absolute": "^1.0.0",
- "is-negated-glob": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-object-path/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "dependencies": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex/node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex/node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex/node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-through": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz",
- "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==",
- "dev": true,
- "dependencies": {
- "through2": "^2.0.3"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/type": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
- "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
- "dev": true
- },
- "node_modules/type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
- "dev": true
- },
- "node_modules/typescript": {
- "version": "4.7.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
- "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
- "node_modules/uc.micro": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
- "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
- "dev": true
- },
- "node_modules/unc-path-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
- "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/underscore": {
- "version": "1.13.4",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz",
- "integrity": "sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==",
- "dev": true
- },
- "node_modules/undertaker": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz",
- "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==",
- "dev": true,
- "dependencies": {
- "arr-flatten": "^1.0.1",
- "arr-map": "^2.0.0",
- "bach": "^1.0.0",
- "collection-map": "^1.0.0",
- "es6-weak-map": "^2.0.1",
- "fast-levenshtein": "^1.0.0",
- "last-run": "^1.1.0",
- "object.defaults": "^1.0.0",
- "object.reduce": "^1.0.0",
- "undertaker-registry": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/undertaker-registry": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz",
- "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/undertaker/node_modules/fast-levenshtein": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz",
- "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==",
- "dev": true
- },
- "node_modules/union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
- "dependencies": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unique-stream": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
- "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
- "dev": true,
- "dependencies": {
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "through2-filter": "^3.0.0"
- }
- },
- "node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
- "dev": true,
- "dependencies": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
- "dev": true,
- "dependencies": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
- "dev": true,
- "dependencies": {
- "isarray": "1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/upath": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
- "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
- "dev": true,
- "engines": {
- "node": ">=4",
- "yarn": "*"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
- "deprecated": "Please see https://github.com/lydell/urix#deprecated",
- "dev": true
- },
- "node_modules/use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
- },
- "node_modules/v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
- "dev": true
- },
- "node_modules/v8flags": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
- "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
- "dev": true,
- "dependencies": {
- "homedir-polyfill": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "node_modules/value-or-function": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
- "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/vinyl": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
- "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
- "dev": true,
- "dependencies": {
- "clone": "^2.1.1",
- "clone-buffer": "^1.0.0",
- "clone-stats": "^1.0.0",
- "cloneable-readable": "^1.0.0",
- "remove-trailing-separator": "^1.0.1",
- "replace-ext": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/vinyl-fs": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",
- "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==",
- "dev": true,
- "dependencies": {
- "fs-mkdirp-stream": "^1.0.0",
- "glob-stream": "^6.1.0",
- "graceful-fs": "^4.0.0",
- "is-valid-glob": "^1.0.0",
- "lazystream": "^1.0.0",
- "lead": "^1.0.0",
- "object.assign": "^4.0.4",
- "pumpify": "^1.3.5",
- "readable-stream": "^2.3.3",
- "remove-bom-buffer": "^3.0.0",
- "remove-bom-stream": "^1.2.0",
- "resolve-options": "^1.1.0",
- "through2": "^2.0.0",
- "to-through": "^2.0.0",
- "value-or-function": "^3.0.0",
- "vinyl": "^2.0.0",
- "vinyl-sourcemap": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/vinyl-sourcemap": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz",
- "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==",
- "dev": true,
- "dependencies": {
- "append-buffer": "^1.0.2",
- "convert-source-map": "^1.5.0",
- "graceful-fs": "^4.1.6",
- "normalize-path": "^2.1.1",
- "now-and-later": "^2.0.0",
- "remove-bom-buffer": "^3.0.0",
- "vinyl": "^2.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/vinyl-sourcemap/node_modules/normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
- "dev": true,
- "dependencies": {
- "remove-trailing-separator": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/which-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
- "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==",
- "dev": true
- },
- "node_modules/word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/workerpool": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
- "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
- "dev": true
- },
- "node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
- },
- "node_modules/xmlcreate": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz",
- "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==",
- "dev": true
- },
- "node_modules/xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true,
- "engines": {
- "node": ">=0.4"
- }
- },
- "node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/yargs": {
- "version": "17.5.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz",
- "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==",
- "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.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yargs-parser": {
- "version": "21.0.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz",
- "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==",
- "dev": true,
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yargs-unparser": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
- "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
- "dev": true,
- "dependencies": {
- "camelcase": "^6.0.0",
- "decamelize": "^4.0.0",
- "flat": "^5.0.2",
- "is-plain-obj": "^2.1.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yargs-unparser/node_modules/camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/yargs-unparser/node_modules/decamelize": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
- "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/yargs-unparser/node_modules/is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/yoctodelay": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/yoctodelay/-/yoctodelay-1.2.0.tgz",
- "integrity": "sha512-12y/P9MSig9/5BEhBgylss+fkHiCRZCvYR81eH35NW9uw801cvJt31EAV+WOLcwZRZbLiIQl/hxcdXXXFmGvXg==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/zigbee-herdsman": {
- "version": "0.14.75",
- "resolved": "https://registry.npmjs.org/zigbee-herdsman/-/zigbee-herdsman-0.14.75.tgz",
- "integrity": "sha512-fT31OwBu8kNRuvj4kjC7/oA/Om5bY8tb910t1fALNfBxHsPvRAcyI/EPcXrgzHeEUUbLEbxmouxXDuHIx4aNoQ==",
- "dependencies": {
- "debounce": "^1.2.1",
- "debug": "^4.3.4",
- "fast-deep-equal": "^3.1.3",
- "mixin-deep": "^2.0.1",
- "mz": "^2.7.0",
- "serialport": "9.2.8",
- "slip": "^1.0.2"
- }
- },
- "node_modules/zigbee-herdsman-converters": {
- "version": "14.0.673",
- "resolved": "https://registry.npmjs.org/zigbee-herdsman-converters/-/zigbee-herdsman-converters-14.0.673.tgz",
- "integrity": "sha512-3ZVVXPhQJHHVe6cPTEJTRIg18J06PD2BtpvtvFbGEu9VcyTowS7k8httvnT5iZhgsScyhvHE6IVJYFoz2eMUwQ==",
- "dependencies": {
- "axios": "^1.1.3",
- "buffer-crc32": "^0.2.13",
- "https-proxy-agent": "^5.0.1",
- "tar-stream": "^2.2.0",
- "zigbee-herdsman": "^0.14.73"
- }
- },
- "node_modules/zigbee-herdsman-converters/node_modules/axios": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.0.tgz",
- "integrity": "sha512-zT7wZyNYu3N5Bu0wuZ6QccIf93Qk1eV8LOewxgjOZFd2DenOs98cJ7+Y6703d0wkaXGY6/nZd4EweJaHz9uzQw==",
- "dependencies": {
- "follow-redirects": "^1.15.0",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
- }
- },
- "node_modules/zigbee-herdsman/node_modules/mixin-deep": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-2.0.1.tgz",
- "integrity": "sha512-imbHQNRglyaplMmjBLL3V5R6Bfq5oM+ivds3SKgc6oRtzErEnBUUc5No11Z2pilkUvl42gJvi285xTNswcKCMA==",
- "engines": {
- "node": ">=6"
- }
- }
- },
- "dependencies": {
- "@alcalzone/pak": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/@alcalzone/pak/-/pak-0.7.0.tgz",
- "integrity": "sha512-k5cKJ9/19djy6m2klchQp9JyXUQclGyarI5qz+QFeEvHhbN4ewQ41Ty8ToCx0WRN1SJBa9gLzoXMWb1/UH2HHA==",
- "dev": true,
- "requires": {
- "axios": "^0.21.1",
- "execa": "^5.0.0",
- "fs-extra": "^9.1.0"
- },
- "dependencies": {
- "fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- }
- }
- },
- "@alcalzone/release-script": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@alcalzone/release-script/-/release-script-3.4.3.tgz",
- "integrity": "sha512-hI4tp68Y5NMd3HsHfvTK31ZKLLymk0jhZ3QrEQrtPS2OTrHM0IMztiGrMhgNz2tA5qhuQlF6Cdt+PGqKqy+qRA==",
- "dev": true,
- "requires": {
- "@alcalzone/release-script-core": "3.4.3",
- "@alcalzone/release-script-plugin-changelog": "3.4.3",
- "@alcalzone/release-script-plugin-exec": "3.4.3",
- "@alcalzone/release-script-plugin-git": "3.4.3",
- "@alcalzone/release-script-plugin-package": "3.4.3",
- "@alcalzone/release-script-plugin-version": "3.4.3",
- "alcalzone-shared": "^4.0.0",
- "axios": "^0.21.4",
- "enquirer": "^2.3.6",
- "fs-extra": "^10.0.0",
- "picocolors": "1.0.0",
- "semver": "^7.3.5",
- "source-map-support": "^0.5.20",
- "yargs": "^17.1.1"
- }
- },
- "@alcalzone/release-script-core": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@alcalzone/release-script-core/-/release-script-core-3.4.3.tgz",
- "integrity": "sha512-NRXkYBhHmlttRdkmtwbfseUOiyO+5V9E2nnbAyJ9ZnLhiBfczTVqsCEmO8p0icIN+mT6E4RiGFPHqyTRYk2lgg==",
- "dev": true,
- "requires": {
- "execa": "^5.1.1"
- }
- },
- "@alcalzone/release-script-plugin-changelog": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-changelog/-/release-script-plugin-changelog-3.4.3.tgz",
- "integrity": "sha512-I8FIfAl8RNvHAp8d6xck6O2szymC0JvXhjopfaKdVCMcG0MZWGOvSxMII0J5blZkYixxJJM4hOZQ8LvOiMWMdw==",
- "dev": true,
- "requires": {
- "@alcalzone/release-script-core": "3.4.3",
- "alcalzone-shared": "^4.0.0"
- }
- },
- "@alcalzone/release-script-plugin-exec": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-exec/-/release-script-plugin-exec-3.4.3.tgz",
- "integrity": "sha512-mjmcY+TIqHQ01aIr8fcICCRTNpFpeKBLFbWFNviDvOJz2b4WT3Qu1yhC1XveWr7QpDCXobhHlTlliTThPowNZA==",
- "dev": true,
- "requires": {
- "@alcalzone/release-script-core": "3.4.3",
- "alcalzone-shared": "^4.0.0"
- }
- },
- "@alcalzone/release-script-plugin-git": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-git/-/release-script-plugin-git-3.4.3.tgz",
- "integrity": "sha512-AePVCa8eF3BLUKOm89SqTt+4XZhfOPMGbfruO9Cfx5j1zGVst/MY2Pf6PORJD31qHCIW5YmadsOpb0qRXpclAg==",
- "dev": true,
- "requires": {
- "@alcalzone/release-script-core": "3.4.3",
- "fs-extra": "^10.0.0"
- }
- },
- "@alcalzone/release-script-plugin-package": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-package/-/release-script-plugin-package-3.4.3.tgz",
- "integrity": "sha512-IxiSoGCDoL8m69bFu4SUndp1MgpmeiaIPSPJxoTPirh+SFDE0UkUZQd/H9gjp/L1FzadA3ysyslmHmwu4GzeRA==",
- "dev": true,
- "requires": {
- "@alcalzone/pak": "^0.7.0",
- "@alcalzone/release-script-core": "3.4.3",
- "alcalzone-shared": "^4.0.0",
- "semver": "^7.3.5"
- }
- },
- "@alcalzone/release-script-plugin-version": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-version/-/release-script-plugin-version-3.4.3.tgz",
- "integrity": "sha512-MZWgbMIKDF9kG3KnlwmbA0Eawm7Q+L03qNOutUVP0vBA+1aA6SQPS7Ag10uGldWw7G/DwTdxr9yDb+g8ibwWqw==",
- "dev": true,
- "requires": {
- "@alcalzone/release-script-core": "3.4.3",
- "alcalzone-shared": "^4.0.0",
- "semver": "^7.3.5",
- "tiny-glob": "^0.2.9"
- }
- },
- "@babel/parser": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz",
- "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz",
- "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.3.2",
- "globals": "^13.15.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@humanwhocodes/config-array": {
- "version": "0.9.5",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
- "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.4"
- }
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
- "dev": true
- },
- "@iobroker/adapter-core": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-2.6.0.tgz",
- "integrity": "sha512-J5Cgy0NK8GWjN1th3yvWCG3tnK8iJJcPaHIoVR8PfpEsz4hffuVGi660vNXqXdiqR5Br09XSJ5h1Pn9af0/taw==",
- "requires": {
- "@types/iobroker": "^4.0.1"
- }
- },
- "@iobroker/testing": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@iobroker/testing/-/testing-2.6.0.tgz",
- "integrity": "sha512-cbX5Ns/iXtBNmyagNTXWaO7/wrX6F3kUvRDcGJYwiEduJRBuNBq8Y+ciq5vrkkpe6XsE/o3r7G9OxKLxnVzLpg==",
- "dev": true,
- "requires": {
- "alcalzone-shared": "~4.0.1",
- "chai": "^4.3.6",
- "chai-as-promised": "^7.1.1",
- "debug": "^4.3.3",
- "fs-extra": "^10.0.1",
- "mocha": "^9.2.2",
- "sinon": "^13.0.1",
- "sinon-chai": "^3.7.0"
- }
- },
- "@serialport/binding-abstract": {
- "version": "9.2.3",
- "resolved": "https://registry.npmjs.org/@serialport/binding-abstract/-/binding-abstract-9.2.3.tgz",
- "integrity": "sha512-cQs9tbIlG3P0IrOWyVirqlhWuJ7Ms2Zh9m2108z6Y5UW/iVj6wEOiW8EmK9QX9jmJXYllE7wgGgvVozP5oCj3w==",
- "requires": {
- "debug": "^4.3.2"
- }
- },
- "@serialport/binding-mock": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/binding-mock/-/binding-mock-9.2.4.tgz",
- "integrity": "sha512-dpEhACCs44oQhh6ajJfJdvQdK38Vq0N4W6iD/gdplglDCK7qXRQCMUjJIeKdS/HSEiWkC3bwumUhUufdsOyT4g==",
- "requires": {
- "@serialport/binding-abstract": "9.2.3",
- "debug": "^4.3.2"
- }
- },
- "@serialport/bindings": {
- "version": "9.2.8",
- "resolved": "https://registry.npmjs.org/@serialport/bindings/-/bindings-9.2.8.tgz",
- "integrity": "sha512-hSLxTe0tADZ3LMMGwvEJWOC/TaFQTyPeFalUCsJ1lSQ0k6bPF04JwrtB/C81GetmDBTNRY0GlD0SNtKCc7Dr5g==",
- "requires": {
- "@serialport/binding-abstract": "9.2.3",
- "@serialport/parser-readline": "9.2.4",
- "bindings": "^1.5.0",
- "debug": "^4.3.2",
- "nan": "^2.15.0",
- "prebuild-install": "^7.0.0"
- }
- },
- "@serialport/parser-byte-length": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/parser-byte-length/-/parser-byte-length-9.2.4.tgz",
- "integrity": "sha512-sQD/iw4ZMU3xW9PLi0/GlvU6Y623jGeWecbMkO7izUo/6P7gtfv1c9ikd5h0kwL8AoAOpQA1lxdHIKox+umBUg=="
- },
- "@serialport/parser-cctalk": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/parser-cctalk/-/parser-cctalk-9.2.4.tgz",
- "integrity": "sha512-T4TU5vQMwmo9AB3gQLFDWbfJXlW5jd9guEsB/nqKjFHTv0FXPdZ7DQ2TpSp8RnHWxU3GX6kYTaDO20BKzc8GPQ=="
- },
- "@serialport/parser-delimiter": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-9.2.4.tgz",
- "integrity": "sha512-4nvTAoYAgkxFiXrkI+3CA49Yd43CODjeszh89EK+I9c8wOZ+etZduRCzINYPiy26g7zO+GRAb9FoPCsY+sYcbQ=="
- },
- "@serialport/parser-inter-byte-timeout": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-9.2.4.tgz",
- "integrity": "sha512-SOAdvr0oBQIOCXX198hiTlxs4JTKg9j5piapw5tNq52fwDOWdbYrFneT/wN04UTMKaDrJuEvXq6T4rv4j7nJ5A=="
- },
- "@serialport/parser-readline": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-9.2.4.tgz",
- "integrity": "sha512-Z1/qrZTQUVhNSJP1hd9YfDvq0o7d87rNwAjjRKbVpa7Qi51tG5BnKt43IV3NFMyBlVcRe0rnIb3tJu57E0SOwg==",
- "requires": {
- "@serialport/parser-delimiter": "9.2.4"
- }
- },
- "@serialport/parser-ready": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/parser-ready/-/parser-ready-9.2.4.tgz",
- "integrity": "sha512-Pyi94Itjl6qAURwIZr/gmZpMAyTmKXThm6vL5DoAWGQjcRHWB0gwv2TY2v7N+mQLJYUKU3cMnvnATXxHm7xjxw=="
- },
- "@serialport/parser-regex": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/parser-regex/-/parser-regex-9.2.4.tgz",
- "integrity": "sha512-sI/cVvPOYz+Dbv4ZdnW16qAwvXiFf/1pGASQdbveRTlgJDdz7sRNlCBifzfTN2xljwvCTZYqiudKvDdC1TepRQ=="
- },
- "@serialport/stream": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@serialport/stream/-/stream-9.2.4.tgz",
- "integrity": "sha512-bLye8Ub4vUFQGmkh8qEqehr7SE7EJs2yDs0h9jzuL5oKi+F34CFmWkEErO8GAOQ8YNn7p6b3GxUgs+0BrHHDZQ==",
- "requires": {
- "debug": "^4.3.2"
- }
- },
- "@sinonjs/commons": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
- "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
- "dev": true,
- "requires": {
- "type-detect": "4.0.8"
- }
- },
- "@sinonjs/fake-timers": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz",
- "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==",
- "dev": true,
- "requires": {
- "@sinonjs/commons": "^1.7.0"
- }
- },
- "@sinonjs/samsam": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz",
- "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==",
- "dev": true,
- "requires": {
- "@sinonjs/commons": "^1.6.0",
- "lodash.get": "^4.4.2",
- "type-detect": "^4.0.8"
- }
- },
- "@sinonjs/text-encoding": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz",
- "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==",
- "dev": true
- },
- "@types/expect": {
- "version": "1.20.4",
- "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz",
- "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==",
- "dev": true
- },
- "@types/iobroker": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/iobroker/-/iobroker-4.0.4.tgz",
- "integrity": "sha512-hioI0Cf73pd0i5QGdJptj4AS+6zpWjBSZ4Vz80VyU/oLO7qgU/UiyO79o/ajAWbNREEVlhCJg8sHCoEAe0Bbaw==",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/linkify-it": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz",
- "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==",
- "dev": true
- },
- "@types/markdown-it": {
- "version": "12.2.3",
- "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz",
- "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==",
- "dev": true,
- "requires": {
- "@types/linkify-it": "*",
- "@types/mdurl": "*"
- }
- },
- "@types/mdurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz",
- "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==",
- "dev": true
- },
- "@types/node": {
- "version": "18.0.6",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz",
- "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw=="
- },
- "@types/vinyl": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz",
- "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==",
- "dev": true,
- "requires": {
- "@types/expect": "^1.20.4",
- "@types/node": "*"
- }
- },
- "@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
- },
- "acorn": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
- "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "requires": {}
- },
- "agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "requires": {
- "debug": "4"
- }
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "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==",
- "dev": true,
- "requires": {
- "debug": "^4.3.2"
- }
- },
- "ansi-colors": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
- "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
- "dev": true
- },
- "ansi-gray": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
- "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==",
- "dev": true,
- "requires": {
- "ansi-wrap": "0.1.0"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "ansi-wrap": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
- "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==",
- "dev": true
- },
- "any-promise": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
- },
- "anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "dev": true,
- "requires": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- },
- "dependencies": {
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- }
- }
- },
- "append-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
- "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==",
- "dev": true,
- "requires": {
- "buffer-equal": "^1.0.0"
- }
- },
- "archy": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
- "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",
- "dev": true
- },
- "argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
- "dev": true
- },
- "arr-filter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz",
- "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==",
- "dev": true,
- "requires": {
- "make-iterator": "^1.0.0"
- }
- },
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true
- },
- "arr-map": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz",
- "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==",
- "dev": true,
- "requires": {
- "make-iterator": "^1.0.0"
- }
- },
- "arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
- "dev": true
- },
- "array-each": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
- "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",
- "dev": true
- },
- "array-initial": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz",
- "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==",
- "dev": true,
- "requires": {
- "array-slice": "^1.0.0",
- "is-number": "^4.0.0"
- },
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true
- }
- }
- },
- "array-last": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz",
- "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==",
- "dev": true,
- "requires": {
- "is-number": "^4.0.0"
- },
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true
- }
- }
- },
- "array-slice": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
- "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
- "dev": true
- },
- "array-sort": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz",
- "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==",
- "dev": true,
- "requires": {
- "default-compare": "^1.0.0",
- "get-value": "^2.0.6",
- "kind-of": "^5.0.2"
- }
- },
- "array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
- "dev": true
- },
- "assertion-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
- "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
- "dev": true
- },
- "assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
- "dev": true
- },
- "async-done": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz",
- "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.2",
- "process-nextick-args": "^2.0.0",
- "stream-exhaust": "^1.0.1"
- }
- },
- "async-each": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
- "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
- "dev": true
- },
- "async-settle": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz",
- "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==",
- "dev": true,
- "requires": {
- "async-done": "^1.2.2"
- }
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "dev": true
- },
- "atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true
- },
- "axios": {
- "version": "0.21.4",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
- "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
- "dev": true,
- "requires": {
- "follow-redirects": "^1.14.0"
- }
- },
- "bach": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz",
- "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==",
- "dev": true,
- "requires": {
- "arr-filter": "^1.1.1",
- "arr-flatten": "^1.0.1",
- "arr-map": "^2.0.0",
- "array-each": "^1.0.0",
- "array-initial": "^1.0.0",
- "array-last": "^1.1.1",
- "async-done": "^1.2.2",
- "async-settle": "^1.0.0",
- "now-and-later": "^2.0.0"
- }
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
- "requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- }
- }
- },
- "base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
- },
- "beeper": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/beeper/-/beeper-2.1.0.tgz",
- "integrity": "sha512-85+CcymhlP0jM4fs4ZMiMRl58VthoN9NRdvi+knXiQpP2UggkSre+A9rOZ0c2g2Vh+pEF5ZAlT+k8dsJNoanAA==",
- "dev": true,
- "requires": {
- "yoctodelay": "^1.1.0"
- }
- },
- "binary-extensions": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
- "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
- "dev": true
- },
- "binaryextensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz",
- "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==",
- "dev": true
- },
- "bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "requires": {
- "file-uri-to-path": "1.0.0"
- }
- },
- "bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
- "requires": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
- }
- },
- "bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- }
- },
- "browser-stdout": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
- "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
- "dev": true
- },
- "buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="
- },
- "buffer-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
- "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==",
- "dev": true
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
- "cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- }
- },
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
- },
- "catharsis": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz",
- "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.15"
- }
- },
- "chai": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
- "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
- "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",
- "pathval": "^1.1.1",
- "type-detect": "^4.0.5"
- }
- },
- "chai-as-promised": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz",
- "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==",
- "dev": true,
- "requires": {
- "check-error": "^1.0.2"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "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
- },
- "chokidar": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
- "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
- "dev": true,
- "requires": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "fsevents": "^1.2.7",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
- },
- "dependencies": {
- "glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
- "dev": true,
- "requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
- }
- }
- }
- },
- "chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
- },
- "class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- }
- }
- },
- "cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "clone": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
- "dev": true
- },
- "clone-buffer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
- "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==",
- "dev": true
- },
- "clone-stats": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
- "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==",
- "dev": true
- },
- "cloneable-readable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
- "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "process-nextick-args": "^2.0.0",
- "readable-stream": "^2.3.5"
- }
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
- "dev": true
- },
- "collection-map": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz",
- "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==",
- "dev": true,
- "requires": {
- "arr-map": "^2.0.2",
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
- }
- },
- "collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
- "dev": true,
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "color-support": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
- "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
- "dev": true
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
- "convert-source-map": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
- "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
- "dev": true
- },
- "copy-props": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz",
- "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==",
- "dev": true,
- "requires": {
- "each-props": "^1.3.2",
- "is-plain-object": "^5.0.0"
- }
- },
- "core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "d": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
- "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
- "dev": true,
- "requires": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
- }
- },
- "debounce": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
- "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug=="
- },
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
- "dev": true
- },
- "decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==",
- "dev": true
- },
- "decompress-response": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
- "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
- "requires": {
- "mimic-response": "^3.1.0"
- }
- },
- "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==",
- "dev": true,
- "requires": {
- "type-detect": "^4.0.0"
- }
- },
- "deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
- },
- "deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "default-compare": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz",
- "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==",
- "dev": true,
- "requires": {
- "kind-of": "^5.0.2"
- }
- },
- "default-resolution": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz",
- "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==",
- "dev": true
- },
- "define-properties": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
- "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
- "dev": true,
- "requires": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- }
- },
- "define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
- },
- "detect-file": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
- "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",
- "dev": true
- },
- "detect-libc": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
- "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w=="
- },
- "diff": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
- "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
- "dev": true
- },
- "doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "dom-serializer": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
- "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.0",
- "entities": "^2.0.0"
- },
- "dependencies": {
- "domhandler": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
- "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.2.0"
- }
- }
- }
- },
- "domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "dev": true
- },
- "domhandler": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz",
- "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.0.1"
- }
- },
- "domutils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
- "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
- "dev": true,
- "requires": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0"
- },
- "dependencies": {
- "domhandler": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
- "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.2.0"
- }
- }
- }
- },
- "duplexify": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
- "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
- }
- },
- "each-props": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz",
- "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.1",
- "object.defaults": "^1.1.0"
- },
- "dependencies": {
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- }
- }
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "requires": {
- "once": "^1.4.0"
- }
- },
- "enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
- "dev": true,
- "requires": {
- "ansi-colors": "^4.1.1"
- }
- },
- "entities": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
- "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
- "dev": true
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "es5-ext": {
- "version": "0.10.61",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz",
- "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==",
- "dev": true,
- "requires": {
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.3",
- "next-tick": "^1.1.0"
- }
- },
- "es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
- "dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- }
- },
- "es6-symbol": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
- "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
- "dev": true,
- "requires": {
- "d": "^1.0.1",
- "ext": "^1.1.2"
- }
- },
- "es6-weak-map": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
- "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
- "dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "^0.10.46",
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.1"
- }
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true
- },
- "eslint": {
- "version": "8.20.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz",
- "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==",
- "dev": true,
- "requires": {
- "@eslint/eslintrc": "^1.3.0",
- "@humanwhocodes/config-array": "^0.9.2",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.1.1",
- "eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.3.0",
- "espree": "^9.3.2",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^6.0.1",
- "globals": "^13.15.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "regexpp": "^3.2.0",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
- },
- "dependencies": {
- "glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- }
- }
- },
- "eslint-config-prettier": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
- "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz",
- "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
- "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "dependencies": {
- "eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true
- }
- }
- },
- "eslint-visitor-keys": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
- "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
- "dev": true
- },
- "espree": {
- "version": "9.3.2",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz",
- "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==",
- "dev": true,
- "requires": {
- "acorn": "^8.7.1",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "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"
- }
- },
- "expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
- "dev": true,
- "requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- }
- }
- },
- "expand-template": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
- "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg=="
- },
- "expand-tilde": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
- "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",
- "dev": true,
- "requires": {
- "homedir-polyfill": "^1.0.1"
- }
- },
- "ext": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz",
- "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==",
- "dev": true,
- "requires": {
- "type": "^2.5.0"
- },
- "dependencies": {
- "type": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz",
- "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==",
- "dev": true
- }
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- }
- }
- },
- "fancy-log": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
- "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
- "dev": true,
- "requires": {
- "ansi-gray": "^0.1.1",
- "color-support": "^1.1.3",
- "parse-node-version": "^1.0.0",
- "time-stamp": "^1.0.0"
- }
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "fast-diff": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
- "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
- "dev": true
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "findup-sync": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
- "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
- "dev": true,
- "requires": {
- "detect-file": "^1.0.0",
- "is-glob": "^4.0.0",
- "micromatch": "^3.0.4",
- "resolve-dir": "^1.0.1"
- }
- },
- "fined": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
- "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
- "dev": true,
- "requires": {
- "expand-tilde": "^2.0.2",
- "is-plain-object": "^2.0.3",
- "object.defaults": "^1.1.0",
- "object.pick": "^1.2.0",
- "parse-filepath": "^1.0.1"
- },
- "dependencies": {
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- }
- }
- },
- "flagged-respawn": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
- "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
- "dev": true
- },
- "flat": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
- "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
- "dev": true
- },
- "flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz",
- "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
- "dev": true
- },
- "flush-write-stream": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
- "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "readable-stream": "^2.3.6"
- }
- },
- "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=="
- },
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
- "dev": true
- },
- "for-own": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
- "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
- "dev": true,
- "requires": {
- "for-in": "^1.0.1"
- }
- },
- "form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- }
- },
- "fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
- "dev": true,
- "requires": {
- "map-cache": "^0.2.2"
- }
- },
- "fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
- },
- "fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "requires": {
- "minipass": "^3.0.0"
- }
- },
- "fs-mkdirp-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
- "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "through2": "^2.0.3"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
- "dev": true
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "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==",
- "dev": true
- },
- "get-intrinsic": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
- "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- }
- },
- "get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true
- },
- "get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
- "dev": true
- },
- "github-from-package": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
- "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw=="
- },
- "glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "glob-stream": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
- "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==",
- "dev": true,
- "requires": {
- "extend": "^3.0.0",
- "glob": "^7.1.1",
- "glob-parent": "^3.1.0",
- "is-negated-glob": "^1.0.0",
- "ordered-read-streams": "^1.0.0",
- "pumpify": "^1.3.5",
- "readable-stream": "^2.1.5",
- "remove-trailing-separator": "^1.0.1",
- "to-absolute-glob": "^2.0.0",
- "unique-stream": "^2.0.2"
- },
- "dependencies": {
- "glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
- "dev": true,
- "requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- }
- },
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
- }
- },
- "glob-watcher": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz",
- "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==",
- "dev": true,
- "requires": {
- "anymatch": "^2.0.0",
- "async-done": "^1.2.0",
- "chokidar": "^2.0.0",
- "is-negated-glob": "^1.0.0",
- "just-debounce": "^1.0.0",
- "normalize-path": "^3.0.0",
- "object.defaults": "^1.1.0"
- }
- },
- "global-modules": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
- "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
- "dev": true,
- "requires": {
- "global-prefix": "^1.0.1",
- "is-windows": "^1.0.1",
- "resolve-dir": "^1.0.0"
- }
- },
- "global-prefix": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
- "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",
- "dev": true,
- "requires": {
- "expand-tilde": "^2.0.2",
- "homedir-polyfill": "^1.0.1",
- "ini": "^1.3.4",
- "is-windows": "^1.0.1",
- "which": "^1.2.14"
- },
- "dependencies": {
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "globals": {
- "version": "13.17.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
- "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globalyzer": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
- "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==",
- "dev": true
- },
- "globrex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
- "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
- "dev": true
- },
- "glogg": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz",
- "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==",
- "dev": true,
- "requires": {
- "sparkles": "^1.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
- "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
- },
- "gulp": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz",
- "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==",
- "dev": true,
- "requires": {
- "glob-watcher": "^5.0.3",
- "gulp-cli": "^2.2.0",
- "undertaker": "^1.2.1",
- "vinyl-fs": "^3.0.0"
- }
- },
- "gulp-cli": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
- "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==",
- "dev": true,
- "requires": {
- "ansi-colors": "^1.0.1",
- "archy": "^1.0.0",
- "array-sort": "^1.0.0",
- "color-support": "^1.1.3",
- "concat-stream": "^1.6.0",
- "copy-props": "^2.0.1",
- "fancy-log": "^1.3.2",
- "gulplog": "^1.0.0",
- "interpret": "^1.4.0",
- "isobject": "^3.0.1",
- "liftoff": "^3.1.0",
- "matchdep": "^2.0.0",
- "mute-stdout": "^1.0.0",
- "pretty-hrtime": "^1.0.0",
- "replace-homedir": "^1.0.0",
- "semver-greatest-satisfied-range": "^1.1.0",
- "v8flags": "^3.2.0",
- "yargs": "^7.1.0"
- },
- "dependencies": {
- "ansi-colors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
- "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
- "dev": true,
- "requires": {
- "ansi-wrap": "^0.1.0"
- }
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true
- },
- "camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==",
- "dev": true
- },
- "cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==",
- "dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- }
- },
- "find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
- "dev": true,
- "requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
- }
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
- },
- "path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true
- },
- "read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
- "dev": true,
- "requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
- }
- },
- "read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",
- "dev": true,
- "requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
- "dev": true,
- "requires": {
- "is-utf8": "^0.2.0"
- }
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==",
- "dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- }
- },
- "y18n": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
- "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
- "dev": true
- },
- "yargs": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz",
- "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==",
- "dev": true,
- "requires": {
- "camelcase": "^3.0.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^1.4.0",
- "read-pkg-up": "^1.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^1.0.2",
- "which-module": "^1.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^5.0.1"
- }
- },
- "yargs-parser": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz",
- "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==",
- "dev": true,
- "requires": {
- "camelcase": "^3.0.0",
- "object.assign": "^4.1.0"
- }
- }
- }
- },
- "gulp-jsdoc3": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/gulp-jsdoc3/-/gulp-jsdoc3-3.0.0.tgz",
- "integrity": "sha512-rE2jAwCPA8XFi9g4V3Z3LPhZNjxuMTIYQVMjdqZAQpRfJITLVaUK3xfmiiNTMc7j+fT7pL8Q5yj7ZPRdwCJWNg==",
- "dev": true,
- "requires": {
- "ansi-colors": "^4.1.1",
- "beeper": "^2.0.0",
- "debug": "^4.1.1",
- "fancy-log": "^1.3.3",
- "ink-docstrap": "^1.3.2",
- "jsdoc": "^3.6.3",
- "map-stream": "0.0.7",
- "tmp": "0.1.0"
- }
- },
- "gulp-replace": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.3.tgz",
- "integrity": "sha512-HcPHpWY4XdF8zxYkDODHnG2+7a3nD/Y8Mfu3aBgMiCFDW3X2GiOKXllsAmILcxe3KZT2BXoN18WrpEFm48KfLQ==",
- "dev": true,
- "requires": {
- "@types/node": "^14.14.41",
- "@types/vinyl": "^2.0.4",
- "istextorbinary": "^3.0.0",
- "replacestream": "^4.0.3",
- "yargs-parser": ">=5.0.0-security.0"
- },
- "dependencies": {
- "@types/node": {
- "version": "14.18.22",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.22.tgz",
- "integrity": "sha512-qzaYbXVzin6EPjghf/hTdIbnVW1ErMx8rPzwRNJhlbyJhu2SyqlvjGOY/tbUt6VFyzg56lROcOeSQRInpt63Yw==",
- "dev": true
- }
- }
- },
- "gulplog": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
- "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==",
- "dev": true,
- "requires": {
- "glogg": "^1.0.0"
- }
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "has-property-descriptors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.1"
- }
- },
- "has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "dev": true
- },
- "has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
- "dev": true,
- "requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- }
- },
- "has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true
- },
- "homedir-polyfill": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
- "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
- "dev": true,
- "requires": {
- "parse-passwd": "^1.0.0"
- }
- },
- "hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "htmlparser2": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz",
- "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==",
- "dev": true,
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^3.0.0",
- "domutils": "^2.0.0",
- "entities": "^2.0.0"
- }
- },
- "https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "requires": {
- "agent-base": "6",
- "debug": "4"
- }
- },
- "human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "dev": true
- },
- "ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
- },
- "ignore": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
- "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
- },
- "ink-docstrap": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/ink-docstrap/-/ink-docstrap-1.3.2.tgz",
- "integrity": "sha512-STx5orGQU1gfrkoI/fMU7lX6CSP7LBGO10gXNgOZhwKhUqbtNjCkYSewJtNnLmWP1tAGN6oyEpG1HFPw5vpa5Q==",
- "dev": true,
- "requires": {
- "moment": "^2.14.1",
- "sanitize-html": "^1.13.0"
- }
- },
- "interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
- "dev": true
- },
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==",
- "dev": true
- },
- "is-absolute": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
- "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
- "dev": true,
- "requires": {
- "is-relative": "^1.0.0",
- "is-windows": "^1.0.1"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- }
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
- },
- "is-binary-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
- "dev": true,
- "requires": {
- "binary-extensions": "^1.0.0"
- }
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-core-module": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
- "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- }
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- }
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-negated-glob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
- "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==",
- "dev": true
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-plain-object": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
- "dev": true
- },
- "is-relative": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
- "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
- "dev": true,
- "requires": {
- "is-unc-path": "^1.0.0"
- }
- },
- "is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true
- },
- "is-unc-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
- "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
- "dev": true,
- "requires": {
- "unc-path-regex": "^0.1.2"
- }
- },
- "is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true
- },
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==",
- "dev": true
- },
- "is-valid-glob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
- "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==",
- "dev": true
- },
- "is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
- "dev": true
- },
- "istextorbinary": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz",
- "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==",
- "dev": true,
- "requires": {
- "binaryextensions": "^2.2.0",
- "textextensions": "^3.2.0"
- }
- },
- "js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "js2xmlparser": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz",
- "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==",
- "dev": true,
- "requires": {
- "xmlcreate": "^2.0.4"
- }
- },
- "jsdoc": {
- "version": "3.6.11",
- "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz",
- "integrity": "sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.9.4",
- "@types/markdown-it": "^12.2.3",
- "bluebird": "^3.7.2",
- "catharsis": "^0.9.0",
- "escape-string-regexp": "^2.0.0",
- "js2xmlparser": "^4.0.2",
- "klaw": "^3.0.0",
- "markdown-it": "^12.3.2",
- "markdown-it-anchor": "^8.4.1",
- "marked": "^4.0.10",
- "mkdirp": "^1.0.4",
- "requizzle": "^0.2.3",
- "strip-json-comments": "^3.1.0",
- "taffydb": "2.6.2",
- "underscore": "~1.13.2"
- },
- "dependencies": {
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true
- }
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "just-debounce": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz",
- "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==",
- "dev": true
- },
- "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==",
- "dev": true
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- },
- "klaw": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz",
- "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.9"
- }
- },
- "last-run": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz",
- "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==",
- "dev": true,
- "requires": {
- "default-resolution": "^2.0.0",
- "es6-weak-map": "^2.0.1"
- }
- },
- "lazystream": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
- "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
- "dev": true,
- "requires": {
- "readable-stream": "^2.0.5"
- }
- },
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==",
- "dev": true,
- "requires": {
- "invert-kv": "^1.0.0"
- }
- },
- "lead": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
- "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==",
- "dev": true,
- "requires": {
- "flush-write-stream": "^1.0.2"
- }
- },
- "levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "liftoff": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
- "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==",
- "dev": true,
- "requires": {
- "extend": "^3.0.0",
- "findup-sync": "^3.0.0",
- "fined": "^1.0.1",
- "flagged-respawn": "^1.0.0",
- "is-plain-object": "^2.0.4",
- "object.map": "^1.0.0",
- "rechoir": "^0.6.2",
- "resolve": "^1.1.7"
- },
- "dependencies": {
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- }
- }
- },
- "linkify-it": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
- "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
- "dev": true,
- "requires": {
- "uc.micro": "^1.0.1"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
- "dev": true
- },
- "lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- }
- },
- "loupe": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
- "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
- "dev": true,
- "requires": {
- "get-func-name": "^2.0.0"
- }
- },
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "make-iterator": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
- "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- }
- }
- },
- "map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
- "dev": true
- },
- "map-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz",
- "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==",
- "dev": true
- },
- "map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
- "dev": true,
- "requires": {
- "object-visit": "^1.0.0"
- }
- },
- "markdown-it": {
- "version": "12.3.2",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
- "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1",
- "entities": "~2.1.0",
- "linkify-it": "^3.0.1",
- "mdurl": "^1.0.1",
- "uc.micro": "^1.0.5"
- }
- },
- "markdown-it-anchor": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.4.tgz",
- "integrity": "sha512-Ul4YVYZNxMJYALpKtu+ZRdrryYt/GlQ5CK+4l1bp/gWXOG2QWElt6AqF3Mih/wfUKdZbNAZVXGR73/n6U/8img==",
- "dev": true,
- "requires": {}
- },
- "marked": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.18.tgz",
- "integrity": "sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw==",
- "dev": true
- },
- "matchdep": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz",
- "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==",
- "dev": true,
- "requires": {
- "findup-sync": "^2.0.0",
- "micromatch": "^3.0.4",
- "resolve": "^1.4.0",
- "stack-trace": "0.0.10"
- },
- "dependencies": {
- "findup-sync": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
- "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==",
- "dev": true,
- "requires": {
- "detect-file": "^1.0.0",
- "is-glob": "^3.1.0",
- "micromatch": "^3.0.4",
- "resolve-dir": "^1.0.1"
- }
- },
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
- }
- },
- "mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
- "dev": true
- },
- "merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- }
- },
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- }
- }
- },
- "mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
- },
- "mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
- "mimic-response": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
- "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
- "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
- },
- "minipass": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz",
- "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "requires": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- }
- },
- "mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dev": true,
- "requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- }
- }
- },
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
- },
- "mkdirp-classic": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
- },
- "mocha": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz",
- "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==",
- "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"
- },
- "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
- },
- "anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- }
- },
- "debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
- "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
- }
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "minimatch": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
- "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "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
- },
- "readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "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"
- }
- },
- "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
- }
- }
- },
- "moment": {
- "version": "2.29.4",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
- "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
- "dev": true
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "mute-stdout": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
- "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==",
- "dev": true
- },
- "mz": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
- "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
- "requires": {
- "any-promise": "^1.0.0",
- "object-assign": "^4.0.1",
- "thenify-all": "^1.0.0"
- }
- },
- "nan": {
- "version": "2.16.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz",
- "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA=="
- },
- "nanoid": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
- "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
- "dev": true
- },
- "nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- }
- },
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- }
- }
- },
- "napi-build-utils": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
- "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg=="
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "next-tick": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
- "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
- "dev": true
- },
- "nise": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz",
- "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==",
- "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"
- }
- },
- "node-abi": {
- "version": "3.22.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.22.0.tgz",
- "integrity": "sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w==",
- "requires": {
- "semver": "^7.3.5"
- }
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
- }
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
- },
- "now-and-later": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
- "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
- "dev": true,
- "requires": {
- "once": "^1.3.2"
- }
- },
- "npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "requires": {
- "path-key": "^3.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
- "dev": true
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
- },
- "object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
- "dev": true,
- "requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true
- },
- "object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.0"
- }
- },
- "object.assign": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
- "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "has-symbols": "^1.0.1",
- "object-keys": "^1.1.1"
- }
- },
- "object.defaults": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
- "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",
- "dev": true,
- "requires": {
- "array-each": "^1.0.1",
- "array-slice": "^1.0.0",
- "for-own": "^1.0.0",
- "isobject": "^3.0.0"
- }
- },
- "object.map": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
- "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==",
- "dev": true,
- "requires": {
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
- }
- },
- "object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "object.reduce": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz",
- "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==",
- "dev": true,
- "requires": {
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "requires": {
- "wrappy": "1"
- }
- },
- "onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "ordered-read-streams": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
- "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==",
- "dev": true,
- "requires": {
- "readable-stream": "^2.0.1"
- }
- },
- "os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==",
- "dev": true,
- "requires": {
- "lcid": "^1.0.0"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "parse-filepath": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
- "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",
- "dev": true,
- "requires": {
- "is-absolute": "^1.0.0",
- "map-cache": "^0.2.0",
- "path-root": "^0.1.1"
- }
- },
- "parse-node-version": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
- "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
- "dev": true
- },
- "parse-passwd": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
- "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
- "dev": true
- },
- "parse-srcset": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
- "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==",
- "dev": true
- },
- "pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
- "dev": true
- },
- "path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
- "dev": true
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "path-root": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
- "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",
- "dev": true,
- "requires": {
- "path-root-regex": "^0.1.0"
- }
- },
- "path-root-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
- "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",
- "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"
- },
- "dependencies": {
- "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
- }
- }
- },
- "pathval": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
- "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
- "dev": true
- },
- "picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true
- },
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
- "dev": true
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
- "dev": true,
- "requires": {
- "pinkie": "^2.0.0"
- }
- },
- "posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
- "dev": true
- },
- "postcss": {
- "version": "7.0.39",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
- "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
- "dev": true,
- "requires": {
- "picocolors": "^0.2.1",
- "source-map": "^0.6.1"
- },
- "dependencies": {
- "picocolors": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
- "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
- "dev": true
- }
- }
- },
- "prebuild-install": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
- "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
- "requires": {
- "detect-libc": "^2.0.0",
- "expand-template": "^2.0.3",
- "github-from-package": "0.0.0",
- "minimist": "^1.2.3",
- "mkdirp-classic": "^0.5.3",
- "napi-build-utils": "^1.0.1",
- "node-abi": "^3.3.0",
- "pump": "^3.0.0",
- "rc": "^1.2.7",
- "simple-get": "^4.0.0",
- "tar-fs": "^2.0.0",
- "tunnel-agent": "^0.6.0"
- },
- "dependencies": {
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- }
- }
- },
- "prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true
- },
- "prettier": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
- "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
- "dev": true,
- "peer": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
- "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "pretty-hrtime": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
- "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",
- "dev": true
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "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=="
- },
- "pump": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
- "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "pumpify": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
- "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
- "dev": true,
- "requires": {
- "duplexify": "^3.6.0",
- "inherits": "^2.0.3",
- "pump": "^2.0.0"
- }
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true
- },
- "randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
- "rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "dependencies": {
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="
- }
- }
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "readdirp": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
- "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
- }
- },
- "rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
- "dev": true,
- "requires": {
- "resolve": "^1.1.6"
- }
- },
- "regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- }
- },
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- }
- }
- },
- "regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true
- },
- "remove-bom-buffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
- "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5",
- "is-utf8": "^0.2.1"
- }
- },
- "remove-bom-stream": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz",
- "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==",
- "dev": true,
- "requires": {
- "remove-bom-buffer": "^3.0.0",
- "safe-buffer": "^5.1.0",
- "through2": "^2.0.3"
- }
- },
- "remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
- "dev": true
- },
- "repeat-element": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
- "dev": true
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
- "dev": true
- },
- "replace-ext": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
- "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==",
- "dev": true
- },
- "replace-homedir": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz",
- "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==",
- "dev": true,
- "requires": {
- "homedir-polyfill": "^1.0.1",
- "is-absolute": "^1.0.0",
- "remove-trailing-separator": "^1.1.0"
- }
- },
- "replacestream": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz",
- "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.3",
- "object-assign": "^4.0.1",
- "readable-stream": "^2.0.2"
- },
- "dependencies": {
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- }
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true
- },
- "require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==",
- "dev": true
- },
- "requizzle": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz",
- "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.14"
- }
- },
- "resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.9.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "resolve-dir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
- "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",
- "dev": true,
- "requires": {
- "expand-tilde": "^2.0.0",
- "global-modules": "^1.0.0"
- }
- },
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- },
- "resolve-options": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz",
- "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==",
- "dev": true,
- "requires": {
- "value-or-function": "^3.0.0"
- }
- },
- "resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
- "dev": true
- },
- "ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
- "dev": true,
- "requires": {
- "ret": "~0.1.10"
- }
- },
- "sanitize-html": {
- "version": "1.27.5",
- "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.27.5.tgz",
- "integrity": "sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==",
- "dev": true,
- "requires": {
- "htmlparser2": "^4.1.0",
- "lodash": "^4.17.15",
- "parse-srcset": "^1.0.2",
- "postcss": "^7.0.27"
- }
- },
- "semver": {
- "version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
- "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "semver-greatest-satisfied-range": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz",
- "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==",
- "dev": true,
- "requires": {
- "sver-compat": "^1.5.0"
- }
- },
- "serialize-javascript": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
- "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- },
- "serialport": {
- "version": "9.2.8",
- "resolved": "https://registry.npmjs.org/serialport/-/serialport-9.2.8.tgz",
- "integrity": "sha512-FsWpMQgSJxi93JgWl5xM1f9/Z8IjRJuaUEoHqLf8FPBLw7gMhInuHOBhI2onQufWIYPGTz3H3oGcu1nCaK1EfA==",
- "requires": {
- "@serialport/binding-mock": "9.2.4",
- "@serialport/bindings": "9.2.8",
- "@serialport/parser-byte-length": "9.2.4",
- "@serialport/parser-cctalk": "9.2.4",
- "@serialport/parser-delimiter": "9.2.4",
- "@serialport/parser-inter-byte-timeout": "9.2.4",
- "@serialport/parser-readline": "9.2.4",
- "@serialport/parser-ready": "9.2.4",
- "@serialport/parser-regex": "9.2.4",
- "@serialport/stream": "9.2.4",
- "debug": "^4.3.2"
- }
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
- "dev": true
- },
- "set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "dependencies": {
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- }
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "simple-concat": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
- "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
- },
- "simple-get": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
- "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
- "requires": {
- "decompress-response": "^6.0.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
- }
- },
- "sinon": {
- "version": "13.0.2",
- "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.2.tgz",
- "integrity": "sha512-KvOrztAVqzSJWMDoxM4vM+GPys1df2VBoXm+YciyB/OLMamfS3VXh3oGh5WtrAGSzrgczNWFFY22oKb7Fi5eeA==",
- "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",
- "supports-color": "^7.2.0"
- }
- },
- "sinon-chai": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.7.0.tgz",
- "integrity": "sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==",
- "dev": true,
- "requires": {}
- },
- "slip": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/slip/-/slip-1.0.2.tgz",
- "integrity": "sha512-XrcHe3NAcyD3wO+O4I13RcS4/3AF+S9RvGNj9JhJeS02HyImwD2E3QWLrmn9hBfL+fB6yapagwxRkeyYzhk98g=="
- },
- "snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "dev": true
- }
- }
- },
- "snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- }
- }
- },
- "snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
- "requires": {
- "kind-of": "^3.2.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "source-map-resolve": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
- "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "dev": true,
- "requires": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "source-map-url": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
- "dev": true
- },
- "sparkles": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
- "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==",
- "dev": true
- },
- "spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
- "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
- "dev": true
- },
- "split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- }
- },
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- }
- }
- },
- "stack-trace": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
- "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
- "dev": true
- },
- "static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
- "dev": true,
- "requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- }
- }
- },
- "stream-exhaust": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
- "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==",
- "dev": true
- },
- "stream-shift": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
- "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "dev": true
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true
- },
- "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"
- }
- },
- "supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true
- },
- "sver-compat": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz",
- "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==",
- "dev": true,
- "requires": {
- "es6-iterator": "^2.0.1",
- "es6-symbol": "^3.1.1"
- }
- },
- "taffydb": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz",
- "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==",
- "dev": true
- },
- "tar": {
- "version": "6.1.11",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
- "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
- "requires": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^3.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- }
- },
- "tar-fs": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
- "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
- "requires": {
- "chownr": "^1.1.1",
- "mkdirp-classic": "^0.5.2",
- "pump": "^3.0.0",
- "tar-stream": "^2.1.4"
- },
- "dependencies": {
- "chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
- },
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- }
- }
- },
- "tar-stream": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
- "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
- "requires": {
- "bl": "^4.0.3",
- "end-of-stream": "^1.4.1",
- "fs-constants": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1"
- },
- "dependencies": {
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
- }
- },
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "textextensions": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz",
- "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==",
- "dev": true
- },
- "thenify": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
- "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
- "requires": {
- "any-promise": "^1.0.0"
- }
- },
- "thenify-all": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
- "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
- "requires": {
- "thenify": ">= 3.1.0 < 4"
- }
- },
- "through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "requires": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "through2-filter": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
- "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
- "dev": true,
- "requires": {
- "through2": "~2.0.0",
- "xtend": "~4.0.0"
- }
- },
- "time-stamp": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
- "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==",
- "dev": true
- },
- "tiny-glob": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
- "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
- "dev": true,
- "requires": {
- "globalyzer": "0.1.0",
- "globrex": "^0.1.2"
- }
- },
- "tmp": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz",
- "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==",
- "dev": true,
- "requires": {
- "rimraf": "^2.6.3"
- },
- "dependencies": {
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
- }
- },
- "to-absolute-glob": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
- "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==",
- "dev": true,
- "requires": {
- "is-absolute": "^1.0.0",
- "is-negated-glob": "^1.0.0"
- }
- },
- "to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- }
- },
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- }
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- },
- "to-through": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz",
- "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==",
- "dev": true,
- "requires": {
- "through2": "^2.0.3"
- }
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "type": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
- "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
- "dev": true
- },
- "type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true
- },
- "type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
- "dev": true
- },
- "typescript": {
- "version": "4.7.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
- "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ=="
- },
- "uc.micro": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
- "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
- "dev": true
- },
- "unc-path-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
- "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",
- "dev": true
- },
- "underscore": {
- "version": "1.13.4",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz",
- "integrity": "sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==",
- "dev": true
- },
- "undertaker": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz",
- "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.0.1",
- "arr-map": "^2.0.0",
- "bach": "^1.0.0",
- "collection-map": "^1.0.0",
- "es6-weak-map": "^2.0.1",
- "fast-levenshtein": "^1.0.0",
- "last-run": "^1.1.0",
- "object.defaults": "^1.0.0",
- "object.reduce": "^1.0.0",
- "undertaker-registry": "^1.0.0"
- },
- "dependencies": {
- "fast-levenshtein": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz",
- "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==",
- "dev": true
- }
- }
- },
- "undertaker-registry": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz",
- "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==",
- "dev": true
- },
- "union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- }
- },
- "unique-stream": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
- "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
- "dev": true,
- "requires": {
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "through2-filter": "^3.0.0"
- }
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true
- },
- "unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
- "dev": true,
- "requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
- "dev": true,
- "requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
- "dev": true
- }
- }
- },
- "upath": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
- "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
- "dev": true
- },
- "use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
- },
- "v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
- "dev": true
- },
- "v8flags": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
- "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
- "dev": true,
- "requires": {
- "homedir-polyfill": "^1.0.1"
- }
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "value-or-function": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
- "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==",
- "dev": true
- },
- "vinyl": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
- "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
- "dev": true,
- "requires": {
- "clone": "^2.1.1",
- "clone-buffer": "^1.0.0",
- "clone-stats": "^1.0.0",
- "cloneable-readable": "^1.0.0",
- "remove-trailing-separator": "^1.0.1",
- "replace-ext": "^1.0.0"
- }
- },
- "vinyl-fs": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",
- "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==",
- "dev": true,
- "requires": {
- "fs-mkdirp-stream": "^1.0.0",
- "glob-stream": "^6.1.0",
- "graceful-fs": "^4.0.0",
- "is-valid-glob": "^1.0.0",
- "lazystream": "^1.0.0",
- "lead": "^1.0.0",
- "object.assign": "^4.0.4",
- "pumpify": "^1.3.5",
- "readable-stream": "^2.3.3",
- "remove-bom-buffer": "^3.0.0",
- "remove-bom-stream": "^1.2.0",
- "resolve-options": "^1.1.0",
- "through2": "^2.0.0",
- "to-through": "^2.0.0",
- "value-or-function": "^3.0.0",
- "vinyl": "^2.0.0",
- "vinyl-sourcemap": "^1.1.0"
- }
- },
- "vinyl-sourcemap": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz",
- "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==",
- "dev": true,
- "requires": {
- "append-buffer": "^1.0.2",
- "convert-source-map": "^1.5.0",
- "graceful-fs": "^4.1.6",
- "normalize-path": "^2.1.1",
- "now-and-later": "^2.0.0",
- "remove-bom-buffer": "^3.0.0",
- "vinyl": "^2.0.0"
- },
- "dependencies": {
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- }
- }
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
- "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==",
- "dev": true
- },
- "word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true
- },
- "workerpool": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
- "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
- "dev": true
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
- },
- "xmlcreate": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz",
- "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==",
- "dev": true
- },
- "xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true
- },
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "yargs": {
- "version": "17.5.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz",
- "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==",
- "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.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.0.0"
- }
- },
- "yargs-parser": {
- "version": "21.0.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz",
- "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==",
- "dev": true
- },
- "yargs-unparser": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
- "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
- "dev": true,
- "requires": {
- "camelcase": "^6.0.0",
- "decamelize": "^4.0.0",
- "flat": "^5.0.2",
- "is-plain-obj": "^2.1.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true
- },
- "decamelize": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
- "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
- "dev": true
- },
- "is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
- "dev": true
- }
- }
- },
- "yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true
- },
- "yoctodelay": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/yoctodelay/-/yoctodelay-1.2.0.tgz",
- "integrity": "sha512-12y/P9MSig9/5BEhBgylss+fkHiCRZCvYR81eH35NW9uw801cvJt31EAV+WOLcwZRZbLiIQl/hxcdXXXFmGvXg==",
- "dev": true
- },
- "zigbee-herdsman": {
- "version": "0.14.75",
- "resolved": "https://registry.npmjs.org/zigbee-herdsman/-/zigbee-herdsman-0.14.75.tgz",
- "integrity": "sha512-fT31OwBu8kNRuvj4kjC7/oA/Om5bY8tb910t1fALNfBxHsPvRAcyI/EPcXrgzHeEUUbLEbxmouxXDuHIx4aNoQ==",
- "requires": {
- "debounce": "^1.2.1",
- "debug": "^4.3.4",
- "fast-deep-equal": "^3.1.3",
- "mixin-deep": "^2.0.1",
- "mz": "^2.7.0",
- "serialport": "9.2.8",
- "slip": "^1.0.2"
- },
- "dependencies": {
- "mixin-deep": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-2.0.1.tgz",
- "integrity": "sha512-imbHQNRglyaplMmjBLL3V5R6Bfq5oM+ivds3SKgc6oRtzErEnBUUc5No11Z2pilkUvl42gJvi285xTNswcKCMA=="
- }
- }
- },
- "zigbee-herdsman-converters": {
- "version": "14.0.673",
- "resolved": "https://registry.npmjs.org/zigbee-herdsman-converters/-/zigbee-herdsman-converters-14.0.673.tgz",
- "integrity": "sha512-3ZVVXPhQJHHVe6cPTEJTRIg18J06PD2BtpvtvFbGEu9VcyTowS7k8httvnT5iZhgsScyhvHE6IVJYFoz2eMUwQ==",
- "requires": {
- "axios": "^1.1.3",
- "buffer-crc32": "^0.2.13",
- "https-proxy-agent": "^5.0.1",
- "tar-stream": "^2.2.0",
- "zigbee-herdsman": "^0.14.73"
- },
- "dependencies": {
- "axios": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.0.tgz",
- "integrity": "sha512-zT7wZyNYu3N5Bu0wuZ6QccIf93Qk1eV8LOewxgjOZFd2DenOs98cJ7+Y6703d0wkaXGY6/nZd4EweJaHz9uzQw==",
- "requires": {
- "follow-redirects": "^1.15.0",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
- }
- }
- }
- }
- }
-}
diff --git a/package.json b/package.json
index 68b55eea..dfe24ec2 100644
--- a/package.json
+++ b/package.json
@@ -20,25 +20,27 @@
"dependencies": {
"zigbee-herdsman": "0.14.76",
"zigbee-herdsman-converters": "14.0.676",
- "@iobroker/adapter-core": "^2.4.0",
- "tar": "^6.0.5",
- "typescript": "^4.0.5"
+ "@iobroker/adapter-core": "^2.6.7",
+ "tar": "^6.1.12",
+ "typescript": "^4.9.3"
},
"description": "Zigbee devices",
"devDependencies": {
- "@alcalzone/release-script": "~3.4.2",
- "@iobroker/testing": "^2.5.4",
- "axios": "^0.21.1",
- "mixin-deep": "^1.3.2",
- "eslint": "^8.14.0",
+ "@alcalzone/release-script": "^3.5.9",
+ "@alcalzone/release-script-plugin-iobroker": "^3.5.9",
+ "@alcalzone/release-script-plugin-license": "^3.5.9",
+ "@iobroker/testing": "^4.1.0",
+ "axios": "^1.2.0",
+ "mixin-deep": "^2.0.1",
+ "eslint": "^8.28.0",
"eslint-config-prettier": "^8.5.0",
- "eslint-plugin-prettier": "^4.0.0",
- "chai": "^4.3.4",
+ "eslint-plugin-prettier": "^4.2.1",
+ "chai": "^4.3.7",
"chai-as-promised": "^7.1.1",
"gulp": "^4.0.2",
"gulp-jsdoc3": "^3.0.0",
"gulp-replace": "^1.1.3",
- "mocha": "^9.1.3"
+ "mocha": "^10.1.0"
},
"homepage": "https://github.com/ioBroker/ioBroker.zigbee",
"keywords": [
@@ -56,6 +58,14 @@
],
"license": "MIT",
"main": "main.js",
+ "files": [
+ "admin/",
+ "lib/",
+ "support/",
+ "io-package.json",
+ "LICENSE",
+ "main.js"
+ ],
"optionalDependencies": {},
"readmeFilename": "README.md",
"repository": {
@@ -71,6 +81,9 @@
"watch:parcel": "parcel admin/src/index.tsx -d admin/build --hmr-port 1235",
"test:js": "mocha --opts test/mocha.custom.opts",
"lint": "eslint --ext .ts \"packages/*/src/**/*.ts\"",
- "release": "release-script"
+ "release": "release-script",
+ "release-patch": "release-script patch --yes --no-update-lockfile",
+ "release-minor": "release-script minor --yes --no-update-lockfile",
+ "release-major": "release-script major --yes --no-update-lockfile"
}
}