mediawiki/skins/Vector: REL1_43 (log #2514321)

sourcepatches

This run took 108 seconds.

$ date
--- stdout ---
Fri Jul  3 13:11:30 UTC 2026

--- end ---
$ git clone file:///srv/git/mediawiki-skins-Vector.git /src/repo --depth=1 -b REL1_43
--- stderr ---
Cloning into '/src/repo'...
--- stdout ---

--- end ---
$ git config user.name libraryupgrader
--- stdout ---

--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---

--- end ---
$ git submodule update --init
--- stdout ---

--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.

--- end ---
$ git show-ref refs/heads/REL1_43
--- stdout ---
f4d8dfe7c085bb030b58af293ee3d57c9b712e1f refs/heads/REL1_43

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@babel/core": {
      "name": "@babel/core",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1120793,
          "name": "@babel/core",
          "dependency": "@babel/core",
          "title": "@babel/core: Arbitrary File Read via sourceMappingURL Comment",
          "url": "https://github.com/advisories/GHSA-4x5r-pxfx-6jf8",
          "severity": "low",
          "cwe": [
            "CWE-22",
            "CWE-200"
          ],
          "cvss": {
            "score": 3.2,
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:C/C:L/I:N/A:N"
          },
          "range": "<=7.29.0"
        }
      ],
      "effects": [],
      "range": "<=7.29.0",
      "nodes": [
        "node_modules/@babel/core"
      ],
      "fixAvailable": true
    },
    "@jest/core": {
      "name": "@jest/core",
      "severity": "low",
      "isDirect": false,
      "via": [
        "jest-config",
        "jest-runner"
      ],
      "effects": [],
      "range": "27.0.1 - 27.5.1",
      "nodes": [
        "node_modules/@jest/core"
      ],
      "fixAvailable": true
    },
    "@tootallnate/once": {
      "name": "@tootallnate/once",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1119438,
          "name": "@tootallnate/once",
          "dependency": "@tootallnate/once",
          "title": "@tootallnate/once vulnerable to Incorrect Control Flow Scoping",
          "url": "https://github.com/advisories/GHSA-vpq2-c234-7xj6",
          "severity": "low",
          "cwe": [
            "CWE-705"
          ],
          "cvss": {
            "score": 3.3,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": "<2.0.1"
        }
      ],
      "effects": [
        "http-proxy-agent"
      ],
      "range": "<2.0.1",
      "nodes": [
        "node_modules/jest-environment-jsdom/node_modules/@tootallnate/once"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "cross-spawn": {
      "name": "cross-spawn",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1104663,
          "name": "cross-spawn",
          "dependency": "cross-spawn",
          "title": "Regular Expression Denial of Service (ReDoS) in cross-spawn",
          "url": "https://github.com/advisories/GHSA-3xgq-45jj-v275",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": "<6.0.6"
        }
      ],
      "effects": [
        "pre-commit"
      ],
      "range": "<6.0.6",
      "nodes": [
        "node_modules/pre-commit/node_modules/cross-spawn"
      ],
      "fixAvailable": {
        "name": "pre-commit",
        "version": "2.0.0",
        "isSemVerMajor": true
      }
    },
    "form-data": {
      "name": "form-data",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1120743,
          "name": "form-data",
          "dependency": "form-data",
          "title": "form-data: CRLF injection in form-data via unescaped multipart field names and filenames",
          "url": "https://github.com/advisories/GHSA-hmw2-7cc7-3qxx",
          "severity": "high",
          "cwe": [
            "CWE-93"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
          },
          "range": ">=4.0.0 <4.0.6"
        },
        {
          "source": 1120744,
          "name": "form-data",
          "dependency": "form-data",
          "title": "form-data: CRLF injection in form-data via unescaped multipart field names and filenames",
          "url": "https://github.com/advisories/GHSA-hmw2-7cc7-3qxx",
          "severity": "high",
          "cwe": [
            "CWE-93"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
          },
          "range": ">=3.0.0 <3.0.5"
        }
      ],
      "effects": [],
      "range": "3.0.0 - 3.0.4 || 4.0.0 - 4.0.5",
      "nodes": [
        "node_modules/form-data",
        "node_modules/jest-environment-jsdom/node_modules/form-data"
      ],
      "fixAvailable": true
    },
    "http-proxy-agent": {
      "name": "http-proxy-agent",
      "severity": "low",
      "isDirect": false,
      "via": [
        "@tootallnate/once"
      ],
      "effects": [
        "jsdom"
      ],
      "range": "4.0.1",
      "nodes": [
        "node_modules/jest-environment-jsdom/node_modules/http-proxy-agent"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "jest": {
      "name": "jest",
      "severity": "low",
      "isDirect": true,
      "via": [
        "@jest/core",
        "jest-cli"
      ],
      "effects": [],
      "range": "27.0.1 - 27.5.1",
      "nodes": [
        "node_modules/jest"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "jest-cli": {
      "name": "jest-cli",
      "severity": "low",
      "isDirect": false,
      "via": [
        "@jest/core",
        "jest-config"
      ],
      "effects": [
        "jest"
      ],
      "range": "27.0.1 - 27.5.1",
      "nodes": [
        "node_modules/jest-cli"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "jest-config": {
      "name": "jest-config",
      "severity": "low",
      "isDirect": false,
      "via": [
        "jest-environment-jsdom",
        "jest-runner"
      ],
      "effects": [
        "@jest/core",
        "jest-cli"
      ],
      "range": "27.0.1 - 27.5.1",
      "nodes": [
        "node_modules/jest-config"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "jest-environment-jsdom": {
      "name": "jest-environment-jsdom",
      "severity": "low",
      "isDirect": false,
      "via": [
        "jsdom"
      ],
      "effects": [
        "jest-config",
        "jest-runner"
      ],
      "range": "27.0.1 - 27.5.1",
      "nodes": [
        "node_modules/jest-environment-jsdom"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "jest-runner": {
      "name": "jest-runner",
      "severity": "low",
      "isDirect": false,
      "via": [
        "jest-environment-jsdom"
      ],
      "effects": [
        "@jest/core",
        "jest-config"
      ],
      "range": "27.0.4 - 27.5.1",
      "nodes": [
        "node_modules/jest-runner"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "js-yaml": {
      "name": "js-yaml",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1121859,
          "name": "js-yaml",
          "dependency": "js-yaml",
          "title": "JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases",
          "url": "https://github.com/advisories/GHSA-h67p-54hq-rp68",
          "severity": "moderate",
          "cwe": [
            "CWE-407"
          ],
          "cvss": {
            "score": 5.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": "<3.15.0"
        },
        {
          "source": 1121860,
          "name": "js-yaml",
          "dependency": "js-yaml",
          "title": "JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases",
          "url": "https://github.com/advisories/GHSA-h67p-54hq-rp68",
          "severity": "moderate",
          "cwe": [
            "CWE-407"
          ],
          "cvss": {
            "score": 5.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": ">=4.0.0 <=4.1.1"
        }
      ],
      "effects": [],
      "range": "<=3.14.2 || 4.0.0 - 4.1.1",
      "nodes": [
        "node_modules/@eslint/eslintrc/node_modules/js-yaml",
        "node_modules/cosmiconfig/node_modules/js-yaml",
        "node_modules/eslint-plugin-unicorn/node_modules/js-yaml",
        "node_modules/eslint/node_modules/js-yaml",
        "node_modules/js-yaml"
      ],
      "fixAvailable": true
    },
    "jsdom": {
      "name": "jsdom",
      "severity": "low",
      "isDirect": false,
      "via": [
        "http-proxy-agent"
      ],
      "effects": [
        "jest-environment-jsdom"
      ],
      "range": "16.6.0 - 17.0.0",
      "nodes": [
        "node_modules/jest-environment-jsdom/node_modules/jsdom"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "pre-commit": {
      "name": "pre-commit",
      "severity": "high",
      "isDirect": true,
      "via": [
        "cross-spawn"
      ],
      "effects": [],
      "range": "1.1.0 - 1.2.2",
      "nodes": [
        "node_modules/pre-commit"
      ],
      "fixAvailable": {
        "name": "pre-commit",
        "version": "2.0.0",
        "isSemVerMajor": true
      }
    },
    "ws": {
      "name": "ws",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1120730,
          "name": "ws",
          "dependency": "ws",
          "title": "ws: Memory exhaustion DoS from tiny fragments and data chunks",
          "url": "https://github.com/advisories/GHSA-96hv-2xvq-fx4p",
          "severity": "high",
          "cwe": [
            "CWE-400",
            "CWE-770"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": ">=8.0.0 <8.21.0"
        },
        {
          "source": 1120731,
          "name": "ws",
          "dependency": "ws",
          "title": "ws: Memory exhaustion DoS from tiny fragments and data chunks",
          "url": "https://github.com/advisories/GHSA-96hv-2xvq-fx4p",
          "severity": "high",
          "cwe": [
            "CWE-400",
            "CWE-770"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": ">=7.0.0 <7.5.11"
        }
      ],
      "effects": [],
      "range": "7.0.0 - 7.5.10 || 8.0.0 - 8.20.1",
      "nodes": [
        "node_modules/jest-environment-jsdom/node_modules/ws",
        "node_modules/ws"
      ],
      "fixAvailable": true
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 10,
      "moderate": 1,
      "high": 4,
      "critical": 0,
      "total": 15
    },
    "dependencies": {
      "prod": 1,
      "dev": 913,
      "optional": 2,
      "peer": 0,
      "peerOptional": 0,
      "total": 913
    }
  }
}

--- end ---
$ /usr/bin/composer install
--- stderr ---
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Lock file operations: 39 installs, 0 updates, 0 removals
  - Locking composer/installers (v2.3.0)
  - Locking composer/pcre (3.4.0)
  - Locking composer/semver (3.4.3)
  - Locking composer/spdx-licenses (1.5.10)
  - Locking composer/xdebug-handler (3.0.5)
  - Locking dealerdirect/phpcodesniffer-composer-installer (v1.2.1)
  - Locking doctrine/deprecations (1.1.6)
  - Locking felixfbecker/advanced-json-rpc (v3.2.1)
  - Locking mediawiki/mediawiki-codesniffer (v45.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.14.0)
  - Locking mediawiki/minus-x (1.1.3)
  - Locking mediawiki/phan-taint-check-plugin (6.0.0)
  - Locking microsoft/tolerant-php-parser (v0.1.2)
  - Locking netresearch/jsonmapper (v4.5.0)
  - Locking phan/phan (5.4.3)
  - Locking php-parallel-lint/php-console-color (v1.0.1)
  - Locking php-parallel-lint/php-console-highlighter (v1.0.0)
  - Locking php-parallel-lint/php-parallel-lint (v1.4.0)
  - Locking phpcsstandards/phpcsextra (1.2.1)
  - Locking phpcsstandards/phpcsutils (1.0.12)
  - Locking phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (5.6.7)
  - Locking phpdocumentor/type-resolver (1.12.0)
  - Locking phpstan/phpdoc-parser (2.3.2)
  - Locking psr/container (2.0.2)
  - Locking psr/log (3.0.2)
  - Locking sabre/event (5.1.8)
  - Locking squizlabs/php_codesniffer (3.10.3)
  - Locking symfony/console (v7.4.14)
  - Locking symfony/deprecation-contracts (v3.7.1)
  - Locking symfony/polyfill-ctype (v1.37.0)
  - Locking symfony/polyfill-intl-grapheme (v1.38.1)
  - Locking symfony/polyfill-intl-normalizer (v1.38.0)
  - Locking symfony/polyfill-mbstring (v1.38.2)
  - Locking symfony/polyfill-php80 (v1.37.0)
  - Locking symfony/service-contracts (v3.7.1)
  - Locking symfony/string (v8.1.0)
  - Locking tysonandre/var_representation_polyfill (0.1.3)
  - Locking webmozart/assert (2.4.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 39 installs, 0 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]
  - Installing composer/installers (v2.3.0): Extracting archive
  - Installing squizlabs/php_codesniffer (3.10.3): Extracting archive
  - Installing dealerdirect/phpcodesniffer-composer-installer (v1.2.1): Extracting archive
  - Installing composer/pcre (3.4.0): Extracting archive
  - Installing symfony/polyfill-php80 (v1.37.0): Extracting archive
  - Installing phpcsstandards/phpcsutils (1.0.12): Extracting archive
  - Installing phpcsstandards/phpcsextra (1.2.1): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.38.2): Extracting archive
  - Installing composer/spdx-licenses (1.5.10): Extracting archive
  - Installing composer/semver (3.4.3): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v45.0.0): Extracting archive
  - Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.38.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.38.1): Extracting archive
  - Installing symfony/polyfill-ctype (v1.37.0): Extracting archive
  - Installing symfony/string (v8.1.0): Extracting archive
  - Installing symfony/deprecation-contracts (v3.7.1): Extracting archive
  - Installing psr/container (2.0.2): Extracting archive
  - Installing symfony/service-contracts (v3.7.1): Extracting archive
  - Installing symfony/console (v7.4.14): Extracting archive
  - Installing sabre/event (5.1.8): Extracting archive
  - Installing netresearch/jsonmapper (v4.5.0): Extracting archive
  - Installing microsoft/tolerant-php-parser (v0.1.2): Extracting archive
  - Installing webmozart/assert (2.4.1): Extracting archive
  - Installing phpstan/phpdoc-parser (2.3.2): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing doctrine/deprecations (1.1.6): Extracting archive
  - Installing phpdocumentor/type-resolver (1.12.0): Extracting archive
  - Installing phpdocumentor/reflection-docblock (5.6.7): Extracting archive
  - Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
  - Installing psr/log (3.0.2): Extracting archive
  - Installing composer/xdebug-handler (3.0.5): Extracting archive
  - Installing phan/phan (5.4.3): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (6.0.0): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.14.0): Extracting archive
  - Installing mediawiki/minus-x (1.1.3): Extracting archive
  - Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive
  - Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive
  - Installing php-parallel-lint/php-parallel-lint (v1.4.0): Extracting archive
  0/36 [>---------------------------]   0%
 28/36 [=====================>------]  77%
 35/36 [===========================>]  97%
 36/36 [============================] 100%
Generating autoload files
18 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@babel/core": {
      "name": "@babel/core",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1120793,
          "name": "@babel/core",
          "dependency": "@babel/core",
          "title": "@babel/core: Arbitrary File Read via sourceMappingURL Comment",
          "url": "https://github.com/advisories/GHSA-4x5r-pxfx-6jf8",
          "severity": "low",
          "cwe": [
            "CWE-22",
            "CWE-200"
          ],
          "cvss": {
            "score": 3.2,
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:C/C:L/I:N/A:N"
          },
          "range": "<=7.29.0"
        }
      ],
      "effects": [],
      "range": "<=7.29.0",
      "nodes": [
        "node_modules/@babel/core"
      ],
      "fixAvailable": true
    },
    "@jest/core": {
      "name": "@jest/core",
      "severity": "low",
      "isDirect": false,
      "via": [
        "jest-config",
        "jest-runner"
      ],
      "effects": [
        "jest"
      ],
      "range": "27.0.1 - 27.5.1",
      "nodes": [
        "node_modules/@jest/core"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "@tootallnate/once": {
      "name": "@tootallnate/once",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1119438,
          "name": "@tootallnate/once",
          "dependency": "@tootallnate/once",
          "title": "@tootallnate/once vulnerable to Incorrect Control Flow Scoping",
          "url": "https://github.com/advisories/GHSA-vpq2-c234-7xj6",
          "severity": "low",
          "cwe": [
            "CWE-705"
          ],
          "cvss": {
            "score": 3.3,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": "<2.0.1"
        }
      ],
      "effects": [
        "http-proxy-agent"
      ],
      "range": "<2.0.1",
      "nodes": [
        "node_modules/jest-environment-jsdom/node_modules/@tootallnate/once"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "cross-spawn": {
      "name": "cross-spawn",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1104663,
          "name": "cross-spawn",
          "dependency": "cross-spawn",
          "title": "Regular Expression Denial of Service (ReDoS) in cross-spawn",
          "url": "https://github.com/advisories/GHSA-3xgq-45jj-v275",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": "<6.0.6"
        }
      ],
      "effects": [
        "pre-commit"
      ],
      "range": "<6.0.6",
      "nodes": [
        "node_modules/pre-commit/node_modules/cross-spawn"
      ],
      "fixAvailable": {
        "name": "pre-commit",
        "version": "2.0.0",
        "isSemVerMajor": true
      }
    },
    "form-data": {
      "name": "form-data",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1120743,
          "name": "form-data",
          "dependency": "form-data",
          "title": "form-data: CRLF injection in form-data via unescaped multipart field names and filenames",
          "url": "https://github.com/advisories/GHSA-hmw2-7cc7-3qxx",
          "severity": "high",
          "cwe": [
            "CWE-93"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
          },
          "range": ">=4.0.0 <4.0.6"
        },
        {
          "source": 1120744,
          "name": "form-data",
          "dependency": "form-data",
          "title": "form-data: CRLF injection in form-data via unescaped multipart field names and filenames",
          "url": "https://github.com/advisories/GHSA-hmw2-7cc7-3qxx",
          "severity": "high",
          "cwe": [
            "CWE-93"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
          },
          "range": ">=3.0.0 <3.0.5"
        }
      ],
      "effects": [],
      "range": "3.0.0 - 3.0.4 || 4.0.0 - 4.0.5",
      "nodes": [
        "node_modules/form-data",
        "node_modules/jest-environment-jsdom/node_modules/form-data"
      ],
      "fixAvailable": true
    },
    "http-proxy-agent": {
      "name": "http-proxy-agent",
      "severity": "low",
      "isDirect": false,
      "via": [
        "@tootallnate/once"
      ],
      "effects": [
        "jsdom"
      ],
      "range": "4.0.1",
      "nodes": [
        "node_modules/jest-environment-jsdom/node_modules/http-proxy-agent"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "jest": {
      "name": "jest",
      "severity": "low",
      "isDirect": true,
      "via": [
        "@jest/core",
        "jest-cli"
      ],
      "effects": [],
      "range": "27.0.1 - 27.5.1",
      "nodes": [
        "node_modules/jest"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "jest-cli": {
      "name": "jest-cli",
      "severity": "low",
      "isDirect": false,
      "via": [
        "@jest/core",
        "jest-config"
      ],
      "effects": [],
      "range": "27.0.1 - 27.5.1",
      "nodes": [
        "node_modules/jest-cli"
      ],
      "fixAvailable": true
    },
    "jest-config": {
      "name": "jest-config",
      "severity": "low",
      "isDirect": false,
      "via": [
        "jest-environment-jsdom",
        "jest-runner"
      ],
      "effects": [
        "@jest/core",
        "jest-cli"
      ],
      "range": "27.0.1 - 27.5.1",
      "nodes": [
        "node_modules/jest-config"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "jest-environment-jsdom": {
      "name": "jest-environment-jsdom",
      "severity": "low",
      "isDirect": false,
      "via": [
        "jsdom"
      ],
      "effects": [
        "jest-config",
        "jest-runner"
      ],
      "range": "27.0.1 - 27.5.1",
      "nodes": [
        "node_modules/jest-environment-jsdom"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "jest-runner": {
      "name": "jest-runner",
      "severity": "low",
      "isDirect": false,
      "via": [
        "jest-environment-jsdom"
      ],
      "effects": [
        "@jest/core",
        "jest-config"
      ],
      "range": "27.0.4 - 27.5.1",
      "nodes": [
        "node_modules/jest-runner"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "js-yaml": {
      "name": "js-yaml",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1121859,
          "name": "js-yaml",
          "dependency": "js-yaml",
          "title": "JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases",
          "url": "https://github.com/advisories/GHSA-h67p-54hq-rp68",
          "severity": "moderate",
          "cwe": [
            "CWE-407"
          ],
          "cvss": {
            "score": 5.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": "<3.15.0"
        },
        {
          "source": 1121860,
          "name": "js-yaml",
          "dependency": "js-yaml",
          "title": "JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases",
          "url": "https://github.com/advisories/GHSA-h67p-54hq-rp68",
          "severity": "moderate",
          "cwe": [
            "CWE-407"
          ],
          "cvss": {
            "score": 5.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": ">=4.0.0 <=4.1.1"
        }
      ],
      "effects": [],
      "range": "<=3.14.2 || 4.0.0 - 4.1.1",
      "nodes": [
        "node_modules/@eslint/eslintrc/node_modules/js-yaml",
        "node_modules/cosmiconfig/node_modules/js-yaml",
        "node_modules/eslint-plugin-unicorn/node_modules/js-yaml",
        "node_modules/eslint/node_modules/js-yaml",
        "node_modules/js-yaml"
      ],
      "fixAvailable": true
    },
    "jsdom": {
      "name": "jsdom",
      "severity": "low",
      "isDirect": false,
      "via": [
        "http-proxy-agent"
      ],
      "effects": [
        "jest-environment-jsdom"
      ],
      "range": "16.6.0 - 17.0.0",
      "nodes": [
        "node_modules/jest-environment-jsdom/node_modules/jsdom"
      ],
      "fixAvailable": {
        "name": "jest",
        "version": "30.4.2",
        "isSemVerMajor": true
      }
    },
    "pre-commit": {
      "name": "pre-commit",
      "severity": "high",
      "isDirect": true,
      "via": [
        "cross-spawn"
      ],
      "effects": [],
      "range": "1.1.0 - 1.2.2",
      "nodes": [
        "node_modules/pre-commit"
      ],
      "fixAvailable": {
        "name": "pre-commit",
        "version": "2.0.0",
        "isSemVerMajor": true
      }
    },
    "ws": {
      "name": "ws",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1120730,
          "name": "ws",
          "dependency": "ws",
          "title": "ws: Memory exhaustion DoS from tiny fragments and data chunks",
          "url": "https://github.com/advisories/GHSA-96hv-2xvq-fx4p",
          "severity": "high",
          "cwe": [
            "CWE-400",
            "CWE-770"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": ">=8.0.0 <8.21.0"
        },
        {
          "source": 1120731,
          "name": "ws",
          "dependency": "ws",
          "title": "ws: Memory exhaustion DoS from tiny fragments and data chunks",
          "url": "https://github.com/advisories/GHSA-96hv-2xvq-fx4p",
          "severity": "high",
          "cwe": [
            "CWE-400",
            "CWE-770"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": ">=7.0.0 <7.5.11"
        }
      ],
      "effects": [],
      "range": "7.0.0 - 7.5.10 || 8.0.0 - 8.20.1",
      "nodes": [
        "node_modules/jest-environment-jsdom/node_modules/ws",
        "node_modules/ws"
      ],
      "fixAvailable": true
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 10,
      "moderate": 1,
      "high": 4,
      "critical": 0,
      "total": 15
    },
    "dependencies": {
      "prod": 1,
      "dev": 913,
      "optional": 2,
      "peer": 0,
      "peerOptional": 0,
      "total": 913
    }
  }
}

--- end ---
Attempting to npm audit fix
$ /usr/bin/npm audit fix --dry-run --only=dev --json
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
--- stdout ---
{
  "added": 908,
  "removed": 0,
  "changed": 0,
  "audited": 909,
  "funding": 118,
  "audit": {
    "auditReportVersion": 2,
    "vulnerabilities": {
      "@babel/core": {
        "name": "@babel/core",
        "severity": "low",
        "isDirect": false,
        "via": [
          {
            "source": 1120793,
            "name": "@babel/core",
            "dependency": "@babel/core",
            "title": "@babel/core: Arbitrary File Read via sourceMappingURL Comment",
            "url": "https://github.com/advisories/GHSA-4x5r-pxfx-6jf8",
            "severity": "low",
            "cwe": [
              "CWE-22",
              "CWE-200"
            ],
            "cvss": {
              "score": 3.2,
              "vectorString": "CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:C/C:L/I:N/A:N"
            },
            "range": "<=7.29.0"
          }
        ],
        "effects": [],
        "range": "<=7.29.0",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "@jest/core": {
        "name": "@jest/core",
        "severity": "low",
        "isDirect": false,
        "via": [
          "jest-config",
          "jest-runner"
        ],
        "effects": [
          "jest"
        ],
        "range": "27.0.1 - 27.5.1",
        "nodes": [
          "node_modules/@jest/core"
        ],
        "fixAvailable": {
          "name": "jest",
          "version": "30.4.2",
          "isSemVerMajor": true
        }
      },
      "@tootallnate/once": {
        "name": "@tootallnate/once",
        "severity": "low",
        "isDirect": false,
        "via": [
          {
            "source": 1119438,
            "name": "@tootallnate/once",
            "dependency": "@tootallnate/once",
            "title": "@tootallnate/once vulnerable to Incorrect Control Flow Scoping",
            "url": "https://github.com/advisories/GHSA-vpq2-c234-7xj6",
            "severity": "low",
            "cwe": [
              "CWE-705"
            ],
            "cvss": {
              "score": 3.3,
              "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"
            },
            "range": "<2.0.1"
          }
        ],
        "effects": [
          "http-proxy-agent"
        ],
        "range": "<2.0.1",
        "nodes": [
          "node_modules/jest-environment-jsdom/node_modules/@tootallnate/once"
        ],
        "fixAvailable": {
          "name": "jest",
          "version": "30.4.2",
          "isSemVerMajor": true
        }
      },
      "cross-spawn": {
        "name": "cross-spawn",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1104663,
            "name": "cross-spawn",
            "dependency": "cross-spawn",
            "title": "Regular Expression Denial of Service (ReDoS) in cross-spawn",
            "url": "https://github.com/advisories/GHSA-3xgq-45jj-v275",
            "severity": "high",
            "cwe": [
              "CWE-1333"
            ],
            "cvss": {
              "score": 7.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
            },
            "range": "<6.0.6"
          }
        ],
        "effects": [
          "pre-commit"
        ],
        "range": "<6.0.6",
        "nodes": [
          "node_modules/pre-commit/node_modules/cross-spawn"
        ],
        "fixAvailable": {
          "name": "pre-commit",
          "version": "2.0.0",
          "isSemVerMajor": true
        }
      },
      "form-data": {
        "name": "form-data",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1120743,
            "name": "form-data",
            "dependency": "form-data",
            "title": "form-data: CRLF injection in form-data via unescaped multipart field names and filenames",
            "url": "https://github.com/advisories/GHSA-hmw2-7cc7-3qxx",
            "severity": "high",
            "cwe": [
              "CWE-93"
            ],
            "cvss": {
              "score": 7.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
            },
            "range": ">=4.0.0 <4.0.6"
          },
          {
            "source": 1120744,
            "name": "form-data",
            "dependency": "form-data",
            "title": "form-data: CRLF injection in form-data via unescaped multipart field names and filenames",
            "url": "https://github.com/advisories/GHSA-hmw2-7cc7-3qxx",
            "severity": "high",
            "cwe": [
              "CWE-93"
            ],
            "cvss": {
              "score": 7.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
            },
            "range": ">=3.0.0 <3.0.5"
          }
        ],
        "effects": [],
        "range": "3.0.0 - 3.0.4 || 4.0.0 - 4.0.5",
        "nodes": [
          "",
          ""
        ],
        "fixAvailable": true
      },
      "http-proxy-agent": {
        "name": "http-proxy-agent",
        "severity": "low",
        "isDirect": false,
        "via": [
          "@tootallnate/once"
        ],
        "effects": [
          "jsdom"
        ],
        "range": "4.0.1",
        "nodes": [
          "node_modules/jest-environment-jsdom/node_modules/http-proxy-agent"
        ],
        "fixAvailable": {
          "name": "jest",
          "version": "30.4.2",
          "isSemVerMajor": true
        }
      },
      "jest": {
        "name": "jest",
        "severity": "low",
        "isDirect": true,
        "via": [
          "@jest/core",
          "jest-cli"
        ],
        "effects": [],
        "range": "27.0.1 - 27.5.1",
        "nodes": [
          "node_modules/jest"
        ],
        "fixAvailable": {
          "name": "jest",
          "version": "30.4.2",
          "isSemVerMajor": true
        }
      },
      "jest-cli": {
        "name": "jest-cli",
        "severity": "low",
        "isDirect": false,
        "via": [
          "@jest/core",
          "jest-config"
        ],
        "effects": [],
        "range": "27.0.1 - 27.5.1",
        "nodes": [
          "node_modules/jest-cli"
        ],
        "fixAvailable": true
      },
      "jest-config": {
        "name": "jest-config",
        "severity": "low",
        "isDirect": false,
        "via": [
          "jest-environment-jsdom",
          "jest-runner"
        ],
        "effects": [
          "@jest/core",
          "jest-cli"
        ],
        "range": "27.0.1 - 27.5.1",
        "nodes": [
          "node_modules/jest-config"
        ],
        "fixAvailable": {
          "name": "jest",
          "version": "30.4.2",
          "isSemVerMajor": true
        }
      },
      "jest-environment-jsdom": {
        "name": "jest-environment-jsdom",
        "severity": "low",
        "isDirect": false,
        "via": [
          "jsdom"
        ],
        "effects": [
          "jest-config",
          "jest-runner"
        ],
        "range": "27.0.1 - 27.5.1",
        "nodes": [
          "node_modules/jest-environment-jsdom"
        ],
        "fixAvailable": {
          "name": "jest",
          "version": "30.4.2",
          "isSemVerMajor": true
        }
      },
      "jest-runner": {
        "name": "jest-runner",
        "severity": "low",
        "isDirect": false,
        "via": [
          "jest-environment-jsdom"
        ],
        "effects": [
          "@jest/core",
          "jest-config"
        ],
        "range": "27.0.4 - 27.5.1",
        "nodes": [
          "node_modules/jest-runner"
        ],
        "fixAvailable": {
          "name": "jest",
          "version": "30.4.2",
          "isSemVerMajor": true
        }
      },
      "js-yaml": {
        "name": "js-yaml",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1121859,
            "name": "js-yaml",
            "dependency": "js-yaml",
            "title": "JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases",
            "url": "https://github.com/advisories/GHSA-h67p-54hq-rp68",
            "severity": "moderate",
            "cwe": [
              "CWE-407"
            ],
            "cvss": {
              "score": 5.3,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
            },
            "range": "<3.15.0"
          },
          {
            "source": 1121860,
            "name": "js-yaml",
            "dependency": "js-yaml",
            "title": "JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases",
            "url": "https://github.com/advisories/GHSA-h67p-54hq-rp68",
            "severity": "moderate",
            "cwe": [
              "CWE-407"
            ],
            "cvss": {
              "score": 5.3,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
            },
            "range": ">=4.0.0 <=4.1.1"
          }
        ],
        "effects": [],
        "range": "<=3.14.2 || 4.0.0 - 4.1.1",
        "nodes": [
          "",
          "",
          "",
          "",
          ""
        ],
        "fixAvailable": true
      },
      "jsdom": {
        "name": "jsdom",
        "severity": "low",
        "isDirect": false,
        "via": [
          "http-proxy-agent"
        ],
        "effects": [
          "jest-environment-jsdom"
        ],
        "range": "16.6.0 - 17.0.0",
        "nodes": [
          "node_modules/jest-environment-jsdom/node_modules/jsdom"
        ],
        "fixAvailable": {
          "name": "jest",
          "version": "30.4.2",
          "isSemVerMajor": true
        }
      },
      "pre-commit": {
        "name": "pre-commit",
        "severity": "high",
        "isDirect": true,
        "via": [
          "cross-spawn"
        ],
        "effects": [],
        "range": "1.1.0 - 1.2.2",
        "nodes": [
          "node_modules/pre-commit"
        ],
        "fixAvailable": {
          "name": "pre-commit",
          "version": "2.0.0",
          "isSemVerMajor": true
        }
      },
      "ws": {
        "name": "ws",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1120730,
            "name": "ws",
            "dependency": "ws",
            "title": "ws: Memory exhaustion DoS from tiny fragments and data chunks",
            "url": "https://github.com/advisories/GHSA-96hv-2xvq-fx4p",
            "severity": "high",
            "cwe": [
              "CWE-400",
              "CWE-770"
            ],
            "cvss": {
              "score": 7.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
            },
            "range": ">=8.0.0 <8.21.0"
          },
          {
            "source": 1120731,
            "name": "ws",
            "dependency": "ws",
            "title": "ws: Memory exhaustion DoS from tiny fragments and data chunks",
            "url": "https://github.com/advisories/GHSA-96hv-2xvq-fx4p",
            "severity": "high",
            "cwe": [
              "CWE-400",
              "CWE-770"
            ],
            "cvss": {
              "score": 7.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
            },
            "range": ">=7.0.0 <7.5.11"
          }
        ],
        "effects": [],
        "range": "7.0.0 - 7.5.10 || 8.0.0 - 8.20.1",
        "nodes": [
          "",
          ""
        ],
        "fixAvailable": true
      }
    },
    "metadata": {
      "vulnerabilities": {
        "info": 0,
        "low": 10,
        "moderate": 1,
        "high": 4,
        "critical": 0,
        "total": 15
      },
      "dependencies": {
        "prod": 1,
        "dev": 908,
        "optional": 2,
        "peer": 0,
        "peerOptional": 0,
        "total": 908
      }
    }
  }
}

--- end ---
{"added": 908, "removed": 0, "changed": 0, "audited": 909, "funding": 118, "audit": {"auditReportVersion": 2, "vulnerabilities": {"@babel/core": {"name": "@babel/core", "severity": "low", "isDirect": false, "via": [{"source": 1120793, "name": "@babel/core", "dependency": "@babel/core", "title": "@babel/core: Arbitrary File Read via sourceMappingURL Comment", "url": "https://github.com/advisories/GHSA-4x5r-pxfx-6jf8", "severity": "low", "cwe": ["CWE-22", "CWE-200"], "cvss": {"score": 3.2, "vectorString": "CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:C/C:L/I:N/A:N"}, "range": "<=7.29.0"}], "effects": [], "range": "<=7.29.0", "nodes": [""], "fixAvailable": true}, "@jest/core": {"name": "@jest/core", "severity": "low", "isDirect": false, "via": ["jest-config", "jest-runner"], "effects": ["jest"], "range": "27.0.1 - 27.5.1", "nodes": ["node_modules/@jest/core"], "fixAvailable": {"name": "jest", "version": "30.4.2", "isSemVerMajor": true}}, "@tootallnate/once": {"name": "@tootallnate/once", "severity": "low", "isDirect": false, "via": [{"source": 1119438, "name": "@tootallnate/once", "dependency": "@tootallnate/once", "title": "@tootallnate/once vulnerable to Incorrect Control Flow Scoping", "url": "https://github.com/advisories/GHSA-vpq2-c234-7xj6", "severity": "low", "cwe": ["CWE-705"], "cvss": {"score": 3.3, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"}, "range": "<2.0.1"}], "effects": ["http-proxy-agent"], "range": "<2.0.1", "nodes": ["node_modules/jest-environment-jsdom/node_modules/@tootallnate/once"], "fixAvailable": {"name": "jest", "version": "30.4.2", "isSemVerMajor": true}}, "cross-spawn": {"name": "cross-spawn", "severity": "high", "isDirect": false, "via": [{"source": 1104663, "name": "cross-spawn", "dependency": "cross-spawn", "title": "Regular Expression Denial of Service (ReDoS) in cross-spawn", "url": "https://github.com/advisories/GHSA-3xgq-45jj-v275", "severity": "high", "cwe": ["CWE-1333"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": "<6.0.6"}], "effects": ["pre-commit"], "range": "<6.0.6", "nodes": ["node_modules/pre-commit/node_modules/cross-spawn"], "fixAvailable": {"name": "pre-commit", "version": "2.0.0", "isSemVerMajor": true}}, "form-data": {"name": "form-data", "severity": "high", "isDirect": false, "via": [{"source": 1120743, "name": "form-data", "dependency": "form-data", "title": "form-data: CRLF injection in form-data via unescaped multipart field names and filenames", "url": "https://github.com/advisories/GHSA-hmw2-7cc7-3qxx", "severity": "high", "cwe": ["CWE-93"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"}, "range": ">=4.0.0 <4.0.6"}, {"source": 1120744, "name": "form-data", "dependency": "form-data", "title": "form-data: CRLF injection in form-data via unescaped multipart field names and filenames", "url": "https://github.com/advisories/GHSA-hmw2-7cc7-3qxx", "severity": "high", "cwe": ["CWE-93"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"}, "range": ">=3.0.0 <3.0.5"}], "effects": [], "range": "3.0.0 - 3.0.4 || 4.0.0 - 4.0.5", "nodes": ["", ""], "fixAvailable": true}, "http-proxy-agent": {"name": "http-proxy-agent", "severity": "low", "isDirect": false, "via": ["@tootallnate/once"], "effects": ["jsdom"], "range": "4.0.1", "nodes": ["node_modules/jest-environment-jsdom/node_modules/http-proxy-agent"], "fixAvailable": {"name": "jest", "version": "30.4.2", "isSemVerMajor": true}}, "jest": {"name": "jest", "severity": "low", "isDirect": true, "via": ["@jest/core", "jest-cli"], "effects": [], "range": "27.0.1 - 27.5.1", "nodes": ["node_modules/jest"], "fixAvailable": {"name": "jest", "version": "30.4.2", "isSemVerMajor": true}}, "jest-cli": {"name": "jest-cli", "severity": "low", "isDirect": false, "via": ["@jest/core", "jest-config"], "effects": [], "range": "27.0.1 - 27.5.1", "nodes": ["node_modules/jest-cli"], "fixAvailable": true}, "jest-config": {"name": "jest-config", "severity": "low", "isDirect": false, "via": ["jest-environment-jsdom", "jest-runner"], "effects": ["@jest/core", "jest-cli"], "range": "27.0.1 - 27.5.1", "nodes": ["node_modules/jest-config"], "fixAvailable": {"name": "jest", "version": "30.4.2", "isSemVerMajor": true}}, "jest-environment-jsdom": {"name": "jest-environment-jsdom", "severity": "low", "isDirect": false, "via": ["jsdom"], "effects": ["jest-config", "jest-runner"], "range": "27.0.1 - 27.5.1", "nodes": ["node_modules/jest-environment-jsdom"], "fixAvailable": {"name": "jest", "version": "30.4.2", "isSemVerMajor": true}}, "jest-runner": {"name": "jest-runner", "severity": "low", "isDirect": false, "via": ["jest-environment-jsdom"], "effects": ["@jest/core", "jest-config"], "range": "27.0.4 - 27.5.1", "nodes": ["node_modules/jest-runner"], "fixAvailable": {"name": "jest", "version": "30.4.2", "isSemVerMajor": true}}, "js-yaml": {"name": "js-yaml", "severity": "moderate", "isDirect": false, "via": [{"source": 1121859, "name": "js-yaml", "dependency": "js-yaml", "title": "JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases", "url": "https://github.com/advisories/GHSA-h67p-54hq-rp68", "severity": "moderate", "cwe": ["CWE-407"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": "<3.15.0"}, {"source": 1121860, "name": "js-yaml", "dependency": "js-yaml", "title": "JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases", "url": "https://github.com/advisories/GHSA-h67p-54hq-rp68", "severity": "moderate", "cwe": ["CWE-407"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": ">=4.0.0 <=4.1.1"}], "effects": [], "range": "<=3.14.2 || 4.0.0 - 4.1.1", "nodes": ["", "", "", "", ""], "fixAvailable": true}, "jsdom": {"name": "jsdom", "severity": "low", "isDirect": false, "via": ["http-proxy-agent"], "effects": ["jest-environment-jsdom"], "range": "16.6.0 - 17.0.0", "nodes": ["node_modules/jest-environment-jsdom/node_modules/jsdom"], "fixAvailable": {"name": "jest", "version": "30.4.2", "isSemVerMajor": true}}, "pre-commit": {"name": "pre-commit", "severity": "high", "isDirect": true, "via": ["cross-spawn"], "effects": [], "range": "1.1.0 - 1.2.2", "nodes": ["node_modules/pre-commit"], "fixAvailable": {"name": "pre-commit", "version": "2.0.0", "isSemVerMajor": true}}, "ws": {"name": "ws", "severity": "high", "isDirect": false, "via": [{"source": 1120730, "name": "ws", "dependency": "ws", "title": "ws: Memory exhaustion DoS from tiny fragments and data chunks", "url": "https://github.com/advisories/GHSA-96hv-2xvq-fx4p", "severity": "high", "cwe": ["CWE-400", "CWE-770"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=8.0.0 <8.21.0"}, {"source": 1120731, "name": "ws", "dependency": "ws", "title": "ws: Memory exhaustion DoS from tiny fragments and data chunks", "url": "https://github.com/advisories/GHSA-96hv-2xvq-fx4p", "severity": "high", "cwe": ["CWE-400", "CWE-770"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=7.0.0 <7.5.11"}], "effects": [], "range": "7.0.0 - 7.5.10 || 8.0.0 - 8.20.1", "nodes": ["", ""], "fixAvailable": true}}, "metadata": {"vulnerabilities": {"info": 0, "low": 10, "moderate": 1, "high": 4, "critical": 0, "total": 15}, "dependencies": {"prod": 1, "dev": 908, "optional": 2, "peer": 0, "peerOptional": 0, "total": 908}}}}
$ /usr/bin/npm audit fix --only=dev
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm WARN deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
npm WARN deprecated glob@7.2.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated domexception@2.0.1: Use your platform's native DOMException instead
npm WARN deprecated w3c-hr-time@1.0.2: Use your platform's native performance.now() and performance.timeOrigin.
npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead
npm WARN deprecated mkdirp@0.3.0: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated sinon@12.0.1: 16.1.1
--- stdout ---

added 907 packages, and audited 908 packages in 12s

118 packages are looking for funding
  run `npm fund` for details

# npm audit report

@tootallnate/once  <2.0.1
@tootallnate/once vulnerable to Incorrect Control Flow Scoping - https://github.com/advisories/GHSA-vpq2-c234-7xj6
fix available via `npm audit fix --force`
Will install jest@30.4.2, which is a breaking change
node_modules/jest-environment-jsdom/node_modules/@tootallnate/once
  http-proxy-agent  4.0.1
  Depends on vulnerable versions of @tootallnate/once
  node_modules/jest-environment-jsdom/node_modules/http-proxy-agent
    jsdom  16.6.0 - 17.0.0
    Depends on vulnerable versions of http-proxy-agent
    node_modules/jest-environment-jsdom/node_modules/jsdom
      jest-environment-jsdom  27.0.1 - 27.5.1
      Depends on vulnerable versions of jsdom
      node_modules/jest-environment-jsdom
        jest-config  27.0.1 - 27.5.1
        Depends on vulnerable versions of jest-environment-jsdom
        Depends on vulnerable versions of jest-runner
        node_modules/jest-config
          @jest/core  27.0.1 - 27.5.1
          Depends on vulnerable versions of jest-config
          Depends on vulnerable versions of jest-runner
          node_modules/@jest/core
            jest  27.0.1 - 27.5.1
            Depends on vulnerable versions of @jest/core
            Depends on vulnerable versions of jest-cli
            node_modules/jest
          jest-cli  27.0.1 - 27.5.1
          Depends on vulnerable versions of @jest/core
          Depends on vulnerable versions of jest-config
          node_modules/jest-cli
        jest-runner  27.0.4 - 27.5.1
        Depends on vulnerable versions of jest-environment-jsdom
        node_modules/jest-runner

cross-spawn  <6.0.6
Severity: high
Regular Expression Denial of Service (ReDoS) in cross-spawn - https://github.com/advisories/GHSA-3xgq-45jj-v275
fix available via `npm audit fix --force`
Will install pre-commit@2.0.0, which is a breaking change
node_modules/pre-commit/node_modules/cross-spawn
  pre-commit  1.1.0 - 1.2.2
  Depends on vulnerable versions of cross-spawn
  node_modules/pre-commit

11 vulnerabilities (9 low, 2 high)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

--- end ---
Verifying that tests still pass
$ /usr/bin/npm ci
--- stderr ---
npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm WARN deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
npm WARN deprecated glob@7.2.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated domexception@2.0.1: Use your platform's native DOMException instead
npm WARN deprecated w3c-hr-time@1.0.2: Use your platform's native performance.now() and performance.timeOrigin.
npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead
npm WARN deprecated mkdirp@0.3.0: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated sinon@12.0.1: 16.1.1
--- stdout ---

added 907 packages, and audited 908 packages in 14s

118 packages are looking for funding
  run `npm fund` for details

11 vulnerabilities (9 low, 2 high)

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

--- end ---
$ /usr/bin/npm test
--- stderr ---
TypeError: Cannot read properties of undefined (reading 'B')
    at Module.unpackFeature (/src/repo/node_modules/caniuse-lite/dist/unpacker/feature.js:60:29)
    at BrowserSelection.compileBrowserSupport (file:///src/repo/node_modules/doiuse/lib/BrowserSelection.js:148:35)
    at BrowserSelection.missingSupport (file:///src/repo/node_modules/doiuse/lib/BrowserSelection.js:178:27)
    at DoIUse.postcss (file:///src/repo/node_modules/doiuse/lib/DoIUse.js:67:43)
    at file:///src/repo/node_modules/stylelint-no-unsupported-browser-features/lib/index.js:99:27
    at file:///src/repo/node_modules/stylelint/lib/lintPostcssResult.mjs:119:8
    at Array.map (<anonymous>)
    at lintPostcssResult (file:///src/repo/node_modules/stylelint/lib/lintPostcssResult.mjs:109:18)
    at async lintSource (file:///src/repo/node_modules/stylelint/lib/lintSource.mjs:108:2)
    at async file:///src/repo/node_modules/stylelint/lib/standalone.mjs:214:27
--- stdout ---

> test
> npm -s run lint && tsc && npm run test:unit


--- end ---
$ node_modules/.bin/jest -u
--- stderr ---
PASS tests/jest/AB.test.js
PASS tests/jest/skins.vector.js/dropdownMenus.test.js
PASS tests/jest/pinnableElement.test.js
PASS tests/jest/skins.vector.es6/main.test.js
PASS tests/jest/tableOfContents.test.js
PASS tests/jest/skins.vector.js/disableNightModeIfGadget.test.js
PASS tests/jest/stickyHeader.test.js
PASS tests/jest/restSearchClient.test.js
PASS tests/jest/skins.vector.legacy.js/portlets.test.js
PASS tests/jest/skins.vector.js/tables.test.js
PASS tests/jest/skins.vector.js/portlets.test.js
PASS tests/jest/fetch.test.js
PASS tests/jest/popupNotification.test.js
PASS tests/jest/skins.vector.clientPreferences.test.js
PASS tests/jest/instrumentation.test.js
PASS tests/jest/skins.vector.es6/features.test.js
PASS tests/jest/skins.vector.js/menuTabs.test.js
PASS tests/jest/urlGenerator.test.js
PASS tests/jest/deferUntilFrame.test.js
PASS tests/jest/userLinks.test.js
PASS tests/jest/App.test.js
  ● Console

    console.warn
      [Vue warn]: Failed to resolve component: cdx-typeahead-search
      If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement. 
        at <App id="searchform" searchAccessKey="f" searchTitle="search"  ... > 
        at <VTUROOT>

      201 |
      202 | 			this.updateUIWithSearchClientResult(
    > 203 | 				restClient.loadMore(
          | 				                    ^
      204 | 					this.currentSearchQuery,
      205 | 					this.suggestions.length,
      206 | 					10,

      at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:49:13)
      at resolveAsset (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:1174:7)
      at resolveComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:1136:10)
      at Proxy.render (resources/skins.vector.search/App.vue:203:69)
      at renderComponentRoot (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:885:16)
      at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5964:46)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:181:19)
      at instance.update (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:6095:16)
      at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:6105:5)
      at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5873:7)
      at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5827:9)
      at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5306:11)
      at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5971:11)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:181:19)
      at instance.update (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:6095:16)
      at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:6105:5)
      at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5873:7)
      at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5827:9)
      at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5306:11)
      at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:6616:7)
      at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3930:13)
      at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1477:19)
      at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8339:18)
      at Object.shallowMount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8357:12)
      at mount (tests/jest/App.test.js:15:69)
      at Object.<anonymous> (tests/jest/App.test.js:33:19)


