From 461f0b3ea7887ec240c4c191dc3036b8f47981cb Mon Sep 17 00:00:00 2001
From: Colin Kuebler
@@ -355,10 +352,7 @@ Gets a device's current status.
Defaults to returning only the value of the first DPS index. Sets a property on a device. Connects to the device. Can be called even
if device is already connected. Disconnects from the device, use to
close the socket and exit gracefully. Returns current connection status to device.avajs/ava
### [`v1.3.0`](https://togithub.com/avajs/ava/releases/v1.3.0)
[Compare Source](https://togithub.com/avajs/ava/compare/v1.2.1...v1.3.0)
#### Bug fixes
- We've fixed a rather embarrasing bug with `t.throws()` and `t.throwsAsync()`. If you'd set a `code` expectation to a number we never actually _checked_ that the thrown error had such a code! Thanks to [@qlonik](https://togithub.com/qlonik) for both spotting and fixing this. [`82daa5e`](https://togithub.com/avajs/ava/commit/82daa5e373ef0587693927acc63ce5590e8d8eb2)
- 1.2.0 contained a regression which meant that if you [faked](https://www.npmjs.com/package/lolex) `clearTimeout()`, you'd break AVA. That's now been fixed. [`40f331c`](https://togithub.com/avajs/ava/commit/40f331c27e70690e724f9ddc893fed0556058987)
- Snapshot files are now recognized as source files, so if you're using watch mode and you delete one, AVA won't rerun _all_ your test files. [`d066f6f`](https://togithub.com/avajs/ava/commit/d066f6fbc06ab2fa2d391ff373f5f09b2585b900)
#### New features
You can now use `require()` in `ava.config.js` files to load non-ES modules. [`334e15b`](https://togithub.com/avajs/ava/commit/334e15b4af06492c9aed2800a0764f245d6a908b)
#### All changes
[`v1.2.1...v1.3.0`](https://togithub.com/avajs/ava/compare/v1.2.1...v1.3.0)
#### Thanks
Thank you [@itaisteinherz](https://togithub.com/itaisteinherz), [@jdalton](https://togithub.com/jdalton), [@kagawagao](https://togithub.com/kagawagao), [@KompKK](https://togithub.com/KompKK), [@SleeplessByte](https://togithub.com/SleeplessByte), [@Chrisyee22](https://togithub.com/Chrisyee22) and [@qlonik](https://togithub.com/qlonik) for helping us with this release. We couldn't have done this without you!
#### Get involved
We welcome new contributors. AVA is a friendly place to get started in open source. We have a [great article](https://medium.com/@vadimdemedes/making-your-first-contribution-de6576ddb190#.umxr7id07) on getting started contributing and a comprehensive [contributing guide](https://togithub.com/avajs/ava/blob/master/contributing.md).
avajs/ava
### [`v1.3.1`](https://togithub.com/avajs/ava/releases/v1.3.1)
[Compare Source](https://togithub.com/avajs/ava/compare/v1.3.0...v1.3.1)
#### Bug fixes
- We've fixed a rather embarrasing bug with `t.throws()` and `t.throwsAsync()`. If you'd set a `code` expectation to a number we never actually _checked_ that the thrown error had such a code! Thanks to [@qlonik](https://togithub.com/qlonik) for both spotting and fixing this. [`82daa5e`](https://togithub.com/avajs/ava/commit/82daa5e373ef0587693927acc63ce5590e8d8eb2)
- 1.2.0 contained a regression which meant that if you [faked](https://www.npmjs.com/package/lolex) `clearTimeout()`, you'd break AVA. That's now been fixed. [`40f331c`](https://togithub.com/avajs/ava/commit/40f331c27e70690e724f9ddc893fed0556058987)
- Snapshot files are now recognized as source files, so if you're using watch mode and you delete one, AVA won't rerun _all_ your test files. [`d066f6f`](https://togithub.com/avajs/ava/commit/d066f6fbc06ab2fa2d391ff373f5f09b2585b900)
#### New features
You can now use `require()` in `ava.config.js` files to load non-ES modules. [`334e15b`](https://togithub.com/avajs/ava/commit/334e15b4af06492c9aed2800a0764f245d6a908b)
#### All changes
[`v1.2.1...v1.3.1`](https://togithub.com/avajs/ava/compare/v1.2.1...v1.3.1)
#### Thanks
Thank you [@itaisteinherz](https://togithub.com/itaisteinherz), [@jdalton](https://togithub.com/jdalton), [@kagawagao](https://togithub.com/kagawagao), [@KompKK](https://togithub.com/KompKK), [@SleeplessByte](https://togithub.com/SleeplessByte), [@Chrisyee22](https://togithub.com/Chrisyee22) and [@qlonik](https://togithub.com/qlonik) for helping us with this release. We couldn't have done this without you!
#### Get involved
We welcome new contributors. AVA is a friendly place to get started in open source. We have a [great article](https://medium.com/@vadimdemedes/making-your-first-contribution-de6576ddb190#.umxr7id07) on getting started contributing and a comprehensive [contributing guide](https://togithub.com/avajs/ava/blob/master/contributing.md).
sindresorhus/p-retry
### [`v4.0.0`](https://togithub.com/sindresorhus/p-retry/releases/v4.0.0)
[Compare Source](https://togithub.com/sindresorhus/p-retry/compare/v3.0.1...v4.0.0)
Breaking:
- Require Node.js 8 [`0ed8d5d`](https://togithub.com/sindresorhus/p-retry/commit/0ed8d5d) ([#21](https://togithub.com/sindresorhus/p-retry/issues/21)) [`4b6ec19`](https://togithub.com/sindresorhus/p-retry/commit/4b6ec19)
Enhancements:
- Throw a useful error if a non-error is thrown [`a9d75a5`](https://togithub.com/sindresorhus/p-retry/commit/a9d75a5)
- Add TypeScript definition ([#21](https://togithub.com/sindresorhus/p-retry/issues/21)) [`4b6ec19`](https://togithub.com/sindresorhus/p-retry/commit/4b6ec19)
sindresorhus/p-timeout
### [`v3.0.0`](https://togithub.com/sindresorhus/p-timeout/releases/v3.0.0)
[Compare Source](https://togithub.com/sindresorhus/p-timeout/compare/v2.0.1...v3.0.0)
Breaking:
- Require Node.js 8 ([#10](https://togithub.com/sindresorhus/p-timeout/issues/10)) [`9a429bc`](https://togithub.com/sindresorhus/p-timeout/commit/9a429bc)
Enhancements:
- Add TypeScript definition ([#10](https://togithub.com/sindresorhus/p-timeout/issues/10)) [`9a429bc`](https://togithub.com/sindresorhus/p-timeout/commit/9a429bc)
documentationjs/documentation
### [`v9.3.1`](https://togithub.com/documentationjs/documentation/blob/master/CHANGELOG.md#1000-alpha0httpsgithubcomdocumentationjsdocumentationcomparev931v1000-alpha0-2019-03-12)
[Compare Source](https://togithub.com/documentationjs/documentation/compare/v9.3.0...v9.3.1)
##### Features
- Support custom babel config ([#1205](https://togithub.com/documentationjs/documentation/issues/1205)) ([746d0a9](https://togithub.com/documentationjs/documentation/commit/746d0a9))
##### BREAKING CHANGES
- this may change babel configuration loading, and is a
major change to the documentation.js approach to Babel.
#### [9.3.1](https://togithub.com/documentationjs/documentation/compare/v9.3.0...v9.3.1) (2019-03-12)
### [`v9.3.0`](https://togithub.com/documentationjs/documentation/blob/master/CHANGELOG.md#930httpsgithubcomdocumentationjsdocumentationcomparev921v930-2019-02-27)
[Compare Source](https://togithub.com/documentationjs/documentation/compare/v9.2.1...v9.3.0)
##### Features
- Add inner section ([#1212](https://togithub.com/documentationjs/documentation/issues/1212)) ([64c9ca6](https://togithub.com/documentationjs/documentation/commit/64c9ca6))
#### [9.2.1](https://togithub.com/documentationjs/documentation/compare/v9.2.0...v9.2.1) (2019-02-26)
### [`v9.2.1`](https://togithub.com/documentationjs/documentation/blob/master/CHANGELOG.md#930httpsgithubcomdocumentationjsdocumentationcomparev921v930-2019-02-27)
[Compare Source](https://togithub.com/documentationjs/documentation/compare/v9.2.0...v9.2.1)
##### Features
- Add inner section ([#1212](https://togithub.com/documentationjs/documentation/issues/1212)) ([64c9ca6](https://togithub.com/documentationjs/documentation/commit/64c9ca6))
#### [9.2.1](https://togithub.com/documentationjs/documentation/compare/v9.2.0...v9.2.1) (2019-02-26)
Date: Wed, 20 Mar 2019 21:03:07 -0400
Subject: [PATCH 09/40] First attempt at queue system
---
docs/index.html | 136 ++++++++++++++--------------------------------
index.js | 55 +++++++++++++++++++
package-lock.json | 4 +-
package.json | 2 +-
4 files changed, 100 insertions(+), 97 deletions(-)
diff --git a/docs/index.html b/docs/index.html
index 02329f6..be34634 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -3,12 +3,12 @@
you're experiencing problems when only passing
one, try passing both if possible.
-
-
+
+
+
+
@@ -625,10 +620,7 @@
+
+
@@ -683,10 +677,7 @@
+
+
@@ -731,10 +724,7 @@
+
+
@@ -790,10 +782,7 @@
-
-
+
+
@@ -854,10 +845,7 @@
If you didn't pass an ID or IP to the constructor,
you must call this before anything else.
Toggles a boolean property.
- - - @@ -1018,6 +1005,8 @@Events that TuyAPI emits.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -Emitted when data is returned from device.
- -Static wrapper for lower-level MessageParser functions to easily parse packets.
- - - @@ -1405,8 +1350,11 @@Static wrapper for lower-level MessageParser functions to easily encode packets
- - - @@ -1509,8 +1454,11 @@6: const c = 'baz';
7: t.assert(a.test(b) || b === c);
8: });
Value is not truthy:
false
a.test(b) || b === c
=> false
b === c
=> false
c
=> 'baz'
b
=> 'bar'
a.test(b)
=> false
b
=> 'bar'
a
=> /foo/
Date: Tue, 26 Mar 2019 20:42:48 -0400
Subject: [PATCH 12/40] Hack in support for sequence bytes
---
index.js | 217 +++++++++++++++++++-----------------------
lib/message-parser.js | 8 +-
2 files changed, 104 insertions(+), 121 deletions(-)
diff --git a/index.js b/index.js
index bd41a37..656e441 100644
--- a/index.js
+++ b/index.js
@@ -79,8 +79,8 @@ class TuyaDevice extends EventEmitter {
this._connectTimeout = 5; // Seconds
this._pingPongPeriod = 10; // Seconds
- this._queue = []; // Queue of commands
- this._waitingForResponse = false;
+ this._currentSequenceN = 0;
+ this._resolvers = {};
}
/**
@@ -112,15 +112,6 @@ class TuyaDevice extends EventEmitter {
devId: this.device.id
};
- if (this._waitingForResponse) {
- const queuedFunction = this.wrapFunction(this.get, this, options);
- if (!this.arrayDeepInclude(this._queue, queuedFunction)) {
- this._queue.push(queuedFunction);
- }
-
- return;
- }
-
debug('GET Payload:');
debug(payload);
@@ -134,26 +125,17 @@ class TuyaDevice extends EventEmitter {
return new Promise((resolve, reject) => {
try {
// Send request
- this._send(buffer).then(() => {
- // Runs when data event is emitted
- const resolveGet = data => {
- // Remove self listener
- this.removeListener('data', resolveGet);
-
- if (options.schema === true) {
- // Return whole response
- resolve(data);
- } else if (options.dps) {
- // Return specific property
- resolve(data.dps[options.dps]);
- } else {
- // Return first property by default
- resolve(data.dps['1']);
- }
- };
-
- // Add listener
- this.on('data', resolveGet);
+ this._send(buffer).then(data => {
+ if (options.schema === true) {
+ // Return whole response
+ resolve(data);
+ } else if (options.dps) {
+ // Return specific property
+ resolve(data.dps[options.dps]);
+ } else {
+ // Return first property by default
+ resolve(data.dps['1']);
+ }
});
} catch (error) {
reject(error);
@@ -219,15 +201,6 @@ class TuyaDevice extends EventEmitter {
dps
};
- if (this._waitingForResponse) {
- const queuedFunction = this.wrapFunction(this.set, this, options);
- if (!this.arrayDeepInclude(this._queue, queuedFunction)) {
- this._queue.push(queuedFunction);
- }
-
- return;
- }
-
debug('SET Payload:');
debug(payload);
@@ -255,17 +228,8 @@ class TuyaDevice extends EventEmitter {
try {
// Send request
this._send(buffer).then(() => {
- // Runs when data event is emitted
- const resolveSet = _ => {
- // Remove self listener
- this.removeListener('data', resolveSet);
-
- // Return true
- resolve(true);
- };
-
- // Add listener to data event
- this.on('data', resolveSet);
+ // Return true
+ resolve(true);
});
} catch (error) {
reject(error);
@@ -279,7 +243,7 @@ class TuyaDevice extends EventEmitter {
* wraps the entire operation in a retry.
* @private
* @param {Buffer} buffer buffer of data
- * @returns {Promise} `true` if query was successfully sent
+ * @returns {Promise} returned data for request
*/
_send(buffer) {
// Make sure we're connected
@@ -292,14 +256,21 @@ class TuyaDevice extends EventEmitter {
throw new TypeError('Device missing IP address.');
}
- this._waitingForResponse = true;
+ // Add sequence number to buffer
+ buffer.writeUInt32BE(++this._currentSequenceN, 4);
// Retry up to 5 times
- return pRetry(async () => {
- // Send data
- this.client.write(buffer);
+ return pRetry(() => {
+ return new Promise((resolve, reject) => {
+ try {
+ // Send data
+ this.client.write(buffer);
- return true;
+ this._resolvers[this._currentSequenceN] = data => resolve(data);
+ } catch (error) {
+ reject(error);
+ }
+ });
}, {retries: 5});
}
@@ -357,69 +328,7 @@ class TuyaDevice extends EventEmitter {
// Add event listeners to socket
// Parse response data
- this.client.on('data', data => {
- debug(this._waitingForResponse, this._queue);
- this._waitingForResponse = false;
-
- if (this._queue.length > 0) {
- debug('Pulling from queue...');
- this._queue[0]();
- this._queue.shift();
- }
-
- debug('Received response');
- debug(data.toString('hex'));
-
- // Response was received, so stop waiting
- clearTimeout(this._sendTimeout);
-
- let dataRes;
- try {
- dataRes = Parser.parse(data);
- } catch (error) {
- debug(error);
- this.emit('error', error);
- return;
- }
-
- data = dataRes.data;
-
- if (typeof data === 'object') {
- debug('Parsed response data:');
- debug(data);
- } else if (typeof data === 'undefined') {
- if (dataRes.commandByte === 0x09) { // PONG received
- debug('Pong', this.device.ip);
- return;
- }
-
- if (dataRes.commandByte === 0x07) { // Set succeeded
- debug('Set succeeded.');
- return;
- }
-
- debug(`Undefined data with command byte ${dataRes.commandByte}`);
- } else { // Message is encrypted
- data = this.device.cipher.decrypt(data);
- debug('Decrypted response data:');
- debug(data);
- }
-
- // Data should be an object by now
- if (typeof data !== 'object') {
- return reject(new Error('Bad response.'));
- }
-
- /**
- * Emitted when data is returned from device.
- * @event TuyaDevice#data
- * @property {Object} data received data
- * @property {Number} commandByte
- * commandByte of result
- * (e.g. 7=requested response, 8=proactive update from device)
- */
- this.emit('data', data, dataRes.commandByte);
- });
+ this.client.on('data', this._dataHandler.bind(this));
// Handle errors
this.client.on('error', err => {
@@ -490,6 +399,74 @@ class TuyaDevice extends EventEmitter {
return Promise.resolve(true);
}
+ _dataHandler(data) {
+ debug('Received response');
+ debug(data.toString('hex'));
+
+ // Response was received, so stop waiting
+ clearTimeout(this._sendTimeout);
+
+ let dataRes;
+ try {
+ dataRes = Parser.parse(data);
+ } catch (error) {
+ debug(error);
+ this.emit('error', error);
+ return;
+ }
+
+ data = dataRes.data;
+
+ if (typeof data === 'object') {
+ debug('Parsed response data:');
+ debug(data);
+ } else if (typeof data === 'undefined') {
+ if (dataRes.commandByte === 0x09) { // PONG received
+ debug('Pong', this.device.ip);
+ return;
+ }
+
+ if (dataRes.commandByte === 0x07) { // Set succeeded
+ debug('Set succeeded.');
+ return;
+ }
+
+ debug(`Undefined data with command byte ${dataRes.commandByte}`);
+ } else { // Message is encrypted
+ data = this.device.cipher.decrypt(data);
+ debug('Decrypted response data:');
+ debug(data);
+ }
+
+ // Data should be an object by now
+ if (typeof data !== 'object') {
+ throw new TypeError('Bad response.');
+ }
+
+ /**
+ * Emitted when data is returned from device.
+ * @event TuyaDevice#data
+ * @property {Object} data received data
+ * @property {Number} commandByte
+ * commandByte of result
+ * (e.g. 7=requested response, 8=proactive update from device)
+ * @property {Number} sequenceN the packet sequence number
+ */
+ this.emit('data', data, dataRes.commandByte, dataRes.sequenceN);
+
+ // Call data resolver for sequence number
+ if (this._resolvers[dataRes.sequenceN]) {
+ this._resolvers[dataRes.sequenceN](data);
+
+ // Remove resolver
+ delete this._resolvers[dataRes.sequenceN];
+ } else if (dataRes.sequenceN === 0) {
+ this._resolvers[Object.keys(this._resolvers)[0]](data);
+
+ delete this._resolvers[dataRes.sequenceN];
+ }
+ }
+
/**
* Disconnects from the device, use to
* close the socket and exit gracefully.
diff --git a/lib/message-parser.js b/lib/message-parser.js
index 845fc01..1d62aa3 100644
--- a/lib/message-parser.js
+++ b/lib/message-parser.js
@@ -13,6 +13,7 @@ class MessageParser {
this._data = undefined;
this._leftOver = undefined;
this._commandByte = undefined;
+ this._sequenceN = 0;
}
/**
@@ -54,6 +55,8 @@ class MessageParser {
throw new Error('Magic suffix mismatch: ' + this._buff.toString('hex'));
}
+ this._sequenceN = this._buff.readUInt32BE(4);
+
// Get payload size
if (!this._payloadSize) {
this._payloadSize = this._buff.readUInt32BE(12);
@@ -96,8 +99,10 @@ class MessageParser {
*/
_decode() {
const result = {
- commandByte: this._commandByte
+ commandByte: this._commandByte,
+ sequenceN: this._sequenceN
};
+
// It's possible for packets to be valid
// and yet contain no data.
if (this._data.length === 0) {
@@ -169,6 +174,7 @@ class MessageParser {
* @returns {Object} result
* @returns {String|Buffer|Object} result.data decoded data, if available in response
* @returns {Number} result.commandByte command byte from decoded data
+* @returns {Number} result.sequenceN sequence number of packet
*/
function parse(data) {
const p = new MessageParser();
From 19aaacd8333a7b02ba57a975c1dc3f119312a25b Mon Sep 17 00:00:00 2001
From: "renovate[bot]"
Date: Wed, 27 Mar 2019 14:09:50 +0000
Subject: [PATCH 13/40] Update dependency ava to v1.4.1 (#179)
This PR contains the following updates:
| Package | Type | Update | Change | References |
|---|---|---|---|---|
| ava | devDependencies | patch | [`1.4.0` -> `1.4.1`](https://diff.intrinsic.com/ava/1.4.0/1.4.1) | [homepage](https://ava.li), [source](https://togithub.com/avajs/ava) |
---
### Release Notes
avajs/ava
### [`v1.4.1`](https://togithub.com/avajs/ava/releases/v1.4.1)
[Compare Source](https://togithub.com/avajs/ava/compare/v1.4.0...v1.4.1)
#### Focusing [`power-assert`](https://togithub.com/power-assert-js/power-assert)
AVA comes with [`power-assert`](https://togithub.com/power-assert-js/power-assert) built-in, giving you more descriptive assertion messages. However it's been confusing to understand _which_ assertions come with `power-assert`. To address this we've added the new `t.assert()` assertion. It's now the only assertion that is `power-assert` enabled. The assertion passes if called with a truthy value. Consider this example:
```js
test('enhanced assertions', t => {
const a = /foo/;
const b = 'bar';
const c = 'baz';
t.assert(a.test(b) || b === c);
});
```
AVA will output:
6: const c = 'baz';
7: t.assert(a.test(b) || b === c);
8: });
Value is not truthy:
false
a.test(b) || b === c
=> false
b === c
=> false
c
=> 'baz'
b
=> 'bar'
a.test(b)
=> false
b
=> 'bar'
a
=> /foo/
Our [ESLint plugin](https://togithub.com/avajs/eslint-plugin-ava) has been updated to support this new assertion. Many thanks to [@eemed](https://togithub.com/eemed) for implementing this! [`9406470`](https://togithub.com/avajs/ava/commit/94064702837583f1cd3920142c5d0ce50e71e255)
#### Watch mode
Watch mode now prints the available commands. Thanks [@KompKK](https://togithub.com/KompKK)! [`cd256ac`](https://togithub.com/avajs/ava/commit/cd256ac53c975d51ddabd3d80a9f909424f5d7e3)
#### Bug fixes
- Filtered tests (when using `--match`, `.skip()` or `.only()`) are no longer included in the list of pending tests when timeouts occur or when you interrupt a test run. Thanks [@vancouverwill](https://togithub.com/vancouverwill)! [`23e302a`](https://togithub.com/avajs/ava/commit/23e302a8dc35d03ba82916bd6591822a28d499d1)
- We're now shimming all TTY methods in the worker processes, thanks to [@okyantoro](https://togithub.com/okyantoro). [`c1f6fdf`](https://togithub.com/avajs/ava/commit/c1f6fdfed61c99c1144cff56b58d113810c630c8)
#### Documentation updates
- We've added a note to say that, by default, AVA does not have a default test timeout. Thanks [@amokmen](https://togithub.com/amokmen)! [`99a10a1`](https://togithub.com/avajs/ava/commit/99a10a16a3e3037326c91fb23c2a052acd3abef9)
#### All changes
[`v1.3.1...v1.4.1`](https://togithub.com/avajs/ava/compare/v1.3.1...v1.4.1)
#### Thanks
Thank you [@eemed](https://togithub.com/eemed), [@KompKK](https://togithub.com/KompKK), [@vancouverwill](https://togithub.com/vancouverwill), [@okyantoro](https://togithub.com/okyantoro) and [@amokmen](https://togithub.com/amokmen). We couldn't have done this without you!
#### Get involved
We welcome new contributors. AVA is a friendly place to get started in open source. We have a [great article](https://medium.com/@vadimdemedes/making-your-first-contribution-de6576ddb190#.umxr7id07) on getting started contributing and a comprehensive [contributing guide](https://togithub.com/avajs/ava/blob/master/contributing.md).
---
### Renovate configuration
:date: **Schedule**: At any time (no schedule defined).
:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
:recycle: **Rebasing**: Whenever PR becomes conflicted, or if you modify the PR title to begin with "`rebase!`".
:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://togithub.com/marketplace/renovate). View repository job log [here](https://renovatebot.com/dashboard#codetheweb/tuyapi).
---
package-lock.json | 18 +++++++++---------
package.json | 2 +-
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 6adba51..09b915b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1805,9 +1805,9 @@
"dev": true
},
"ava": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/ava/-/ava-1.4.0.tgz",
- "integrity": "sha512-0k0YzgIhRWPibh4guIe1XdmJw985EQ86haALTosN8fRWEUDjWe3h2f7brTYfS7OsvKrHalO2p5AhaMwIFGY5/A==",
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/ava/-/ava-1.4.1.tgz",
+ "integrity": "sha512-wKpgOPTL7hJSBWpfbU4SA8rlsTZrph9g9g7qYDV7M6uK1rKeW8oCUJWRwCd8B24S4N0Y5myf6cTEnA66WIk0sA==",
"dev": true,
"requires": {
"@ava/babel-preset-stage-4": "^2.0.0",
@@ -2136,9 +2136,9 @@
},
"dependencies": {
"semver": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
- "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
"dev": true
}
}
@@ -3155,9 +3155,9 @@
},
"dependencies": {
"semver": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
- "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
"dev": true
}
}
diff --git a/package.json b/package.json
index a2a057e..b60a5ae 100644
--- a/package.json
+++ b/package.json
@@ -43,7 +43,7 @@
},
"devDependencies": {
"@tuyapi/stub": "0.1.2",
- "ava": "1.4.0",
+ "ava": "1.4.1",
"clone": "2.1.2",
"coveralls": "3.0.3",
"documentation": "9.3.1",
From 4839c78af67572f3b6238f1271916cbc4e646f5a Mon Sep 17 00:00:00 2001
From: Colin Kuebler
Date: Sun, 31 Mar 2019 21:22:42 -0400
Subject: [PATCH 14/40] Fix CRC computation; wrong payload range (my bad! no
coding before coffee) (#182)
---
lib/message-parser.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/message-parser.js b/lib/message-parser.js
index 5b0bd0a..de4266f 100644
--- a/lib/message-parser.js
+++ b/lib/message-parser.js
@@ -54,7 +54,7 @@ function parse(data) {
// Check CRC
const expectedCrc = data.readInt32BE(HEADER_SIZE + payloadSize - 8);
- const computedCrc = crc(payload);
+ const computedCrc = crc(data.slice(0, payloadSize + 8));
if (expectedCrc !== computedCrc) {
throw new Error('CRC mismatch: ' + data.toString('hex'));
From 3b970bb859b73f03bb167486badb8986a0f0c859 Mon Sep 17 00:00:00 2001
From: "renovate[bot]"
Date: Mon, 1 Apr 2019 01:22:57 +0000
Subject: [PATCH 15/40] Update dependency p-retry to v4.1.0 (#181)
---
package-lock.json | 6 +++---
package.json | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 09b915b..102f8c3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9124,9 +9124,9 @@
"dev": true
},
"p-retry": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.0.0.tgz",
- "integrity": "sha512-bMW1FwszSBsMi6DgPnDKLhAVMDhqeySD4viMI0UiKRv7cQzRS/KYhRPWjnoxSQdvunXwZYKgN10Ya6VxF9w+Og==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.1.0.tgz",
+ "integrity": "sha512-oepllyG9gX1qH4Sm20YAKxg1GA7L7puhvGnTfimi31P07zSIj7SDV6YtuAx9nbJF51DES+2CIIRkXs8GKqWJxA==",
"requires": {
"@types/retry": "^0.12.0",
"retry": "^0.12.0"
diff --git a/package.json b/package.json
index b60a5ae..4a98e5e 100644
--- a/package.json
+++ b/package.json
@@ -38,7 +38,7 @@
"homepage": "https://github.com/codetheweb/tuyapi#readme",
"dependencies": {
"debug": "4.1.1",
- "p-retry": "4.0.0",
+ "p-retry": "4.1.0",
"p-timeout": "3.0.0"
},
"devDependencies": {
From 2312fd40e3896d791c7cbc1687d2212e671fad62 Mon Sep 17 00:00:00 2001
From: Colin Kuebler
Date: Mon, 1 Apr 2019 10:22:48 -0400
Subject: [PATCH 16/40] Same bug as #182 but for encode instead of parse (#184)
I give up
---
lib/message-parser.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/message-parser.js b/lib/message-parser.js
index de4266f..ae406bf 100644
--- a/lib/message-parser.js
+++ b/lib/message-parser.js
@@ -136,7 +136,7 @@ function encode(options) {
// Add payload, crc, and suffix
payload.copy(buffer, 16);
- buffer.writeInt32BE(crc(payload), payload.length + 16);
+ buffer.writeInt32BE(crc(buffer.slice(0, payload.length + 16)), payload.length + 16);
buffer.writeUInt32BE(0x0000AA55, payload.length + 20);
return buffer;
From dd71be11e4a4124e7364c1a0ac71db13e0356396 Mon Sep 17 00:00:00 2001
From: "renovate[bot]"
Date: Thu, 4 Apr 2019 14:12:36 +0000
Subject: [PATCH 17/40] Update dependency p-timeout to v3.1.0 (#186)
This PR contains the following updates:
| Package | Type | Update | Change | References |
|---|---|---|---|---|
| p-timeout | dependencies | minor | [`3.0.0` -> `3.1.0`](https://diff.intrinsic.com/p-timeout/3.0.0/3.1.0) | [source](https://togithub.com/sindresorhus/p-timeout) |
---
### Release Notes
sindresorhus/p-timeout
### [`v3.1.0`](https://togithub.com/sindresorhus/p-timeout/releases/v3.1.0)
[Compare Source](https://togithub.com/sindresorhus/p-timeout/compare/v3.0.0...v3.1.0)
- Refactor TypeScript definition to CommonJS compatible export ([#11](https://togithub.com/sindresorhus/p-timeout/issues/11)) [`695a09c`](https://togithub.com/sindresorhus/p-timeout/commit/695a09c)
---
### Renovate configuration
:date: **Schedule**: At any time (no schedule defined).
:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
:recycle: **Rebasing**: Whenever PR becomes conflicted, or if you modify the PR title to begin with "`rebase!`".
:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://togithub.com/marketplace/renovate). View repository job log [here](https://renovatebot.com/dashboard#codetheweb/tuyapi).
---
package-lock.json | 17 +++--------------
package.json | 2 +-
2 files changed, 4 insertions(+), 15 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 261f3f6..e60dcf8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1428,17 +1428,6 @@
"semver": "^5.3.0"
},
"dependencies": {
- "@babel/plugin-transform-async-to-generator": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.3.4.tgz",
- "integrity": "sha512-Y7nCzv2fw/jEZ9f678MuKdMo99MFDJMT/PvD9LisrR5JDFcJH6vYeH6RnjVt3p5tceyGRvTtEN0VOlU+rgHZjA==",
- "dev": true,
- "requires": {
- "@babel/helper-module-imports": "^7.0.0",
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-remap-async-to-generator": "^7.1.0"
- }
- },
"@babel/plugin-transform-async-to-generator": {
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.3.4.tgz",
@@ -9144,9 +9133,9 @@
}
},
"p-timeout": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.0.0.tgz",
- "integrity": "sha512-HKUsVzU+2A+CcItUxgZ4Q1th5Hh2DHtSsh7gLTMkrL8Ki4Ss736nFp+yqb9M/ZKSKb5il0IXeLzBmUqD3k3mzQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.1.0.tgz",
+ "integrity": "sha512-C27DYI+tCroT8J8cTEyySGydl2B7FlxrGNF5/wmMbl1V+jeehUCzEE/BVgzRebdm2K3ZitKOKx8YbdFumDyYmw==",
"requires": {
"p-finally": "^1.0.0"
}
diff --git a/package.json b/package.json
index 4a98e5e..23698bd 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,7 @@
"dependencies": {
"debug": "4.1.1",
"p-retry": "4.1.0",
- "p-timeout": "3.0.0"
+ "p-timeout": "3.1.0"
},
"devDependencies": {
"@tuyapi/stub": "0.1.2",
From 98d4bf8f3338e994bc60f307db850c9b54d2424c Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Sat, 6 Apr 2019 19:09:56 -0400
Subject: [PATCH 18/40] Add support for parsing multiple packets in a single
response
---
docs/index.html | 246 +-
index.js | 108 +-
lib/message-parser.js | 199 +-
package-lock.json | 5525 +++++++++++++++--------------------------
package.json | 2 +-
test/parser.js | 18 +-
6 files changed, 2138 insertions(+), 3960 deletions(-)
diff --git a/docs/index.html b/docs/index.html
index be34634..72c43ef 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -115,16 +115,6 @@ tuyapi
-
- TuyaDevice#data
-
-
-
-
-
-
@@ -146,19 +136,9 @@ tuyapi
- parse
-
-
-
-
-
-
-
- encode
+ TuyaDevice#data
@@ -471,7 +451,7 @@
Sets a property on a device.
-
+
@@ -560,10 +540,8 @@
Returns
- Promise<Boolean>:
- returns
-true
- if the command succeeded
+ Promise<Object>:
+ returns response from device
@@ -1097,74 +1075,6 @@
-
-
-
-
-
-
-
-
-
-
-
- TuyaDevice#data
-
-
-
-
-
-
- Emitted when data is returned from device.
-
- TuyaDevice#data
-
-
-
-
-
-
-
-
-
-
-
-
-
- Properties
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1279,18 +1189,17 @@
-
- parse
+
+ TuyaDevice#data
-
Static wrapper for lower-level MessageParser
-functions to easily parse packets.
+ Emitted when data is returned from device.
-
+ TuyaDevice#data
@@ -1302,131 +1211,30 @@
- Parameters
-
+
+
+ Properties
+
-
-
-
-
-
-
- Returns
- Object:
- result
-
-
-
- Returns
- (String | Buffer | Object):
- result.data decoded data, if available in response
-
-
-
- Returns
- Number:
- result.commandByte command byte from decoded data
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ commandByte (Number)
+ : commandByte of result
+(e.g. 7=requested response, 8=proactive update from device)
-
-
-
-
-
-
-
-
- encode
-
-
-
-
-
-
- Static wrapper for lower-level MessageParser
-functions to easily encode packets
-
-
-
-
-
-
-
-
-
-
-
-
-
- Parameters
-
+
-
- options (Object)
-
-
-
-
-
-
-
-
-
-
- Name
- Description
-
-
-
-
-
- options.data (String | Buffer | Object)
-
- data to encode
-
-
-
-
-
-
- options.commandByte Number
-
- command byte
-
-
-
+ sequenceN (Number)
+ : the packet sequence number
-
-
-
@@ -1436,16 +1244,6 @@
-
- Returns
- Buffer:
- binary payload
-
-
-
-
-
-
diff --git a/index.js b/index.js
index 656e441..d179948 100644
--- a/index.js
+++ b/index.js
@@ -8,7 +8,7 @@ const debug = require('debug')('TuyAPI');
// Helpers
const Cipher = require('./lib/cipher');
-const Parser = require('./lib/message-parser');
+const MessageParser = require('./lib/message-parser');
/**
* Represents a Tuya device.
@@ -33,7 +33,6 @@ const Parser = require('./lib/message-parser');
class TuyaDevice extends EventEmitter {
constructor(options) {
super();
-
// Set device to user-passed options
this.device = options;
@@ -54,6 +53,10 @@ class TuyaDevice extends EventEmitter {
key: this.device.key,
version: this.device.version
});
+
+ this.device.parser = new MessageParser({
+ key: this.device.key,
+ version: this.device.version});
} else {
throw new TypeError('Key is missing or incorrect.');
}
@@ -116,7 +119,7 @@ class TuyaDevice extends EventEmitter {
debug(payload);
// Create byte buffer
- const buffer = Parser.encode({
+ const buffer = this.device.parser.encode({
data: payload,
commandByte: 10 // 0x0a
});
@@ -165,7 +168,7 @@ class TuyaDevice extends EventEmitter {
* '1': true,
* '2': 'white'
* }}).then(() => console.log('device was changed'))
- * @returns {Promise} - returns `true` if the command succeeded
+ * @returns {Promise
+
+
+
+
+
+
+
+
+
+
+ TuyaCipher
+
+
+
+
+
+
+ Low-level class for encrypting and decrypting payloads.
+
+ new TuyaCipher(options: Object)
+
+
+
+
+
+
+
+
+
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Example
+
+
+ const cipher = new TuyaCipher({key: 'xxxxxxxxxxxxxxxx', version: 3.1})
+
+
+
+
+
+
+ Instance Members
+
+
+
+
+
+ â–¸
+ encrypt(options)
+
+
+
+
+
+
+
+
+ â–¸
+ decrypt(data)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Packet
+
+
+
+
+
+
+ A complete packet.
+
+ Packet
+
+
+ Type:
+ Object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MessageParser
+
+
+
+
+
+
+ Low-level class for parsing packets.
+
+ new MessageParser(options: Object)
+
+
+
+
+
+
+
+
+
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Example
+
+
+ const parser = new MessageParser({key: 'xxxxxxxxxxxxxxxx', version: 3.1})
+
+
+
+
+
+
+ Instance Members
+
+
+
+
+
+ â–¸
+ parsePacket(buffer)
+
+
+
+
+
+
+
+ Parses a Buffer of data containing at least
+one complete packet at the begining of the buffer.
+Will return multiple packets if necessary.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Parameters
+
+
+
+
+ buffer (Buffer)
+ of data to parse
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns
+ Packet:
+ packet of data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ â–¸
+ getPayload(data)
+
+
+
+
+
+
+
+
+ â–¸
+ parse(buffer)
+
+
+
+
+
+
+
+
+ â–¸
+ encode(options)
+
+
+
+
+
+
+
+ Encodes a payload into a
+Tuya-protocol-complient packet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+ Returns
+ Buffer:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/cipher.js b/lib/cipher.js
index 6b40b4b..58ad27c 100644
--- a/lib/cipher.js
+++ b/lib/cipher.js
@@ -1,9 +1,8 @@
const crypto = require('crypto');
/**
-* Class for encrypting and decrypting payloads.
+* Low-level class for encrypting and decrypting payloads.
* @class
-* @private
* @param {Object} options
* @param {String} options.key localKey of cipher
* @param {Number} options.version protocol version
diff --git a/lib/message-parser.js b/lib/message-parser.js
index e52721c..6c30b82 100644
--- a/lib/message-parser.js
+++ b/lib/message-parser.js
@@ -3,6 +3,27 @@ const crc = require('./crc');
const HEADER_SIZE = 16;
+/**
+ * A complete packet.
+ * @typedef {Object} Packet
+ * @property {Buffer|Object|String} payload
+ * Buffer if hasn't been decoded, object or
+ * string if it has been
+ * @property {Buffer} leftover
+ * bytes adjacent to the parsed packet
+ * @property {Number} commandByte
+ * @property {Number} sequenceN
+ */
+
+/**
+* Low-level class for parsing packets.
+* @class
+* @param {Object} options
+* @param {String} options.key localKey of cipher
+* @param {Number} [options.version=3.1] protocol version
+* @example
+* const parser = new MessageParser({key: 'xxxxxxxxxxxxxxxx', version: 3.1})
+*/
class MessageParser {
constructor(options) {
// Defaults
@@ -18,6 +39,13 @@ class MessageParser {
}
}
+ /**
+ * Parses a Buffer of data containing at least
+ * one complete packet at the begining of the buffer.
+ * Will return multiple packets if necessary.
+ * @param {Buffer} buffer of data to parse
+ * @returns {Packet} packet of data
+ */
parsePacket(buffer) {
// Check for length
// At minimum requires: prefix (4), sequence (4), command (4), length (4),
@@ -79,9 +107,6 @@ class MessageParser {
payload = buffer.slice(HEADER_SIZE + 4, HEADER_SIZE + payloadSize - 8);
}
- // Slice off CRC and suffix
- // let data = buffer.slice(0, buffer.length - 8);
-
// Check CRC
const expectedCrc = buffer.readInt32BE(HEADER_SIZE + payloadSize - 8);
const computedCrc = crc(buffer.slice(0, payloadSize + 8));
@@ -90,22 +115,16 @@ class MessageParser {
throw new Error('CRC mismatch: ' + buffer.toString('hex'));
}
- // Slice off begining of packet, remainder is payload
- // data = data.slice(data.length - payloadSize + 8);
-
- // Remove 0 padding from payload
- // let done = false;
- // while (done === false) {
- // if (payload[0] === 0) {
- // data = data.slice(1);
- // } else {
- // done = true;
- // }
- // }
-
return {payload, leftover, commandByte, sequenceN};
}
+ /**
+ * Attempts to decode a given payload into
+ * an object or string.
+ * @param {Buffer} data to decode
+ * @returns {Object|String}
+ * object if payload is JSON, otherwise string
+ */
getPayload(data) {
if (data.length === 0) {
return false;
@@ -130,6 +149,16 @@ class MessageParser {
return data;
}
+ /**
+ * Recursive function to parse
+ * a series of packets. Perfer using
+ * the parse() wrapper over using this
+ * directly.
+ * @private
+ * @param {Buffer} buffer to parse
+ * @param {Array} packets that have been parsed
+ * @returns {Array.} array of parsed packets
+ */
parseRecursive(buffer, packets) {
const result = this.parsePacket(buffer);
@@ -144,13 +173,28 @@ class MessageParser {
return packets;
}
- // Wrapper
+ /**
+ * Given a buffer potentially containing
+ * multiple packets, this parses and returns
+ * all of them.
+ * @param {Buffer} buffer to parse
+ * @returns {Array.} parsed packets
+ */
parse(buffer) {
const packets = this.parseRecursive(buffer, []);
return packets;
}
+ /**
+ * Encodes a payload into a
+ * Tuya-protocol-complient packet.
+ * @param {Object} options
+ * @param {Buffer|String|Object} options.data data to encode
+ * @param {Number} options.commandByte command byte of packet
+ * @param {Number} [options.sequenceN] optional, sequence number
+ * @returns {Buffer}
+ */
encode(options) {
// Ensure data is a Buffer
let payload;
@@ -191,6 +235,13 @@ class MessageParser {
return buffer;
}
+ /**
+ * Given a complete packet, writes
+ * a sequence number into the packet.
+ * @param {Buffer} buffer packet
+ * @param {Number} n sequence number
+ * @returns {Buffer}
+ */
writeSequenceN(buffer, n) {
// Add sequence number to buffer
buffer.writeUInt32BE(n, 4);
From 379add29e8d56c7477f64443bd690c558449377c Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Wed, 10 Apr 2019 12:14:45 -0400
Subject: [PATCH 20/40] Remove TODO from README
---
README.md | 5 -----
docs/index.html | 9 +++++++++
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 01a55a9..d0e18ae 100644
--- a/README.md
+++ b/README.md
@@ -103,11 +103,6 @@ const device = new TuyAPI({
See the [docs](https://codetheweb.github.io/tuyapi/index.html).
-## TODO
-
-1. Document details of protocol
-2. Figure out correct CRC algorithm
-
## Contributing
See [CONTRIBUTING](https://github.com/codetheweb/tuyapi/blob/master/CONTRIBUTING.md).
diff --git a/docs/index.html b/docs/index.html
index f4553b5..e8d4ddf 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -2184,6 +2184,15 @@
+
+ options.encrypted Boolean
+
+ whether or not to encrypt the data
+
+
+
+
+
options.commandByte Number
From 9bc3890ff57175e0d5d6f2683fea7dd51b22118b Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Wed, 10 Apr 2019 12:25:47 -0400
Subject: [PATCH 21/40] Add `encrypted` option to MessageParser.encode()
---
index.js | 16 ++--------------
lib/message-parser.js | 20 ++++++++++++++++++--
2 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/index.js b/index.js
index 3739542..8c44ddc 100644
--- a/index.js
+++ b/index.js
@@ -187,22 +187,10 @@ class TuyaDevice extends EventEmitter {
debug('SET Payload:');
debug(payload);
- // Encrypt data
- const data = this.device.cipher.encrypt({
- data: JSON.stringify(payload)
- });
-
- // Create MD5 signature
- const md5 = this.device.cipher.md5('data=' + data +
- '||lpv=' + this.device.version +
- '||' + this.device.key);
-
- // Create byte buffer from hex data
- const thisData = Buffer.from(this.device.version + md5 + data);
-
// Encode into packet
const buffer = this.device.parser.encode({
- data: thisData,
+ data: payload,
+ encrypted: true, // Set commands must be encrypted
commandByte: 7 // 0x07
});
diff --git a/lib/message-parser.js b/lib/message-parser.js
index 6c30b82..386bf1c 100644
--- a/lib/message-parser.js
+++ b/lib/message-parser.js
@@ -36,6 +36,8 @@ class MessageParser {
if (options.key && options.version) {
this.cipher = new Cipher(options);
+ this.key = options.key;
+ this.version = options.version;
}
}
@@ -112,7 +114,7 @@ class MessageParser {
const computedCrc = crc(buffer.slice(0, payloadSize + 8));
if (expectedCrc !== computedCrc) {
- throw new Error('CRC mismatch: ' + buffer.toString('hex'));
+ // Throw new Error('CRC mismatch: ' + buffer.toString('hex'));
}
return {payload, leftover, commandByte, sequenceN};
@@ -191,6 +193,7 @@ class MessageParser {
* Tuya-protocol-complient packet.
* @param {Object} options
* @param {Buffer|String|Object} options.data data to encode
+ * @param {Boolean} options.encrypted whether or not to encrypt the data
* @param {Number} options.commandByte command byte of packet
* @param {Number} [options.sequenceN] optional, sequence number
* @returns {Buffer}
@@ -199,7 +202,20 @@ class MessageParser {
// Ensure data is a Buffer
let payload;
- if (options.data instanceof Buffer) {
+ // Encrypt data if necessary
+ if (options.encrypted) {
+ payload = this.cipher.encrypt({
+ data: JSON.stringify(options.data)
+ });
+
+ // Create MD5 signature
+ const md5 = this.cipher.md5('data=' + payload +
+ '||lpv=' + this.version +
+ '||' + this.key);
+
+ // Create byte buffer from hex data
+ payload = Buffer.from(this.version + md5 + payload);
+ } else if (options.data instanceof Buffer) {
payload = options.data;
} else {
if (typeof options.data !== 'string') {
From ab5db864d86fe46fc045b490d6213f4ce5713c27 Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Wed, 10 Apr 2019 12:33:19 -0400
Subject: [PATCH 22/40] Fix find() for new MessageParser class
---
docs/index.html | 12 ++----------
index.js | 18 ++++++++++--------
2 files changed, 12 insertions(+), 18 deletions(-)
diff --git a/docs/index.html b/docs/index.html
index e8d4ddf..d2a869d 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -2353,7 +2353,7 @@
Computes a Tuya flavored CRC32
- crc32(bytes: any, data: Iterable): Number
+ crc32(bytes: Iterable): Number
@@ -2370,15 +2370,7 @@
- bytes (any)
-
-
-
-
-
-
-
- data (Iterable)
+ bytes (Iterable)
diff --git a/index.js b/index.js
index 8c44ddc..51c2cbf 100644
--- a/index.js
+++ b/index.js
@@ -534,8 +534,10 @@ class TuyaDevice extends EventEmitter {
debug('UDP data:');
debug(dataRes);
- const thisID = dataRes.data.gwId;
- const thisIP = dataRes.data.ip;
+ const thisID = dataRes.payload.gwId;
+ const thisIP = dataRes.payload.ip;
+
+ console.log(this.foundDevices);
// Add to array if it doesn't exist
if (!this.foundDevices.some(e => (e.id === thisID && e.ip === thisIP))) {
@@ -544,19 +546,19 @@ class TuyaDevice extends EventEmitter {
if (!all &&
(this.device.id === thisID || this.device.ip === thisIP) &&
- dataRes.data) {
+ dataRes.payload) {
// Add IP
- this.device.ip = dataRes.data.ip;
+ this.device.ip = dataRes.payload.ip;
// Add ID and gwID
- this.device.id = dataRes.data.gwId;
- this.device.gwID = dataRes.data.gwId;
+ this.device.id = dataRes.payload.gwId;
+ this.device.gwID = dataRes.payload.gwId;
// Change product key if neccessary
- this.device.productKey = dataRes.data.productKey;
+ this.device.productKey = dataRes.payload.productKey;
// Change protocol version if necessary
- this.device.version = dataRes.data.version;
+ this.device.version = dataRes.payload.version;
// Cleanup
listener.close();
From d7a018aa9b34e967f526286b61e688736230bd2a Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Wed, 10 Apr 2019 12:33:19 -0400
Subject: [PATCH 23/40] Fix find() for new MessageParser class
---
docs/index.html | 12 ++----------
index.js | 18 ++++++++++--------
2 files changed, 12 insertions(+), 18 deletions(-)
diff --git a/docs/index.html b/docs/index.html
index e8d4ddf..d2a869d 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -2353,7 +2353,7 @@
Computes a Tuya flavored CRC32
- crc32(bytes: any, data: Iterable): Number
+ crc32(bytes: Iterable): Number
@@ -2370,15 +2370,7 @@
- bytes (any)
-
-
-
-
-
-
-
- data (Iterable)
+ bytes (Iterable)
diff --git a/index.js b/index.js
index 8c44ddc..51c2cbf 100644
--- a/index.js
+++ b/index.js
@@ -534,8 +534,10 @@ class TuyaDevice extends EventEmitter {
debug('UDP data:');
debug(dataRes);
- const thisID = dataRes.data.gwId;
- const thisIP = dataRes.data.ip;
+ const thisID = dataRes.payload.gwId;
+ const thisIP = dataRes.payload.ip;
+
+ console.log(this.foundDevices);
// Add to array if it doesn't exist
if (!this.foundDevices.some(e => (e.id === thisID && e.ip === thisIP))) {
@@ -544,19 +546,19 @@ class TuyaDevice extends EventEmitter {
if (!all &&
(this.device.id === thisID || this.device.ip === thisIP) &&
- dataRes.data) {
+ dataRes.payload) {
// Add IP
- this.device.ip = dataRes.data.ip;
+ this.device.ip = dataRes.payload.ip;
// Add ID and gwID
- this.device.id = dataRes.data.gwId;
- this.device.gwID = dataRes.data.gwId;
+ this.device.id = dataRes.payload.gwId;
+ this.device.gwID = dataRes.payload.gwId;
// Change product key if neccessary
- this.device.productKey = dataRes.data.productKey;
+ this.device.productKey = dataRes.payload.productKey;
// Change protocol version if necessary
- this.device.version = dataRes.data.version;
+ this.device.version = dataRes.payload.version;
// Cleanup
listener.close();
From 8bae930b8d9bbfeb1a485f0917251e41abcbac5c Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Thu, 11 Apr 2019 19:41:28 -0400
Subject: [PATCH 24/40] Write sequence number in inital call to encode()
---
index.js | 11 ++++++-----
lib/crc.js | 2 +-
lib/message-parser.js | 3 ++-
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/index.js b/index.js
index 51c2cbf..f343151 100644
--- a/index.js
+++ b/index.js
@@ -102,7 +102,8 @@ class TuyaDevice extends EventEmitter {
// Create byte buffer
const buffer = this.device.parser.encode({
data: payload,
- commandByte: 10 // 0x0a
+ commandByte: 10, // 0x0a
+ sequenceN: ++this._currentSequenceN
});
// Send request and parse response
@@ -191,7 +192,8 @@ class TuyaDevice extends EventEmitter {
const buffer = this.device.parser.encode({
data: payload,
encrypted: true, // Set commands must be encrypted
- commandByte: 7 // 0x07
+ commandByte: 7, // 0x07
+ sequenceN: ++this._currentSequenceN
});
// Send request and wait for response
@@ -225,11 +227,10 @@ class TuyaDevice extends EventEmitter {
return pRetry(() => {
return new Promise((resolve, reject) => {
try {
- // Incremement sequence number
- buffer = this.device.parser.writeSequenceN(buffer, ++this._currentSequenceN);
-
// Send data
this.client.write(buffer);
+
+ // Add resolver function
this._resolvers[this._currentSequenceN] = data => resolve(data);
} catch (error) {
reject(error);
diff --git a/lib/crc.js b/lib/crc.js
index 3412159..f1001d0 100644
--- a/lib/crc.js
+++ b/lib/crc.js
@@ -70,7 +70,7 @@ const crc32Table = [
/**
* Computes a Tuya flavored CRC32
-* @param {Iterable} data
+* @param {Iterable} bytes
* @returns {Number} Tuya CRC32
*/
function crc32(bytes) {
diff --git a/lib/message-parser.js b/lib/message-parser.js
index 386bf1c..a0dfce7 100644
--- a/lib/message-parser.js
+++ b/lib/message-parser.js
@@ -114,7 +114,8 @@ class MessageParser {
const computedCrc = crc(buffer.slice(0, payloadSize + 8));
if (expectedCrc !== computedCrc) {
- // Throw new Error('CRC mismatch: ' + buffer.toString('hex'));
+ // eslint-disable-next-line max-len
+ throw new Error(`CRC mismatch: expected ${expectedCrc}, was ${computedCrc}. ${buffer.toString('hex')}`);
}
return {payload, leftover, commandByte, sequenceN};
From 8f21238ccc6a7fd7f8ab2fbed231f9a333642428 Mon Sep 17 00:00:00 2001
From: "renovate[bot]"
Date: Tue, 16 Apr 2019 16:48:21 +0000
Subject: [PATCH 25/40] Update dependency nyc to v14 (#190)
This PR contains the following updates:
| Package | Type | Update | Change | References |
|---|---|---|---|---|
| nyc | devDependencies | major | [`13.3.0` -> `14.0.0`](https://diff.intrinsic.com/nyc/13.3.0/14.0.0) | [source](https://togithub.com/istanbuljs/nyc) |
---
### Release Notes
istanbuljs/nyc
### [`v14.0.0`](https://togithub.com/istanbuljs/nyc/blob/master/CHANGELOG.md#1400httpsgithubcomistanbuljsnyccomparev1330v1400-2019-04-15)
[Compare Source](https://togithub.com/istanbuljs/nyc/compare/v13.3.0...v14.0.0)
##### Bug Fixes
- Add `cwd` option to instrument command ([#1024](https://togithub.com/istanbuljs/nyc/issues/1024)) ([051d95a](https://togithub.com/istanbuljs/nyc/commit/051d95a))
- Add config values to hash salt ([#988](https://togithub.com/istanbuljs/nyc/issues/988)) ([7ac325d](https://togithub.com/istanbuljs/nyc/commit/7ac325d)), closes [#522](https://togithub.com/istanbuljs/nyc/issues/522)
- Exclude negated not working with '--all' switch ([#977](https://togithub.com/istanbuljs/nyc/issues/977)) ([91de23c](https://togithub.com/istanbuljs/nyc/commit/91de23c))
- Make --all work for transpiled code ([#1047](https://togithub.com/istanbuljs/nyc/issues/1047)) ([18e04ba](https://togithub.com/istanbuljs/nyc/commit/18e04ba))
- Resolve absolute paths in nyc instrument ([#1012](https://togithub.com/istanbuljs/nyc/issues/1012)) ([3cb1861](https://togithub.com/istanbuljs/nyc/commit/3cb1861)), closes [#1014](https://togithub.com/istanbuljs/nyc/issues/1014)
- Set processinfo pid/ppid to actual numbers ([#1057](https://togithub.com/istanbuljs/nyc/issues/1057)) ([32f75b0](https://togithub.com/istanbuljs/nyc/commit/32f75b0))
- Use a single instance of nyc for all actions of main command. ([#1059](https://togithub.com/istanbuljs/nyc/issues/1059)) ([b909575](https://togithub.com/istanbuljs/nyc/commit/b909575))
##### Features
- Add `delete` option to instrument command ([#1005](https://togithub.com/istanbuljs/nyc/issues/1005)) ([d6db551](https://togithub.com/istanbuljs/nyc/commit/d6db551))
- Add `include` and `exclude` options to instrument command ([#1007](https://togithub.com/istanbuljs/nyc/issues/1007)) ([8da097e](https://togithub.com/istanbuljs/nyc/commit/8da097e))
- Add processinfo index, add externalId ([#1055](https://togithub.com/istanbuljs/nyc/issues/1055)) ([8dcf180](https://togithub.com/istanbuljs/nyc/commit/8dcf180))
- Add support for nyc.config.js ([#1019](https://togithub.com/istanbuljs/nyc/issues/1019)) ([3b203c7](https://togithub.com/istanbuljs/nyc/commit/3b203c7))
- Add support to exclude files on coverage report generation ([#982](https://togithub.com/istanbuljs/nyc/issues/982)) ([509c6aa](https://togithub.com/istanbuljs/nyc/commit/509c6aa))
- Add test-exclude args to check-coverage and report subcommands. ([0fc217e](https://togithub.com/istanbuljs/nyc/commit/0fc217e))
- Always build the processinfo temp dir ([#1061](https://togithub.com/istanbuljs/nyc/issues/1061)) ([c213469](https://togithub.com/istanbuljs/nyc/commit/c213469))
- Enable `es-modules` option for nyc instrument command ([#1006](https://togithub.com/istanbuljs/nyc/issues/1006)) ([596b120](https://togithub.com/istanbuljs/nyc/commit/596b120))
- Fix excludeAfterRemap functionality. ([36bcc0b](https://togithub.com/istanbuljs/nyc/commit/36bcc0b))
- Implement `nyc instrument --complete-copy` ([#1056](https://togithub.com/istanbuljs/nyc/issues/1056)) ([2eb13c6](https://togithub.com/istanbuljs/nyc/commit/2eb13c6))
- Remove bundling ([#1017](https://togithub.com/istanbuljs/nyc/issues/1017)) ([b25492a](https://togithub.com/istanbuljs/nyc/commit/b25492a))
- Support turning off node_modules default exclude via `exclude-node-modules` option ([#912](https://togithub.com/istanbuljs/nyc/issues/912)) ([b7e16cd](https://togithub.com/istanbuljs/nyc/commit/b7e16cd))
- Add support for `--exclude-node-modules` to subcommands. ([#1053](https://togithub.com/istanbuljs/nyc/issues/1053)) ([e597c46](https://togithub.com/istanbuljs/nyc/commit/e597c46))
##### BREAKING CHANGES
- The `--exclude-after-remap` option is now functional and enabled by default. This causes the `include` and `exclude` lists to be processed after using source maps to determine the original filename of sources.
- Add a file named 'index.json' to the .nyc_output/processinfo directory, which has a different format from the other files in this dir.
- Change the data type of the pid/ppid fields in processinfo files
- `nyc instrument` now honors `include` and `exclude` settings, potentially resulting in some files that were previously instrumented being ignored.
- The `plugins` option has been renamed to `parser-plugins`.
- The logic involving include/exclude processing has changed. Results should be verified to ensure all desired sources have coverage data.
- `nyc instrument` now enables the `--es-module` option by default. This can cause failures to instrument scripts which violate `'use strict'` rules.
---
### Renovate configuration
:date: **Schedule**: At any time (no schedule defined).
:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
:recycle: **Rebasing**: Whenever PR becomes conflicted, or if you modify the PR title to begin with "`rebase!`".
:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://togithub.com/marketplace/renovate). View repository job log [here](https://renovatebot.com/dashboard#codetheweb/tuyapi).
---
package-lock.json | 1519 +++++++++++++++++++--------------------------
package.json | 2 +-
2 files changed, 644 insertions(+), 877 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index e60dcf8..5ee1930 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1699,6 +1699,21 @@
"buffer-equal": "^1.0.0"
}
},
+ "append-transform": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz",
+ "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==",
+ "dev": true,
+ "requires": {
+ "default-require-extensions": "^2.0.0"
+ }
+ },
+ "archy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
+ "dev": true
+ },
"argparse": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
@@ -2560,6 +2575,53 @@
"integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==",
"dev": true
},
+ "caching-transform": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz",
+ "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==",
+ "dev": true,
+ "requires": {
+ "hasha": "^3.0.0",
+ "make-dir": "^2.0.0",
+ "package-hash": "^3.0.0",
+ "write-file-atomic": "^2.4.2"
+ },
+ "dependencies": {
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "dev": true
+ },
+ "write-file-atomic": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz",
+ "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ }
+ }
+ },
"call-matcher": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.1.0.tgz",
@@ -3099,6 +3161,13 @@
"trim": "0.0.1"
}
},
+ "commander": {
+ "version": "2.20.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
+ "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
+ "dev": true,
+ "optional": true
+ },
"common-path-prefix": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz",
@@ -3263,6 +3332,43 @@
}
}
},
+ "cp-file": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz",
+ "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^2.0.0",
+ "nested-error-stacks": "^2.0.0",
+ "pify": "^4.0.1",
+ "safe-buffer": "^5.0.1"
+ },
+ "dependencies": {
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "dev": true
+ }
+ }
+ },
"crc": {
"version": "3.8.0",
"resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
@@ -3395,6 +3501,15 @@
"core-assert": "^0.2.0"
}
},
+ "default-require-extensions": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz",
+ "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=",
+ "dev": true,
+ "requires": {
+ "strip-bom": "^3.0.0"
+ }
+ },
"defaults": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
@@ -4739,6 +4854,28 @@
"integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
"dev": true
},
+ "foreground-child": {
+ "version": "1.5.6",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz",
+ "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^4",
+ "signal-exit": "^3.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
+ "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "which": "^1.2.9"
+ }
+ }
+ }
+ },
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -5559,6 +5696,26 @@
"integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
"dev": true
},
+ "handlebars": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz",
+ "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==",
+ "dev": true,
+ "requires": {
+ "neo-async": "^2.6.0",
+ "optimist": "^0.6.1",
+ "source-map": "^0.6.1",
+ "uglify-js": "^3.1.4"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
@@ -6398,15 +6555,24 @@
"dev": true
},
"istanbul-lib-coverage": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
- "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
+ "integrity": "sha512-LXTBICkMARVgo579kWDm8SqfB6nvSDKNqIOBEjmJRnL04JvoMHCYGWaMddQnseJYtkEuEvO/sIcOxPLk9gERug==",
"dev": true
},
+ "istanbul-lib-hook": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.6.tgz",
+ "integrity": "sha512-829DKONApZ7UCiPXcOYWSgkFXa4+vNYoNOt3F+4uDJLKL1OotAoVwvThoEj1i8jmOj7odbYcR3rnaHu+QroaXg==",
+ "dev": true,
+ "requires": {
+ "append-transform": "^1.0.0"
+ }
+ },
"istanbul-lib-instrument": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz",
- "integrity": "sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.2.0.tgz",
+ "integrity": "sha512-06IM3xShbNW4NgZv5AP4QH0oHqf1/ivFo8eFys0ZjPXHGldHJQWb3riYOKXqmOqfxXBfxu4B+g/iuhOPZH0RJg==",
"dev": true,
"requires": {
"@babel/generator": "^7.0.0",
@@ -6414,18 +6580,120 @@
"@babel/template": "^7.0.0",
"@babel/traverse": "^7.0.0",
"@babel/types": "^7.0.0",
- "istanbul-lib-coverage": "^2.0.3",
- "semver": "^5.5.0"
+ "istanbul-lib-coverage": "^2.0.4",
+ "semver": "^6.0.0"
},
"dependencies": {
"semver": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
- "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz",
+ "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==",
+ "dev": true
+ }
+ }
+ },
+ "istanbul-lib-report": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.7.tgz",
+ "integrity": "sha512-wLH6beJBFbRBLiTlMOBxmb85cnVM1Vyl36N48e4e/aTKSM3WbOx7zbVIH1SQ537fhhsPbX0/C5JB4qsmyRXXyA==",
+ "dev": true,
+ "requires": {
+ "istanbul-lib-coverage": "^2.0.4",
+ "make-dir": "^2.1.0",
+ "supports-color": "^6.0.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "istanbul-lib-source-maps": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.5.tgz",
+ "integrity": "sha512-eDhZ7r6r1d1zQPVZehLc3D0K14vRba/eBYkz3rw16DLOrrTzve9RmnkcwrrkWVgO1FL3EK5knujVe5S8QHE9xw==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^2.0.4",
+ "make-dir": "^2.1.0",
+ "rimraf": "^2.6.2",
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "dev": true
+ },
+ "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
}
}
},
+ "istanbul-reports": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.2.tgz",
+ "integrity": "sha512-ZFuTdBQ3PSaPnm02aEA4R6mzQ2AF9w03CYiXADzWbbE48v/EFOWF4MaX4FT0NRdqIk48I7o0RPi+S8TMswaCbQ==",
+ "dev": true,
+ "requires": {
+ "handlebars": "^4.1.0"
+ }
+ },
"js-levenshtein": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
@@ -7092,6 +7360,23 @@
}
}
},
+ "merge-source-map": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
+ "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
+ "dev": true,
+ "requires": {
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
"merge2": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz",
@@ -7693,6 +7978,18 @@
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true
},
+ "neo-async": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
+ "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
+ "dev": true
+ },
+ "nested-error-stacks": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz",
+ "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==",
+ "dev": true
+ },
"nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@@ -7783,191 +8080,72 @@
"dev": true
},
"nyc": {
- "version": "13.3.0",
- "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.3.0.tgz",
- "integrity": "sha512-P+FwIuro2aFG6B0Esd9ZDWUd51uZrAEoGutqZxzrVmYl3qSfkLgcQpBPBjtDFsUQLFY1dvTQJPOyeqr8S9GF8w==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.0.0.tgz",
+ "integrity": "sha512-R1zC6UZak6pzn5BZQorkSH5GdOGafrwyeja+eimS5Tu+KJ/hCgBc8qA1QWSzxQmT2FDl2lbpqPw7tBDbSvhAHg==",
"dev": true,
"requires": {
"archy": "^1.0.0",
- "arrify": "^1.0.1",
- "caching-transform": "^3.0.1",
+ "caching-transform": "^3.0.2",
"convert-source-map": "^1.6.0",
- "find-cache-dir": "^2.0.0",
+ "cp-file": "^6.2.0",
+ "find-cache-dir": "^2.1.0",
"find-up": "^3.0.0",
"foreground-child": "^1.5.6",
"glob": "^7.1.3",
- "istanbul-lib-coverage": "^2.0.3",
- "istanbul-lib-hook": "^2.0.3",
- "istanbul-lib-instrument": "^3.1.0",
- "istanbul-lib-report": "^2.0.4",
- "istanbul-lib-source-maps": "^3.0.2",
- "istanbul-reports": "^2.1.1",
- "make-dir": "^1.3.0",
+ "istanbul-lib-coverage": "^2.0.4",
+ "istanbul-lib-hook": "^2.0.6",
+ "istanbul-lib-instrument": "^3.2.0",
+ "istanbul-lib-report": "^2.0.7",
+ "istanbul-lib-source-maps": "^3.0.5",
+ "istanbul-reports": "^2.2.2",
+ "make-dir": "^2.1.0",
"merge-source-map": "^1.1.0",
"resolve-from": "^4.0.0",
"rimraf": "^2.6.3",
"signal-exit": "^3.0.2",
"spawn-wrap": "^1.4.2",
- "test-exclude": "^5.1.0",
+ "test-exclude": "^5.2.2",
"uuid": "^3.3.2",
- "yargs": "^12.0.5",
- "yargs-parser": "^11.1.1"
+ "yargs": "^13.2.2",
+ "yargs-parser": "^13.0.0"
},
"dependencies": {
"ansi-regex": {
- "version": "3.0.0",
- "bundled": true,
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
- "append-transform": {
- "version": "1.0.0",
- "bundled": true,
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"dev": true,
"requires": {
- "default-require-extensions": "^2.0.0"
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
}
},
- "archy": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "arrify": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "async": {
- "version": "2.6.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "lodash": "^4.17.11"
- }
- },
- "balanced-match": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "bundled": true,
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "caching-transform": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "hasha": "^3.0.0",
- "make-dir": "^1.3.0",
- "package-hash": "^3.0.0",
- "write-file-atomic": "^2.3.0"
- }
- },
- "camelcase": {
- "version": "5.0.0",
- "bundled": true,
- "dev": true
- },
- "cliui": {
- "version": "4.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0",
- "wrap-ansi": "^2.0.0"
- }
- },
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true
- },
- "commander": {
- "version": "2.17.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "commondir": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true,
- "dev": true
- },
- "convert-source-map": {
- "version": "1.6.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "cross-spawn": {
- "version": "4.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "which": "^1.2.9"
- }
- },
- "debug": {
- "version": "4.1.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true
- },
- "default-require-extensions": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "strip-bom": "^3.0.0"
- }
- },
- "end-of-stream": {
- "version": "1.4.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "once": "^1.4.0"
- }
- },
- "error-ex": {
- "version": "1.3.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "es6-error": {
- "version": "4.1.1",
- "bundled": true,
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
"dev": true
},
"execa": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
"dev": true,
"requires": {
"cross-spawn": "^6.0.0",
@@ -7977,62 +8155,38 @@
"p-finally": "^1.0.0",
"signal-exit": "^3.0.0",
"strip-eof": "^1.0.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "6.0.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- }
}
},
"find-cache-dir": {
- "version": "2.0.0",
- "bundled": true,
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
"dev": true,
"requires": {
"commondir": "^1.0.1",
- "make-dir": "^1.0.0",
+ "make-dir": "^2.0.0",
"pkg-dir": "^3.0.0"
}
},
"find-up": {
"version": "3.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
"locate-path": "^3.0.0"
}
},
- "foreground-child": {
- "version": "1.5.6",
- "bundled": true,
- "dev": true,
- "requires": {
- "cross-spawn": "^4",
- "signal-exit": "^3.0.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
"get-caller-file": {
- "version": "1.0.3",
- "bundled": true,
+ "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-stream": {
"version": "4.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
"dev": true,
"requires": {
"pump": "^3.0.0"
@@ -8040,7 +8194,8 @@
},
"glob": {
"version": "7.1.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -8051,336 +8206,68 @@
"path-is-absolute": "^1.0.0"
}
},
- "graceful-fs": {
- "version": "4.1.15",
- "bundled": true,
- "dev": true
- },
- "handlebars": {
- "version": "4.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "async": "^2.5.0",
- "optimist": "^0.6.1",
- "source-map": "^0.6.1",
- "uglify-js": "^3.1.4"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "bundled": true,
- "dev": true
- }
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true
- },
- "hasha": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-stream": "^1.0.1"
- }
- },
- "hosted-git-info": {
- "version": "2.7.1",
- "bundled": true,
- "dev": true
- },
- "imurmurhash": {
- "version": "0.1.4",
- "bundled": true,
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "bundled": true,
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "bundled": true,
- "dev": true
- },
"invert-kv": {
"version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "is-arrayish": {
- "version": "0.2.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "is-stream": {
- "version": "1.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
- "isexe": {
+ "lcid": {
"version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "istanbul-lib-coverage": {
- "version": "2.0.3",
- "bundled": true,
- "dev": true
- },
- "istanbul-lib-hook": {
- "version": "2.0.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
"dev": true,
"requires": {
- "append-transform": "^1.0.0"
+ "invert-kv": "^2.0.0"
}
},
- "istanbul-lib-report": {
- "version": "2.0.4",
- "bundled": true,
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"requires": {
- "istanbul-lib-coverage": "^2.0.3",
- "make-dir": "^1.3.0",
- "supports-color": "^6.0.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "6.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
}
},
- "istanbul-lib-source-maps": {
- "version": "3.0.2",
- "bundled": true,
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"dev": true,
"requires": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^2.0.3",
- "make-dir": "^1.3.0",
- "rimraf": "^2.6.2",
- "source-map": "^0.6.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "bundled": true,
- "dev": true
- }
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
}
},
- "istanbul-reports": {
- "version": "2.1.1",
- "bundled": true,
+ "mem": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+ "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
"dev": true,
"requires": {
- "handlebars": "^4.1.0"
- }
- },
- "json-parse-better-errors": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "lcid": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "invert-kv": "^2.0.0"
- }
- },
- "load-json-file": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "lodash": {
- "version": "4.17.11",
- "bundled": true,
- "dev": true
- },
- "lodash.flattendeep": {
- "version": "4.4.0",
- "bundled": true,
- "dev": true
- },
- "lru-cache": {
- "version": "4.1.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "make-dir": {
- "version": "1.3.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "map-age-cleaner": {
- "version": "0.1.3",
- "bundled": true,
- "dev": true,
- "requires": {
- "p-defer": "^1.0.0"
- }
- },
- "mem": {
- "version": "4.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "map-age-cleaner": "^0.1.1",
- "mimic-fn": "^1.0.0",
- "p-is-promise": "^2.0.0"
- }
- },
- "merge-source-map": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "source-map": "^0.6.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "bundled": true,
- "dev": true
- }
+ "map-age-cleaner": "^0.1.1",
+ "mimic-fn": "^2.0.0",
+ "p-is-promise": "^2.0.0"
}
},
"mimic-fn": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true
- },
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "0.0.10",
- "bundled": true,
- "dev": true
- },
- "mkdirp": {
- "version": "0.5.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "minimist": "0.0.8"
- },
- "dependencies": {
- "minimist": {
- "version": "0.0.8",
- "bundled": true,
- "dev": true
- }
- }
- },
- "ms": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true
- },
- "nice-try": {
- "version": "1.0.5",
- "bundled": true,
- "dev": true
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "bundled": true,
- "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"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "path-key": "^2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optimist": {
- "version": "0.6.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "minimist": "~0.0.1",
- "wordwrap": "~0.0.2"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "bundled": true,
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true
},
"os-locale": {
"version": "3.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
"dev": true,
"requires": {
"execa": "^1.0.0",
@@ -8388,24 +8275,10 @@
"mem": "^4.0.0"
}
},
- "p-defer": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "p-finally": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "p-is-promise": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
"p-limit": {
- "version": "2.1.0",
- "bundled": true,
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
"dev": true,
"requires": {
"p-try": "^2.0.0"
@@ -8413,401 +8286,108 @@
},
"p-locate": {
"version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "p-try": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "package-hash": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.15",
- "hasha": "^3.0.0",
- "lodash.flattendeep": "^4.4.0",
- "release-zalgo": "^1.0.0"
- }
- },
- "parse-json": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "path-key": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true
- },
- "path-parse": {
- "version": "1.0.6",
- "bundled": true,
- "dev": true
- },
- "path-type": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "pify": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true
- },
- "pkg-dir": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "find-up": "^3.0.0"
- }
- },
- "pseudomap": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "pump": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "read-pkg": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- }
- },
- "read-pkg-up": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "find-up": "^3.0.0",
- "read-pkg": "^3.0.0"
- }
- },
- "release-zalgo": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "es6-error": "^4.0.1"
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true
- },
- "require-main-filename": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "resolve": {
- "version": "1.10.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
- },
- "resolve-from": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true
- },
- "rimraf": {
- "version": "2.6.3",
- "bundled": true,
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "bundled": true,
- "dev": true
- },
- "semver": {
- "version": "5.6.0",
- "bundled": true,
- "dev": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "shebang-command": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "bundled": true,
- "dev": true
- },
- "spawn-wrap": {
- "version": "1.4.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "foreground-child": "^1.5.6",
- "mkdirp": "^0.5.0",
- "os-homedir": "^1.0.1",
- "rimraf": "^2.6.2",
- "signal-exit": "^3.0.2",
- "which": "^1.3.0"
- }
- },
- "spdx-correct": {
- "version": "3.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.2.0",
- "bundled": true,
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.3",
- "bundled": true,
- "dev": true
- },
- "string-width": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true
- },
- "strip-eof": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "test-exclude": {
- "version": "5.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "arrify": "^1.0.1",
- "minimatch": "^3.0.4",
- "read-pkg-up": "^4.0.0",
- "require-main-filename": "^1.0.1"
- }
- },
- "uglify-js": {
- "version": "3.4.9",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
- "optional": true,
"requires": {
- "commander": "~2.17.1",
- "source-map": "~0.6.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "bundled": true,
- "dev": true,
- "optional": true
- }
+ "p-limit": "^2.0.0"
}
},
- "uuid": {
- "version": "3.3.2",
- "bundled": true,
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true
},
- "validate-npm-package-license": {
- "version": "3.0.4",
- "bundled": true,
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
"dev": true,
"requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
+ "find-up": "^3.0.0"
}
},
- "which": {
- "version": "1.3.1",
- "bundled": true,
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
"requires": {
- "isexe": "^2.0.0"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
- "which-module": {
+ "require-main-filename": {
"version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "wordwrap": {
- "version": "0.0.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
},
- "wrap-ansi": {
- "version": "2.1.0",
- "bundled": true,
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
"dev": true,
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "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",
- "bundled": true,
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
+ "glob": "^7.1.3"
}
},
- "wrappy": {
- "version": "1.0.2",
- "bundled": true,
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
"dev": true
},
- "write-file-atomic": {
- "version": "2.4.2",
- "bundled": true,
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
}
},
"y18n": {
"version": "4.0.0",
- "bundled": true,
- "dev": true
- },
- "yallist": {
- "version": "2.1.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
"dev": true
},
"yargs": {
- "version": "12.0.5",
- "bundled": true,
+ "version": "13.2.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz",
+ "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==",
"dev": true,
"requires": {
"cliui": "^4.0.0",
- "decamelize": "^1.2.0",
"find-up": "^3.0.0",
- "get-caller-file": "^1.0.1",
- "os-locale": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "os-locale": "^3.1.0",
"require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
+ "require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
+ "string-width": "^3.0.0",
"which-module": "^2.0.0",
- "y18n": "^3.2.1 || ^4.0.0",
- "yargs-parser": "^11.1.1"
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.0.0"
}
},
"yargs-parser": {
- "version": "11.1.1",
- "bundled": true,
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz",
+ "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==",
"dev": true,
"requires": {
"camelcase": "^5.0.0",
@@ -8994,6 +8574,24 @@
"is-wsl": "^1.1.0"
}
},
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "requires": {
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ }
+ }
+ },
"optionator": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
@@ -9068,6 +8666,12 @@
"readable-stream": "^2.0.1"
}
},
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
"os-locale": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
@@ -10460,6 +10064,20 @@
"trim": "0.0.1"
}
},
+ "spawn-wrap": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz",
+ "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==",
+ "dev": true,
+ "requires": {
+ "foreground-child": "^1.5.6",
+ "mkdirp": "^0.5.0",
+ "os-homedir": "^1.0.1",
+ "rimraf": "^2.6.2",
+ "signal-exit": "^3.0.2",
+ "which": "^1.3.0"
+ }
+ },
"spdx-correct": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
@@ -10881,6 +10499,135 @@
"execa": "^0.7.0"
}
},
+ "test-exclude": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.2.tgz",
+ "integrity": "sha512-N2pvaLpT8guUpb5Fe1GJlmvmzH3x+DAKmmyEQmFP792QcLYoGE1syxztSvPD1V8yPe6VrcCt6YGQVjSRjCASsA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3",
+ "minimatch": "^3.0.4",
+ "read-pkg-up": "^4.0.0",
+ "require-main-filename": "^2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "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"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
+ "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0",
+ "read-pkg": "^3.0.0"
+ }
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ }
+ }
+ },
"text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -11273,6 +11020,26 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "uglify-js": {
+ "version": "3.5.4",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.4.tgz",
+ "integrity": "sha512-GpKo28q/7Bm5BcX9vOu4S46FwisbPbAmkkqPnGIpKvKTM96I85N6XHQV+k4I6FA2wxgLhcsSyHoNhzucwCflvA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "commander": "~2.20.0",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "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,
+ "optional": true
+ }
+ }
+ },
"uid2": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz",
diff --git a/package.json b/package.json
index 23698bd..ee04062 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
"clone": "2.1.2",
"coveralls": "3.0.3",
"documentation": "9.3.1",
- "nyc": "13.3.0",
+ "nyc": "14.0.0",
"xo": "0.24.0"
},
"xo": {
From cc91641f7d7d6a56633d0668aefb5c8c8f9d1445 Mon Sep 17 00:00:00 2001
From: "renovate[bot]"
Date: Thu, 18 Apr 2019 18:41:43 +0000
Subject: [PATCH 26/40] Update dependency documentation to v10 (#191)
This PR contains the following updates:
| Package | Type | Update | Change | References |
|---|---|---|---|---|
| documentation | devDependencies | major | [`9.3.1` -> `10.0.0`](https://diff.intrinsic.com/documentation/9.3.1/10.0.0) | [source](https://togithub.com/documentationjs/documentation) |
---
### Release Notes
documentationjs/documentation
### [`v10.0.0`](https://togithub.com/documentationjs/documentation/blob/master/CHANGELOG.md#1000httpsgithubcomdocumentationjsdocumentationcomparev1000-alpha0v1000-2019-04-18)
[Compare Source](https://togithub.com/documentationjs/documentation/compare/v9.3.1...v10.0.0)
##### Features
- Add flow inference for generators ([7947e97](https://togithub.com/documentationjs/documentation/commit/7947e97))
- Support async functions ([d31c3b7](https://togithub.com/documentationjs/documentation/commit/d31c3b7))
- Support classPrivateProperties in parser ([64ef671](https://togithub.com/documentationjs/documentation/commit/64ef671)), closes [#1216](https://togithub.com/documentationjs/documentation/issues/1216)
- Support generator functions ([8e3cd47](https://togithub.com/documentationjs/documentation/commit/8e3cd47))
---
### Renovate configuration
:date: **Schedule**: At any time (no schedule defined).
:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
:recycle: **Rebasing**: Whenever PR becomes conflicted, or if you modify the PR title to begin with "`rebase!`".
:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://togithub.com/marketplace/renovate). View repository job log [here](https://renovatebot.com/dashboard#codetheweb/tuyapi).
---
package-lock.json | 902 +++++++++++++++++++++++++++++++---------------
package.json | 2 +-
2 files changed, 616 insertions(+), 288 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 5ee1930..7988337 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -56,18 +56,18 @@
}
},
"@babel/core": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.3.4.tgz",
- "integrity": "sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.3.tgz",
+ "integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.3.4",
- "@babel/helpers": "^7.2.0",
- "@babel/parser": "^7.3.4",
- "@babel/template": "^7.2.2",
- "@babel/traverse": "^7.3.4",
- "@babel/types": "^7.3.4",
+ "@babel/generator": "^7.4.0",
+ "@babel/helpers": "^7.4.3",
+ "@babel/parser": "^7.4.3",
+ "@babel/template": "^7.4.0",
+ "@babel/traverse": "^7.4.3",
+ "@babel/types": "^7.4.0",
"convert-source-map": "^1.1.0",
"debug": "^4.1.0",
"json5": "^2.1.0",
@@ -78,56 +78,65 @@
},
"dependencies": {
"@babel/generator": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.4.tgz",
- "integrity": "sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz",
+ "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==",
"dev": true,
"requires": {
- "@babel/types": "^7.3.4",
+ "@babel/types": "^7.4.0",
"jsesc": "^2.5.1",
"lodash": "^4.17.11",
"source-map": "^0.5.0",
"trim-right": "^1.0.1"
}
},
+ "@babel/helper-split-export-declaration": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz",
+ "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.4.0"
+ }
+ },
"@babel/parser": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.4.tgz",
- "integrity": "sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz",
+ "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==",
"dev": true
},
"@babel/template": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz",
- "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz",
+ "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.2.2",
- "@babel/types": "^7.2.2"
+ "@babel/parser": "^7.4.0",
+ "@babel/types": "^7.4.0"
}
},
"@babel/traverse": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.3.4.tgz",
- "integrity": "sha512-TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz",
+ "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.3.4",
+ "@babel/generator": "^7.4.0",
"@babel/helper-function-name": "^7.1.0",
- "@babel/helper-split-export-declaration": "^7.0.0",
- "@babel/parser": "^7.3.4",
- "@babel/types": "^7.3.4",
+ "@babel/helper-split-export-declaration": "^7.4.0",
+ "@babel/parser": "^7.4.3",
+ "@babel/types": "^7.4.0",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.11"
}
},
"@babel/types": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.4.tgz",
- "integrity": "sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
+ "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -194,9 +203,9 @@
},
"dependencies": {
"@babel/types": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.4.tgz",
- "integrity": "sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
+ "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -213,39 +222,150 @@
}
},
"@babel/helper-call-delegate": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz",
- "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.0.tgz",
+ "integrity": "sha512-SdqDfbVdNQCBp3WhK2mNdDvHd3BD6qbmIc43CAyjnsfCmgHMeqgDcM3BzY2lchi7HBJGJ2CVdynLWbezaE4mmQ==",
"dev": true,
"requires": {
- "@babel/helper-hoist-variables": "^7.0.0",
- "@babel/traverse": "^7.1.0",
- "@babel/types": "^7.0.0"
+ "@babel/helper-hoist-variables": "^7.4.0",
+ "@babel/traverse": "^7.4.0",
+ "@babel/types": "^7.4.0"
+ },
+ "dependencies": {
+ "@babel/generator": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz",
+ "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.4.0",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.11",
+ "source-map": "^0.5.0",
+ "trim-right": "^1.0.1"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz",
+ "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.4.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz",
+ "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==",
+ "dev": true
+ },
+ "@babel/traverse": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz",
+ "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/generator": "^7.4.0",
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.4.0",
+ "@babel/parser": "^7.4.3",
+ "@babel/types": "^7.4.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.11"
+ }
+ },
+ "@babel/types": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
+ "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.11",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ }
}
},
"@babel/helper-create-class-features-plugin": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.3.4.tgz",
- "integrity": "sha512-uFpzw6L2omjibjxa8VGZsJUPL5wJH0zzGKpoz0ccBkzIa6C8kWNUbiBmQ0rgOKWlHJ6qzmfa6lTiGchiV8SC+g==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.3.tgz",
+ "integrity": "sha512-UMl3TSpX11PuODYdWGrUeW6zFkdYhDn7wRLrOuNVM6f9L+S9CzmDXYyrp3MTHcwWjnzur1f/Op8A7iYZWya2Yg==",
"dev": true,
"requires": {
"@babel/helper-function-name": "^7.1.0",
"@babel/helper-member-expression-to-functions": "^7.0.0",
"@babel/helper-optimise-call-expression": "^7.0.0",
"@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-replace-supers": "^7.3.4",
- "@babel/helper-split-export-declaration": "^7.0.0"
+ "@babel/helper-replace-supers": "^7.4.0",
+ "@babel/helper-split-export-declaration": "^7.4.0"
+ },
+ "dependencies": {
+ "@babel/helper-split-export-declaration": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz",
+ "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.4.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
+ "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.11",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ }
}
},
"@babel/helper-define-map": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz",
- "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz",
+ "integrity": "sha512-wAhQ9HdnLIywERVcSvX40CEJwKdAa1ID4neI9NXQPDOHwwA+57DqwLiPEVy2AIyWzAk0CQ8qx4awO0VUURwLtA==",
"dev": true,
"requires": {
"@babel/helper-function-name": "^7.1.0",
- "@babel/types": "^7.0.0",
- "lodash": "^4.17.10"
+ "@babel/types": "^7.4.0",
+ "lodash": "^4.17.11"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
+ "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.11",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ }
}
},
"@babel/helper-explode-assignable-expression": {
@@ -279,12 +399,31 @@
}
},
"@babel/helper-hoist-variables": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz",
- "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz",
+ "integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/types": "^7.4.0"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
+ "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.11",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ }
}
},
"@babel/helper-member-expression-to-functions": {
@@ -357,57 +496,66 @@
}
},
"@babel/helper-replace-supers": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.3.4.tgz",
- "integrity": "sha512-pvObL9WVf2ADs+ePg0jrqlhHoxRXlOa+SHRHzAXIz2xkYuOHfGl+fKxPMaS4Fq+uje8JQPobnertBBvyrWnQ1A==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz",
+ "integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==",
"dev": true,
"requires": {
"@babel/helper-member-expression-to-functions": "^7.0.0",
"@babel/helper-optimise-call-expression": "^7.0.0",
- "@babel/traverse": "^7.3.4",
- "@babel/types": "^7.3.4"
+ "@babel/traverse": "^7.4.0",
+ "@babel/types": "^7.4.0"
},
"dependencies": {
"@babel/generator": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.4.tgz",
- "integrity": "sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz",
+ "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==",
"dev": true,
"requires": {
- "@babel/types": "^7.3.4",
+ "@babel/types": "^7.4.0",
"jsesc": "^2.5.1",
"lodash": "^4.17.11",
"source-map": "^0.5.0",
"trim-right": "^1.0.1"
}
},
+ "@babel/helper-split-export-declaration": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz",
+ "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.4.0"
+ }
+ },
"@babel/parser": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.4.tgz",
- "integrity": "sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz",
+ "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==",
"dev": true
},
"@babel/traverse": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.3.4.tgz",
- "integrity": "sha512-TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz",
+ "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.3.4",
+ "@babel/generator": "^7.4.0",
"@babel/helper-function-name": "^7.1.0",
- "@babel/helper-split-export-declaration": "^7.0.0",
- "@babel/parser": "^7.3.4",
- "@babel/types": "^7.3.4",
+ "@babel/helper-split-export-declaration": "^7.4.0",
+ "@babel/parser": "^7.4.3",
+ "@babel/types": "^7.4.0",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.11"
}
},
"@babel/types": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.4.tgz",
- "integrity": "sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
+ "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -474,94 +622,87 @@
}
},
"@babel/helpers": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.2.0.tgz",
- "integrity": "sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz",
+ "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==",
"dev": true,
"requires": {
- "@babel/template": "^7.1.2",
- "@babel/traverse": "^7.1.5",
- "@babel/types": "^7.2.0"
+ "@babel/template": "^7.4.0",
+ "@babel/traverse": "^7.4.3",
+ "@babel/types": "^7.4.0"
},
"dependencies": {
"@babel/generator": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz",
- "integrity": "sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz",
+ "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==",
"dev": true,
"requires": {
- "@babel/types": "^7.2.0",
+ "@babel/types": "^7.4.0",
"jsesc": "^2.5.1",
- "lodash": "^4.17.10",
+ "lodash": "^4.17.11",
"source-map": "^0.5.0",
"trim-right": "^1.0.1"
}
},
+ "@babel/helper-split-export-declaration": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz",
+ "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.4.0"
+ }
+ },
"@babel/parser": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.0.tgz",
- "integrity": "sha512-M74+GvK4hn1eejD9lZ7967qAwvqTZayQa3g10ag4s9uewgR7TKjeaT0YMyoq+gVfKYABiWZ4MQD701/t5e1Jhg==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz",
+ "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==",
"dev": true
},
+ "@babel/template": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz",
+ "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.4.0",
+ "@babel/types": "^7.4.0"
+ }
+ },
"@babel/traverse": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz",
- "integrity": "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz",
+ "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.1.6",
+ "@babel/generator": "^7.4.0",
"@babel/helper-function-name": "^7.1.0",
- "@babel/helper-split-export-declaration": "^7.0.0",
- "@babel/parser": "^7.1.6",
- "@babel/types": "^7.1.6",
+ "@babel/helper-split-export-declaration": "^7.4.0",
+ "@babel/parser": "^7.4.3",
+ "@babel/types": "^7.4.0",
"debug": "^4.1.0",
"globals": "^11.1.0",
- "lodash": "^4.17.10"
+ "lodash": "^4.17.11"
}
},
"@babel/types": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.0.tgz",
- "integrity": "sha512-b4v7dyfApuKDvmPb+O488UlGuR1WbwMXFsO/cyqMrnfvRAChZKJAYeeglWTjUO1b9UghKKgepAQM5tsvBJca6A==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
+ "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
- "lodash": "^4.17.10",
+ "lodash": "^4.17.11",
"to-fast-properties": "^2.0.0"
}
},
- "debug": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
- "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "globals": {
- "version": "11.9.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz",
- "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==",
- "dev": true
- },
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- },
- "ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
- "dev": true
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
"dev": true
}
}
@@ -638,22 +779,22 @@
}
},
"@babel/plugin-proposal-class-properties": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.4.tgz",
- "integrity": "sha512-lUf8D3HLs4yYlAo8zjuneLvfxN7qfKv1Yzbj5vjqaqMJxgJA3Ipwp4VUJ+OrOdz53Wbww6ahwB8UhB2HQyLotA==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.0.tgz",
+ "integrity": "sha512-t2ECPNOXsIeK1JxJNKmgbzQtoG27KIlVE61vTqX0DKR9E9sZlVVxWUtEW9D5FlZ8b8j7SBNCHY47GgPKCKlpPg==",
"dev": true,
"requires": {
- "@babel/helper-create-class-features-plugin": "^7.3.4",
+ "@babel/helper-create-class-features-plugin": "^7.4.0",
"@babel/helper-plugin-utils": "^7.0.0"
}
},
"@babel/plugin-proposal-decorators": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.3.0.tgz",
- "integrity": "sha512-3W/oCUmsO43FmZIqermmq6TKaRSYhmh/vybPfVFwQWdSb8xwki38uAIvknCRzuyHRuYfCYmJzL9or1v0AffPjg==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.0.tgz",
+ "integrity": "sha512-d08TLmXeK/XbgCo7ZeZ+JaeZDtDai/2ctapTRsWWkkmy7G/cqz8DQN/HlWG7RR4YmfXxmExsbU3SuCjlM7AtUg==",
"dev": true,
"requires": {
- "@babel/helper-create-class-features-plugin": "^7.3.0",
+ "@babel/helper-create-class-features-plugin": "^7.4.0",
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/plugin-syntax-decorators": "^7.2.0"
}
@@ -730,9 +871,9 @@
}
},
"@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.2.0.tgz",
- "integrity": "sha512-QXj/YjFuFJd68oDvoc1e8aqLr2wz7Kofzvp6Ekd/o7MWZl+nZ0/cpStxND+hlZ7DpRWAp7OmuyT2areZ2V3YUA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.4.3.tgz",
+ "integrity": "sha512-eYtYniPfQOPY8rpsR8YK5pioJHrFLXjXOeYRf0vr5sWSPJU13or3CxLFn+uIb6fhukbYNch+L2VDAlvME2DSAw==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
@@ -800,14 +941,14 @@
}
},
"@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz",
- "integrity": "sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.0.tgz",
+ "integrity": "sha512-h/KjEZ3nK9wv1P1FSNb9G079jXrNYR0Ko+7XkOx85+gM24iZbPn0rh4vCftk+5QKY7y1uByFataBTmX7irEF1w==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/helper-regex": "^7.0.0",
- "regexpu-core": "^4.2.0"
+ "regexpu-core": "^4.5.4"
}
},
"@babel/plugin-syntax-async-generators": {
@@ -1020,9 +1161,9 @@
}
},
"@babel/plugin-transform-block-scoping": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.3.4.tgz",
- "integrity": "sha512-blRr2O8IOZLAOJklXLV4WhcEzpYafYQKSGT3+R26lWG41u/FODJuBggehtOwilVAcFu393v3OFj+HmaE6tVjhA==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.0.tgz",
+ "integrity": "sha512-AWyt3k+fBXQqt2qb9r97tn3iBwFpiv9xdAiG+Gr2HpAZpuayvbL55yWrsV3MyHvXk/4vmSiedhDRl1YI2Iy5nQ==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
@@ -1038,19 +1179,47 @@
}
},
"@babel/plugin-transform-classes": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.3.4.tgz",
- "integrity": "sha512-J9fAvCFBkXEvBimgYxCjvaVDzL6thk0j0dBvCeZmIUDBwyt+nv6HfbImsSrWsYXfDNDivyANgJlFXDUWRTZBuA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.3.tgz",
+ "integrity": "sha512-PUaIKyFUDtG6jF5DUJOfkBdwAS/kFFV3XFk7Nn0a6vR7ZT8jYw5cGtIlat77wcnd0C6ViGqo/wyNf4ZHytF/nQ==",
"dev": true,
"requires": {
"@babel/helper-annotate-as-pure": "^7.0.0",
- "@babel/helper-define-map": "^7.1.0",
+ "@babel/helper-define-map": "^7.4.0",
"@babel/helper-function-name": "^7.1.0",
"@babel/helper-optimise-call-expression": "^7.0.0",
"@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-replace-supers": "^7.3.4",
- "@babel/helper-split-export-declaration": "^7.0.0",
+ "@babel/helper-replace-supers": "^7.4.0",
+ "@babel/helper-split-export-declaration": "^7.4.0",
"globals": "^11.1.0"
+ },
+ "dependencies": {
+ "@babel/helper-split-export-declaration": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz",
+ "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.4.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
+ "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.11",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ }
}
},
"@babel/plugin-transform-computed-properties": {
@@ -1063,9 +1232,9 @@
}
},
"@babel/plugin-transform-destructuring": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz",
- "integrity": "sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.3.tgz",
+ "integrity": "sha512-rVTLLZpydDFDyN4qnXdzwoVpk1oaXHIvPEOkOLyr88o7oHxVc/LyrnDx+amuBWGOwUb7D1s/uLsKBNTx08htZg==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0"
@@ -1145,9 +1314,9 @@
}
},
"@babel/plugin-transform-flow-strip-types": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.3.4.tgz",
- "integrity": "sha512-PmQC9R7DwpBFA+7ATKMyzViz3zCaMNouzZMPZN2K5PnbBbtL3AXFYTkDk+Hey5crQq2A90UG5Uthz0mel+XZrA==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.0.tgz",
+ "integrity": "sha512-C4ZVNejHnfB22vI2TYN4RUp2oCmq6cSEAg4RygSvYZUECRqUu9O4PMEMNJ4wsemaRGg27BbgYctG4BZh+AgIHw==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
@@ -1155,18 +1324,18 @@
}
},
"@babel/plugin-transform-for-of": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz",
- "integrity": "sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.3.tgz",
+ "integrity": "sha512-UselcZPwVWNSURnqcfpnxtMehrb8wjXYOimlYQPBnup/Zld426YzIhNEvuRsEWVHfESIECGrxoI6L5QqzuLH5Q==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0"
}
},
"@babel/plugin-transform-function-name": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz",
- "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.3.tgz",
+ "integrity": "sha512-uT5J/3qI/8vACBR9I1GlAuU/JqBtWdfCrynuOkrWG6nCDieZd5przB1vfP59FRHBZQ9DC2IUfqr/xKqzOD5x0A==",
"dev": true,
"requires": {
"@babel/helper-function-name": "^7.1.0",
@@ -1182,6 +1351,15 @@
"@babel/helper-plugin-utils": "^7.0.0"
}
},
+ "@babel/plugin-transform-member-expression-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz",
+ "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
"@babel/plugin-transform-modules-amd": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz",
@@ -1204,12 +1382,12 @@
}
},
"@babel/plugin-transform-modules-systemjs": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.3.4.tgz",
- "integrity": "sha512-VZ4+jlGOF36S7TjKs8g4ojp4MEI+ebCQZdswWb/T9I4X84j8OtFAyjXjt/M16iIm5RIZn0UMQgg/VgIwo/87vw==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.0.tgz",
+ "integrity": "sha512-gjPdHmqiNhVoBqus5qK60mWPp1CmYWp/tkh11mvb0rrys01HycEGD7NvvSoKXlWEfSM9TcL36CpsK8ElsADptQ==",
"dev": true,
"requires": {
- "@babel/helper-hoist-variables": "^7.0.0",
+ "@babel/helper-hoist-variables": "^7.4.0",
"@babel/helper-plugin-utils": "^7.0.0"
}
},
@@ -1224,9 +1402,9 @@
}
},
"@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz",
- "integrity": "sha512-NxIoNVhk9ZxS+9lSoAQ/LM0V2UEvARLttEHUrRDGKFaAxOYQcrkN/nLRE+BbbicCAvZPl7wMP0X60HsHE5DtQw==",
+ "version": "7.4.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.2.tgz",
+ "integrity": "sha512-NsAuliSwkL3WO2dzWTOL1oZJHm0TM8ZY8ZSxk2ANyKkt5SQlToGA4pzctmq1BEjoacurdwZ3xp2dCQWJkME0gQ==",
"dev": true,
"requires": {
"regexp-tree": "^0.1.0"
@@ -1241,9 +1419,9 @@
}
},
"@babel/plugin-transform-new-target": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz",
- "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.0.tgz",
+ "integrity": "sha512-6ZKNgMQmQmrEX/ncuCwnnw1yVGoaOW5KpxNhoWI7pCQdA0uZ0HqHGqenCUIENAnxRjy2WwNQ30gfGdIgqJXXqw==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0"
@@ -1260,16 +1438,25 @@
}
},
"@babel/plugin-transform-parameters": {
- "version": "7.3.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.3.3.tgz",
- "integrity": "sha512-IrIP25VvXWu/VlBWTpsjGptpomtIkYrN/3aDp4UKm7xK6UxZY88kcJ1UwETbzHAlwN21MnNfwlar0u8y3KpiXw==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.3.tgz",
+ "integrity": "sha512-ULJYC2Vnw96/zdotCZkMGr2QVfKpIT/4/K+xWWY0MbOJyMZuk660BGkr3bEKWQrrciwz6xpmft39nA4BF7hJuA==",
"dev": true,
"requires": {
- "@babel/helper-call-delegate": "^7.1.0",
+ "@babel/helper-call-delegate": "^7.4.0",
"@babel/helper-get-function-arity": "^7.0.0",
"@babel/helper-plugin-utils": "^7.0.0"
}
},
+ "@babel/plugin-transform-property-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz",
+ "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
"@babel/plugin-transform-react-display-name": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz",
@@ -1311,14 +1498,23 @@
}
},
"@babel/plugin-transform-regenerator": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.3.4.tgz",
- "integrity": "sha512-hvJg8EReQvXT6G9H2MvNPXkv9zK36Vxa1+csAVTpE1J3j0zlHplw76uudEbJxgvqZzAq9Yh45FLD4pk5mKRFQA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.3.tgz",
+ "integrity": "sha512-kEzotPuOpv6/iSlHroCDydPkKYw7tiJGKlmYp6iJn4a6C/+b2FdttlJsLKYxolYHgotTJ5G5UY5h0qey5ka3+A==",
"dev": true,
"requires": {
"regenerator-transform": "^0.13.4"
}
},
+ "@babel/plugin-transform-reserved-words": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz",
+ "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
"@babel/plugin-transform-shorthand-properties": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz",
@@ -1367,77 +1563,183 @@
}
},
"@babel/plugin-transform-unicode-regex": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz",
- "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.3.tgz",
+ "integrity": "sha512-lnSNgkVjL8EMtnE8eSS7t2ku8qvKH3eqNf/IwIfnSPUqzgqYmRwzdsQWv4mNQAN9Nuo6Gz1Y0a4CSmdpu1Pp6g==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-regex": "^7.0.0",
- "regexpu-core": "^4.1.3"
+ "@babel/helper-regex": "^7.4.3",
+ "regexpu-core": "^4.5.4"
+ },
+ "dependencies": {
+ "@babel/helper-regex": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.3.tgz",
+ "integrity": "sha512-hnoq5u96pLCfgjXuj8ZLX3QQ+6nAulS+zSgi6HulUwFbEruRAKwbGLU5OvXkE14L8XW6XsQEKsIDfgthKLRAyA==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.11"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ }
}
},
"@babel/preset-env": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.4.tgz",
- "integrity": "sha512-2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.3.tgz",
+ "integrity": "sha512-FYbZdV12yHdJU5Z70cEg0f6lvtpZ8jFSDakTm7WXeJbLXh4R0ztGEu/SW7G1nJ2ZvKwDhz8YrbA84eYyprmGqw==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.0.0",
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/plugin-proposal-async-generator-functions": "^7.2.0",
"@babel/plugin-proposal-json-strings": "^7.2.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.3.4",
+ "@babel/plugin-proposal-object-rest-spread": "^7.4.3",
"@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.4.0",
"@babel/plugin-syntax-async-generators": "^7.2.0",
"@babel/plugin-syntax-json-strings": "^7.2.0",
"@babel/plugin-syntax-object-rest-spread": "^7.2.0",
"@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
"@babel/plugin-transform-arrow-functions": "^7.2.0",
- "@babel/plugin-transform-async-to-generator": "^7.3.4",
+ "@babel/plugin-transform-async-to-generator": "^7.4.0",
"@babel/plugin-transform-block-scoped-functions": "^7.2.0",
- "@babel/plugin-transform-block-scoping": "^7.3.4",
- "@babel/plugin-transform-classes": "^7.3.4",
+ "@babel/plugin-transform-block-scoping": "^7.4.0",
+ "@babel/plugin-transform-classes": "^7.4.3",
"@babel/plugin-transform-computed-properties": "^7.2.0",
- "@babel/plugin-transform-destructuring": "^7.2.0",
- "@babel/plugin-transform-dotall-regex": "^7.2.0",
+ "@babel/plugin-transform-destructuring": "^7.4.3",
+ "@babel/plugin-transform-dotall-regex": "^7.4.3",
"@babel/plugin-transform-duplicate-keys": "^7.2.0",
"@babel/plugin-transform-exponentiation-operator": "^7.2.0",
- "@babel/plugin-transform-for-of": "^7.2.0",
- "@babel/plugin-transform-function-name": "^7.2.0",
+ "@babel/plugin-transform-for-of": "^7.4.3",
+ "@babel/plugin-transform-function-name": "^7.4.3",
"@babel/plugin-transform-literals": "^7.2.0",
+ "@babel/plugin-transform-member-expression-literals": "^7.2.0",
"@babel/plugin-transform-modules-amd": "^7.2.0",
- "@babel/plugin-transform-modules-commonjs": "^7.2.0",
- "@babel/plugin-transform-modules-systemjs": "^7.3.4",
+ "@babel/plugin-transform-modules-commonjs": "^7.4.3",
+ "@babel/plugin-transform-modules-systemjs": "^7.4.0",
"@babel/plugin-transform-modules-umd": "^7.2.0",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0",
- "@babel/plugin-transform-new-target": "^7.0.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.2",
+ "@babel/plugin-transform-new-target": "^7.4.0",
"@babel/plugin-transform-object-super": "^7.2.0",
- "@babel/plugin-transform-parameters": "^7.2.0",
- "@babel/plugin-transform-regenerator": "^7.3.4",
+ "@babel/plugin-transform-parameters": "^7.4.3",
+ "@babel/plugin-transform-property-literals": "^7.2.0",
+ "@babel/plugin-transform-regenerator": "^7.4.3",
+ "@babel/plugin-transform-reserved-words": "^7.2.0",
"@babel/plugin-transform-shorthand-properties": "^7.2.0",
"@babel/plugin-transform-spread": "^7.2.0",
"@babel/plugin-transform-sticky-regex": "^7.2.0",
"@babel/plugin-transform-template-literals": "^7.2.0",
"@babel/plugin-transform-typeof-symbol": "^7.2.0",
- "@babel/plugin-transform-unicode-regex": "^7.2.0",
- "browserslist": "^4.3.4",
+ "@babel/plugin-transform-unicode-regex": "^7.4.3",
+ "@babel/types": "^7.4.0",
+ "browserslist": "^4.5.2",
+ "core-js-compat": "^3.0.0",
"invariant": "^2.2.2",
"js-levenshtein": "^1.1.3",
- "semver": "^5.3.0"
+ "semver": "^5.5.0"
},
"dependencies": {
- "@babel/plugin-transform-async-to-generator": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.3.4.tgz",
- "integrity": "sha512-Y7nCzv2fw/jEZ9f678MuKdMo99MFDJMT/PvD9LisrR5JDFcJH6vYeH6RnjVt3p5tceyGRvTtEN0VOlU+rgHZjA==",
+ "@babel/helper-module-transforms": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.3.tgz",
+ "integrity": "sha512-H88T9IySZW25anu5uqyaC1DaQre7ofM+joZtAaO2F8NBdFfupH0SZ4gKjgSFVcvtx/aAirqA9L9Clio2heYbZA==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.0.0",
+ "@babel/helper-simple-access": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.0.0",
+ "@babel/template": "^7.2.2",
+ "@babel/types": "^7.2.2",
+ "lodash": "^4.17.11"
+ }
+ },
+ "@babel/helper-regex": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.3.tgz",
+ "integrity": "sha512-hnoq5u96pLCfgjXuj8ZLX3QQ+6nAulS+zSgi6HulUwFbEruRAKwbGLU5OvXkE14L8XW6XsQEKsIDfgthKLRAyA==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.11"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz",
+ "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==",
+ "dev": true
+ },
+ "@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.3.tgz",
+ "integrity": "sha512-xC//6DNSSHVjq8O2ge0dyYlhshsH4T7XdCVoxbi5HzLYWfsC5ooFlJjrXk8RcAT+hjHAK9UjBXdylzSoDK3t4g==",
+ "dev": true,
+ "requires": {
"@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-remap-async-to-generator": "^7.1.0"
+ "@babel/plugin-syntax-object-rest-spread": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.3.tgz",
+ "integrity": "sha512-9Arc2I0AGynzXRR/oPdSALv3k0rM38IMFyto7kOCwb5F9sLUt2Ykdo3V9yUPR+Bgr4kb6bVEyLkPEiBhzcTeoA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-regex": "^7.4.3",
+ "regexpu-core": "^4.5.4"
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.3.tgz",
+ "integrity": "sha512-sMP4JqOTbMJMimqsSZwYWsMjppD+KRyDIUVW91pd7td0dZKAvPmhCaxhOzkzLParKwgQc7bdL9UNv+rpJB0HfA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.4.3",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-simple-access": "^7.1.0"
+ }
+ },
+ "@babel/template": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz",
+ "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.4.0",
+ "@babel/types": "^7.4.0"
}
+ },
+ "@babel/types": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
+ "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.11",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "dev": true
}
}
},
@@ -2488,14 +2790,14 @@
}
},
"browserslist": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.2.tgz",
- "integrity": "sha512-ISS/AIAiHERJ3d45Fz0AVYKkgcy+F/eJHzKEvv1j0wwKGKD9T3BrwKr/5g45L+Y4XIK5PlTqefHciRFcfE1Jxg==",
+ "version": "4.5.5",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.5.tgz",
+ "integrity": "sha512-0QFO1r/2c792Ohkit5XI8Cm8pDtZxgNl2H6HU4mHrpYz7314pEYcsAVVatM0l/YmxPnEzh9VygXouj4gkFUTKA==",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30000939",
- "electron-to-chromium": "^1.3.113",
- "node-releases": "^1.1.8"
+ "caniuse-lite": "^1.0.30000960",
+ "electron-to-chromium": "^1.3.124",
+ "node-releases": "^1.1.14"
}
},
"buf-compare": {
@@ -2678,9 +2980,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30000945",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000945.tgz",
- "integrity": "sha512-PSGwYChNIXJ4FZr9Z9mrVzBCB1TF3yyiRmIDRIdKDHZ6u+1jYH6xeR28XaquxnMwcZVX3f48S9zi7eswO/G1nQ==",
+ "version": "1.0.30000960",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000960.tgz",
+ "integrity": "sha512-7nK5qs17icQaX6V3/RYrJkOsZyRNnroA4+ZwxaKJzIKy+crIy0Mz5CBlLySd2SNV+4nbUZeqeNfiaEieUBu3aA==",
"dev": true
},
"capture-stack-trace": {
@@ -2754,9 +3056,9 @@
"dev": true
},
"chokidar": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz",
- "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==",
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz",
+ "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==",
"dev": true,
"requires": {
"anymatch": "^2.0.0",
@@ -2770,7 +3072,7 @@
"normalize-path": "^3.0.0",
"path-is-absolute": "^1.0.0",
"readdirp": "^2.2.1",
- "upath": "^1.1.0"
+ "upath": "^1.1.1"
},
"dependencies": {
"normalize-path": {
@@ -3153,13 +3455,10 @@
}
},
"comma-separated-tokens": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.5.tgz",
- "integrity": "sha512-Cg90/fcK93n0ecgYTAz1jaA3zvnQ0ExlmKY1rdbyHqAx6BHxwoJc+J7HDu0iuQ7ixEs1qaa+WyQ6oeuBpYP1iA==",
- "dev": true,
- "requires": {
- "trim": "0.0.1"
- }
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.6.tgz",
+ "integrity": "sha512-f20oA7jsrrmERTS70r3tmRSxR8IJV2MTN7qe6hzgX+3ARfXrdMJFvGWvWQK0xpcBurg9j9eO2MiqzZ8Y+/UPCA==",
+ "dev": true
},
"commander": {
"version": "2.20.0",
@@ -3294,6 +3593,38 @@
"integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=",
"dev": true
},
+ "core-js-compat": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.0.1.tgz",
+ "integrity": "sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.5.4",
+ "core-js": "3.0.1",
+ "core-js-pure": "3.0.1",
+ "semver": "^6.0.0"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz",
+ "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz",
+ "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==",
+ "dev": true
+ }
+ }
+ },
+ "core-js-pure": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.0.1.tgz",
+ "integrity": "sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g==",
+ "dev": true
+ },
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
@@ -3677,18 +4008,18 @@
}
},
"doctrine-temporary-fork": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/doctrine-temporary-fork/-/doctrine-temporary-fork-2.0.1.tgz",
- "integrity": "sha512-+GQh3niRkKtSr7cKDo8po+NHkJZyC2Ebwvjz9fvq0ReQr9kIDS6BY9MDrzx+KbbLxvSj3vD/eUaeIoURHzEAFQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine-temporary-fork/-/doctrine-temporary-fork-2.1.0.tgz",
+ "integrity": "sha512-nliqOv5NkE4zMON4UA6AMJE6As35afs8aYXATpU4pTUdIKiARZwrJVEP1boA3Rx1ZXHVkwxkhcq4VkqvsuRLsA==",
"dev": true,
"requires": {
"esutils": "^2.0.2"
}
},
"documentation": {
- "version": "9.3.1",
- "resolved": "https://registry.npmjs.org/documentation/-/documentation-9.3.1.tgz",
- "integrity": "sha512-egP7WcZLCNjYwIo97iArQ51/bCpLTOKEQaqPrvGVM2q0zo+JMy5tc+BpuVDtswW39YvP083L7EHrvyhfjol7ww==",
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/documentation/-/documentation-10.0.0.tgz",
+ "integrity": "sha512-krCLVxobxphAFs8wktfCw1bZtZ6MPux/pt5HJHdm2NA5qX45Gra7m9SqGYWyeOAkfsZs9C9/Qk0xEQ/cekphYg==",
"dev": true,
"requires": {
"@babel/core": "^7.1.2",
@@ -3722,7 +4053,7 @@
"chokidar": "^2.0.4",
"concat-stream": "^1.6.0",
"disparity": "^2.0.0",
- "doctrine-temporary-fork": "2.0.1",
+ "doctrine-temporary-fork": "2.1.0",
"get-port": "^4.0.0",
"git-url-parse": "^10.0.1",
"github-slugger": "1.2.0",
@@ -3933,9 +4264,9 @@
}
},
"electron-to-chromium": {
- "version": "1.3.115",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.115.tgz",
- "integrity": "sha512-mN2qeapQWdi2B9uddxTZ4nl80y46hbyKY5Wt9Yjih+QZFQLdaujEDK4qJky35WhyxMzHF3ZY41Lgjd2BPDuBhg==",
+ "version": "1.3.124",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz",
+ "integrity": "sha512-glecGr/kFdfeXUHOHAWvGcXrxNU+1wSO/t5B23tT1dtlvYB26GY8aHzZSWD7HqhqC800Lr+w/hQul6C5AF542w==",
"dev": true
},
"emittery": {
@@ -7700,9 +8031,9 @@
}
},
"mime": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
- "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.2.tgz",
+ "integrity": "sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg==",
"dev": true
},
"mime-db": {
@@ -8003,9 +8334,9 @@
"dev": true
},
"node-releases": {
- "version": "1.1.10",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.10.tgz",
- "integrity": "sha512-KbUPCpfoBvb3oBkej9+nrU0/7xPlVhmhhUJ1PZqwIP5/1dJkRWKWD3OONjo6M2J7tSCBtDCumLwwqeI+DWWaLQ==",
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.15.tgz",
+ "integrity": "sha512-cKV097BQaZr8LTSRUa2+oc/aX5L8UkZtPQrMSTgiJEeaW7ymTDCoRaGCoaTqk0lqnalcoSHu4wjSl0Cmj2+bMw==",
"dev": true,
"requires": {
"semver": "^5.3.0"
@@ -8056,9 +8387,9 @@
}
},
"now-and-later": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz",
- "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=",
+ "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"
@@ -8456,9 +8787,9 @@
}
},
"object-keys": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz",
- "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==",
+ "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": {
@@ -9170,9 +9501,9 @@
"dev": true
},
"qs": {
- "version": "6.6.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.6.0.tgz",
- "integrity": "sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA==",
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+ "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
"dev": true
},
"query-string": {
@@ -10056,13 +10387,10 @@
"dev": true
},
"space-separated-tokens": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.2.tgz",
- "integrity": "sha512-G3jprCEw+xFEs0ORweLmblJ3XLymGGr6hxZYTYZjIlvDti9vOBUjRQa1Rzjt012aRrocKstHwdNi+F7HguPsEA==",
- "dev": true,
- "requires": {
- "trim": "0.0.1"
- }
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.3.tgz",
+ "integrity": "sha512-/M5RAdBuQlSDPNfA5ube+fkHbHyY08pMuADLmsAQURzo56w90r681oiOoz3o3ZQyWdSeNucpTFjL+Ggd5qui3w==",
+ "dev": true
},
"spawn-wrap": {
"version": "1.4.2",
@@ -11287,9 +11615,9 @@
"dev": true
},
"upath": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
- "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz",
+ "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==",
"dev": true
},
"update-notifier": {
@@ -11564,9 +11892,9 @@
}
},
"vue-template-compiler": {
- "version": "2.6.8",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.8.tgz",
- "integrity": "sha512-SwWKANE5ee+oJg+dEJmsdxsxWYICPsNwk68+1AFjOS8l0O/Yz2845afuJtFqf3UjS/vXG7ECsPeHHEAD65Cjng==",
+ "version": "2.6.10",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz",
+ "integrity": "sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==",
"dev": true,
"requires": {
"de-indent": "^1.0.2",
@@ -12081,9 +12409,9 @@
}
},
"mem": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz",
- "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+ "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
"dev": true,
"requires": {
"map-age-cleaner": "^0.1.1",
@@ -12092,9 +12420,9 @@
}
},
"mimic-fn": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz",
- "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true
},
"os-locale": {
@@ -12137,9 +12465,9 @@
}
},
"semver": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
- "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
"dev": true
},
"string-width": {
@@ -12174,9 +12502,9 @@
},
"dependencies": {
"camelcase": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz",
- "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true
}
}
diff --git a/package.json b/package.json
index ee04062..ddb1c24 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,7 @@
"ava": "1.4.1",
"clone": "2.1.2",
"coveralls": "3.0.3",
- "documentation": "9.3.1",
+ "documentation": "10.0.0",
"nyc": "14.0.0",
"xo": "0.24.0"
},
From 75dc7107af7a5fd4455d500c89f476675c098a2b Mon Sep 17 00:00:00 2001
From: "renovate[bot]"
Date: Thu, 25 Apr 2019 15:41:18 +0000
Subject: [PATCH 27/40] Update dependency documentation to v10.1.0 (#192)
---
package-lock.json | 30 +++++++++++++++---------------
package.json | 2 +-
2 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 7988337..40ae459 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2980,9 +2980,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30000960",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000960.tgz",
- "integrity": "sha512-7nK5qs17icQaX6V3/RYrJkOsZyRNnroA4+ZwxaKJzIKy+crIy0Mz5CBlLySd2SNV+4nbUZeqeNfiaEieUBu3aA==",
+ "version": "1.0.30000963",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000963.tgz",
+ "integrity": "sha512-n4HUiullc7Lw0LyzpeLa2ffP8KxFBGdxqD/8G3bSL6oB758hZ2UE2CVK+tQN958tJIi0/tfpjAc67aAtoHgnrQ==",
"dev": true
},
"capture-stack-trace": {
@@ -4017,9 +4017,9 @@
}
},
"documentation": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/documentation/-/documentation-10.0.0.tgz",
- "integrity": "sha512-krCLVxobxphAFs8wktfCw1bZtZ6MPux/pt5HJHdm2NA5qX45Gra7m9SqGYWyeOAkfsZs9C9/Qk0xEQ/cekphYg==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/documentation/-/documentation-10.1.0.tgz",
+ "integrity": "sha512-fW8ZF0phIIEB1VBFx+P/oYBYCjDavghafH4uKNm3daBNw30tOJKo09EO4A7zUBl/qnGvFCNHhzDaxQv0tqLotA==",
"dev": true,
"requires": {
"@babel/core": "^7.1.2",
@@ -4207,9 +4207,9 @@
}
},
"resolve": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
- "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz",
+ "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==",
"dev": true,
"requires": {
"path-parse": "^1.0.6"
@@ -4264,9 +4264,9 @@
}
},
"electron-to-chromium": {
- "version": "1.3.124",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz",
- "integrity": "sha512-glecGr/kFdfeXUHOHAWvGcXrxNU+1wSO/t5B23tT1dtlvYB26GY8aHzZSWD7HqhqC800Lr+w/hQul6C5AF542w==",
+ "version": "1.3.127",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.127.tgz",
+ "integrity": "sha512-1o25iFRf/dbgauTWalEzmD1EmRN3a2CzP/K7UVpYLEBduk96LF0FyUdCcf4Ry2mAWJ1VxyblFjC93q6qlLwA2A==",
"dev": true
},
"emittery": {
@@ -8334,9 +8334,9 @@
"dev": true
},
"node-releases": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.15.tgz",
- "integrity": "sha512-cKV097BQaZr8LTSRUa2+oc/aX5L8UkZtPQrMSTgiJEeaW7ymTDCoRaGCoaTqk0lqnalcoSHu4wjSl0Cmj2+bMw==",
+ "version": "1.1.17",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.17.tgz",
+ "integrity": "sha512-/SCjetyta1m7YXLgtACZGDYJdCSIBAWorDWkGCGZlydP2Ll7J48l7j/JxNYZ+xsgSPbWfdulVS/aY+GdjUsQ7Q==",
"dev": true,
"requires": {
"semver": "^5.3.0"
diff --git a/package.json b/package.json
index ddb1c24..093ffe1 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,7 @@
"ava": "1.4.1",
"clone": "2.1.2",
"coveralls": "3.0.3",
- "documentation": "10.0.0",
+ "documentation": "10.1.0",
"nyc": "14.0.0",
"xo": "0.24.0"
},
From 9fe569b268ef2936d9310482cc32ee610360f6a7 Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Fri, 26 Apr 2019 10:16:49 -0400
Subject: [PATCH 28/40] Remove Cipher instance
---
index.js | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/index.js b/index.js
index f343151..bb2b0b4 100644
--- a/index.js
+++ b/index.js
@@ -47,13 +47,11 @@ class TuyaDevice extends EventEmitter {
throw new TypeError('Key is missing or incorrect.');
}
+ // Handles encoding/decoding, encrypting/decrypting messages
this.device.parser = new MessageParser({
key: this.device.key,
version: this.device.version});
- // Create cipher from key
- this.device.cipher = new Cipher({key, version});
-
// Contains array of found devices when calling .find()
this.foundDevices = [];
From fd82b580b3fc802afbda3021b59ce9e265dde9fd Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Fri, 26 Apr 2019 10:22:07 -0400
Subject: [PATCH 29/40] Add seperate utils file
---
docs/index.html | 700 ++++++++++++++++++++++++------------------------
index.js | 41 +--
lib/utils.js | 12 +
3 files changed, 368 insertions(+), 385 deletions(-)
create mode 100644 lib/utils.js
diff --git a/docs/index.html b/docs/index.html
index d2a869d..c90a6b7 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -146,9 +146,19 @@ tuyapi
+ Packet
+
+
+
+
+
+
+
- TuyaCipher
+ MessageParser
â–¸
@@ -159,21 +169,33 @@ tuyapi
Instance members
- #encrypt
+ #parsePacket
- #decrypt
+ #getPayload
- #md5
+ #parse
+
+
+
+ #encode
+
+
+
+ #writeSequenceN
@@ -186,19 +208,9 @@ tuyapi
- Packet
-
-
-
-
-
-
-
- MessageParser
+ TuyaCipher
â–¸
@@ -209,33 +221,21 @@ tuyapi
Instance members
- #parsePacket
-
-
-
- #getPayload
-
-
-
- #parse
+ #encrypt
- #encode
+ #decrypt
- #writeSequenceN
+ #md5
@@ -1381,17 +1381,22 @@
-
- TuyaCipher
+
+ Packet
-
Low-level class for encrypting and decrypting payloads.
+ A complete packet.
- new TuyaCipher(options: Object)
+ Packet
+
+
+ Type:
+ Object
+
@@ -1403,48 +1408,35 @@
- Parameters
-
+
+
+ Properties
+
-
- options (Object)
-
-
-
-
-
-
-
-
-
-
- Name
- Description
-
-
-
-
-
- options.key String
-
- localKey of cipher
-
-
-
-
-
-
- options.version Number
-
- protocol version
-
-
+ payload ((Buffer | Object | String))
+ : Buffer if hasn't been decoded, object or
+string if it has been
+
+
+
+
+ leftover (Buffer)
+ : bytes adjacent to the parsed packet
-
-
-
+
+
+
+
+ commandByte (Number)
+
+
+
+
+
+ sequenceN (Number)
+
@@ -1458,34 +1450,33 @@
- Example
-
-
- const cipher = new TuyaCipher({key: 'xxxxxxxxxxxxxxxx', version: 3.1})
-
-
- Instance Members
-
+
-
-
-
- â–¸
- encrypt(options)
-
-
-
-
+
+
+
+
+
+
+
+
+
+ MessageParser
+
+
+
+
+
- Encrypts data.
+ Low-level class for parsing packets.
-
+ new MessageParser(options: Object)
@@ -1520,21 +1511,20 @@
- options.data String
+ options.key String
- data to encrypt
+ localKey of cipher
- options.base64 Boolean
+ options.version Number
- (default true)
+ (default 3.1)
- true
- to return result in Base64
+ protocol version
@@ -1551,14 +1541,6 @@
-
- Returns
- (Buffer | String):
- returns Buffer unless options.base64 is true
-
-
-
-
@@ -1566,27 +1548,21 @@
Example
- TuyaCipher.encrypt({data: 'hello world'})
+ const parser = new MessageParser({key: 'xxxxxxxxxxxxxxxx', version: 3.1})
-
-
-
-
-
-
-
-
+ Instance Members
+
-
+
@@ -1594,9 +1570,11 @@
-
Decrypts data.
+ Parses a Buffer of data containing at least
+one complete packet at the begining of the buffer.
+Will return multiple packets if necessary.
-
+
@@ -1613,8 +1591,8 @@
-
+
@@ -1663,9 +1641,10 @@
-
Calculates a MD5 hash.
+ Attempts to decode a given payload into
+an object or string.
-
+
@@ -1682,8 +1661,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ â–¸
+ parse(buffer)
+
+
+
+
-
-
-
- Packet
-
-
-
-
-
- A complete packet.
+ Given a buffer potentially containing
+multiple packets, this parses and returns
+all of them.
- Packet
-
-
- Type:
- Object
-
+
@@ -1764,35 +1727,15 @@
-
-
- Properties
-
-
-
- payload ((Buffer | Object | String))
- : Buffer if hasn't been decoded, object or
-string if it has been
-
-
-
+ Parameters
+
- leftover (Buffer)
- : bytes adjacent to the parsed packet
+
+ buffer (Buffer)
+ to parse
-
-
-
-
- commandByte (Number)
-
-
-
-
-
- sequenceN (Number)
-
+
@@ -1802,7 +1745,13 @@
+
+ Returns
+ Array<Packet>:
+ parsed packets
+
+
@@ -1812,27 +1761,31 @@
-
-
-
-
-
+
-
-
-
- MessageParser
-
-
-
-
+
+
+
+
+
+
+
+ â–¸
+ encode(options)
+
+
+
+
- Low-level class for parsing packets.
+
- new MessageParser(options: Object)
+ Encodes a payload into a
+Tuya-protocol-complient packet.
+
+
@@ -1867,20 +1820,36 @@
- options.key String
+ options.data (Buffer | String | Object)
- localKey of cipher
+ data to encode
- options.version Number
-
- (default 3.1)
+ options.encrypted Boolean
- protocol version
+ whether or not to encrypt the data
+
+
+
+
+
+
+ options.commandByte Number
+
+ command byte of packet
+
+
+
+
+
+
+ options.sequenceN Number?
+
+ optional, sequence number
@@ -1897,28 +1866,36 @@
+
+ Returns
+ Buffer:
+
+
+
- Example
-
-
- const parser = new MessageParser({key: 'xxxxxxxxxxxxxxxx', version: 3.1})
-
+
- Instance Members
-
+
-
+
+
+
+
+
+
+
+
@@ -1926,11 +1903,10 @@
-
Parses a Buffer of data containing at least
-one complete packet at the begining of the buffer.
-Will return multiple packets if necessary.
+ Given a complete packet, writes
+a sequence number into the packet.
-
+
@@ -1948,7 +1924,16 @@
buffer (Buffer)
- of data to parse
+ packet
+
+
+
+
+
+
-
-
-
- â–¸
- getPayload(data)
-
-
-
-
+
- Attempts to decode a given payload into
-an object or string.
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+ TuyaCipher
+
+
+
+
+
+
+ Low-level class for encrypting and decrypting payloads.
+
+ new TuyaCipher(options: Object)
@@ -2017,26 +2014,47 @@
-
-
-
+
+
+
+
+
+
+
+ Name
+ Description
+
+
+
+
+
+ options.key String
+
+ localKey of cipher
+
+
-
-
-
- Returns
- (Object | String):
- object if payload is JSON, otherwise string
+
+
+ options.version Number
+
+ protocol version
+
+
+
+
+
+
+
+
-
+
@@ -2046,20 +2064,24 @@
-
+ Example
+
+
+ const cipher = new TuyaCipher({key: 'xxxxxxxxxxxxxxxx', version: 3.1})
+
-
-
-
-
+ Instance Members
+
+
+
@@ -2067,11 +2089,9 @@
-
Given a buffer potentially containing
-multiple packets, this parses and returns
-all of them.
+ Encrypts data.
-
+
@@ -2088,11 +2108,47 @@
@@ -2103,8 +2159,8 @@
Returns
- Array<Packet>:
- parsed packets
+ (Buffer | String):
+ returns Buffer unless options.base64 is true
@@ -2113,6 +2169,12 @@
+ Example
+
+
+ TuyaCipher.encrypt({data: 'hello world'})
+
+
@@ -2126,11 +2188,11 @@
-
+
@@ -2138,10 +2200,9 @@
-
Encodes a payload into a
-Tuya-protocol-complient packet.
+ Decrypts data.
-
+
@@ -2158,61 +2219,10 @@
- options (Object)
-
-
-
-
-
-
-
-
-
-
- Name
- Description
-
-
-
-
-
- options.data (Buffer | String | Object)
-
- data to encode
-
-
-
-
-
-
- options.encrypted Boolean
-
- whether or not to encrypt the data
-
-
-
-
-
-
- options.commandByte Number
-
- command byte of packet
-
-
-
-
-
-
- options.sequenceN Number?
-
- optional, sequence number
-
-
-
+ data (String)
+ to decrypt
-
-
-
+
@@ -2224,8 +2234,8 @@
Returns
- Buffer:
-
+ (Object | String):
+ returns object if data is JSON, else returns string
@@ -2247,11 +2257,11 @@
-
+
@@ -2259,10 +2269,9 @@
-
Given a complete packet, writes
-a sequence number into the packet.
+ Calculates a MD5 hash.
-
+
@@ -2279,17 +2288,8 @@
- buffer (Buffer)
- packet
-
-
-
-
-
-
-
@@ -2303,8 +2303,8 @@
Returns
- Buffer:
-
+ String:
+ characters 8 through 16 of hash of data
diff --git a/index.js b/index.js
index bb2b0b4..fea7928 100644
--- a/index.js
+++ b/index.js
@@ -7,7 +7,7 @@ const pRetry = require('p-retry');
const debug = require('debug')('TuyAPI');
// Helpers
-const Cipher = require('./lib/cipher');
+const {isValidString} = require('./lib/utils');
const MessageParser = require('./lib/message-parser');
/**
@@ -37,13 +37,13 @@ class TuyaDevice extends EventEmitter {
this.device = {ip, port, id, gwID, key, productKey, version};
// Check arguments
- if (!(this.checkIfValidString(id) ||
- this.checkIfValidString(ip))) {
+ if (!(isValidString(id) ||
+ isValidString(ip))) {
throw new TypeError('ID and IP are missing from device.');
}
// Check key
- if (!this.checkIfValidString(this.device.key) || this.device.key.length !== 16) {
+ if (!isValidString(this.device.key) || this.device.key.length !== 16) {
throw new TypeError('Key is missing or incorrect.');
}
@@ -450,35 +450,6 @@ class TuyaDevice extends EventEmitter {
return this._connected;
}
- /**
- * Checks a given input string.
- * @private
- * @param {String} input input string
- * @returns {Boolean}
- * `true` if is string and length != 0, `false` otherwise.
- */
- checkIfValidString(input) {
- return typeof input === 'string' && input.length > 0;
- }
-
- arrayDeepInclude(arr, obj) {
- const result = arr.every(item => {
- if (JSON.stringify(item) === JSON.stringify(obj)) {
- return false;
- }
-
- return true;
- });
-
- return !result;
- }
-
- wrapFunction(fn, context, params) {
- return function () {
- fn.apply(context, params);
- };
- }
-
/**
* @deprecated since v3.0.0. Will be removed in v4.0.0. Use find() instead.
*/
@@ -504,8 +475,8 @@ class TuyaDevice extends EventEmitter {
* true if ID/IP was found and device is ready to be used
*/
find({timeout = 10, all = false} = {}) {
- if (this.checkIfValidString(this.device.id) &&
- this.checkIfValidString(this.device.ip)) {
+ if (isValidString(this.device.id) &&
+ isValidString(this.device.ip)) {
// Don't need to do anything
debug('IP and ID are already both resolved.');
return Promise.resolve(true);
diff --git a/lib/utils.js b/lib/utils.js
new file mode 100644
index 0000000..26d2ee3
--- /dev/null
+++ b/lib/utils.js
@@ -0,0 +1,12 @@
+/**
+ * Checks a given input string.
+ * @private
+ * @param {String} input input string
+ * @returns {Boolean}
+ * `true` if is string and length != 0, `false` otherwise.
+ */
+function isValidString(input) {
+ return typeof input === 'string' && input.length > 0;
+}
+
+module.exports = {isValidString};
From adc25bcade0efdd233f91bd05e6d87afea3aa1de Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Fri, 26 Apr 2019 10:31:37 -0400
Subject: [PATCH 30/40] Clean up Cipher and MessageParser
---
docs/index.html | 89 +------------------------------------------
lib/cipher.js | 6 +--
lib/message-parser.js | 14 -------
3 files changed, 5 insertions(+), 104 deletions(-)
diff --git a/docs/index.html b/docs/index.html
index c90a6b7..f2e3f0f 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -192,12 +192,6 @@ tuyapi
#encode
-
- #writeSequenceN
-
-
@@ -1886,85 +1880,6 @@
-
-
-
-
-
-
-
-
- â–¸
- writeSequenceN(buffer, n)
-
-
-
-
-
-
-
- Given a complete packet, writes
-a sequence number into the packet.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Parameters
-
-
-
-
-
-
-
- Returns
- Buffer:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -2202,7 +2117,7 @@
Decrypts data.
-
+
@@ -2219,7 +2134,7 @@
diff --git a/lib/cipher.js b/lib/cipher.js
index 58ad27c..536ad6b 100644
--- a/lib/cipher.js
+++ b/lib/cipher.js
@@ -12,7 +12,7 @@ const crypto = require('crypto');
class TuyaCipher {
constructor(options) {
this.key = options.key;
- this.version = options.version;
+ this.version = options.version.toString();
}
/**
@@ -40,7 +40,7 @@ class TuyaCipher {
/**
* Decrypts data.
- * @param {String} data to decrypt
+ * @param {String|Buffer} data to decrypt
* @returns {Object|String}
* returns object if data is JSON, else returns string
*/
@@ -48,7 +48,7 @@ class TuyaCipher {
// Incoming data format
let format = 'buffer';
- if (data.indexOf(this.version.toString()) !== -1) {
+ if (data.indexOf(this.version) !== -1) {
// Data has version number and is encoded in base64
// Remove prefix of version number and MD5 hash
diff --git a/lib/message-parser.js b/lib/message-parser.js
index a0dfce7..9742598 100644
--- a/lib/message-parser.js
+++ b/lib/message-parser.js
@@ -251,20 +251,6 @@ class MessageParser {
return buffer;
}
-
- /**
- * Given a complete packet, writes
- * a sequence number into the packet.
- * @param {Buffer} buffer packet
- * @param {Number} n sequence number
- * @returns {Buffer}
- */
- writeSequenceN(buffer, n) {
- // Add sequence number to buffer
- buffer.writeUInt32BE(n, 4);
-
- return buffer;
- }
}
module.exports = MessageParser;
From eea26636928ee1cdaafaa207acc85ac74dc7d5a0 Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Fri, 26 Apr 2019 10:41:45 -0400
Subject: [PATCH 31/40] Make behavior when receiving a sequence number of 0
more clear
---
index.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/index.js b/index.js
index fea7928..ea92f99 100644
--- a/index.js
+++ b/index.js
@@ -413,8 +413,12 @@ class TuyaDevice extends EventEmitter {
// Remove resolver
delete this._resolvers[packet.sequenceN];
} else if (packet.sequenceN === 0) {
+ // Returned sequence number is 0, probably a response to a set command
+
+ // Call the first resolver in the queue
this._resolvers[Object.keys(this._resolvers)[0]](packet.payload);
+ // Remove resolver
delete this._resolvers[packet.sequenceN];
}
}
From f73c76a456af8c72fe1dccd724fc665e0bfddf9b Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Fri, 26 Apr 2019 16:45:19 -0400
Subject: [PATCH 32/40] Check for version number at beginning of payload
---
lib/cipher.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/cipher.js b/lib/cipher.js
index 536ad6b..759011e 100644
--- a/lib/cipher.js
+++ b/lib/cipher.js
@@ -48,7 +48,7 @@ class TuyaCipher {
// Incoming data format
let format = 'buffer';
- if (data.indexOf(this.version) !== -1) {
+ if (data.indexOf(this.version) === 0) {
// Data has version number and is encoded in base64
// Remove prefix of version number and MD5 hash
From a0c412245dfe8aed089d20d4f512aef2348af8da Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Sat, 27 Apr 2019 14:04:10 -0400
Subject: [PATCH 33/40] Add CommandType enum
---
docs/index.html | 2 +-
index.js | 15 +++++--------
lib/message-parser.js | 52 ++++++++++++++++++++++++++++++++++++++-----
test/parser.js | 26 ++++++++++++++--------
4 files changed, 70 insertions(+), 25 deletions(-)
diff --git a/docs/index.html b/docs/index.html
index f2e3f0f..c5d31ce 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -1834,7 +1834,7 @@
options.commandByte Number
- command byte of packet
+ command byte of packet (use CommandType definitions)
diff --git a/index.js b/index.js
index ea92f99..44534fb 100644
--- a/index.js
+++ b/index.js
@@ -8,7 +8,7 @@ const debug = require('debug')('TuyAPI');
// Helpers
const {isValidString} = require('./lib/utils');
-const MessageParser = require('./lib/message-parser');
+const {MessageParser, CommandType} = require('./lib/message-parser');
/**
* Represents a Tuya device.
@@ -100,7 +100,7 @@ class TuyaDevice extends EventEmitter {
// Create byte buffer
const buffer = this.device.parser.encode({
data: payload,
- commandByte: 10, // 0x0a
+ commandByte: CommandType.DP_QUERY,
sequenceN: ++this._currentSequenceN
});
@@ -190,7 +190,7 @@ class TuyaDevice extends EventEmitter {
const buffer = this.device.parser.encode({
data: payload,
encrypted: true, // Set commands must be encrypted
- commandByte: 7, // 0x07
+ commandByte: CommandType.CONTROL,
sequenceN: ++this._currentSequenceN
});
@@ -247,7 +247,7 @@ class TuyaDevice extends EventEmitter {
// Create byte buffer
const buffer = this.device.parser.encode({
data: Buffer.allocUnsafe(0),
- commandByte: 9 // 0x09
+ commandByte: CommandType.HEART_BEAT
});
// Send ping
@@ -385,16 +385,11 @@ class TuyaDevice extends EventEmitter {
// Response was received, so stop waiting
clearTimeout(this._sendTimeout);
- if (packet.commandByte === 0x09) {
+ if (packet.commandByte === CommandType.HEART_BEAT) {
debug(`Pong from ${this.device.ip}`);
return;
}
- if (packet.commandByte === 0x07) {
- debug('Set succeeded.');
- return;
- }
-
/**
* Emitted when data is returned from device.
* @event TuyaDevice#data
diff --git a/lib/message-parser.js b/lib/message-parser.js
index 9742598..7cd6705 100644
--- a/lib/message-parser.js
+++ b/lib/message-parser.js
@@ -3,6 +3,47 @@ const crc = require('./crc');
const HEADER_SIZE = 16;
+/**
+ * Human-readable definitions
+ * of command bytes.
+ * @readonly
+ * @private
+ */
+const CommandType = {
+ UDP: 0,
+ AP_CONFIG: 1,
+ ACTIVE: 2,
+ BIND: 3,
+ RENAME_GW: 4,
+ RENAME_DEVICE: 5,
+ UNBIND: 6,
+ CONTROL: 7,
+ STATUS: 8,
+ HEART_BEAT: 9,
+ DP_QUERY: 10,
+ QUERY_WIFI: 11,
+ TOKEN_BIND: 12,
+ CONTROL_NEW: 13,
+ ENABLE_WIFI: 14,
+ DP_QUERY_NEW: 16,
+ SCENE_EXECUTE: 17,
+ UDP_NEW: 19,
+ AP_CONFIG_NEW: 20,
+ LAN_GW_ACTIVE: 240,
+ LAN_SUB_DEV_REQUEST: 241,
+ LAN_DELETE_SUB_DEV: 242,
+ LAN_REPORT_SUB_DEV: 243,
+ LAN_SCENE: 244,
+ LAN_PUBLISH_CLOUD_CONFIG: 245,
+ LAN_PUBLISH_APP_CONFIG: 246,
+ LAN_EXPORT_APP_CONFIG: 247,
+ LAN_PUBLISH_SCENE_PANEL: 248,
+ LAN_REMOVE_GW: 249,
+ LAN_CHECK_GW_UPDATE: 250,
+ LAN_GW_UPDATE: 251,
+ LAN_SET_GW_CHANNEL: 252
+};
+
/**
* A complete packet.
* @typedef {Object} Packet
@@ -195,7 +236,8 @@ class MessageParser {
* @param {Object} options
* @param {Buffer|String|Object} options.data data to encode
* @param {Boolean} options.encrypted whether or not to encrypt the data
- * @param {Number} options.commandByte command byte of packet
+ * @param {Number} options.commandByte
+ * command byte of packet (use CommandType definitions)
* @param {Number} [options.sequenceN] optional, sequence number
* @returns {Buffer}
*/
@@ -226,9 +268,9 @@ class MessageParser {
payload = Buffer.from(options.data);
}
- // Ensure commandByte is a Number
- if (typeof options.commandByte === 'string') {
- options.commandByte = parseInt(options.commandByte, 16);
+ // Check command byte
+ if (Object.values(CommandType).indexOf(options.commandByte) === -1) {
+ throw new TypeError('Command byte not defined.');
}
// Allocate buffer with room for payload + 24 bytes for
@@ -253,4 +295,4 @@ class MessageParser {
}
}
-module.exports = MessageParser;
+module.exports = {MessageParser, CommandType};
diff --git a/test/parser.js b/test/parser.js
index fea803e..91e418d 100644
--- a/test/parser.js
+++ b/test/parser.js
@@ -1,12 +1,12 @@
import test from 'ava';
-const MessageParser = require('../lib/message-parser');
+const {MessageParser, CommandType} = require('../lib/message-parser');
test('encode and decode message', t => {
const payload = {devId: '002004265ccf7fb1b659', dps: {1: true, 2: 0}};
const parser = new MessageParser();
- const encoded = parser.encode({data: payload, commandByte: '0a'});
+ const encoded = parser.encode({data: payload, commandByte: CommandType.DP_QUERY});
const parsed = parser.parse(encoded)[0];
@@ -18,7 +18,7 @@ test('decode empty message', t => {
const payload = '';
const parser = new MessageParser();
- const encoded = parser.encode({data: payload, commandByte: '0a'});
+ const encoded = parser.encode({data: payload, commandByte: CommandType.DP_QUERY});
const parsed = parser.parse(encoded)[0];
t.falsy(parsed.payload);
@@ -28,7 +28,7 @@ test('decode message where payload is not a JSON object', t => {
const payload = 'gw id invalid';
const parser = new MessageParser();
- const encoded = parser.encode({data: payload, commandByte: '0a'});
+ const encoded = parser.encode({data: payload, commandByte: CommandType.DP_QUERY});
const parsed = parser.parse(encoded)[0];
@@ -39,7 +39,7 @@ test('decode corrupt (shortened) message', t => {
const payload = {devId: '002004265ccf7fb1b659', dps: {1: true, 2: 0}};
const parser = new MessageParser();
- const encoded = parser.encode({data: payload, commandByte: '0a'});
+ const encoded = parser.encode({data: payload, commandByte: CommandType.DP_QUERY});
t.throws(() => {
parser.parse(encoded.slice(0, -10));
@@ -50,7 +50,7 @@ test('decode corrupt (shorter than possible) message', t => {
const payload = {devId: '002004265ccf7fb1b659', dps: {1: true, 2: 0}};
const parser = new MessageParser();
- const encoded = parser.encode({data: payload, commandByte: '0a'});
+ const encoded = parser.encode({data: payload, commandByte: CommandType.DP_QUERY});
t.throws(() => {
parser.parse(encoded.slice(0, 23));
@@ -61,7 +61,7 @@ test('decode corrupt (prefix mismatch) message', t => {
const payload = {devId: '002004265ccf7fb1b659', dps: {1: true, 2: 0}};
const parser = new MessageParser();
- const encoded = parser.encode({data: payload, commandByte: '0a'});
+ const encoded = parser.encode({data: payload, commandByte: CommandType.DP_QUERY});
encoded.writeUInt32BE(0xDEADBEEF, 0);
t.throws(() => {
@@ -73,7 +73,7 @@ test('decode corrupt (suffix mismatch) message', t => {
const payload = {devId: '002004265ccf7fb1b659', dps: {1: true, 2: 0}};
const parser = new MessageParser();
- const encoded = parser.encode({data: payload, commandByte: '0a'});
+ const encoded = parser.encode({data: payload, commandByte: CommandType.DP_QUERY});
encoded.writeUInt32BE(0xDEADBEEF, encoded.length - 4);
t.throws(() => {
@@ -85,10 +85,18 @@ test('decode message with two packets', t => {
const payload = {devId: '002004265ccf7fb1b659', dps: {1: true, 2: 0}};
const parser = new MessageParser();
- const encoded = parser.encode({data: payload, commandByte: '0a'});
+ const encoded = parser.encode({data: payload, commandByte: CommandType.DP_QUERY});
const parsed = parser.parse(Buffer.concat([encoded, encoded]))[0];
t.deepEqual(parsed.payload, payload);
t.deepEqual(parsed.commandByte, 10);
});
+
+test('throw when called with invalid command byte', t => {
+ const parser = new MessageParser();
+
+ t.throws(() => {
+ parser.encode({data: {}, commandByte: 1000});
+ });
+});
From b9162cd50d939d78c1cd3af3151f6d5dd3b369db Mon Sep 17 00:00:00 2001
From: "renovate[bot]"
Date: Sat, 4 May 2019 21:20:53 +0000
Subject: [PATCH 34/40] Update dependency nyc to v14.1.0 (#194)
---
package-lock.json | 197 +++++++++++++++++++++++++++++++++++-----------
package.json | 2 +-
2 files changed, 153 insertions(+), 46 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 40ae459..0e8a6f3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6886,35 +6886,108 @@
"dev": true
},
"istanbul-lib-coverage": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
- "integrity": "sha512-LXTBICkMARVgo579kWDm8SqfB6nvSDKNqIOBEjmJRnL04JvoMHCYGWaMddQnseJYtkEuEvO/sIcOxPLk9gERug==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
+ "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
"dev": true
},
"istanbul-lib-hook": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.6.tgz",
- "integrity": "sha512-829DKONApZ7UCiPXcOYWSgkFXa4+vNYoNOt3F+4uDJLKL1OotAoVwvThoEj1i8jmOj7odbYcR3rnaHu+QroaXg==",
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz",
+ "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==",
"dev": true,
"requires": {
"append-transform": "^1.0.0"
}
},
"istanbul-lib-instrument": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.2.0.tgz",
- "integrity": "sha512-06IM3xShbNW4NgZv5AP4QH0oHqf1/ivFo8eFys0ZjPXHGldHJQWb3riYOKXqmOqfxXBfxu4B+g/iuhOPZH0RJg==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz",
+ "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==",
"dev": true,
"requires": {
- "@babel/generator": "^7.0.0",
- "@babel/parser": "^7.0.0",
- "@babel/template": "^7.0.0",
- "@babel/traverse": "^7.0.0",
- "@babel/types": "^7.0.0",
- "istanbul-lib-coverage": "^2.0.4",
+ "@babel/generator": "^7.4.0",
+ "@babel/parser": "^7.4.3",
+ "@babel/template": "^7.4.0",
+ "@babel/traverse": "^7.4.3",
+ "@babel/types": "^7.4.0",
+ "istanbul-lib-coverage": "^2.0.5",
"semver": "^6.0.0"
},
"dependencies": {
+ "@babel/generator": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz",
+ "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.4.4",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.11",
+ "source-map": "^0.5.0",
+ "trim-right": "^1.0.1"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
+ "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz",
+ "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz",
+ "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.4.4",
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz",
+ "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/generator": "^7.4.4",
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/parser": "^7.4.4",
+ "@babel/types": "^7.4.4",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.11"
+ }
+ },
+ "@babel/types": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
+ "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.11",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ },
"semver": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz",
@@ -6924,14 +6997,14 @@
}
},
"istanbul-lib-report": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.7.tgz",
- "integrity": "sha512-wLH6beJBFbRBLiTlMOBxmb85cnVM1Vyl36N48e4e/aTKSM3WbOx7zbVIH1SQ537fhhsPbX0/C5JB4qsmyRXXyA==",
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz",
+ "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==",
"dev": true,
"requires": {
- "istanbul-lib-coverage": "^2.0.4",
+ "istanbul-lib-coverage": "^2.0.5",
"make-dir": "^2.1.0",
- "supports-color": "^6.0.0"
+ "supports-color": "^6.1.0"
},
"dependencies": {
"has-flag": {
@@ -6974,18 +7047,32 @@
}
},
"istanbul-lib-source-maps": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.5.tgz",
- "integrity": "sha512-eDhZ7r6r1d1zQPVZehLc3D0K14vRba/eBYkz3rw16DLOrrTzve9RmnkcwrrkWVgO1FL3EK5knujVe5S8QHE9xw==",
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz",
+ "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==",
"dev": true,
"requires": {
"debug": "^4.1.1",
- "istanbul-lib-coverage": "^2.0.4",
+ "istanbul-lib-coverage": "^2.0.5",
"make-dir": "^2.1.0",
- "rimraf": "^2.6.2",
+ "rimraf": "^2.6.3",
"source-map": "^0.6.1"
},
"dependencies": {
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "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"
+ }
+ },
"make-dir": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
@@ -7002,6 +7089,15 @@
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true
},
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
"semver": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
@@ -7017,12 +7113,12 @@
}
},
"istanbul-reports": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.2.tgz",
- "integrity": "sha512-ZFuTdBQ3PSaPnm02aEA4R6mzQ2AF9w03CYiXADzWbbE48v/EFOWF4MaX4FT0NRdqIk48I7o0RPi+S8TMswaCbQ==",
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.5.tgz",
+ "integrity": "sha512-ilCSjE6f7elNIRxnSnIhnOpXdf3ryUT7Zkl+TaADItM638SWXjfNW40cujZCIjex4g4DTkzIy9kzwkaLruB50Q==",
"dev": true,
"requires": {
- "handlebars": "^4.1.0"
+ "handlebars": "^4.1.2"
}
},
"js-levenshtein": {
@@ -8411,9 +8507,9 @@
"dev": true
},
"nyc": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.0.0.tgz",
- "integrity": "sha512-R1zC6UZak6pzn5BZQorkSH5GdOGafrwyeja+eimS5Tu+KJ/hCgBc8qA1QWSzxQmT2FDl2lbpqPw7tBDbSvhAHg==",
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.0.tgz",
+ "integrity": "sha512-iy9fEV8Emevz3z/AanIZsoGa8F4U2p0JKevZ/F0sk+/B2r9E6Qn+EPs0bpxEhnAt6UPlTL8mQZIaSJy8sK0ZFw==",
"dev": true,
"requires": {
"archy": "^1.0.0",
@@ -8424,19 +8520,20 @@
"find-up": "^3.0.0",
"foreground-child": "^1.5.6",
"glob": "^7.1.3",
- "istanbul-lib-coverage": "^2.0.4",
- "istanbul-lib-hook": "^2.0.6",
- "istanbul-lib-instrument": "^3.2.0",
- "istanbul-lib-report": "^2.0.7",
- "istanbul-lib-source-maps": "^3.0.5",
- "istanbul-reports": "^2.2.2",
+ "istanbul-lib-coverage": "^2.0.5",
+ "istanbul-lib-hook": "^2.0.7",
+ "istanbul-lib-instrument": "^3.3.0",
+ "istanbul-lib-report": "^2.0.8",
+ "istanbul-lib-source-maps": "^3.0.6",
+ "istanbul-reports": "^2.2.4",
+ "js-yaml": "^3.13.1",
"make-dir": "^2.1.0",
"merge-source-map": "^1.1.0",
"resolve-from": "^4.0.0",
"rimraf": "^2.6.3",
"signal-exit": "^3.0.2",
"spawn-wrap": "^1.4.2",
- "test-exclude": "^5.2.2",
+ "test-exclude": "^5.2.3",
"uuid": "^3.3.2",
"yargs": "^13.2.2",
"yargs-parser": "^13.0.0"
@@ -8549,6 +8646,16 @@
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
"lcid": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
@@ -10828,9 +10935,9 @@
}
},
"test-exclude": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.2.tgz",
- "integrity": "sha512-N2pvaLpT8guUpb5Fe1GJlmvmzH3x+DAKmmyEQmFP792QcLYoGE1syxztSvPD1V8yPe6VrcCt6YGQVjSRjCASsA==",
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz",
+ "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==",
"dev": true,
"requires": {
"glob": "^7.1.3",
@@ -11349,9 +11456,9 @@
"dev": true
},
"uglify-js": {
- "version": "3.5.4",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.4.tgz",
- "integrity": "sha512-GpKo28q/7Bm5BcX9vOu4S46FwisbPbAmkkqPnGIpKvKTM96I85N6XHQV+k4I6FA2wxgLhcsSyHoNhzucwCflvA==",
+ "version": "3.5.10",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.10.tgz",
+ "integrity": "sha512-/GTF0nosyPLbdJBd+AwYiZ+Hu5z8KXWnO0WCGt1BQ/u9Iamhejykqmz5o1OHJ53+VAk6xVxychonnApDjuqGsw==",
"dev": true,
"optional": true,
"requires": {
diff --git a/package.json b/package.json
index 093ffe1..dc89b25 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
"clone": "2.1.2",
"coveralls": "3.0.3",
"documentation": "10.1.0",
- "nyc": "14.0.0",
+ "nyc": "14.1.0",
"xo": "0.24.0"
},
"xo": {
From 75e919767629dc715e5daca720a5b7265c9a6ffd Mon Sep 17 00:00:00 2001
From: "renovate[bot]"
Date: Wed, 8 May 2019 22:12:15 +0000
Subject: [PATCH 35/40] Update dependency documentation to v11 (#195)
---
package-lock.json | 681 ++++++++++++++++++++++++----------------------
package.json | 2 +-
2 files changed, 360 insertions(+), 323 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 0e8a6f3..843efb8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -56,18 +56,18 @@
}
},
"@babel/core": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.3.tgz",
- "integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.4.tgz",
+ "integrity": "sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.4.0",
- "@babel/helpers": "^7.4.3",
- "@babel/parser": "^7.4.3",
- "@babel/template": "^7.4.0",
- "@babel/traverse": "^7.4.3",
- "@babel/types": "^7.4.0",
+ "@babel/generator": "^7.4.4",
+ "@babel/helpers": "^7.4.4",
+ "@babel/parser": "^7.4.4",
+ "@babel/template": "^7.4.4",
+ "@babel/traverse": "^7.4.4",
+ "@babel/types": "^7.4.4",
"convert-source-map": "^1.1.0",
"debug": "^4.1.0",
"json5": "^2.1.0",
@@ -78,12 +78,12 @@
},
"dependencies": {
"@babel/generator": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz",
- "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz",
+ "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==",
"dev": true,
"requires": {
- "@babel/types": "^7.4.0",
+ "@babel/types": "^7.4.4",
"jsesc": "^2.5.1",
"lodash": "^4.17.11",
"source-map": "^0.5.0",
@@ -91,52 +91,52 @@
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz",
- "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
+ "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
"dev": true,
"requires": {
- "@babel/types": "^7.4.0"
+ "@babel/types": "^7.4.4"
}
},
"@babel/parser": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz",
- "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz",
+ "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==",
"dev": true
},
"@babel/template": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz",
- "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz",
+ "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.4.0",
- "@babel/types": "^7.4.0"
+ "@babel/parser": "^7.4.4",
+ "@babel/types": "^7.4.4"
}
},
"@babel/traverse": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz",
- "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz",
+ "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.4.0",
+ "@babel/generator": "^7.4.4",
"@babel/helper-function-name": "^7.1.0",
- "@babel/helper-split-export-declaration": "^7.4.0",
- "@babel/parser": "^7.4.3",
- "@babel/types": "^7.4.0",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/parser": "^7.4.4",
+ "@babel/types": "^7.4.4",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.11"
}
},
"@babel/types": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
- "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
+ "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -203,9 +203,9 @@
},
"dependencies": {
"@babel/types": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
- "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
+ "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -222,23 +222,23 @@
}
},
"@babel/helper-call-delegate": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.0.tgz",
- "integrity": "sha512-SdqDfbVdNQCBp3WhK2mNdDvHd3BD6qbmIc43CAyjnsfCmgHMeqgDcM3BzY2lchi7HBJGJ2CVdynLWbezaE4mmQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz",
+ "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==",
"dev": true,
"requires": {
- "@babel/helper-hoist-variables": "^7.4.0",
- "@babel/traverse": "^7.4.0",
- "@babel/types": "^7.4.0"
+ "@babel/helper-hoist-variables": "^7.4.4",
+ "@babel/traverse": "^7.4.4",
+ "@babel/types": "^7.4.4"
},
"dependencies": {
"@babel/generator": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz",
- "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz",
+ "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==",
"dev": true,
"requires": {
- "@babel/types": "^7.4.0",
+ "@babel/types": "^7.4.4",
"jsesc": "^2.5.1",
"lodash": "^4.17.11",
"source-map": "^0.5.0",
@@ -246,41 +246,41 @@
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz",
- "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
+ "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
"dev": true,
"requires": {
- "@babel/types": "^7.4.0"
+ "@babel/types": "^7.4.4"
}
},
"@babel/parser": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz",
- "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz",
+ "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==",
"dev": true
},
"@babel/traverse": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz",
- "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz",
+ "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.4.0",
+ "@babel/generator": "^7.4.4",
"@babel/helper-function-name": "^7.1.0",
- "@babel/helper-split-export-declaration": "^7.4.0",
- "@babel/parser": "^7.4.3",
- "@babel/types": "^7.4.0",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/parser": "^7.4.4",
+ "@babel/types": "^7.4.4",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.11"
}
},
"@babel/types": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
- "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
+ "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -297,32 +297,32 @@
}
},
"@babel/helper-create-class-features-plugin": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.3.tgz",
- "integrity": "sha512-UMl3TSpX11PuODYdWGrUeW6zFkdYhDn7wRLrOuNVM6f9L+S9CzmDXYyrp3MTHcwWjnzur1f/Op8A7iYZWya2Yg==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz",
+ "integrity": "sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA==",
"dev": true,
"requires": {
"@babel/helper-function-name": "^7.1.0",
"@babel/helper-member-expression-to-functions": "^7.0.0",
"@babel/helper-optimise-call-expression": "^7.0.0",
"@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-replace-supers": "^7.4.0",
- "@babel/helper-split-export-declaration": "^7.4.0"
+ "@babel/helper-replace-supers": "^7.4.4",
+ "@babel/helper-split-export-declaration": "^7.4.4"
},
"dependencies": {
"@babel/helper-split-export-declaration": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz",
- "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
+ "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
"dev": true,
"requires": {
- "@babel/types": "^7.4.0"
+ "@babel/types": "^7.4.4"
}
},
"@babel/types": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
- "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
+ "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -339,20 +339,20 @@
}
},
"@babel/helper-define-map": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz",
- "integrity": "sha512-wAhQ9HdnLIywERVcSvX40CEJwKdAa1ID4neI9NXQPDOHwwA+57DqwLiPEVy2AIyWzAk0CQ8qx4awO0VUURwLtA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz",
+ "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==",
"dev": true,
"requires": {
"@babel/helper-function-name": "^7.1.0",
- "@babel/types": "^7.4.0",
+ "@babel/types": "^7.4.4",
"lodash": "^4.17.11"
},
"dependencies": {
"@babel/types": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
- "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
+ "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -399,18 +399,18 @@
}
},
"@babel/helper-hoist-variables": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz",
- "integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz",
+ "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==",
"dev": true,
"requires": {
- "@babel/types": "^7.4.0"
+ "@babel/types": "^7.4.4"
},
"dependencies": {
"@babel/types": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
- "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
+ "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -496,24 +496,24 @@
}
},
"@babel/helper-replace-supers": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz",
- "integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz",
+ "integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==",
"dev": true,
"requires": {
"@babel/helper-member-expression-to-functions": "^7.0.0",
"@babel/helper-optimise-call-expression": "^7.0.0",
- "@babel/traverse": "^7.4.0",
- "@babel/types": "^7.4.0"
+ "@babel/traverse": "^7.4.4",
+ "@babel/types": "^7.4.4"
},
"dependencies": {
"@babel/generator": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz",
- "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz",
+ "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==",
"dev": true,
"requires": {
- "@babel/types": "^7.4.0",
+ "@babel/types": "^7.4.4",
"jsesc": "^2.5.1",
"lodash": "^4.17.11",
"source-map": "^0.5.0",
@@ -521,41 +521,41 @@
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz",
- "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
+ "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
"dev": true,
"requires": {
- "@babel/types": "^7.4.0"
+ "@babel/types": "^7.4.4"
}
},
"@babel/parser": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz",
- "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz",
+ "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==",
"dev": true
},
"@babel/traverse": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz",
- "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz",
+ "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.4.0",
+ "@babel/generator": "^7.4.4",
"@babel/helper-function-name": "^7.1.0",
- "@babel/helper-split-export-declaration": "^7.4.0",
- "@babel/parser": "^7.4.3",
- "@babel/types": "^7.4.0",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/parser": "^7.4.4",
+ "@babel/types": "^7.4.4",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.11"
}
},
"@babel/types": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
- "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
+ "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -622,23 +622,23 @@
}
},
"@babel/helpers": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz",
- "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz",
+ "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==",
"dev": true,
"requires": {
- "@babel/template": "^7.4.0",
- "@babel/traverse": "^7.4.3",
- "@babel/types": "^7.4.0"
+ "@babel/template": "^7.4.4",
+ "@babel/traverse": "^7.4.4",
+ "@babel/types": "^7.4.4"
},
"dependencies": {
"@babel/generator": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz",
- "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz",
+ "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==",
"dev": true,
"requires": {
- "@babel/types": "^7.4.0",
+ "@babel/types": "^7.4.4",
"jsesc": "^2.5.1",
"lodash": "^4.17.11",
"source-map": "^0.5.0",
@@ -646,52 +646,52 @@
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz",
- "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
+ "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
"dev": true,
"requires": {
- "@babel/types": "^7.4.0"
+ "@babel/types": "^7.4.4"
}
},
"@babel/parser": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz",
- "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz",
+ "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==",
"dev": true
},
"@babel/template": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz",
- "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz",
+ "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.4.0",
- "@babel/types": "^7.4.0"
+ "@babel/parser": "^7.4.4",
+ "@babel/types": "^7.4.4"
}
},
"@babel/traverse": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz",
- "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz",
+ "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.4.0",
+ "@babel/generator": "^7.4.4",
"@babel/helper-function-name": "^7.1.0",
- "@babel/helper-split-export-declaration": "^7.4.0",
- "@babel/parser": "^7.4.3",
- "@babel/types": "^7.4.0",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/parser": "^7.4.4",
+ "@babel/types": "^7.4.4",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.11"
}
},
"@babel/types": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
- "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
+ "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -779,22 +779,22 @@
}
},
"@babel/plugin-proposal-class-properties": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.0.tgz",
- "integrity": "sha512-t2ECPNOXsIeK1JxJNKmgbzQtoG27KIlVE61vTqX0DKR9E9sZlVVxWUtEW9D5FlZ8b8j7SBNCHY47GgPKCKlpPg==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz",
+ "integrity": "sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg==",
"dev": true,
"requires": {
- "@babel/helper-create-class-features-plugin": "^7.4.0",
+ "@babel/helper-create-class-features-plugin": "^7.4.4",
"@babel/helper-plugin-utils": "^7.0.0"
}
},
"@babel/plugin-proposal-decorators": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.0.tgz",
- "integrity": "sha512-d08TLmXeK/XbgCo7ZeZ+JaeZDtDai/2ctapTRsWWkkmy7G/cqz8DQN/HlWG7RR4YmfXxmExsbU3SuCjlM7AtUg==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz",
+ "integrity": "sha512-z7MpQz3XC/iQJWXH9y+MaWcLPNSMY9RQSthrLzak8R8hCj0fuyNk+Dzi9kfNe/JxxlWQ2g7wkABbgWjW36MTcw==",
"dev": true,
"requires": {
- "@babel/helper-create-class-features-plugin": "^7.4.0",
+ "@babel/helper-create-class-features-plugin": "^7.4.4",
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/plugin-syntax-decorators": "^7.2.0"
}
@@ -871,9 +871,9 @@
}
},
"@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.4.3.tgz",
- "integrity": "sha512-eYtYniPfQOPY8rpsR8YK5pioJHrFLXjXOeYRf0vr5sWSPJU13or3CxLFn+uIb6fhukbYNch+L2VDAlvME2DSAw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.4.4.tgz",
+ "integrity": "sha512-Amph7Epui1Dh/xxUxS2+K22/MUi6+6JVTvy3P58tja3B6yKTSjwwx0/d83rF7551D6PVSSoplQb8GCwqec7HRw==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
@@ -941,14 +941,31 @@
}
},
"@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.0.tgz",
- "integrity": "sha512-h/KjEZ3nK9wv1P1FSNb9G079jXrNYR0Ko+7XkOx85+gM24iZbPn0rh4vCftk+5QKY7y1uByFataBTmX7irEF1w==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz",
+ "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-regex": "^7.0.0",
+ "@babel/helper-regex": "^7.4.4",
"regexpu-core": "^4.5.4"
+ },
+ "dependencies": {
+ "@babel/helper-regex": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz",
+ "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.11"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ }
}
},
"@babel/plugin-syntax-async-generators": {
@@ -1161,9 +1178,9 @@
}
},
"@babel/plugin-transform-block-scoping": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.0.tgz",
- "integrity": "sha512-AWyt3k+fBXQqt2qb9r97tn3iBwFpiv9xdAiG+Gr2HpAZpuayvbL55yWrsV3MyHvXk/4vmSiedhDRl1YI2Iy5nQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz",
+ "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
@@ -1179,34 +1196,34 @@
}
},
"@babel/plugin-transform-classes": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.3.tgz",
- "integrity": "sha512-PUaIKyFUDtG6jF5DUJOfkBdwAS/kFFV3XFk7Nn0a6vR7ZT8jYw5cGtIlat77wcnd0C6ViGqo/wyNf4ZHytF/nQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz",
+ "integrity": "sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==",
"dev": true,
"requires": {
"@babel/helper-annotate-as-pure": "^7.0.0",
- "@babel/helper-define-map": "^7.4.0",
+ "@babel/helper-define-map": "^7.4.4",
"@babel/helper-function-name": "^7.1.0",
"@babel/helper-optimise-call-expression": "^7.0.0",
"@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-replace-supers": "^7.4.0",
- "@babel/helper-split-export-declaration": "^7.4.0",
+ "@babel/helper-replace-supers": "^7.4.4",
+ "@babel/helper-split-export-declaration": "^7.4.4",
"globals": "^11.1.0"
},
"dependencies": {
"@babel/helper-split-export-declaration": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz",
- "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
+ "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
"dev": true,
"requires": {
- "@babel/types": "^7.4.0"
+ "@babel/types": "^7.4.4"
}
},
"@babel/types": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
- "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
+ "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -1232,9 +1249,9 @@
}
},
"@babel/plugin-transform-destructuring": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.3.tgz",
- "integrity": "sha512-rVTLLZpydDFDyN4qnXdzwoVpk1oaXHIvPEOkOLyr88o7oHxVc/LyrnDx+amuBWGOwUb7D1s/uLsKBNTx08htZg==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz",
+ "integrity": "sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0"
@@ -1314,9 +1331,9 @@
}
},
"@babel/plugin-transform-flow-strip-types": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.0.tgz",
- "integrity": "sha512-C4ZVNejHnfB22vI2TYN4RUp2oCmq6cSEAg4RygSvYZUECRqUu9O4PMEMNJ4wsemaRGg27BbgYctG4BZh+AgIHw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz",
+ "integrity": "sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
@@ -1324,18 +1341,18 @@
}
},
"@babel/plugin-transform-for-of": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.3.tgz",
- "integrity": "sha512-UselcZPwVWNSURnqcfpnxtMehrb8wjXYOimlYQPBnup/Zld426YzIhNEvuRsEWVHfESIECGrxoI6L5QqzuLH5Q==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz",
+ "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0"
}
},
"@babel/plugin-transform-function-name": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.3.tgz",
- "integrity": "sha512-uT5J/3qI/8vACBR9I1GlAuU/JqBtWdfCrynuOkrWG6nCDieZd5przB1vfP59FRHBZQ9DC2IUfqr/xKqzOD5x0A==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz",
+ "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==",
"dev": true,
"requires": {
"@babel/helper-function-name": "^7.1.0",
@@ -1382,12 +1399,12 @@
}
},
"@babel/plugin-transform-modules-systemjs": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.0.tgz",
- "integrity": "sha512-gjPdHmqiNhVoBqus5qK60mWPp1CmYWp/tkh11mvb0rrys01HycEGD7NvvSoKXlWEfSM9TcL36CpsK8ElsADptQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz",
+ "integrity": "sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==",
"dev": true,
"requires": {
- "@babel/helper-hoist-variables": "^7.4.0",
+ "@babel/helper-hoist-variables": "^7.4.4",
"@babel/helper-plugin-utils": "^7.0.0"
}
},
@@ -1402,26 +1419,26 @@
}
},
"@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.4.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.2.tgz",
- "integrity": "sha512-NsAuliSwkL3WO2dzWTOL1oZJHm0TM8ZY8ZSxk2ANyKkt5SQlToGA4pzctmq1BEjoacurdwZ3xp2dCQWJkME0gQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.4.tgz",
+ "integrity": "sha512-Ki+Y9nXBlKfhD+LXaRS7v95TtTGYRAf9Y1rTDiE75zf8YQz4GDaWRXosMfJBXxnk88mGFjWdCRIeqDbon7spYA==",
"dev": true,
"requires": {
"regexp-tree": "^0.1.0"
},
"dependencies": {
"regexp-tree": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.5.tgz",
- "integrity": "sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==",
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.6.tgz",
+ "integrity": "sha512-LFrA98Dw/heXqDojz7qKFdygZmFoiVlvE1Zp7Cq2cvF+ZA+03Gmhy0k0PQlsC1jvHPiTUSs+pDHEuSWv6+6D7w==",
"dev": true
}
}
},
"@babel/plugin-transform-new-target": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.0.tgz",
- "integrity": "sha512-6ZKNgMQmQmrEX/ncuCwnnw1yVGoaOW5KpxNhoWI7pCQdA0uZ0HqHGqenCUIENAnxRjy2WwNQ30gfGdIgqJXXqw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz",
+ "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0"
@@ -1438,12 +1455,12 @@
}
},
"@babel/plugin-transform-parameters": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.3.tgz",
- "integrity": "sha512-ULJYC2Vnw96/zdotCZkMGr2QVfKpIT/4/K+xWWY0MbOJyMZuk660BGkr3bEKWQrrciwz6xpmft39nA4BF7hJuA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz",
+ "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==",
"dev": true,
"requires": {
- "@babel/helper-call-delegate": "^7.4.0",
+ "@babel/helper-call-delegate": "^7.4.4",
"@babel/helper-get-function-arity": "^7.0.0",
"@babel/helper-plugin-utils": "^7.0.0"
}
@@ -1498,9 +1515,9 @@
}
},
"@babel/plugin-transform-regenerator": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.3.tgz",
- "integrity": "sha512-kEzotPuOpv6/iSlHroCDydPkKYw7tiJGKlmYp6iJn4a6C/+b2FdttlJsLKYxolYHgotTJ5G5UY5h0qey5ka3+A==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.4.tgz",
+ "integrity": "sha512-Zz3w+pX1SI0KMIiqshFZkwnVGUhDZzpX2vtPzfJBKQQq8WsP/Xy9DNdELWivxcKOCX/Pywge4SiEaPaLtoDT4g==",
"dev": true,
"requires": {
"regenerator-transform": "^0.13.4"
@@ -1544,9 +1561,9 @@
}
},
"@babel/plugin-transform-template-literals": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz",
- "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz",
+ "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==",
"dev": true,
"requires": {
"@babel/helper-annotate-as-pure": "^7.0.0",
@@ -1563,20 +1580,20 @@
}
},
"@babel/plugin-transform-unicode-regex": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.3.tgz",
- "integrity": "sha512-lnSNgkVjL8EMtnE8eSS7t2ku8qvKH3eqNf/IwIfnSPUqzgqYmRwzdsQWv4mNQAN9Nuo6Gz1Y0a4CSmdpu1Pp6g==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz",
+ "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-regex": "^7.4.3",
+ "@babel/helper-regex": "^7.4.4",
"regexpu-core": "^4.5.4"
},
"dependencies": {
"@babel/helper-regex": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.3.tgz",
- "integrity": "sha512-hnoq5u96pLCfgjXuj8ZLX3QQ+6nAulS+zSgi6HulUwFbEruRAKwbGLU5OvXkE14L8XW6XsQEKsIDfgthKLRAyA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz",
+ "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==",
"dev": true,
"requires": {
"lodash": "^4.17.11"
@@ -1591,54 +1608,54 @@
}
},
"@babel/preset-env": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.3.tgz",
- "integrity": "sha512-FYbZdV12yHdJU5Z70cEg0f6lvtpZ8jFSDakTm7WXeJbLXh4R0ztGEu/SW7G1nJ2ZvKwDhz8YrbA84eYyprmGqw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.4.tgz",
+ "integrity": "sha512-FU1H+ACWqZZqfw1x2G1tgtSSYSfxJLkpaUQL37CenULFARDo+h4xJoVHzRoHbK+85ViLciuI7ME4WTIhFRBBlw==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.0.0",
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/plugin-proposal-async-generator-functions": "^7.2.0",
"@babel/plugin-proposal-json-strings": "^7.2.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.4.3",
+ "@babel/plugin-proposal-object-rest-spread": "^7.4.4",
"@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.4.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
"@babel/plugin-syntax-async-generators": "^7.2.0",
"@babel/plugin-syntax-json-strings": "^7.2.0",
"@babel/plugin-syntax-object-rest-spread": "^7.2.0",
"@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
"@babel/plugin-transform-arrow-functions": "^7.2.0",
- "@babel/plugin-transform-async-to-generator": "^7.4.0",
+ "@babel/plugin-transform-async-to-generator": "^7.4.4",
"@babel/plugin-transform-block-scoped-functions": "^7.2.0",
- "@babel/plugin-transform-block-scoping": "^7.4.0",
- "@babel/plugin-transform-classes": "^7.4.3",
+ "@babel/plugin-transform-block-scoping": "^7.4.4",
+ "@babel/plugin-transform-classes": "^7.4.4",
"@babel/plugin-transform-computed-properties": "^7.2.0",
- "@babel/plugin-transform-destructuring": "^7.4.3",
- "@babel/plugin-transform-dotall-regex": "^7.4.3",
+ "@babel/plugin-transform-destructuring": "^7.4.4",
+ "@babel/plugin-transform-dotall-regex": "^7.4.4",
"@babel/plugin-transform-duplicate-keys": "^7.2.0",
"@babel/plugin-transform-exponentiation-operator": "^7.2.0",
- "@babel/plugin-transform-for-of": "^7.4.3",
- "@babel/plugin-transform-function-name": "^7.4.3",
+ "@babel/plugin-transform-for-of": "^7.4.4",
+ "@babel/plugin-transform-function-name": "^7.4.4",
"@babel/plugin-transform-literals": "^7.2.0",
"@babel/plugin-transform-member-expression-literals": "^7.2.0",
"@babel/plugin-transform-modules-amd": "^7.2.0",
- "@babel/plugin-transform-modules-commonjs": "^7.4.3",
- "@babel/plugin-transform-modules-systemjs": "^7.4.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.4.4",
+ "@babel/plugin-transform-modules-systemjs": "^7.4.4",
"@babel/plugin-transform-modules-umd": "^7.2.0",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.2",
- "@babel/plugin-transform-new-target": "^7.4.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.4",
+ "@babel/plugin-transform-new-target": "^7.4.4",
"@babel/plugin-transform-object-super": "^7.2.0",
- "@babel/plugin-transform-parameters": "^7.4.3",
+ "@babel/plugin-transform-parameters": "^7.4.4",
"@babel/plugin-transform-property-literals": "^7.2.0",
- "@babel/plugin-transform-regenerator": "^7.4.3",
+ "@babel/plugin-transform-regenerator": "^7.4.4",
"@babel/plugin-transform-reserved-words": "^7.2.0",
"@babel/plugin-transform-shorthand-properties": "^7.2.0",
"@babel/plugin-transform-spread": "^7.2.0",
"@babel/plugin-transform-sticky-regex": "^7.2.0",
- "@babel/plugin-transform-template-literals": "^7.2.0",
+ "@babel/plugin-transform-template-literals": "^7.4.4",
"@babel/plugin-transform-typeof-symbol": "^7.2.0",
- "@babel/plugin-transform-unicode-regex": "^7.4.3",
- "@babel/types": "^7.4.0",
+ "@babel/plugin-transform-unicode-regex": "^7.4.4",
+ "@babel/types": "^7.4.4",
"browserslist": "^4.5.2",
"core-js-compat": "^3.0.0",
"invariant": "^2.2.2",
@@ -1647,81 +1664,101 @@
},
"dependencies": {
"@babel/helper-module-transforms": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.3.tgz",
- "integrity": "sha512-H88T9IySZW25anu5uqyaC1DaQre7ofM+joZtAaO2F8NBdFfupH0SZ4gKjgSFVcvtx/aAirqA9L9Clio2heYbZA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz",
+ "integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.0.0",
"@babel/helper-simple-access": "^7.1.0",
- "@babel/helper-split-export-declaration": "^7.0.0",
- "@babel/template": "^7.2.2",
- "@babel/types": "^7.2.2",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/template": "^7.4.4",
+ "@babel/types": "^7.4.4",
"lodash": "^4.17.11"
}
},
"@babel/helper-regex": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.3.tgz",
- "integrity": "sha512-hnoq5u96pLCfgjXuj8ZLX3QQ+6nAulS+zSgi6HulUwFbEruRAKwbGLU5OvXkE14L8XW6XsQEKsIDfgthKLRAyA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz",
+ "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==",
"dev": true,
"requires": {
"lodash": "^4.17.11"
}
},
+ "@babel/helper-split-export-declaration": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
+ "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.4.4"
+ }
+ },
"@babel/parser": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz",
- "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz",
+ "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==",
"dev": true
},
"@babel/plugin-proposal-object-rest-spread": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.3.tgz",
- "integrity": "sha512-xC//6DNSSHVjq8O2ge0dyYlhshsH4T7XdCVoxbi5HzLYWfsC5ooFlJjrXk8RcAT+hjHAK9UjBXdylzSoDK3t4g==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz",
+ "integrity": "sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/plugin-syntax-object-rest-spread": "^7.2.0"
}
},
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz",
+ "integrity": "sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-remap-async-to-generator": "^7.1.0"
+ }
+ },
"@babel/plugin-transform-dotall-regex": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.3.tgz",
- "integrity": "sha512-9Arc2I0AGynzXRR/oPdSALv3k0rM38IMFyto7kOCwb5F9sLUt2Ykdo3V9yUPR+Bgr4kb6bVEyLkPEiBhzcTeoA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz",
+ "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-regex": "^7.4.3",
+ "@babel/helper-regex": "^7.4.4",
"regexpu-core": "^4.5.4"
}
},
"@babel/plugin-transform-modules-commonjs": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.3.tgz",
- "integrity": "sha512-sMP4JqOTbMJMimqsSZwYWsMjppD+KRyDIUVW91pd7td0dZKAvPmhCaxhOzkzLParKwgQc7bdL9UNv+rpJB0HfA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz",
+ "integrity": "sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.4.3",
+ "@babel/helper-module-transforms": "^7.4.4",
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/helper-simple-access": "^7.1.0"
}
},
"@babel/template": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz",
- "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz",
+ "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.4.0",
- "@babel/types": "^7.4.0"
+ "@babel/parser": "^7.4.4",
+ "@babel/types": "^7.4.4"
}
},
"@babel/types": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
- "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
+ "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -2588,9 +2625,9 @@
"dev": true
},
"bail": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz",
- "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.4.tgz",
+ "integrity": "sha512-S8vuDB4w6YpRhICUDET3guPlQpaJl7od94tpZ0Fvnyp+MKW/HyDTcRDck+29C9g+d/qQHnddRH3+94kZdrW0Ww==",
"dev": true
},
"balanced-match": {
@@ -2790,14 +2827,14 @@
}
},
"browserslist": {
- "version": "4.5.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.5.tgz",
- "integrity": "sha512-0QFO1r/2c792Ohkit5XI8Cm8pDtZxgNl2H6HU4mHrpYz7314pEYcsAVVatM0l/YmxPnEzh9VygXouj4gkFUTKA==",
+ "version": "4.5.6",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.6.tgz",
+ "integrity": "sha512-o/hPOtbU9oX507lIqon+UvPYqpx3mHc8cV3QemSBTXwkG8gSQSK6UKvXcE/DcleU3+A59XTUHyCvZ5qGy8xVAg==",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30000960",
- "electron-to-chromium": "^1.3.124",
- "node-releases": "^1.1.14"
+ "caniuse-lite": "^1.0.30000963",
+ "electron-to-chromium": "^1.3.127",
+ "node-releases": "^1.1.17"
}
},
"buf-compare": {
@@ -2980,9 +3017,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30000963",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000963.tgz",
- "integrity": "sha512-n4HUiullc7Lw0LyzpeLa2ffP8KxFBGdxqD/8G3bSL6oB758hZ2UE2CVK+tQN958tJIi0/tfpjAc67aAtoHgnrQ==",
+ "version": "1.0.30000967",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000967.tgz",
+ "integrity": "sha512-rUBIbap+VJfxTzrM4akJ00lkvVb5/n5v3EGXfWzSH5zT8aJmGzjA8HWhJ4U6kCpzxozUSnB+yvAYDRPY6mRpgQ==",
"dev": true
},
"capture-stack-trace": {
@@ -2998,9 +3035,9 @@
"dev": true
},
"ccount": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz",
- "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.4.tgz",
+ "integrity": "sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w==",
"dev": true
},
"chalk": {
@@ -3026,27 +3063,27 @@
}
},
"character-entities": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz",
- "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==",
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.3.tgz",
+ "integrity": "sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w==",
"dev": true
},
"character-entities-html4": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz",
- "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.3.tgz",
+ "integrity": "sha512-SwnyZ7jQBCRHELk9zf2CN5AnGEc2nA+uKMZLHvcqhpPprjkYhiLn0DywMHgN5ttFZuITMATbh68M6VIVKwJbcg==",
"dev": true
},
"character-entities-legacy": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz",
- "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz",
+ "integrity": "sha512-YAxUpPoPwxYFsslbdKkhrGnXAtXoHNgYjlBM3WMXkWGTl5RsY3QmOyhwAgL8Nxm9l5LBThXGawxKPn68y6/fww==",
"dev": true
},
"character-reference-invalid": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz",
- "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.3.tgz",
+ "integrity": "sha512-VOq6PRzQBam/8Jm6XBGk2fNEnHXAdGd6go0rtd4weAGECBamHDwwCQSOT12TACIYUZegUXnV6xBXqUssijtxIg==",
"dev": true
},
"chardet": {
@@ -3409,9 +3446,9 @@
"dev": true
},
"collapse-white-space": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz",
- "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.5.tgz",
+ "integrity": "sha512-703bOOmytCYAX9cXYqoikYIx6twmFCXsnzRQheBcTG3nzKYBR4P/+wkYeH+Mvj7qUz8zZDtdyzbxfnEi/kYzRQ==",
"dev": true
},
"collection-visit": {
@@ -4017,9 +4054,9 @@
}
},
"documentation": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/documentation/-/documentation-10.1.0.tgz",
- "integrity": "sha512-fW8ZF0phIIEB1VBFx+P/oYBYCjDavghafH4uKNm3daBNw30tOJKo09EO4A7zUBl/qnGvFCNHhzDaxQv0tqLotA==",
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/documentation/-/documentation-11.0.0.tgz",
+ "integrity": "sha512-+lbAn7Eie0ObnQi6Ns0pv57FlriMG0sVg2S684UKUXHgfnfNR4War1w2gZ0i7wKinIDpxC7ivSx5B6X6wN794Q==",
"dev": true,
"requires": {
"@babel/core": "^7.1.2",
@@ -4264,9 +4301,9 @@
}
},
"electron-to-chromium": {
- "version": "1.3.127",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.127.tgz",
- "integrity": "sha512-1o25iFRf/dbgauTWalEzmD1EmRN3a2CzP/K7UVpYLEBduk96LF0FyUdCcf4Ry2mAWJ1VxyblFjC93q6qlLwA2A==",
+ "version": "1.3.133",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.133.tgz",
+ "integrity": "sha512-lyoC8aoqbbDqsprb6aPdt9n3DpOZZzdz/T4IZKsR0/dkZIxnJVUjjcpOSwA66jPRIOyDAamCTAUqweU05kKNSg==",
"dev": true
},
"emittery": {
@@ -6217,9 +6254,9 @@
"dev": true
},
"html-void-elements": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.3.tgz",
- "integrity": "sha512-SaGhCDPXJVNrQyKMtKy24q6IMdXg5FCPN3z+xizxw9l+oXQw5fOoaj/ERU5KqWhSYhXtW5bWthlDbTDLBhJQrA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.4.tgz",
+ "integrity": "sha512-yMk3naGPLrfvUV9TdDbuYXngh/TpHbA6TrOw3HL9kS8yhwx7i309BReNg7CbAJXGE+UMJ6je5OqJ7lC63o6YuQ==",
"dev": true
},
"http-parser-js": {
@@ -7576,9 +7613,9 @@
}
},
"markdown-escapes": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz",
- "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.3.tgz",
+ "integrity": "sha512-XUi5HJhhV5R74k8/0H2oCbCiYf/u4cO/rX8tnGkRvrqhsr5BRNU6Mg0yt/8UIx1iIS8220BNJsDb7XnILhLepw==",
"dev": true
},
"markdown-table": {
@@ -8430,9 +8467,9 @@
"dev": true
},
"node-releases": {
- "version": "1.1.17",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.17.tgz",
- "integrity": "sha512-/SCjetyta1m7YXLgtACZGDYJdCSIBAWorDWkGCGZlydP2Ll7J48l7j/JxNYZ+xsgSPbWfdulVS/aY+GdjUsQ7Q==",
+ "version": "1.1.18",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.18.tgz",
+ "integrity": "sha512-/mnVgm6u/8OwlIsoyRXtTI0RfQcxZoAZbdwyXap0EeWwcOpDDymyCHM2/aR9XKmHXrvizHoPAOs0pcbiJ6RUaA==",
"dev": true,
"requires": {
"semver": "^5.3.0"
@@ -11351,9 +11388,9 @@
"dev": true
},
"trim-lines": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.1.tgz",
- "integrity": "sha512-X+eloHbgJGxczUk1WSjIvn7aC9oN3jVE3rQfRVKcgpavi3jxtCn0VVKtjOBj64Yop96UYn/ujJRpTbCdAF1vyg==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.2.tgz",
+ "integrity": "sha512-3GOuyNeTqk3FAqc3jOJtw7FTjYl94XBR5aD9QnDbK/T4CA9sW/J0l9RoaRPE9wyPP7NF331qnHnvJFBJ+IDkmQ==",
"dev": true
},
"trim-newlines": {
diff --git a/package.json b/package.json
index dc89b25..8585fc0 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,7 @@
"ava": "1.4.1",
"clone": "2.1.2",
"coveralls": "3.0.3",
- "documentation": "10.1.0",
+ "documentation": "11.0.0",
"nyc": "14.1.0",
"xo": "0.24.0"
},
From 7ee1c94f13db7636ad55b9ccb3e736162de6b395 Mon Sep 17 00:00:00 2001
From: "renovate[bot]"
Date: Sat, 11 May 2019 16:26:40 +0000
Subject: [PATCH 36/40] Update dependency nyc to v14.1.1 (#196)
---
package-lock.json | 42 +++++++++++++++++++++---------------------
package.json | 2 +-
2 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 843efb8..31d8322 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7097,9 +7097,9 @@
},
"dependencies": {
"glob": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
- "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -7150,9 +7150,9 @@
}
},
"istanbul-reports": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.5.tgz",
- "integrity": "sha512-ilCSjE6f7elNIRxnSnIhnOpXdf3ryUT7Zkl+TaADItM638SWXjfNW40cujZCIjex4g4DTkzIy9kzwkaLruB50Q==",
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.4.tgz",
+ "integrity": "sha512-QCHGyZEK0bfi9GR215QSm+NJwFKEShbtc7tfbUdLAEzn3kKhLDDZqvljn8rPZM9v8CEOhzL1nlYoO4r1ryl67w==",
"dev": true,
"requires": {
"handlebars": "^4.1.2"
@@ -8544,9 +8544,9 @@
"dev": true
},
"nyc": {
- "version": "14.1.0",
- "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.0.tgz",
- "integrity": "sha512-iy9fEV8Emevz3z/AanIZsoGa8F4U2p0JKevZ/F0sk+/B2r9E6Qn+EPs0bpxEhnAt6UPlTL8mQZIaSJy8sK0ZFw==",
+ "version": "14.1.1",
+ "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz",
+ "integrity": "sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==",
"dev": true,
"requires": {
"archy": "^1.0.0",
@@ -8658,9 +8658,9 @@
}
},
"glob": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
- "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -8860,9 +8860,9 @@
}
},
"yargs-parser": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz",
- "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==",
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz",
+ "integrity": "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==",
"dev": true,
"requires": {
"camelcase": "^5.0.0",
@@ -10993,9 +10993,9 @@
}
},
"glob": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
- "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -11493,9 +11493,9 @@
"dev": true
},
"uglify-js": {
- "version": "3.5.10",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.10.tgz",
- "integrity": "sha512-/GTF0nosyPLbdJBd+AwYiZ+Hu5z8KXWnO0WCGt1BQ/u9Iamhejykqmz5o1OHJ53+VAk6xVxychonnApDjuqGsw==",
+ "version": "3.5.11",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.11.tgz",
+ "integrity": "sha512-izPJg8RsSyqxbdnqX36ExpbH3K7tDBsAU/VfNv89VkMFy3z39zFjunQGsSHOlGlyIfGLGprGeosgQno3bo2/Kg==",
"dev": true,
"optional": true,
"requires": {
diff --git a/package.json b/package.json
index 8585fc0..82f6c45 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
"clone": "2.1.2",
"coveralls": "3.0.3",
"documentation": "11.0.0",
- "nyc": "14.1.0",
+ "nyc": "14.1.1",
"xo": "0.24.0"
},
"xo": {
From a3299cb7cd9ca006d0b4da0aa1a97d41b8ab917a Mon Sep 17 00:00:00 2001
From: Colin Kuebler
Date: Thu, 16 May 2019 16:53:29 -0400
Subject: [PATCH 37/40] Add sequence number to heartbeat packets Allow
heartbeat packets to use revolver logic
---
index.js | 27 ++++++++++-----------------
1 file changed, 10 insertions(+), 17 deletions(-)
diff --git a/index.js b/index.js
index 44534fb..0dbee46 100644
--- a/index.js
+++ b/index.js
@@ -247,7 +247,8 @@ class TuyaDevice extends EventEmitter {
// Create byte buffer
const buffer = this.device.parser.encode({
data: Buffer.allocUnsafe(0),
- commandByte: CommandType.HEART_BEAT
+ commandByte: CommandType.HEART_BEAT,
+ sequenceN: ++this._currentSequenceN
});
// Send ping
@@ -385,6 +386,14 @@ class TuyaDevice extends EventEmitter {
// Response was received, so stop waiting
clearTimeout(this._sendTimeout);
+ // Call data resolver for sequence number
+ if (packet.sequenceN in this._resolvers) {
+ this._resolvers[packet.sequenceN](packet.payload);
+
+ // Remove resolver
+ delete this._resolvers[packet.sequenceN];
+ }
+
if (packet.commandByte === CommandType.HEART_BEAT) {
debug(`Pong from ${this.device.ip}`);
return;
@@ -400,22 +409,6 @@ class TuyaDevice extends EventEmitter {
* @property {Number} sequenceN the packet sequence number
*/
this.emit('data', packet.payload, packet.commandByte, packet.sequenceN);
-
- // Call data resolver for sequence number
- if (this._resolvers[packet.sequenceN]) {
- this._resolvers[packet.sequenceN](packet.payload);
-
- // Remove resolver
- delete this._resolvers[packet.sequenceN];
- } else if (packet.sequenceN === 0) {
- // Returned sequence number is 0, probably a response to a set command
-
- // Call the first resolver in the queue
- this._resolvers[Object.keys(this._resolvers)[0]](packet.payload);
-
- // Remove resolver
- delete this._resolvers[packet.sequenceN];
- }
}
/**
From 6553087cd52dc3f6b70190ebe6b4288d0823a4bc Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Tue, 21 May 2019 11:27:35 -0700
Subject: [PATCH 38/40] Fix heartbeat resolver logic
---
index.js | 13 +++----------
1 file changed, 3 insertions(+), 10 deletions(-)
diff --git a/index.js b/index.js
index 44534fb..580e6f2 100644
--- a/index.js
+++ b/index.js
@@ -387,6 +387,9 @@ class TuyaDevice extends EventEmitter {
if (packet.commandByte === CommandType.HEART_BEAT) {
debug(`Pong from ${this.device.ip}`);
+
+ // Remove resolver
+ delete this._resolvers[packet.sequenceN];
return;
}
@@ -405,14 +408,6 @@ class TuyaDevice extends EventEmitter {
if (this._resolvers[packet.sequenceN]) {
this._resolvers[packet.sequenceN](packet.payload);
- // Remove resolver
- delete this._resolvers[packet.sequenceN];
- } else if (packet.sequenceN === 0) {
- // Returned sequence number is 0, probably a response to a set command
-
- // Call the first resolver in the queue
- this._resolvers[Object.keys(this._resolvers)[0]](packet.payload);
-
// Remove resolver
delete this._resolvers[packet.sequenceN];
}
@@ -506,8 +501,6 @@ class TuyaDevice extends EventEmitter {
const thisID = dataRes.payload.gwId;
const thisIP = dataRes.payload.ip;
- console.log(this.foundDevices);
-
// Add to array if it doesn't exist
if (!this.foundDevices.some(e => (e.id === thisID && e.ip === thisIP))) {
this.foundDevices.push({id: thisID, ip: thisIP});
From 0166802157db3c9c6ad6df6f6ff524cf8e1fffc5 Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Mon, 27 May 2019 16:45:44 -0500
Subject: [PATCH 39/40] Add sequence number to heartbeat packet
---
index.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/index.js b/index.js
index 580e6f2..54d799b 100644
--- a/index.js
+++ b/index.js
@@ -247,7 +247,8 @@ class TuyaDevice extends EventEmitter {
// Create byte buffer
const buffer = this.device.parser.encode({
data: Buffer.allocUnsafe(0),
- commandByte: CommandType.HEART_BEAT
+ commandByte: CommandType.HEART_BEAT,
+ sequenceN: ++this._currentSequenceN
});
// Send ping
@@ -405,7 +406,7 @@ class TuyaDevice extends EventEmitter {
this.emit('data', packet.payload, packet.commandByte, packet.sequenceN);
// Call data resolver for sequence number
- if (this._resolvers[packet.sequenceN]) {
+ if (packet.sequenceN in this._resolvers) {
this._resolvers[packet.sequenceN](packet.payload);
// Remove resolver
From a959dd27aa906c666c21cbc478969f5ba9ad32b6 Mon Sep 17 00:00:00 2001
From: Max Isom
Date: Fri, 31 May 2019 20:48:51 -0500
Subject: [PATCH 40/40] Fix set() resolver
---
index.js | 20 +++++++++++++++++---
package-lock.json | 32 +++++++++++++++++++++++++++++++-
package.json | 3 ++-
test/find.js | 22 +++++++++++++++++++++-
4 files changed, 71 insertions(+), 6 deletions(-)
diff --git a/index.js b/index.js
index 54d799b..aa40ba1 100644
--- a/index.js
+++ b/index.js
@@ -66,6 +66,8 @@ class TuyaDevice extends EventEmitter {
this._currentSequenceN = 0;
this._resolvers = {};
+
+ this._waitingForSetToResolve = false;
}
/**
@@ -195,12 +197,13 @@ class TuyaDevice extends EventEmitter {
});
// Send request and wait for response
+ this._waitingForSetToResolve = true;
return new Promise((resolve, reject) => {
try {
// Send request
- this._send(buffer).then(data => {
- resolve(data);
- });
+ this._send(buffer);
+
+ this._setResolver = resolve;
} catch (error) {
reject(error);
}
@@ -405,6 +408,17 @@ class TuyaDevice extends EventEmitter {
*/
this.emit('data', packet.payload, packet.commandByte, packet.sequenceN);
+ // Status response to SET command
+ if (packet.sequenceN === 0 &&
+ packet.commandByte === CommandType.STATUS &&
+ this._waitingForSetToResolve) {
+ this._setResolver(packet.payload);
+
+ // Remove resolver
+ this._setResolver = undefined;
+ return;
+ }
+
// Call data resolver for sequence number
if (packet.sequenceN in this._resolvers) {
this._resolvers[packet.sequenceN](packet.payload);
diff --git a/package-lock.json b/package-lock.json
index 6c4de19..25b1d27 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1203,7 +1203,9 @@
"dev": true
},
"@tuyapi/stub": {
- "version": "0.1.2",
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@tuyapi/stub/-/stub-0.1.3.tgz",
+ "integrity": "sha512-Jd1bmGgJNd94h3o7/fQjctikphKZxp6FyJ3UTpNFZ2nJcN9GcGlpC+Zi2vTE9OcW1A+FFfPMT82WagFNqH+7mg==",
"dev": true,
"requires": {
"debug": "^4.1.1",
@@ -2628,6 +2630,12 @@
}
}
},
+ "delay": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/delay/-/delay-4.2.0.tgz",
+ "integrity": "sha512-EBX+pZE4qSowGAMr6M0cLiPRQu2Kus/qTNLO7c+EoXpTPJH9ApFdHX+cQU1WsSHXgwhLyidfZ5Hxuq6ctWhSdw==",
+ "dev": true
+ },
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -9720,6 +9728,28 @@
"safe-buffer": "^5.0.1"
}
},
+ "tuyapi": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/tuyapi/-/tuyapi-4.0.4.tgz",
+ "integrity": "sha512-0gU6um3Imj3jHNm1cUuP1mXJdf0Z7H+kjhqlQfxuqUwwaB4hAmENatF6mmRhpF6NDzq181rXxU89hJpmw37Lmg==",
+ "dev": true,
+ "requires": {
+ "debug": "4.1.1",
+ "p-retry": "4.1.0",
+ "p-timeout": "3.0.0"
+ },
+ "dependencies": {
+ "p-timeout": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.0.0.tgz",
+ "integrity": "sha512-HKUsVzU+2A+CcItUxgZ4Q1th5Hh2DHtSsh7gLTMkrL8Ki4Ss736nFp+yqb9M/ZKSKb5il0IXeLzBmUqD3k3mzQ==",
+ "dev": true,
+ "requires": {
+ "p-finally": "^1.0.0"
+ }
+ }
+ }
+ },
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
diff --git a/package.json b/package.json
index 23698bd..61e690c 100644
--- a/package.json
+++ b/package.json
@@ -42,10 +42,11 @@
"p-timeout": "3.1.0"
},
"devDependencies": {
- "@tuyapi/stub": "0.1.2",
+ "@tuyapi/stub": "0.1.3",
"ava": "1.4.1",
"clone": "2.1.2",
"coveralls": "3.0.3",
+ "delay": "4.2.0",
"documentation": "9.3.1",
"nyc": "13.3.0",
"xo": "0.24.0"
diff --git a/test/find.js b/test/find.js
index 2f4c7c3..86a9f31 100644
--- a/test/find.js
+++ b/test/find.js
@@ -1,6 +1,7 @@
import test from 'ava';
import TuyaStub from '@tuyapi/stub';
import clone from 'clone';
+import delay from 'delay';
const TuyAPI = require('..');
@@ -8,6 +9,13 @@ const stub = new TuyaStub({id: '22325186db4a2217dc8e',
key: '4226aa407d5c1e2b',
state: {1: false, 2: true}});
+// You may notice that at the end of each test
+// there's a delay() before the function exits.
+// This is to prevent race conditions that can
+// occur in which a UDP broadcast lags after the
+// server is torn down and is captured by the
+// following test, skewing the results.
+
test.serial('find device on network using deprecated resolveId', async t => {
const stubDevice = new TuyAPI({id: '22325186db4a2217dc8e',
key: '4226aa407d5c1e2b'});
@@ -21,6 +29,8 @@ test.serial('find device on network using deprecated resolveId', async t => {
stubDevice.disconnect();
thisStub.shutdown();
+ await delay(100);
+
t.not(stubDevice.device.ip, undefined);
});
@@ -37,6 +47,8 @@ test.serial('find device on network by ID', async t => {
stubDevice.disconnect();
thisStub.shutdown();
+ await delay(100);
+
t.not(stubDevice.device.ip, undefined);
});
@@ -53,6 +65,8 @@ test.serial('find device on network by IP', async t => {
stubDevice.disconnect();
thisStub.shutdown();
+ await delay(100);
+
t.not(stubDevice.device.id, undefined);
});
@@ -70,6 +84,8 @@ test.serial('find returns if both ID and IP are already set', async t => {
stubDevice.disconnect();
thisStub.shutdown();
+ await delay(100);
+
t.is(true, result);
});
@@ -81,10 +97,12 @@ test.serial('find throws timeout error', async t => {
thisStub.startServer();
await t.throwsAsync(() => {
- return stubDevice.find({timeout: 1}).catch(error => {
+ return stubDevice.find({timeout: 1}).catch(async error => {
stubDevice.disconnect();
thisStub.shutdown();
+ await delay(100);
+
throw error;
});
});
@@ -103,5 +121,7 @@ test.serial('find with option all', async t => {
stubDevice.disconnect();
thisStub.shutdown();
+ await delay(100);
+
t.truthy(foundDevices.length);
});