From 1277f6fb5fffc54af790e7494799049d5e3e5f58 Mon Sep 17 00:00:00 2001 From: Glenn Strauss Date: Mon, 9 Dec 2024 19:13:39 -0500 Subject: [PATCH 1/3] UX: read-only server,openssl vers when N/A --- src/js/index.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/js/index.js b/src/js/index.js index 098a8564..0a0945ea 100755 --- a/src/js/index.js +++ b/src/js/index.js @@ -30,6 +30,9 @@ function xmlEntities(str) { const render = async () => { + document.getElementById('version').readOnly = false; + document.getElementById('openssl').readOnly = false; + // initial introduction if (document.getElementById('form-generator').server.value === '') { document.getElementById('output-header').innerHTML = @@ -51,14 +54,14 @@ const render = async () => { return; } document.getElementById('output-config-container').classList.toggle('d-none', false); - document.getElementById('version').readOnly = false; - document.getElementById('openssl').readOnly = false; const _state = await state(); // enable and disable the appropriate fields document.getElementById('version').classList.toggle('text-disabled', _state.output.hasVersions === false); + document.getElementById('version').readOnly = _state.output.hasVersions === false; document.getElementById('openssl').classList.toggle('text-disabled', _state.output.usesOpenssl === false); + document.getElementById('openssl').readOnly = _state.output.usesOpenssl === false; document.getElementById('hsts').classList.toggle('d-none', _state.output.supportsHsts === false); document.getElementById('ocsp').classList.toggle('d-none', !_state.output.supportsOcspStapling); From 810d1ae5df12ec85c5c70cee858aeafd68570170 Mon Sep 17 00:00:00 2001 From: Glenn Strauss Date: Mon, 9 Dec 2024 19:28:45 -0500 Subject: [PATCH 2/3] upgrade semver and better use of semver convert non-semantic-versions of openssl (prior to openssl 3.0.0) into semantic versions. (e.g. OpenSSL 0.9.8x or 1.1.0x or 1.1.1x) (For comparision purposes, increment the patch version and use the letter as a prerelease part of the compared semantic version.) pull in only the parts of semver package which are used --- README.md | 4 +- package-lock.json | 97 +++++++++++++++++++++--------- package.json | 2 +- src/js/helpers/minpatchver.js | 22 +++---- src/js/helpers/minver.js | 27 ++------- src/js/helpers/normalizever.js | 21 +++---- src/js/helpers/sameminorver.js | 16 ----- src/static/guidelines/CHANGELOG.md | 1 + 8 files changed, 91 insertions(+), 99 deletions(-) delete mode 100644 src/js/helpers/sameminorver.js diff --git a/README.md b/README.md index 8003b9d7..cd220cb0 100644 --- a/README.md +++ b/README.md @@ -29,12 +29,10 @@ There are two places that need to be updated in order to add support for a new p All of the templates are written in javascript. The configuration generator supports the following additional helpers: -- `minpatchver(minimum_ver, cur_ver)` - `true` if `cur_ver` is greater than or equal to `minimum_ver`, AND both versions are the same minor version, e.g. `2.4` +- `minpatchver(minimum_ver, cur_ver)` - `true` if `cur_ver` is greater than or equal to `minimum_ver`, AND both versions are the same major/minor version, e.g. `2.4` - `minpatchver("2.4.3", form.serverVersion)` - `minver(minimum_ver, cur_ver)` - `true` if `cur_ver` is greater than or equal to `minimum_ver` - `minver("1.9.5", form.serverVersion)` -- `sameminorver(version, otherVersion)` - returns `true` if `version` and `otherVersion` are of the same minor version, e.g. `2.4` - - `sameminorver("2.4.0", form.serverVersion)` ### Template variables diff --git a/package-lock.json b/package-lock.json index 251f7f82..c778ddcd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "bootstrap.native": "^5.1.1", "clipboard": "^2.0.11", - "semver": "^6.3.1" + "semver": "^7.6.3" }, "devDependencies": { "@babel/core": "^7.26.0", @@ -108,6 +108,16 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { "version": "7.26.3", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", @@ -155,6 +165,16 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", @@ -177,6 +197,16 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-create-regexp-features-plugin": { "version": "7.26.3", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", @@ -195,6 +225,16 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-define-polyfill-provider": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", @@ -1473,6 +1513,16 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", @@ -2508,6 +2558,16 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/babel-plugin-polyfill-corejs3": { "version": "0.10.6", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", @@ -3176,19 +3236,6 @@ } } }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/css-select": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", @@ -5405,19 +5452,6 @@ } } }, - "node_modules/postcss-loader/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/postcss-modules-extract-imports": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", @@ -6009,12 +6043,15 @@ "license": "MIT" }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "license": "ISC", "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/send": { diff --git a/package.json b/package.json index 85833f3f..b83ced63 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "dependencies": { "bootstrap.native": "^5.1.1", "clipboard": "^2.0.11", - "semver": "^6.3.1" + "semver": "^7.6.3" }, "devDependencies": { "@babel/core": "^7.26.0", diff --git a/src/js/helpers/minpatchver.js b/src/js/helpers/minpatchver.js index 0aa9a380..0d0d03cf 100644 --- a/src/js/helpers/minpatchver.js +++ b/src/js/helpers/minpatchver.js @@ -1,16 +1,14 @@ -import minver from './minver.js'; -import sameminorver from './sameminorver.js'; import normalizever from './normalizever.js'; +const semverLte = require('semver/functions/lte'); +const semverParse = require('semver/functions/parse'); -// returns true if it means the minimum patch version *and* is the same minor version (e.g. 2.2) +// returns true if it meets the minimum patch version +// *and* is the same major and minor version (e.g. 2.2) export default (minimumver, curver) => { - // normalize the versions prior to comparison - minimumver = normalizever(minimumver); - curver = normalizever(curver); - - if (sameminorver(minimumver, curver) && minver(minimumver, curver)) { - return true; - } - - return false; + const min = normalizever(minimumver); + const ver = normalizever(curver); + const pmin = semverParse(minimumver, { loose: true }); + const pver = semverParse(curver, { loose: true }); + return pmin && pver && pmin.major == pver.major && pmin.minor == pver.minor + && semverLte(min, ver, { includePrerelease: true, loose: true }); }; diff --git a/src/js/helpers/minver.js b/src/js/helpers/minver.js index 54c84736..bff09961 100644 --- a/src/js/helpers/minver.js +++ b/src/js/helpers/minver.js @@ -1,27 +1,8 @@ import normalizever from './normalizever.js'; -import { diff, gte, parse } from 'semver'; +const semverLte = require('semver/functions/lte'); export default (minimumver, curver) => { - // normalize the versions - minimumver = parse(normalizever(minimumver)); - curver = parse(normalizever(curver)); - - // we do "prerelease" comparisons a bit differently than semver does - if (diff(minimumver, curver) === 'prerelease') { - // if the minimum version doesn't have a prerelease tag, we simply return true, - // e.g. 0.9.8h is always greater than 0.9.8 - if (minimumver.prerelease.length === 0) { - return true; - } - - // if it's a number, we compare numbers - if (parseInt(minimumver.prerelease[0]) && parseInt(curver.prerelease[0])) { - return parseInt(curver.prerelease[0]) > parseInt(minimumver.prerelease[0]); - } - - // otherwise, we just compare strings - return curver.prerelease[0] > minimumver.prerelease[0]; - } - - return gte(curver, minimumver); + const min = normalizever(minimumver); + const ver = normalizever(curver); + return semverLte(min, ver, { includePrerelease: true, loose: true }); }; diff --git a/src/js/helpers/normalizever.js b/src/js/helpers/normalizever.js index ef9ae9e1..ac0c1dfe 100644 --- a/src/js/helpers/normalizever.js +++ b/src/js/helpers/normalizever.js @@ -1,19 +1,12 @@ -import { coerce } from 'semver'; +const semverCoerce = require('semver/functions/coerce'); export default (version) => { - const letterRE = /([abcdefghijlmnopqrstuvwxyz]+$)/; - let prerelease = ''; - // convert to string, just in case version = String(version); - - // if we have a four digit version, e.g. 1.1.1.1 - if (version.split('.').length > 3) { - prerelease = `-${version.split('.').splice(3).join('.')}`; - } else { - prerelease = version.match(letterRE) !== null ? `-${version.match(letterRE)[0]}` : ''; - } - - // return version; - return `${coerce(version).version}${prerelease}`; + // special-case openssl 0.X.Xw and 1.X.Xw non-semantic versions into + // semantic versions by bumping patch version and adding letter as prerelease + const v = version.match(/([01]\.\d+\.)(\d+)([a-z])/i); + return v + ? `${v[1]}${parseInt(v[2])+1}-${v[3]}` + : semverCoerce(version, { includePrerelease: true, loose: true }).version; }; diff --git a/src/js/helpers/sameminorver.js b/src/js/helpers/sameminorver.js deleted file mode 100644 index ef8cc0fa..00000000 --- a/src/js/helpers/sameminorver.js +++ /dev/null @@ -1,16 +0,0 @@ -import normalizever from './normalizever.js'; -import { diff } from 'semver'; - -export default (minorver, curver) => { - // add a fake patch level to the minor version, and then send to the normalizer - minorver = normalizever(minorver); - curver = normalizever(curver); - - const versionDiff = diff(minorver, curver); - - if (versionDiff === 'patch' || versionDiff === null) { - return true; - } - - return false; -}; diff --git a/src/static/guidelines/CHANGELOG.md b/src/static/guidelines/CHANGELOG.md index 2ec86fd9..2d7357fb 100644 --- a/src/static/guidelines/CHANGELOG.md +++ b/src/static/guidelines/CHANGELOG.md @@ -14,6 +14,7 @@ This project doesn't adhere to [Semantic Versioning](https://semver.org/spec/v2. - javascript: update packages - javascript: remove highlight.js - javascript: remove Handlebars; convert .hbs templates to .js per server +- javascript: parse semantic versions, with exception for parsing openssl < 3.0 - haproxy: prefer ssl-min-ver with haproxy 2.2+ - apache,oraclehttp: explicit SSLProtocol list - lighttpd: explicit protocol list for openssl 1.0.2 From 550a4d990637a0e944374f64039a4457e39a5f4c Mon Sep 17 00:00:00 2001 From: Glenn Strauss Date: Mon, 9 Dec 2024 19:36:56 -0500 Subject: [PATCH 3/3] npm update --- package-lock.json | 138 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 123 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index c778ddcd..ad48b612 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2059,12 +2059,12 @@ } }, "node_modules/@thednp/position-observer": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@thednp/position-observer/-/position-observer-1.0.5.tgz", - "integrity": "sha512-3ceT4kl8okq4HMMqQ3+7UGosf6u5p6n95kvYUqtgJGTSE69LcU4ep5NjeSChEmvk/I9V/3tNMMlXYKCSWYq61Q==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@thednp/position-observer/-/position-observer-1.0.7.tgz", + "integrity": "sha512-MkUAMMgqZPxy71hpcrKr9ZtedMk+oIFbFs5B8uKD857iuYKRJxgJtC1Itus14EEM4qMyeN0x47AUZJmZJQyXbQ==", "license": "MIT", "dependencies": { - "@thednp/shorty": "^2.0.9" + "@thednp/shorty": "^2.0.10" }, "engines": { "node": ">=16", @@ -2650,14 +2650,14 @@ "license": "ISC" }, "node_modules/bootstrap.native": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/bootstrap.native/-/bootstrap.native-5.1.1.tgz", - "integrity": "sha512-QlFMbaCSo1AvfoiiI3jdJk8Rh3BZIXh7UjVcR9/wo+aVTZqOrCrePA4f2chpXLZxwbHitWyMgl1CJSSSqqx8/w==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bootstrap.native/-/bootstrap.native-5.1.2.tgz", + "integrity": "sha512-jkXzWs1EopckMT5FIc2CS9PsGloOfmHqyC4dHv3nVC5gpnOFoJPVDpUCKsoMta46SBh46g312BI3aWth0zkRDw==", "license": "MIT", "dependencies": { "@thednp/event-listener": "^2.0.8", - "@thednp/position-observer": "^1.0.4", - "@thednp/shorty": "^2.0.9" + "@thednp/position-observer": "^1.0.7", + "@thednp/shorty": "^2.0.10" }, "engines": { "node": ">=16", @@ -3287,9 +3287,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { @@ -3516,9 +3516,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", - "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", + "version": "1.5.72", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.72.tgz", + "integrity": "sha512-ZpSAUOZ2Izby7qnZluSrAlGgGQzucmFbN0n64dYzocYxnxV5ufurpj3VgEe4cUp7ir9LmeLxNYo8bVnlM8bQHw==", "dev": true, "license": "ISC" }, @@ -3585,6 +3585,24 @@ "xmlhttprequest-ssl": "~2.1.1" } }, + "node_modules/engine.io-client/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/engine.io-parser": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", @@ -3595,6 +3613,24 @@ "node": ">=10.0.0" } }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/enhanced-resolve": { "version": "5.17.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", @@ -6434,6 +6470,24 @@ "ws": "~8.17.1" } }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/socket.io-client": { "version": "4.8.1", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", @@ -6450,6 +6504,24 @@ "node": ">=10.0.0" } }, + "node_modules/socket.io-client/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/socket.io-parser": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", @@ -6464,6 +6536,42 @@ "node": ">=10.0.0" } }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",