Test Suites: 21 passed, 21 total
Tests:       110 passed, 110 total
Snapshots:   23 passed, 23 total
Time:        6.673 s
Ran all test suites.
--- stdout ---
--------------------------------|---------|----------|---------|---------|---------------------------------------------------------------------------------------
File                            | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s                                                                     
--------------------------------|---------|----------|---------|---------|---------------------------------------------------------------------------------------
All files                       |   49.84 |     37.9 |    47.5 |   49.69 |                                                                                       
 skins.vector.clientPreferences |   59.89 |    42.46 |   58.82 |   59.58 |                                                                                       
  clientPreferences.js          |   59.89 |    42.46 |   58.82 |   59.58 | 60-85,140-157,176,190-228,257,294,300,321,326-327,343,350-353,367,397-403,420,440-459 
 skins.vector.js                |   52.12 |    40.46 |   50.69 |   52.01 |                                                                                       
  AB.js                         |     100 |    93.33 |     100 |     100 | 198                                                                                   
  deferUntilFrame.js            |     100 |      100 |     100 |     100 |                                                                                       
  disableNightModeIfGadget.js   |      70 |       70 |      60 |      70 | 59-77,89                                                                              
  dropdownMenus.js              |   90.38 |       80 |   83.33 |   90.38 | 26,89,99,132,161                                                                      
  echo.js                       |       0 |        0 |       0 |       0 | 6-36                                                                                  
  features.js                   |   71.42 |    55.55 |      50 |   71.42 | 19-20,26-27,85-103                                                                    
  languageButton.js             |       0 |        0 |       0 |       0 | 9-52                                                                                  
  menuTabs.js                   |     100 |      100 |     100 |     100 |                                                                                       
  pinnableElement.js            |   78.94 |    76.31 |      75 |   79.78 | 25,29-30,34-35,82-86,134,184,208,231,278-294                                          
  popupNotification.js          |   91.66 |    64.28 |      75 |   91.66 | 74,77                                                                                 
  portlets.js                   |   85.52 |    58.06 |      60 |   85.52 | 20,35-37,60,113,126-132                                                               
  scrollObserver.js             |   41.66 |        0 |       0 |   41.66 | 21-47                                                                                 
  searchLoader.js               |       0 |        0 |       0 |       0 | 12-123                                                                                
  searchToggle.js               |   13.33 |        0 |       0 |   13.33 | 18-94,110-125                                                                         
  sectionObserver.js            |    2.77 |        0 |       0 |    2.77 | 47-187                                                                                
  setupIntersectionObservers.js |   47.14 |       20 |      56 |   45.98 | 101-125,154,159-183,192-207,227,252-273,286-372                                       
  skin.js                       |       0 |        0 |       0 |       0 | 1-161                                                                                 
  stickyHeader.js               |    16.9 |      3.5 |   19.44 |   16.99 | 27-66,94-111,128-140,169-390,427-429,449-586                                          
  stickyHeaderAB.js             |       0 |        0 |       0 |       0 |                                                                                       
  tableOfContents.js            |   83.51 |     70.4 |   89.74 |    83.7 | 151,187,199,205-229,247,277,351,386,399,420,472-479,503,506                           
  tables.js                     |   86.36 |    81.25 |     100 |   86.36 | 4,28,34                                                                               
  userPreferences.js            |   33.33 |        0 |       0 |   33.33 | 8-10                                                                                  
  watchstar.js                  |      20 |        0 |       0 |      20 | 7-24,29-36                                                                            
 skins.vector.legacy.js         |   22.09 |    11.84 |    6.66 |   22.09 |                                                                                       
  collapsibleTabs.js            |       0 |        0 |       0 |       0 | 13-237                                                                                
  portlets.js                   |   83.33 |    64.28 |   66.66 |   83.33 | 18,35-37,47,85-88                                                                     
  skin-legacy.js                |       0 |      100 |       0 |       0 | 4-19                                                                                  
  vector.js                     |       0 |        0 |       0 |       0 | 7-118                                                                                 
 skins.vector.search            |   53.38 |     37.7 |   51.28 |   53.38 |                                                                                       
  App.vue                       |   42.59 |    16.66 |   35.29 |   42.59 | 124-184,189-191,243-248                                                               
  fetch.js                      |     100 |       75 |      75 |     100 | 28                                                                                    
  instrumentation.js            |   45.45 |       25 |    37.5 |   45.45 | 24-87                                                                                 
  restSearchClient.js           |     100 |       75 |     100 |     100 | 26-48                                                                                 
  skins.vector.search.js        |       0 |        0 |       0 |       0 | 4-51                                                                                  
  types.js                      |       0 |        0 |       0 |       0 |                                                                                       
  urlGenerator.js               |     100 |      100 |     100 |     100 |                                                                                       
