Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/betaflight/betaflight-configurator.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ Blackman <blckmn@users.noreply.github.com>2022-09-18 02:03:21 +0300
committerGitHub <noreply@github.com>2022-09-18 02:03:21 +0300
commit8813538fef0c5d7769cd158b915ef132fbe3b03e (patch)
tree959c2694a75fc1ade25f4038d5bda778c616b64d
parente0692c135004f80e618a64cce94c9cf9ba400189 (diff)
parentd03cdfc425a5f46c54270388925c0b7921c36c4f (diff)
Merge pull request #2922 from freasy/feature/mdns_check_and_resolve
-rw-r--r--cordova/config_template.xml1
-rw-r--r--cordova/package_template.json4
-rw-r--r--package.json6
-rw-r--r--src/js/port_handler.js121
-rw-r--r--src/main.html20
-rw-r--r--yarn.lock123
6 files changed, 241 insertions, 34 deletions
diff --git a/cordova/config_template.xml b/cordova/config_template.xml
index 026bc5c6..6797a3e9 100644
--- a/cordova/config_template.xml
+++ b/cordova/config_template.xml
@@ -7,6 +7,7 @@
<access origin="*"/>
<allow-intent href="http://*/*"/>
<allow-intent href="https://*/*"/>
+ <allow-intent href="tcp://*/*"/>
<allow-intent href="tel:*"/>
<allow-intent href="sms:*"/>
<allow-intent href="mailto:*"/>
diff --git a/cordova/package_template.json b/cordova/package_template.json
index 762a43a8..a700c829 100644
--- a/cordova/package_template.json
+++ b/cordova/package_template.json
@@ -27,6 +27,7 @@
"cordova-plugin-whitelist": "^1.3.4",
"cordova-plugin-theme-detection": "^1.2.1",
"cordova-chrome-sockets-tcp": "^1.4.0",
+ "cordova-plugin-zeroconf": "^1.4.2",
"bf-cordovarduino": "^1.0.0",
"@ionic-native/core": "^5.1.0",
"@ionic-native/ionic-webview": "^5.36.0",
@@ -56,7 +57,8 @@
"cordova-plugin-theme-detection": {},
"bf-cordova-plugin-appavailability": {},
"cordova-chrome-sockets-tcp": {},
- "cordova-plugin-ionic-webview": {}
+ "cordova-plugin-ionic-webview": {},
+ "cordova-plugin-zeroconf": {}
}
}
}
diff --git a/package.json b/package.json
index 95145cfa..4def1faf 100644
--- a/package.json
+++ b/package.json
@@ -54,6 +54,7 @@
"@fortawesome/fontawesome-free": "^5.13.0",
"@panter/vue-i18next": "^0.15.2",
"bluebird": "^3.7.2",
+ "bonjour": "^3.5.0",
"djv": "^2.1.4",
"dompurify": "^2.3.6",
"i18next": "^19.0.0",
@@ -66,6 +67,7 @@
"jquery-ui-npm": "^1.12.0",
"lru_map": "^0.3.3",
"marked": "^4.0.17",
+ "multicast-dns": "^7.2.4",
"multiple-select": "^1.5.2",
"nw-vue-devtools-prebuilt": "^0.0.10",
"object-hash": "^3.0.0",
@@ -75,7 +77,7 @@
"switchery-latest": "^0.8.2",
"three": "~0.97.0",
"universal-ga": "^1.2.0",
- "vue": "2.6.12"
+ "vue": "^2.6.14"
},
"devDependencies": {
"@babel/core": "^7.18.5",
@@ -139,7 +141,7 @@
"through2": "^4.0.2",
"vinyl-source-stream": "^2.0.0",
"vue-loader": "^15.9.8",
- "vue-template-compiler": "^2.6.12",
+ "vue-template-compiler": "^2.6.14",
"yarn": "^1.22.17"
},
"optionalDependencies": {
diff --git a/src/js/port_handler.js b/src/js/port_handler.js
index b204ebcc..bf8508ba 100644
--- a/src/js/port_handler.js
+++ b/src/js/port_handler.js
@@ -1,6 +1,9 @@
'use strict';
const TIMEOUT_CHECK = 500 ; // With 250 it seems that it produces a memory leak and slowdown in some versions, reason unknown
+const MDNS_INTERVAL = 10000;
+const TCP_CHECK_INTERVAL = 5000;
+const TCP_TIMEOUT = 2000;
const usbDevices = { filters: [
{'vendorId': 1155, 'productId': 57105}, // STM Device in DFU Mode || Digital Radio in USB mode
@@ -29,6 +32,94 @@ PortHandler.initialize = function () {
// fill dropdown with version numbers
generateVirtualApiVersions();
+ const self = this;
+
+ self.mdnsBrowser = {
+ services: [],
+ browser: null,
+ init: false,
+ };
+
+ let bonjour = {};
+
+ if (!self.mdnsBrowser.init) {
+ if (GUI.isCordova()) {
+ const zeroconf = cordova.plugins.zeroconf;
+ zeroconf.registerAddressFamily = 'ipv4'; // or 'ipv6' ('any' by default)
+ zeroconf.watchAddressFamily = 'ipv4'; // or 'ipv6' ('any' by default)
+ zeroconf.watch("_http._tcp.", "local.", (result) => {
+ const action = result.action;
+ const service = result.service;
+ if (['added', 'resolved'].includes(action)) {
+ console.log("Zeroconf Service Changed", service);
+ self.mdnsBrowser.services.push({
+ addresses: service.ipv4Addresses,
+ txt: service.txtRecord,
+ fqdn: service.hostname,
+ });
+ } else {
+ console.log("Zeroconf Service Removed", service);
+ self.mdnsBrowser.services = mdnsBrowser.services.filter(s => s.fqdn !== service.hostname);
+ }
+ });
+ } else {
+ bonjour = require('bonjour')();
+ self.mdnsBrowser.browser = bonjour.find({ type: 'http' }, function(service) {
+ console.log("Found HTTP service", service);
+ self.mdnsBrowser.services.push({
+ addresses: service.addresses,
+ txt: service.txt,
+ fqdn: service.host,
+ });
+ });
+ }
+
+ self.mdnsBrowser.init = true;
+ }
+
+ const tcpCheck = function() {
+ if (!self.tcpCheckLock) {
+ self.tcpCheckLock = true;
+ if (self.initialPorts?.length > 0) {
+ const tcpPorts = self.initialPorts.filter(p => p.path.startsWith('tcp://'));
+ tcpPorts.forEach(function (port) {
+ const removePort = () => {
+ self.mdnsBrowser.services = self.mdnsBrowser.services.filter(s => s.fqdn !== port.fqdn);
+ };
+ $.get({
+ host: port.path.split('//').pop(),
+ port: 80,
+ timeout: TCP_TIMEOUT,
+ }, (res) => res.destroy())
+ .fail(removePort);
+ });
+
+ //timeout is 2000ms for every found port, so wait that time before checking again
+ setTimeout(() => {
+ self.tcpCheckLock = false;
+ }, Math.min(tcpPorts.length, 1) * (TCP_TIMEOUT + 1));
+ } else {
+ self.tcpCheckLock = false;
+ }
+ }
+
+ setTimeout(() => {
+ tcpCheck();
+ }, TCP_CHECK_INTERVAL);
+ };
+
+ tcpCheck();
+
+ if (self.mdns_timer) {
+ clearInterval(self.mdns_timer);
+ }
+
+ self.mdns_timer = setInterval(() => {
+ if (!GUI.connected_to && !GUI.isCordova() && self.mdnsBrowser.browser) {
+ self.mdnsBrowser.browser.update();
+ }
+ }, MDNS_INTERVAL);
+
// start listening, check after TIMEOUT_CHECK ms
this.check();
};
@@ -52,7 +143,19 @@ PortHandler.check = function () {
PortHandler.check_serial_devices = function () {
const self = this;
- serial.getDevices(function(currentPorts) {
+ serial.getDevices(function(cp) {
+
+ let currentPorts = [
+ ...cp,
+ ...(self.mdnsBrowser?.services?.filter(s => s.txt.vendor === 'elrs' && s.txt.type === 'rx')
+ .map(s => s.addresses.map(a => ({
+ path: `tcp://${a}`,
+ displayName: `${s.txt.target} - ${s.txt.version}`,
+ fqdn: s.fqdn,
+ vendorId: 0,
+ productId: 0,
+ }))).flat() ?? []),
+ ].filter(Boolean);
// auto-select port (only during initialization)
if (!self.initialPorts) {
@@ -128,7 +231,7 @@ PortHandler.removePort = function(currentPorts) {
// disconnect "UI" - routine can't fire during atmega32u4 reboot procedure !!!
if (GUI.connected_to) {
for (let i = 0; i < removePorts.length; i++) {
- if (removePorts[i] === GUI.connected_to) {
+ if (removePorts[i].path === GUI.connected_to) {
$('div#header_btns a.connect').click();
}
}
@@ -162,19 +265,13 @@ PortHandler.detectPort = function(currentPorts) {
const newPorts = self.array_difference(currentPorts, self.initialPorts);
if (newPorts.length) {
- // pick last_used_port for manual tcp auto-connect or detect and select new port for serial
currentPorts = self.updatePortSelect(currentPorts);
console.log(`PortHandler - Found: ${JSON.stringify(newPorts)}`);
- const result = ConfigStorage.get('last_used_port');
- if (result.last_used_port) {
- if (result.last_used_port.includes('tcp')) {
- self.portPickerElement.val('manual');
- } else if (newPorts.length === 1) {
- self.portPickerElement.val(newPorts[0].path);
- } else if (newPorts.length > 1) {
- self.selectPort(currentPorts);
- }
+ if (newPorts.length === 1) {
+ self.portPickerElement.val(newPorts[0].path);
+ } else if (newPorts.length > 1) {
+ self.selectPort(currentPorts);
}
self.port_available = true;
diff --git a/src/main.html b/src/main.html
index ec43cd6d..f08f4018 100644
--- a/src/main.html
+++ b/src/main.html
@@ -159,9 +159,9 @@
</div>
<betaflight-logo
:configurator-version="CONFIGURATOR.getDisplayVersion()"
- :firmware-version="FC.CONFIG.flightControllerVersion"
- :firmware-id="FC.CONFIG.flightControllerIdentifier"
- :hardware-id="FC.CONFIG.hardwareName"
+ :firmware-version="FC.CONFIG.flightControllerVersion"
+ :firmware-id="FC.CONFIG.flightControllerIdentifier"
+ :hardware-id="FC.CONFIG.hardwareName"
></betaflight-logo>
<div id="port-picker">
<div id="port-override-option">
@@ -218,7 +218,7 @@
<div class="battery-status"></div>
</div>
</div>
- <battery-legend
+ <battery-legend
:voltage="FC.ANALOG.voltage"
:vbatmaxcellvoltage="FC.BATTERY_CONFIG.vbatmaxcellvoltage"
></battery-legend>
@@ -294,9 +294,9 @@
<div class="tab_container">
<betaflight-logo
:configurator-version="CONFIGURATOR.getDisplayVersion()"
- :firmware-version="FC.CONFIG.flightControllerVersion"
- :firmware-id="FC.CONFIG.flightControllerIdentifier"
- :hardware-id="FC.CONFIG.hardwareName"
+ :firmware-version="FC.CONFIG.flightControllerVersion"
+ :firmware-id="FC.CONFIG.flightControllerIdentifier"
+ :hardware-id="FC.CONFIG.hardwareName"
></betaflight-logo>
<div id="tabs">
<ul class="mode-disconnected">
@@ -373,9 +373,9 @@
:cpu-load="FC.CONFIG.cpuload"
:configurator-version="CONFIGURATOR.getDisplayVersion()"
- :firmware-version="FC.CONFIG.flightControllerVersion"
- :firmware-id="FC.CONFIG.flightControllerIdentifier"
- :hardware-id="FC.CONFIG.hardwareName"
+ :firmware-version="FC.CONFIG.flightControllerVersion"
+ :firmware-id="FC.CONFIG.flightControllerIdentifier"
+ :hardware-id="FC.CONFIG.hardwareName"
></status-bar>
<div id="cache">
<div class="data-loading">
diff --git a/yarn.lock b/yarn.lock
index 9317741e..64e40d52 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1439,6 +1439,11 @@
resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919"
integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==
+"@leichtgewicht/ip-codec@^2.0.1":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b"
+ integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==
+
"@malept/cross-spawn-promise@^1.1.0":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d"
@@ -3669,6 +3674,11 @@ array-flatten@1.1.1:
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
+array-flatten@^2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
+ integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
+
array-includes@^3.0.3:
version "3.1.4"
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9"
@@ -4220,6 +4230,18 @@ body-parser@^1.19.0:
raw-body "2.4.2"
type-is "~1.6.18"
+bonjour@^3.5.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
+ integrity sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==
+ dependencies:
+ array-flatten "^2.1.0"
+ deep-equal "^1.0.1"
+ dns-equal "^1.0.0"
+ dns-txt "^2.0.2"
+ multicast-dns "^6.0.1"
+ multicast-dns-service-types "^1.1.0"
+
boolbase@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
@@ -4503,6 +4525,11 @@ buffer-from@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+buffer-indexof@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
+ integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
+
buffer-xor@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
@@ -5851,6 +5878,18 @@ deep-eql@^3.0.1:
dependencies:
type-detect "^4.0.0"
+deep-equal@^1.0.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
+ integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==
+ dependencies:
+ is-arguments "^1.0.4"
+ is-date-object "^1.0.1"
+ is-regex "^1.0.4"
+ object-is "^1.0.1"
+ object-keys "^1.1.1"
+ regexp.prototype.flags "^1.2.0"
+
deep-extend@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
@@ -6111,6 +6150,33 @@ djv@^2.1.4:
optionalDependencies:
"@korzio/djv-draft-04" "^2.0.1"
+dns-equal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
+ integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==
+
+dns-packet@^1.3.1:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f"
+ integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==
+ dependencies:
+ ip "^1.1.0"
+ safe-buffer "^5.0.1"
+
+dns-packet@^5.2.2:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b"
+ integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==
+ dependencies:
+ "@leichtgewicht/ip-codec" "^2.0.1"
+
+dns-txt@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
+ integrity sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==
+ dependencies:
+ buffer-indexof "^1.0.0"
+
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
@@ -8937,6 +9003,11 @@ invert-kv@^1.0.0:
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
+ip@^1.1.0:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48"
+ integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==
+
ip@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
@@ -11230,6 +11301,27 @@ ms@2.1.3, ms@^2.0.0:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+multicast-dns-service-types@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
+ integrity sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==
+
+multicast-dns@^6.0.1:
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
+ integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==
+ dependencies:
+ dns-packet "^1.3.1"
+ thunky "^1.0.2"
+
+multicast-dns@^7.2.4:
+ version "7.2.5"
+ resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced"
+ integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==
+ dependencies:
+ dns-packet "^5.2.2"
+ thunky "^1.0.2"
+
multipipe@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b"
@@ -11764,6 +11856,14 @@ object-inspect@^1.8.0:
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
+object-is@^1.0.1:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
+ integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
@@ -13510,7 +13610,7 @@ regex-not@^1.0.0, regex-not@^1.0.2:
extend-shallow "^3.0.2"
safe-regex "^1.1.0"
-regexp.prototype.flags@^1.4.1:
+regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.1:
version "1.4.3"
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac"
integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==
@@ -15390,6 +15490,11 @@ through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1:
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+thunky@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
+ integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
+
time-stamp@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
@@ -16393,10 +16498,10 @@ vue-style-loader@^4.1.0:
hash-sum "^1.0.2"
loader-utils "^1.0.2"
-vue-template-compiler@^2.6.12:
- version "2.6.12"
- resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz#947ed7196744c8a5285ebe1233fe960437fcc57e"
- integrity sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==
+vue-template-compiler@^2.6.14:
+ version "2.6.14"
+ resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz#a2f0e7d985670d42c9c9ee0d044fed7690f4f763"
+ integrity sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==
dependencies:
de-indent "^1.0.2"
he "^1.1.0"
@@ -16406,10 +16511,10 @@ vue-template-es2015-compiler@^1.9.0:
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
-vue@2.6.12:
- version "2.6.12"
- resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123"
- integrity sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==
+vue@^2.6.14:
+ version "2.6.14"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235"
+ integrity sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==
walker@^1.0.7, walker@~1.0.5:
version "1.0.8"