aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--Gemfile.lock4
-rw-r--r--package-lock.json12
-rw-r--r--src/assets/js/bundle.js14
3 files changed, 18 insertions, 12 deletions
diff --git a/Gemfile.lock b/Gemfile.lock
index 9914fac..66e4e30 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -100,9 +100,9 @@ GEM
rouge (4.7.0)
rubyzip (3.7.0)
safe_yaml (1.0.5)
- sass-embedded (1.105.1-arm64-darwin)
+ sass-embedded (1.105.2-arm64-darwin)
google-protobuf (~> 4.31)
- sass-embedded (1.105.1-x86_64-linux-gnu)
+ sass-embedded (1.105.2-x86_64-linux-gnu)
google-protobuf (~> 4.31)
sawyer (0.9.3)
addressable (>= 2.3.5)
diff --git a/package-lock.json b/package-lock.json
index a665727..7141473 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1034,9 +1034,9 @@
}
},
"node_modules/ip-address": {
- "version": "10.7.3",
- "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.3.tgz",
- "integrity": "sha512-A1kdq/tSb5QjvKvAMgIoEvDBIgL7qaqVP/jkvSwYYRZ9iEzvPpopxp2wQfu3SuZRHtpHNxMn8Fs0bS+gf5Xmwg==",
+ "version": "10.7.4",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.4.tgz",
+ "integrity": "sha512-DWBMKyeM25D70nrIiTkgQth59/G+naKOTep6huF9j+GmeK3DMD60Zvxg5d5qQnz+38AHgou6ean2LECX+lrKDg==",
"license": "MIT",
"engines": {
"node": ">= 12"
@@ -1482,9 +1482,9 @@
"license": "MIT"
},
"node_modules/qs": {
- "version": "6.16.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.0.tgz",
- "integrity": "sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==",
+ "version": "6.16.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.1.tgz",
+ "integrity": "sha512-5Px6J7rfHBAGUhNQ3es4YzcOdBBw0SDcVtThJml4RdnKw4tKs2epA0kPZ+K8X+WiHktT93RHVcQ/3ym5aTCgtg==",
"license": "BSD-3-Clause",
"dependencies": {
"es-define-property": "^1.0.1",
diff --git a/src/assets/js/bundle.js b/src/assets/js/bundle.js
index a3851c8..c028771 100644
--- a/src/assets/js/bundle.js
+++ b/src/assets/js/bundle.js
@@ -911,10 +911,13 @@ class Address6 {
if (/\//.test(address)) {
throw new address_error_1.AddressError('Invalid subnet mask.');
}
- const zone = constants6.RE_ZONE_STRING.exec(address);
- if (zone) {
- this.zone = zone[0];
- address = address.replace(constants6.RE_ZONE_STRING, '');
+ // A zone runs from the first `%` to the end of the input and holds no line
+ // terminator. Finding it by index reads the input once, where matching
+ // RE_ZONE_STRING retries from every `%` that a line terminator disqualifies.
+ const zoneStart = address.indexOf('%');
+ if (zoneStart !== -1 && /^.*$/.test(address.slice(zoneStart))) {
+ this.zone = address.slice(zoneStart);
+ address = address.slice(0, zoneStart);
}
// The longest well-formed address is all but the last two groups written
// as four hex digits with their colons, then a 15-character dotted quad:
@@ -2364,6 +2367,9 @@ exports.RE_SUBNET_STRING = /\/\d{1,3}(?=%|$)/;
* A regular expression that matches an IPv6 zone
* @memberof Address6
* @static
+ * @deprecated Takes quadratic time on input holding many `%` characters
+ * followed by a line terminator. The library finds the zone by index, as
+ * `Address6`'s constructor shows, and 11.0.0 removes this export.
*/
exports.RE_ZONE_STRING = /%.*$/;
exports.RE_URL = /^(?:\[([0-9a-f:.]+)\]|([0-9a-f:.]+))(?:[/?#].*)?$/i;