--------------------------------|---------|----------|---------|---------|---------------------------------------------------------------------------------------

--- end ---
$ /usr/bin/npm test
--- stderr ---
TypeError: Cannot read properties of undefined (reading 'B')
    at Module.unpackFeature (/src/repo/node_modules/caniuse-lite/dist/unpacker/feature.js:60:29)
    at BrowserSelection.compileBrowserSupport (file:///src/repo/node_modules/doiuse/lib/BrowserSelection.js:148:35)
    at BrowserSelection.missingSupport (file:///src/repo/node_modules/doiuse/lib/BrowserSelection.js:178:27)
    at DoIUse.postcss (file:///src/repo/node_modules/doiuse/lib/DoIUse.js:67:43)
    at file:///src/repo/node_modules/stylelint-no-unsupported-browser-features/lib/index.js:99:27
    at file:///src/repo/node_modules/stylelint/lib/lintPostcssResult.mjs:119:8
    at Array.map (<anonymous>)
    at lintPostcssResult (file:///src/repo/node_modules/stylelint/lib/lintPostcssResult.mjs:109:18)
    at async lintSource (file:///src/repo/node_modules/stylelint/lib/lintSource.mjs:108:2)
    at async file:///src/repo/node_modules/stylelint/lib/standalone.mjs:214:27
--- stdout ---

> test
> npm -s run lint && tsc && npm run test:unit


--- end ---
Traceback (most recent call last):
  File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 289, in npm_test
    self.check_call(["npm", "test"])
    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.13/site-packages/runner/shell2.py", line 66, in check_call
    res.check_returncode()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/usr/lib/python3.13/subprocess.py", line 508, in check_returncode
    raise CalledProcessError(self.returncode, self.args, self.stdout,
                             self.stderr)
subprocess.CalledProcessError: Command '['/usr/bin/npm', 'test']' returned non-zero exit status 1.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 1268, in main
    libup.run()
    ~~~~~~~~~^^
  File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 1208, in run
    self.npm_audit_fix(new_npm_audit)
    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
  File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 239, in npm_audit_fix
    self.npm_test()
    ~~~~~~~~~~~~~^^
  File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 303, in npm_test
    self.check_call(["npm", "test"])
    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.13/site-packages/runner/shell2.py", line 66, in check_call
    res.check_returncode()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/usr/lib/python3.13/subprocess.py", line 508, in check_returncode
    raise CalledProcessError(self.returncode, self.args, self.stdout,
                             self.stderr)
subprocess.CalledProcessError: Command '['/usr/bin/npm', 'test']' returned non-zero exit status 1.
Source code is licensed under the AGPL.