mediawiki/extensions/WikibaseLexeme (REL1_39)

sourcepatches
$ date
--- stdout ---
Sun Nov 17 15:45:55 UTC 2024

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-WikibaseLexeme.git repo --depth=1 -b REL1_39
--- stderr ---
Cloning into '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
--- stderr ---
Submodule 'resources/special/new-lexeme' (https://phabricator.wikimedia.org/diffusion/NLSP/new-lexeme-special-page.git) registered for path 'resources/special/new-lexeme'
Cloning into '/src/repo/resources/special/new-lexeme'...
--- stdout ---
Submodule path 'resources/special/new-lexeme': checked out '93a01289f58723273c030ca0e54b53d41ebdb89c'

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

--- end ---
$ git show-ref refs/heads/REL1_39
--- stdout ---
441fb596f10b25befae8260b8a8e061cb947134b refs/heads/REL1_39

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@babel/traverse": {
      "name": "@babel/traverse",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1096886,
          "name": "@babel/traverse",
          "dependency": "@babel/traverse",
          "title": "Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code",
          "url": "https://github.com/advisories/GHSA-67hx-6x53-jw92",
          "severity": "critical",
          "cwe": [
            "CWE-184",
            "CWE-697"
          ],
          "cvss": {
            "score": 9.4,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
          },
          "range": "<7.23.2"
        }
      ],
      "effects": [],
      "range": "<7.23.2",
      "nodes": [
        "node_modules/@babel/traverse"
      ],
      "fixAvailable": true
    },
    "@wdio/cli": {
      "name": "@wdio/cli",
      "severity": "high",
      "isDirect": true,
      "via": [
        "webdriverio"
      ],
      "effects": [],
      "range": "7.16.5 - 8.40.6",
      "nodes": [
        "node_modules/@wdio/cli"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.2.14",
        "isSemVerMajor": true
      }
    },
    "@wdio/local-runner": {
      "name": "@wdio/local-runner",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/runner"
      ],
      "effects": [],
      "range": "7.16.5 - 8.40.6",
      "nodes": [
        "node_modules/@wdio/local-runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.2.15",
        "isSemVerMajor": true
      }
    },
    "@wdio/runner": {
      "name": "@wdio/runner",
      "severity": "high",
      "isDirect": false,
      "via": [
        "webdriverio"
      ],
      "effects": [
        "@wdio/local-runner"
      ],
      "range": "7.16.5 - 8.40.6",
      "nodes": [
        "node_modules/@wdio/runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.2.15",
        "isSemVerMajor": true
      }
    },
    "@wdio/sync": {
      "name": "@wdio/sync",
      "severity": "high",
      "isDirect": true,
      "via": [
        "webdriverio"
      ],
      "effects": [],
      "range": ">=7.16.5",
      "nodes": [
        "node_modules/@wdio/sync"
      ],
      "fixAvailable": {
        "name": "@wdio/sync",
        "version": "7.14.1",
        "isSemVerMajor": true
      }
    },
    "@xmldom/xmldom": {
      "name": "@xmldom/xmldom",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1091572,
          "name": "@xmldom/xmldom",
          "dependency": "@xmldom/xmldom",
          "title": "xmldom allows multiple root nodes in a DOM",
          "url": "https://github.com/advisories/GHSA-crh6-fp67-6883",
          "severity": "critical",
          "cwe": [
            "CWE-20",
            "CWE-1288"
          ],
          "cvss": {
            "score": 9.8,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
          },
          "range": "<0.7.7"
        }
      ],
      "effects": [],
      "range": "<0.7.7",
      "nodes": [
        "node_modules/@xmldom/xmldom"
      ],
      "fixAvailable": true
    },
    "autoprefixer": {
      "name": "autoprefixer",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "postcss"
      ],
      "effects": [
        "stylelint"
      ],
      "range": "1.0.20131222 - 9.8.8",
      "nodes": [
        "node_modules/autoprefixer"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "braces": {
      "name": "braces",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1098094,
          "name": "braces",
          "dependency": "braces",
          "title": "Uncontrolled resource consumption in braces",
          "url": "https://github.com/advisories/GHSA-grv7-fg5c-xmjg",
          "severity": "high",
          "cwe": [
            "CWE-400",
            "CWE-1050"
          ],
          "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": "<3.0.3"
        }
      ],
      "effects": [],
      "range": "<3.0.3",
      "nodes": [
        "node_modules/braces"
      ],
      "fixAvailable": true
    },
    "devtools": {
      "name": "devtools",
      "severity": "high",
      "isDirect": false,
      "via": [
        "puppeteer-core"
      ],
      "effects": [],
      "range": ">=7.16.5",
      "nodes": [
        "node_modules/@wdio/runner/node_modules/devtools",
        "node_modules/devtools"
      ],
      "fixAvailable": true
    },
    "diff": {
      "name": "diff",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1095029,
          "name": "diff",
          "dependency": "diff",
          "title": "Regular Expression Denial of Service (ReDoS)",
          "url": "https://github.com/advisories/GHSA-h6ch-v84p-w6p9",
          "severity": "high",
          "cwe": [
            "CWE-400"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": "<3.5.0"
        }
      ],
      "effects": [
        "unexpected"
      ],
      "range": "<3.5.0",
      "nodes": [
        "node_modules/unexpected/node_modules/diff"
      ],
      "fixAvailable": {
        "name": "unexpected",
        "version": "13.2.1",
        "isSemVerMajor": true
      }
    },
    "ejs": {
      "name": "ejs",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1089270,
          "name": "ejs",
          "dependency": "ejs",
          "title": "ejs template injection vulnerability",
          "url": "https://github.com/advisories/GHSA-phwq-j96m-2c2q",
          "severity": "critical",
          "cwe": [
            "CWE-74"
          ],
          "cvss": {
            "score": 9.8,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
          },
          "range": "<3.1.7"
        },
        {
          "source": 1098366,
          "name": "ejs",
          "dependency": "ejs",
          "title": "ejs lacks certain pollution protection",
          "url": "https://github.com/advisories/GHSA-ghr5-ch3p-vcr6",
          "severity": "moderate",
          "cwe": [
            "CWE-693",
            "CWE-1321"
          ],
          "cvss": {
            "score": 4,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": "<3.1.10"
        }
      ],
      "effects": [],
      "range": "<=3.1.9",
      "nodes": [
        "node_modules/ejs"
      ],
      "fixAvailable": true
    },
    "eslint-config-wikimedia": {
      "name": "eslint-config-wikimedia",
      "severity": "high",
      "isDirect": true,
      "via": [
        "eslint-plugin-compat"
      ],
      "effects": [],
      "range": "0.18.0 - 0.21.0",
      "nodes": [
        "node_modules/eslint-config-wikimedia"
      ],
      "fixAvailable": {
        "name": "eslint-config-wikimedia",
        "version": "0.28.2",
        "isSemVerMajor": true
      }
    },
    "eslint-plugin-compat": {
      "name": "eslint-plugin-compat",
      "severity": "high",
      "isDirect": false,
      "via": [
        "semver"
      ],
      "effects": [
        "eslint-config-wikimedia"
      ],
      "range": "3.6.0-0 - 4.1.4",
      "nodes": [
        "node_modules/eslint-plugin-compat"
      ],
      "fixAvailable": {
        "name": "eslint-config-wikimedia",
        "version": "0.28.2",
        "isSemVerMajor": true
      }
    },
    "got": {
      "name": "got",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1088948,
          "name": "got",
          "dependency": "got",
          "title": "Got allows a redirect to a UNIX socket",
          "url": "https://github.com/advisories/GHSA-pfrx-2q88-qq97",
          "severity": "moderate",
          "cwe": [],
          "cvss": {
            "score": 5.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"
          },
          "range": "<11.8.5"
        }
      ],
      "effects": [],
      "range": "<11.8.5",
      "nodes": [
        "node_modules/got"
      ],
      "fixAvailable": true
    },
    "grunt": {
      "name": "grunt",
      "severity": "high",
      "isDirect": true,
      "via": [
        {
          "source": 1091643,
          "name": "grunt",
          "dependency": "grunt",
          "title": "Race Condition in Grunt",
          "url": "https://github.com/advisories/GHSA-rm36-94g8-835r",
          "severity": "high",
          "cwe": [
            "CWE-367"
          ],
          "cvss": {
            "score": 7,
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H"
          },
          "range": "<1.5.3"
        },
        {
          "source": 1091644,
          "name": "grunt",
          "dependency": "grunt",
          "title": "Path Traversal in Grunt",
          "url": "https://github.com/advisories/GHSA-j383-35pm-c5h4",
          "severity": "moderate",
          "cwe": [
            "CWE-22"
          ],
          "cvss": {
            "score": 5.5,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
          },
          "range": "<1.5.2"
        }
      ],
      "effects": [],
      "range": "<=1.5.2",
      "nodes": [
        "node_modules/grunt"
      ],
      "fixAvailable": {
        "name": "grunt",
        "version": "1.6.1",
        "isSemVerMajor": false
      }
    },
    "grunt-stylelint": {
      "name": "grunt-stylelint",
      "severity": "moderate",
      "isDirect": true,
      "via": [
        "stylelint"
      ],
      "effects": [],
      "range": "<=0.16.0",
      "nodes": [
        "node_modules/grunt-stylelint"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "http-cache-semantics": {
      "name": "http-cache-semantics",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1092316,
          "name": "http-cache-semantics",
          "dependency": "http-cache-semantics",
          "title": "http-cache-semantics vulnerable to Regular Expression Denial of Service",
          "url": "https://github.com/advisories/GHSA-rc47-6667-2j5j",
          "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": "<4.1.1"
        }
      ],
      "effects": [],
      "range": "<4.1.1",
      "nodes": [
        "node_modules/http-cache-semantics"
      ],
      "fixAvailable": true
    },
    "json5": {
      "name": "json5",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1096544,
          "name": "json5",
          "dependency": "json5",
          "title": "Prototype Pollution in JSON5 via Parse Method",
          "url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h",
          "severity": "high",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 7.1,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"
          },
          "range": ">=2.0.0 <2.2.2"
        }
      ],
      "effects": [],
      "range": "2.0.0 - 2.2.1",
      "nodes": [
        "node_modules/json5"
      ],
      "fixAvailable": true
    },
    "micromatch": {
      "name": "micromatch",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1098681,
          "name": "micromatch",
          "dependency": "micromatch",
          "title": "Regular Expression Denial of Service (ReDoS) in micromatch",
          "url": "https://github.com/advisories/GHSA-952p-6rrq-rcjv",
          "severity": "moderate",
          "cwe": [
            "CWE-1333"
          ],
          "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.8"
        }
      ],
      "effects": [],
      "range": "<4.0.8",
      "nodes": [
        "node_modules/micromatch"
      ],
      "fixAvailable": true
    },
    "minimatch": {
      "name": "minimatch",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1096485,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch ReDoS vulnerability",
          "url": "https://github.com/advisories/GHSA-f8q6-p94x-37v3",
          "severity": "high",
          "cwe": [
            "CWE-400",
            "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": "<3.0.5"
        }
      ],
      "effects": [
        "mocha",
        "recursive-readdir"
      ],
      "range": "<3.0.5",
      "nodes": [
        "node_modules/minimatch"
      ],
      "fixAvailable": true
    },
    "minimist": {
      "name": "minimist",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1097678,
          "name": "minimist",
          "dependency": "minimist",
          "title": "Prototype Pollution in minimist",
          "url": "https://github.com/advisories/GHSA-xvch-5gv4-984h",
          "severity": "critical",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 9.8,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
          },
          "range": ">=1.0.0 <1.2.6"
        }
      ],
      "effects": [],
      "range": "1.0.0 - 1.2.5",
      "nodes": [
        "node_modules/minimist"
      ],
      "fixAvailable": true
    },
    "mocha": {
      "name": "mocha",
      "severity": "high",
      "isDirect": false,
      "via": [
        "minimatch",
        "nanoid"
      ],
      "effects": [],
      "range": "5.1.0 - 9.2.1",
      "nodes": [
        "node_modules/mocha"
      ],
      "fixAvailable": true
    },
    "mwbot": {
      "name": "mwbot",
      "severity": "high",
      "isDirect": false,
      "via": [
        "request",
        "semver"
      ],
      "effects": [
        "wdio-mediawiki"
      ],
      "range": ">=0.1.6",
      "nodes": [
        "node_modules/mwbot"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "2.5.0",
        "isSemVerMajor": true
      }
    },
    "nanoid": {
      "name": "nanoid",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1089011,
          "name": "nanoid",
          "dependency": "nanoid",
          "title": "Exposure of Sensitive Information to an Unauthorized Actor in nanoid",
          "url": "https://github.com/advisories/GHSA-qrpm-p2h7-hrv2",
          "severity": "moderate",
          "cwe": [
            "CWE-200"
          ],
          "cvss": {
            "score": 5.5,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
          },
          "range": ">=3.0.0 <3.1.31"
        }
      ],
      "effects": [
        "mocha"
      ],
      "range": "3.0.0 - 3.1.30",
      "nodes": [
        "node_modules/nanoid"
      ],
      "fixAvailable": true
    },
    "path-to-regexp": {
      "name": "path-to-regexp",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1099561,
          "name": "path-to-regexp",
          "dependency": "path-to-regexp",
          "title": "path-to-regexp outputs backtracking regular expressions",
          "url": "https://github.com/advisories/GHSA-9wv6-86v2-598j",
          "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": ">=0.2.0 <1.9.0"
        }
      ],
      "effects": [],
      "range": "0.2.0 - 1.8.0",
      "nodes": [
        "node_modules/path-to-regexp"
      ],
      "fixAvailable": true
    },
    "postcss": {
      "name": "postcss",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1094544,
          "name": "postcss",
          "dependency": "postcss",
          "title": "PostCSS line return parsing error",
          "url": "https://github.com/advisories/GHSA-7fh5-64p2-3v2j",
          "severity": "moderate",
          "cwe": [
            "CWE-74",
            "CWE-144"
          ],
          "cvss": {
            "score": 5.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"
          },
          "range": "<8.4.31"
        }
      ],
      "effects": [
        "autoprefixer",
        "postcss-less",
        "postcss-safe-parser",
        "postcss-sass",
        "postcss-scss",
        "stylelint",
        "sugarss"
      ],
      "range": "<8.4.31",
      "nodes": [
        "node_modules/autoprefixer/node_modules/postcss",
        "node_modules/postcss",
        "node_modules/postcss-less/node_modules/postcss",
        "node_modules/postcss-safe-parser/node_modules/postcss",
        "node_modules/postcss-sass/node_modules/postcss",
        "node_modules/postcss-scss/node_modules/postcss",
        "node_modules/stylelint/node_modules/postcss",
        "node_modules/sugarss/node_modules/postcss"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "postcss-less": {
      "name": "postcss-less",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "postcss"
      ],
      "effects": [],
      "range": "<=3.1.4",
      "nodes": [
        "node_modules/postcss-less"
      ],
      "fixAvailable": true
    },
    "postcss-safe-parser": {
      "name": "postcss-safe-parser",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "postcss"
      ],
      "effects": [
        "stylelint"
      ],
      "range": "<=4.0.2",
      "nodes": [
        "node_modules/postcss-safe-parser"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "postcss-sass": {
      "name": "postcss-sass",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "postcss"
      ],
      "effects": [
        "stylelint"
      ],
      "range": "<=0.4.4",
      "nodes": [
        "node_modules/postcss-sass"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "postcss-scss": {
      "name": "postcss-scss",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "postcss"
      ],
      "effects": [
        "stylelint"
      ],
      "range": "<=2.1.1",
      "nodes": [
        "node_modules/postcss-scss"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "prismjs": {
      "name": "prismjs",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1090424,
          "name": "prismjs",
          "dependency": "prismjs",
          "title": "Cross-site Scripting in Prism",
          "url": "https://github.com/advisories/GHSA-3949-f494-cm99",
          "severity": "high",
          "cwe": [
            "CWE-79"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:L/A:L"
          },
          "range": ">=1.14.0 <1.27.0"
        }
      ],
      "effects": [],
      "range": "1.14.0 - 1.26.0",
      "nodes": [
        "node_modules/prismjs"
      ],
      "fixAvailable": true
    },
    "puppeteer-core": {
      "name": "puppeteer-core",
      "severity": "high",
      "isDirect": false,
      "via": [
        "ws"
      ],
      "effects": [
        "devtools",
        "webdriverio"
      ],
      "range": "11.0.0 - 22.11.1",
      "nodes": [
        "node_modules/puppeteer-core"
      ],
      "fixAvailable": {
        "name": "webdriverio",
        "version": "9.2.14",
        "isSemVerMajor": true
      }
    },
    "recursive-readdir": {
      "name": "recursive-readdir",
      "severity": "high",
      "isDirect": false,
      "via": [
        "minimatch"
      ],
      "effects": [],
      "range": "1.2.0 - 2.2.2",
      "nodes": [
        "node_modules/recursive-readdir"
      ],
      "fixAvailable": true
    },
    "request": {
      "name": "request",
      "severity": "moderate",
      "isDirect": true,
      "via": [
        {
          "source": 1096727,
          "name": "request",
          "dependency": "request",
          "title": "Server-Side Request Forgery in Request",
          "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
          "severity": "moderate",
          "cwe": [
            "CWE-918"
          ],
          "cvss": {
            "score": 6.1,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
          },
          "range": "<=2.88.2"
        },
        "tough-cookie"
      ],
      "effects": [
        "mwbot"
      ],
      "range": "*",
      "nodes": [
        "node_modules/request"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "2.5.0",
        "isSemVerMajor": true
      }
    },
    "semver": {
      "name": "semver",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1098562,
          "name": "semver",
          "dependency": "semver",
          "title": "semver vulnerable to Regular Expression Denial of Service",
          "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
          "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": ">=7.0.0 <7.5.2"
        },
        {
          "source": 1098563,
          "name": "semver",
          "dependency": "semver",
          "title": "semver vulnerable to Regular Expression Denial of Service",
          "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
          "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": "<5.7.2"
        },
        {
          "source": 1098564,
          "name": "semver",
          "dependency": "semver",
          "title": "semver vulnerable to Regular Expression Denial of Service",
          "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
          "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.0 <6.3.1"
        }
      ],
      "effects": [
        "eslint-plugin-compat",
        "mwbot"
      ],
      "range": "<=5.7.1 || 6.0.0 - 6.3.0 || 7.0.0 - 7.5.1",
      "nodes": [
        "node_modules/@babel/core/node_modules/semver",
        "node_modules/@babel/helper-compilation-targets/node_modules/semver",
        "node_modules/cac/node_modules/semver",
        "node_modules/eslint-plugin-node/node_modules/semver",
        "node_modules/eslint-plugin-vue/node_modules/semver",
        "node_modules/mwbot/node_modules/semver",
        "node_modules/npm-run-all/node_modules/semver",
        "node_modules/read-pkg/node_modules/semver",
        "node_modules/semver",
        "node_modules/vue-eslint-parser/node_modules/semver"
      ],
      "fixAvailable": {
        "name": "eslint-config-wikimedia",
        "version": "0.28.2",
        "isSemVerMajor": true
      }
    },
    "stylelint": {
      "name": "stylelint",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "autoprefixer",
        "postcss",
        "postcss-less",
        "postcss-safe-parser",
        "postcss-sass",
        "postcss-scss",
        "sugarss"
      ],
      "effects": [
        "grunt-stylelint"
      ],
      "range": "0.1.0 - 13.13.1",
      "nodes": [
        "node_modules/stylelint"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "sugarss": {
      "name": "sugarss",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "postcss"
      ],
      "effects": [
        "stylelint"
      ],
      "range": "<=2.0.0",
      "nodes": [
        "node_modules/sugarss"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "tough-cookie": {
      "name": "tough-cookie",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1097682,
          "name": "tough-cookie",
          "dependency": "tough-cookie",
          "title": "tough-cookie Prototype Pollution vulnerability",
          "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
          "severity": "moderate",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 6.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
          },
          "range": "<4.1.3"
        }
      ],
      "effects": [
        "request"
      ],
      "range": "<4.1.3",
      "nodes": [
        "node_modules/request/node_modules/tough-cookie",
        "node_modules/tough-cookie"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "2.5.0",
        "isSemVerMajor": true
      }
    },
    "ua-parser-js": {
      "name": "ua-parser-js",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1092302,
          "name": "ua-parser-js",
          "dependency": "ua-parser-js",
          "title": "ReDoS Vulnerability in ua-parser-js version",
          "url": "https://github.com/advisories/GHSA-fhg7-m89q-25r3",
          "severity": "high",
          "cwe": [
            "CWE-400",
            "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": ">=0.8.0 <1.0.33"
        }
      ],
      "effects": [],
      "range": "0.8.1 - 1.0.32",
      "nodes": [
        "node_modules/ua-parser-js"
      ],
      "fixAvailable": true
    },
    "unexpected": {
      "name": "unexpected",
      "severity": "high",
      "isDirect": true,
      "via": [
        "diff"
      ],
      "effects": [],
      "range": "5.0.0-beta1 - 11.0.0",
      "nodes": [
        "node_modules/unexpected"
      ],
      "fixAvailable": {
        "name": "unexpected",
        "version": "13.2.1",
        "isSemVerMajor": true
      }
    },
    "vue": {
      "name": "vue",
      "severity": "low",
      "isDirect": true,
      "via": [
        {
          "source": 1100238,
          "name": "vue",
          "dependency": "vue",
          "title": "ReDoS vulnerability in vue package that is exploitable through inefficient regex evaluation in the parseHTML function",
          "url": "https://github.com/advisories/GHSA-5j4c-8p2g-v4jx",
          "severity": "low",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 3.7,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": ">=2.0.0-alpha.1 <3.0.0-alpha.0"
        }
      ],
      "effects": [
        "vuex"
      ],
      "range": "2.0.0-alpha.1 - 2.7.16",
      "nodes": [
        "node_modules/vue"
      ],
      "fixAvailable": {
        "name": "vue",
        "version": "3.5.13",
        "isSemVerMajor": true
      }
    },
    "vuex": {
      "name": "vuex",
      "severity": "low",
      "isDirect": true,
      "via": [
        "vue"
      ],
      "effects": [],
      "range": "3.1.3 - 3.6.2",
      "nodes": [
        "node_modules/vuex"
      ],
      "fixAvailable": {
        "name": "vuex",
        "version": "4.1.0",
        "isSemVerMajor": true
      }
    },
    "wdio-mediawiki": {
      "name": "wdio-mediawiki",
      "severity": "high",
      "isDirect": true,
      "via": [
        "mwbot"
      ],
      "effects": [
        "wdio-wikibase"
      ],
      "range": "1.1.0 - 2.2.0",
      "nodes": [
        "node_modules/wdio-mediawiki"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "2.5.0",
        "isSemVerMajor": true
      }
    },
    "wdio-wikibase": {
      "name": "wdio-wikibase",
      "severity": "high",
      "isDirect": true,
      "via": [
        "wdio-mediawiki"
      ],
      "effects": [],
      "range": "5.1.0 - 5.2.0",
      "nodes": [
        "node_modules/wdio-wikibase"
      ],
      "fixAvailable": {
        "name": "wdio-wikibase",
        "version": "6.0.3",
        "isSemVerMajor": true
      }
    },
    "webdriverio": {
      "name": "webdriverio",
      "severity": "high",
      "isDirect": true,
      "via": [
        "devtools",
        "puppeteer-core"
      ],
      "effects": [
        "@wdio/cli",
        "@wdio/runner",
        "@wdio/sync"
      ],
      "range": "7.16.5 - 8.40.6",
      "nodes": [
        "node_modules/@wdio/runner/node_modules/webdriverio",
        "node_modules/webdriverio"
      ],
      "fixAvailable": {
        "name": "webdriverio",
        "version": "9.2.14",
        "isSemVerMajor": true
      }
    },
    "word-wrap": {
      "name": "word-wrap",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1097681,
          "name": "word-wrap",
          "dependency": "word-wrap",
          "title": "word-wrap vulnerable to Regular Expression Denial of Service",
          "url": "https://github.com/advisories/GHSA-j8xg-fqg3-53r7",
          "severity": "moderate",
          "cwe": [
            "CWE-1333"
          ],
          "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": "<1.2.4"
        }
      ],
      "effects": [],
      "range": "<1.2.4",
      "nodes": [
        "node_modules/word-wrap"
      ],
      "fixAvailable": true
    },
    "ws": {
      "name": "ws",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1098392,
          "name": "ws",
          "dependency": "ws",
          "title": "ws affected by a DoS when handling a request with many HTTP headers",
          "url": "https://github.com/advisories/GHSA-3h5v-q93c-6h6q",
          "severity": "high",
          "cwe": [
            "CWE-476"
          ],
          "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.17.1"
        }
      ],
      "effects": [
        "puppeteer-core"
      ],
      "range": "8.0.0 - 8.17.0",
      "nodes": [
        "node_modules/ws"
      ],
      "fixAvailable": {
        "name": "webdriverio",
        "version": "9.2.14",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 2,
      "moderate": 15,
      "high": 26,
      "critical": 4,
      "total": 47
    },
    "dependencies": {
      "prod": 1,
      "dev": 1017,
      "optional": 2,
      "peer": 102,
      "peerOptional": 0,
      "total": 1017
    }
  }
}

--- 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: 54 installs, 0 updates, 0 removals
  - Locking composer/pcre (1.0.1)
  - Locking composer/semver (3.4.3)
  - Locking composer/spdx-licenses (1.5.8)
  - Locking composer/xdebug-handler (2.0.5)
  - Locking davidrjonas/composer-lock-diff (1.7.0)
  - Locking doctrine/annotations (1.14.4)
  - Locking doctrine/cache (1.13.0)
  - Locking doctrine/collections (1.8.0)
  - Locking doctrine/common (2.13.3)
  - Locking doctrine/deprecations (1.1.3)
  - Locking doctrine/event-manager (1.2.0)
  - Locking doctrine/inflector (1.4.4)
  - Locking doctrine/lexer (1.2.3)
  - Locking doctrine/persistence (1.3.8)
  - Locking doctrine/reflection (1.2.4)
  - Locking felixfbecker/advanced-json-rpc (v3.2.1)
  - Locking giorgiosironi/eris (0.10.0)
  - Locking hamcrest/hamcrest-php (v2.0.1)
  - Locking icomefromthenet/reverse-regex (v0.0.6.3)
  - Locking mediawiki/mediawiki-codesniffer (v38.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.11.1)
  - Locking mediawiki/minus-x (1.1.1)
  - Locking mediawiki/phan-taint-check-plugin (3.3.2)
  - Locking microsoft/tolerant-php-parser (v0.1.2)
  - Locking netresearch/jsonmapper (v4.5.0)
  - Locking patchwork/utf8 (v1.3.3)
  - Locking phan/phan (5.2.0)
  - Locking php-parallel-lint/php-console-color (v0.3)
  - Locking php-parallel-lint/php-console-highlighter (v0.5)
  - Locking php-parallel-lint/php-parallel-lint (v1.3.1)
  - Locking phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (5.6.0)
  - Locking phpdocumentor/type-resolver (1.10.0)
  - Locking phpstan/phpdoc-parser (2.0.0)
  - Locking psr/cache (3.0.0)
  - Locking psr/container (2.0.2)
  - Locking psr/log (2.0.0)
  - Locking sabre/event (5.1.7)
  - Locking serialization/serialization (4.0.0)
  - Locking squizlabs/php_codesniffer (3.6.1)
  - Locking symfony/console (v5.4.47)
  - Locking symfony/deprecation-contracts (v3.5.0)
  - Locking symfony/polyfill-ctype (v1.31.0)
  - Locking symfony/polyfill-intl-grapheme (v1.31.0)
  - Locking symfony/polyfill-intl-normalizer (v1.31.0)
  - Locking symfony/polyfill-mbstring (v1.31.0)
  - Locking symfony/polyfill-php73 (v1.31.0)
  - Locking symfony/polyfill-php80 (v1.31.0)
  - Locking symfony/service-contracts (v3.5.0)
  - Locking symfony/string (v6.4.15)
  - Locking tysonandre/var_representation_polyfill (0.1.3)
  - Locking webmozart/assert (1.11.0)
  - Locking wikimedia/assert (v0.5.1)
  - Locking wmde/php-vuejs-templating (1.1.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 54 installs, 0 updates, 0 removals
  - Downloading davidrjonas/composer-lock-diff (1.7.0)
  - Downloading doctrine/inflector (1.4.4)
  - Downloading doctrine/lexer (1.2.3)
  - Downloading doctrine/annotations (1.14.4)
  - Downloading doctrine/reflection (1.2.4)
  - Downloading doctrine/event-manager (1.2.0)
  - Downloading doctrine/collections (1.8.0)
  - Downloading doctrine/cache (1.13.0)
  - Downloading doctrine/persistence (1.3.8)
  - Downloading giorgiosironi/eris (0.10.0)
  - Downloading patchwork/utf8 (v1.3.3)
  - Downloading doctrine/common (2.13.3)
  - Downloading icomefromthenet/reverse-regex (v0.0.6.3)
  - Downloading wmde/php-vuejs-templating (1.1.0)
  0/14 [>---------------------------]   0%
  3/14 [======>---------------------]  21%
 12/14 [========================>---]  85%
 13/14 [==========================>-]  92%
 14/14 [============================] 100%
  - Installing composer/pcre (1.0.1): Extracting archive
  - Installing davidrjonas/composer-lock-diff (1.7.0): Extracting archive
  - Installing doctrine/inflector (1.4.4): Extracting archive
  - Installing doctrine/lexer (1.2.3): Extracting archive
  - Installing psr/cache (3.0.0): Extracting archive
  - Installing doctrine/annotations (1.14.4): Extracting archive
  - Installing doctrine/reflection (1.2.4): Extracting archive
  - Installing doctrine/deprecations (1.1.3): Extracting archive
  - Installing doctrine/event-manager (1.2.0): Extracting archive
  - Installing doctrine/collections (1.8.0): Extracting archive
  - Installing doctrine/cache (1.13.0): Extracting archive
  - Installing doctrine/persistence (1.3.8): Extracting archive
  - Installing giorgiosironi/eris (0.10.0): Extracting archive
  - Installing hamcrest/hamcrest-php (v2.0.1): Extracting archive
  - Installing patchwork/utf8 (v1.3.3): Extracting archive
  - Installing doctrine/common (2.13.3): Extracting archive
  - Installing icomefromthenet/reverse-regex (v0.0.6.3): Extracting archive
  - Installing squizlabs/php_codesniffer (3.6.1): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.31.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.8): Extracting archive
  - Installing composer/semver (3.4.3): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v38.0.0): Extracting archive
  - Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
  - Installing symfony/polyfill-php80 (v1.31.0): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.31.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.31.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.31.0): Extracting archive
  - Installing symfony/string (v6.4.15): Extracting archive
  - Installing symfony/deprecation-contracts (v3.5.0): Extracting archive
  - Installing psr/container (2.0.2): Extracting archive
  - Installing symfony/service-contracts (v3.5.0): Extracting archive
  - Installing symfony/polyfill-php73 (v1.31.0): Extracting archive
  - Installing symfony/console (v5.4.47): Extracting archive
  - Installing sabre/event (5.1.7): Extracting archive
  - Installing netresearch/jsonmapper (v4.5.0): Extracting archive
  - Installing microsoft/tolerant-php-parser (v0.1.2): Extracting archive
  - Installing webmozart/assert (1.11.0): Extracting archive
  - Installing phpstan/phpdoc-parser (2.0.0): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing phpdocumentor/type-resolver (1.10.0): Extracting archive
  - Installing phpdocumentor/reflection-docblock (5.6.0): Extracting archive
  - Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
  - Installing psr/log (2.0.0): Extracting archive
  - Installing composer/xdebug-handler (2.0.5): Extracting archive
  - Installing phan/phan (5.2.0): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (3.3.2): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.11.1): Extracting archive
  - Installing mediawiki/minus-x (1.1.1): Extracting archive
  - Installing php-parallel-lint/php-console-color (v0.3): Extracting archive
  - Installing php-parallel-lint/php-console-highlighter (v0.5): Extracting archive
  - Installing php-parallel-lint/php-parallel-lint (v1.3.1): Extracting archive
  - Installing serialization/serialization (4.0.0): Extracting archive
  - Installing wikimedia/assert (v0.5.1): Extracting archive
  - Installing wmde/php-vuejs-templating (1.1.0): Extracting archive
  0/54 [>---------------------------]   0%
 19/54 [=========>------------------]  35%
 32/54 [================>-----------]  59%
 42/54 [=====================>------]  77%
 54/54 [============================] 100%
6 package suggestions were added by new dependencies, use `composer suggest` to see details.
Package doctrine/reflection is abandoned, you should avoid using it. Use roave/better-reflection instead.
Package patchwork/utf8 is abandoned, you should avoid using it. Use symfony/polyfill-mbstring or symfony/string instead.
Generating autoload files
22 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---

--- end ---
Upgrading n:grunt from 1.4.1 -> 1.5.3
$ /usr/bin/npm install
--- stderr ---
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wdio/sync@7.16.14',
npm WARN EBADENGINE   required: { node: '>=12.0.0 <16' },
npm WARN EBADENGINE   current: { node: 'v18.19.0', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated @stylelint/postcss-markdown@0.36.2: Use the original unforked package instead: postcss-markdown
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated grunt-jasmine-nodejs@1.6.1: Deprecated in favor of npm scripts.
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated core-js@2.6.12: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
--- stdout ---

added 1016 packages, and audited 1017 packages in 17s

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

46 vulnerabilities (2 low, 15 moderate, 25 high, 4 critical)

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

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

Run `npm audit` for details.

--- end ---
$ package-lock-lint package-lock.json
--- stdout ---
Checking package-lock.json

--- end ---
$ /usr/bin/npm ci
--- stderr ---
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wdio/sync@7.16.14',
npm WARN EBADENGINE   required: { node: '>=12.0.0 <16' },
npm WARN EBADENGINE   current: { node: 'v18.19.0', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated @stylelint/postcss-markdown@0.36.2: Use the original unforked package instead: postcss-markdown
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated grunt-jasmine-nodejs@1.6.1: Deprecated in favor of npm scripts.
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated core-js@2.6.12: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
--- stdout ---

added 1016 packages, and audited 1017 packages in 25s

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

46 vulnerabilities (2 low, 15 moderate, 25 high, 4 critical)

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

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

Run `npm audit` for details.

--- end ---
$ /usr/bin/npm test
--- stderr ---
[Vue warn]: Error in mounted hook: "TypeError: mw.message(...).text is not a function"

found in

---> <LanguageSelector>
       <Root>
TypeError: mw.message(...).text is not a function
    at getLanguageLabel (/src/repo/resources/widgets/LanguageSelectorWrapper.js:23:8)
    at /src/repo/resources/widgets/LanguageSelectorWrapper.js:29:25
    at Array.forEach (<anonymous>)
    at VueComponent.mounted (/src/repo/resources/widgets/LanguageSelectorWrapper.js:28:20)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:1872:59)
    at callHook (/src/repo/node_modules/vue/dist/vue.js:4236:9)
    at Object.insert (/src/repo/node_modules/vue/dist/vue.js:3165:9)
    at invokeInsertHook (/src/repo/node_modules/vue/dist/vue.js:6385:30)
    at Vue.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:6602:7)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:3964:21)
    at Vue.updateComponent (/src/repo/node_modules/vue/dist/vue.js:4082:12)
    at Watcher.get (/src/repo/node_modules/vue/dist/vue.js:4494:27)
    at Watcher.run (/src/repo/node_modules/vue/dist/vue.js:4569:24)
    at flushSchedulerQueue (/src/repo/node_modules/vue/dist/vue.js:4327:15)
    at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:1998:14)
    at flushCallbacks (/src/repo/node_modules/vue/dist/vue.js:1924:16)
[Vue warn]: Error in mounted hook: "TypeError: mw.message(...).text is not a function"

found in

---> <LanguageSelector>
       <Root>
TypeError: mw.message(...).text is not a function
    at getLanguageLabel (/src/repo/resources/widgets/LanguageSelectorWrapper.js:23:8)
    at /src/repo/resources/widgets/LanguageSelectorWrapper.js:29:25
    at Array.forEach (<anonymous>)
    at VueComponent.mounted (/src/repo/resources/widgets/LanguageSelectorWrapper.js:28:20)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:1872:59)
    at callHook (/src/repo/node_modules/vue/dist/vue.js:4236:9)
    at Object.insert (/src/repo/node_modules/vue/dist/vue.js:3165:9)
    at invokeInsertHook (/src/repo/node_modules/vue/dist/vue.js:6385:30)
    at Vue.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:6602:7)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:3964:21)
    at Vue.updateComponent (/src/repo/node_modules/vue/dist/vue.js:4082:12)
    at Watcher.get (/src/repo/node_modules/vue/dist/vue.js:4494:27)
    at Watcher.run (/src/repo/node_modules/vue/dist/vue.js:4569:24)
    at flushSchedulerQueue (/src/repo/node_modules/vue/dist/vue.js:4327:15)
    at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:1998:14)
    at flushCallbacks (/src/repo/node_modules/vue/dist/vue.js:1924:16)
[Vue warn]: Error in mounted hook: "TypeError: mw.message(...).text is not a function"

found in

---> <LanguageSelector>
       <Root>
TypeError: mw.message(...).text is not a function
    at getLanguageLabel (/src/repo/resources/widgets/LanguageSelectorWrapper.js:23:8)
    at /src/repo/resources/widgets/LanguageSelectorWrapper.js:29:25
    at Array.forEach (<anonymous>)
    at VueComponent.mounted (/src/repo/resources/widgets/LanguageSelectorWrapper.js:28:20)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:1872:59)
    at callHook (/src/repo/node_modules/vue/dist/vue.js:4236:9)
    at Object.insert (/src/repo/node_modules/vue/dist/vue.js:3165:9)
    at invokeInsertHook (/src/repo/node_modules/vue/dist/vue.js:6385:30)
    at Vue.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:6602:7)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:3964:21)
    at Vue.updateComponent (/src/repo/node_modules/vue/dist/vue.js:4082:12)
    at Watcher.get (/src/repo/node_modules/vue/dist/vue.js:4494:27)
    at Watcher.run (/src/repo/node_modules/vue/dist/vue.js:4569:24)
    at flushSchedulerQueue (/src/repo/node_modules/vue/dist/vue.js:4327:15)
    at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:1998:14)
    at flushCallbacks (/src/repo/node_modules/vue/dist/vue.js:1924:16)
[Vue warn]: Error in mounted hook: "TypeError: mw.message(...).text is not a function"

found in

---> <LanguageSelector>
       <Root>
TypeError: mw.message(...).text is not a function
    at getLanguageLabel (/src/repo/resources/widgets/LanguageSelectorWrapper.js:23:8)
    at /src/repo/resources/widgets/LanguageSelectorWrapper.js:29:25
    at Array.forEach (<anonymous>)
    at VueComponent.mounted (/src/repo/resources/widgets/LanguageSelectorWrapper.js:28:20)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:1872:59)
    at callHook (/src/repo/node_modules/vue/dist/vue.js:4236:9)
    at Object.insert (/src/repo/node_modules/vue/dist/vue.js:3165:9)
    at invokeInsertHook (/src/repo/node_modules/vue/dist/vue.js:6385:30)
    at Vue.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:6602:7)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:3964:21)
    at Vue.updateComponent (/src/repo/node_modules/vue/dist/vue.js:4082:12)
    at Watcher.get (/src/repo/node_modules/vue/dist/vue.js:4494:27)
    at Watcher.run (/src/repo/node_modules/vue/dist/vue.js:4569:24)
    at flushSchedulerQueue (/src/repo/node_modules/vue/dist/vue.js:4327:15)
    at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:1998:14)
    at flushCallbacks (/src/repo/node_modules/vue/dist/vue.js:1924:16)
[Vue warn]: Error in mounted hook: "TypeError: api.formatValue is not a function"

found in

---> <ItemSelector>
       <Root>
TypeError: api.formatValue is not a function
    at formatEntityLabel (/src/repo/resources/widgets/ItemSelectorWrapper.js:13:7)
    at VueComponent.mounted (/src/repo/resources/widgets/ItemSelectorWrapper.js:37:5)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:1872:59)
    at callHook (/src/repo/node_modules/vue/dist/vue.js:4236:9)
    at Object.insert (/src/repo/node_modules/vue/dist/vue.js:3165:9)
    at invokeInsertHook (/src/repo/node_modules/vue/dist/vue.js:6385:30)
    at VueComponent.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:6602:7)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:3964:21)
    at VueComponent.updateComponent (/src/repo/node_modules/vue/dist/vue.js:4082:12)
    at Watcher.get (/src/repo/node_modules/vue/dist/vue.js:4494:27)
    at Watcher.run (/src/repo/node_modules/vue/dist/vue.js:4569:24)
    at flushSchedulerQueue (/src/repo/node_modules/vue/dist/vue.js:4327:15)
    at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:1998:14)
    at flushCallbacks (/src/repo/node_modules/vue/dist/vue.js:1924:16)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Vue warn]: Error in mounted hook: "TypeError: api.formatValue is not a function"

found in

---> <ItemSelector>
       <Root>
TypeError: api.formatValue is not a function
    at formatEntityLabel (/src/repo/resources/widgets/ItemSelectorWrapper.js:13:7)
    at VueComponent.mounted (/src/repo/resources/widgets/ItemSelectorWrapper.js:37:5)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:1872:59)
    at callHook (/src/repo/node_modules/vue/dist/vue.js:4236:9)
    at Object.insert (/src/repo/node_modules/vue/dist/vue.js:3165:9)
    at invokeInsertHook (/src/repo/node_modules/vue/dist/vue.js:6385:30)
    at VueComponent.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:6602:7)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:3964:21)
    at VueComponent.updateComponent (/src/repo/node_modules/vue/dist/vue.js:4082:12)
    at Watcher.get (/src/repo/node_modules/vue/dist/vue.js:4494:27)
    at Watcher.run (/src/repo/node_modules/vue/dist/vue.js:4569:24)
    at flushSchedulerQueue (/src/repo/node_modules/vue/dist/vue.js:4327:15)
    at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:1998:14)
    at flushCallbacks (/src/repo/node_modules/vue/dist/vue.js:1924:16)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Vue warn]: Error in destroyed hook: "TypeError: Cannot read properties of undefined (reading 'destroy')"

found in

---> <ItemSelector>
       <Root>
TypeError: Cannot read properties of undefined (reading 'destroy')
    at VueComponent.destroyed (/src/repo/resources/widgets/ItemSelectorWrapper.js:66:43)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:1872:59)
    at callHook (/src/repo/node_modules/vue/dist/vue.js:4236:9)
    at Vue.$destroy (/src/repo/node_modules/vue/dist/vue.js:4019:7)
    at destroy (/src/repo/node_modules/vue/dist/vue.js:3185:29)
    at invokeDestroyHook (/src/repo/node_modules/vue/dist/vue.js:6153:61)
    at removeVnodes (/src/repo/node_modules/vue/dist/vue.js:6169:13)
    at updateChildren (/src/repo/node_modules/vue/dist/vue.js:6274:9)
    at patchVnode (/src/repo/node_modules/vue/dist/vue.js:6358:31)
    at updateChildren (/src/repo/node_modules/vue/dist/vue.js:6232:11)
    at patchVnode (/src/repo/node_modules/vue/dist/vue.js:6358:31)
    at updateChildren (/src/repo/node_modules/vue/dist/vue.js:6232:11)
    at patchVnode (/src/repo/node_modules/vue/dist/vue.js:6358:31)
    at VueComponent.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:6519:11)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:3964:21)
    at VueComponent.updateComponent (/src/repo/node_modules/vue/dist/vue.js:4082:12)
[Vue warn]: Error in destroyed hook: "TypeError: Cannot read properties of undefined (reading 'destroy')"

found in

---> <ItemSelector>
       <Root>
TypeError: Cannot read properties of undefined (reading 'destroy')
    at VueComponent.destroyed (/src/repo/resources/widgets/ItemSelectorWrapper.js:66:43)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:1872:59)
    at callHook (/src/repo/node_modules/vue/dist/vue.js:4236:9)
    at Vue.$destroy (/src/repo/node_modules/vue/dist/vue.js:4019:7)
    at destroy (/src/repo/node_modules/vue/dist/vue.js:3185:29)
    at invokeDestroyHook (/src/repo/node_modules/vue/dist/vue.js:6153:61)
    at removeVnodes (/src/repo/node_modules/vue/dist/vue.js:6169:13)
    at updateChildren (/src/repo/node_modules/vue/dist/vue.js:6274:9)
    at patchVnode (/src/repo/node_modules/vue/dist/vue.js:6358:31)
    at updateChildren (/src/repo/node_modules/vue/dist/vue.js:6232:11)
    at patchVnode (/src/repo/node_modules/vue/dist/vue.js:6358:31)
    at updateChildren (/src/repo/node_modules/vue/dist/vue.js:6232:11)
    at patchVnode (/src/repo/node_modules/vue/dist/vue.js:6358:31)
    at VueComponent.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:6519:11)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:3964:21)
    at VueComponent.updateComponent (/src/repo/node_modules/vue/dist/vue.js:4082:12)
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@es-joy/jsdoccomment@0.20.1',
npm WARN EBADENGINE   required: { node: '^12 || ^14 || ^16 || ^17' },
npm WARN EBADENGINE   current: { node: 'v18.19.0', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'eslint-plugin-jsdoc@37.9.7',
npm WARN EBADENGINE   required: { node: '^12 || ^14 || ^16 || ^17' },
npm WARN EBADENGINE   current: { node: 'v18.19.0', npm: '9.2.0' }
npm WARN EBADENGINE }
--- stdout ---

> test
> run-s test:*


> test:grunt
> grunt test

Running "eslint:all" (eslint) task

/src/repo/resources/jquery.wikibase.lexemeformview.js
  287:0  warning  Missing JSDoc @param "lemmas" type           jsdoc/require-param-type
  288:0  warning  Missing JSDoc @param "formIndex" type        jsdoc/require-param-type
  289:0  warning  Missing JSDoc @param "formId" type           jsdoc/require-param-type
  290:0  warning  Missing JSDoc @param "representations" type  jsdoc/require-param-type

/src/repo/resources/special/SpecialNewLexemeAlphaSkipVueApp.js
  0:0  warning  File ignored because of a matching ignore pattern. Use "--no-ignore" to override

/src/repo/resources/view/ViewFactoryFactory.js
  17:0  warning  Syntax error in type: []  jsdoc/valid-types

/src/repo/resources/widgets/GlossWidget.js
  34:0  warning  Syntax error in type: [{ value: string, language: string }]  jsdoc/valid-types

/src/repo/tests/selenium/pageobjects/lexeme.page.js
  236:0  warning  Missing JSDoc @param "input" type  jsdoc/require-param-type
  237:0  warning  Missing JSDoc @param "value" type  jsdoc/require-param-type

/src/repo/tests/selenium/specs/header.edit.js
  12:25  warning  "../../../../Wikibase/repo/tests/selenium/wdio-wikibase/wikibase.api" is not found  node/no-missing-require

✖ 10 problems (0 errors, 10 warnings)


Running "banana:WikibaseLexeme" (banana) task
>> 3 message directories checked.

Running "jasmine_nodejs:all" (jasmine_nodejs) task

>> Executing 121 defined specs...

Test Suites & Specs:

1) store
Download the Vue Devtools extension for a better development experience:
https://github.com/vuejs/vue-devtools
You are running Vue in development mode.
Make sure to turn on production mode when deploying for production.
See more tips at https://vuejs.org/guide/deployment.html
Download the Vue Devtools extension for a better development experience:
https://github.com/vuejs/vue-devtools
You are running Vue in development mode.
Make sure to turn on production mode when deploying for production.
See more tips at https://vuejs.org/guide/deployment.html
   ✔ creates initial state

2) wikibase.lexeme.widgets.LemmaWidget
   ✔ edit mode is false
   ✔ can carry redundant lemma languages
   ✔ remove a lemma
   ✔ initialize widget with one lemma
   ✔ detects redundant lemma language to mark the individual languages
   ✔ detects redundant lemma languages to mark the widget
   ✔ edit mode is true
   ✔ add a new lemma
   ✔ marks-up the lemma term with the lemma language

3) LexemeHeader.newLexemeHeaderStore
   ✔ mutation updateLanguage changes language and languageLink to given values
   ✔ mutation updateLanguage changes lexical category and the link to given values
   ✔ action save calls API with correct parameters when removing an item from the state
   ✔ mutation finishSaving switches the isSaving flag to false
   ✔ mutation updateRevisionId changes baseRevId to given value
   ✔ failed save returns rejected promise with a single error object
   ✔ action save calls API with correct parameters and changes state using data from response
   ✔ failed save returns rejected promise with first error object if API returns multiple errors
   ✔ action save on success mutates the state to start saving, updates state and finishes saving
   ✔ mutation updateLemmas changes lemmas to given values
   ✔ mutation startSaving switches the isSaving flag to true

4) wikibase.lexeme.widgets.LexemeHeader

   5) hasChanges
      ✔ ignores added empty lemmas
      ✔ returns true when lemmas change
      ✔ returns true when lexical category changes
      ✔ returns true when language changes
      ✔ returns false by default

   ✔ passes lemmas to LemmaWidget

   ✔ save lemma list

   6) isUnsaveable
      ✔ returns true when there are changes but also lemmas with redundant languages
      ✔ returns true when there are changes but saving is ongoing
      ✔ returns true when there are no changes
      ✔ returns false by default

   ✔ attempting to save with empty lemmas fails

   ✔ shows save button enabled when not unsaveable

   ✔ binds to lemma-widget hasRedundantLanguage event

   ✔ switch to edit mode

   ✔ updates language and lexical category on save

   ✔ cancel edit mode

   ✔ shows save button disabled when unsaveable

   ✔ passes language and lexical category to LanguageAndLexicalCategoryWidget

   ✔ save lemma list with error

   ✔ shows save button disabled without changes

7) mutations
   ✔ DERIVE_REPRESENTATION_LANGUAGE_FROM_LEMMA changes representation language correctly
   ✔ REPLACE_ALL_REPRESENTATIONS replaces representations of correct form
   ✔ UPDATE_REPRESENTATION_VALUE changes correct representation value
   ✔ UPDATE_REPRESENTATION_LANGUAGE changes correct representation language
   ✔ ADD_REPRESENTATION adds a new representation to the right form
   ✔ REMOVE_REPRESENTATION removes representation leaving others with updated index

8) GlossWidget
   ✔ initialize widget with one gloss
   ✔ removes empty glosses when saved
   ✔ switch to edit mode
   ✔ remove a gloss
   ✔ create with no glosses - when switched to edit mode empty gloss is added
   ✔ add a new gloss
   ✔ stop editing

9) RepresentationWidget
   ✔ cannot remove representation if not in edit mode
   ✔ adds a representation with unique lemmas language on add after delete
   ✔ is not in edit mode after editing is stopped
   ✔ switches to edit mode when editing
   ✔ can carry redundant representations
   ✔ detects redundant representation languages and can mark the individual languages
   ✔ cannot add representation if not in edit mode
   ✔ detects redundant representation languages and marks the widget
   ✔ adds an empty representation on add
   ✔ is not in edit mode after being created
   ✔ can remove a representation
   ✔ adds a new empty representation when editing the widget with no representations and multiple lemmas
   ✔ adds a new representation with lemma language when editing the widget with no representations and one lemma
   ✔ shows only the representation it contains when editing the widget with some representation

10) InvalidLanguageIndicator
   ✔ creates mixin property hasInvalidLanguage returning true for existing InvalidLanguages
   ✔ creates mixin definition that adds an InvalidLanguages property to data
   ✔ creates mixin watch handler not taking offence in empty language
   ✔ creates mixin watch handler that can find multiple invalid languages
   ✔ creates mixin watch handler that updates InvalidLanguages with respective language values
   ✔ creates mixin property hasInvalidLanguage returning false for empty InvalidLanguages
   ✔ creates mixin definition providing computed property hasInvalidLanguage
   ✔ creates mixin definition with watch that does not fire immediately
   ✔ creates mixin definition with watch on desired property
   ✔ creates mixin definition method isInvalidLanguage returning false for empty InvalidLanguages
   ✔ creates mixin definition with watch that monitors the property recursively
   ✔ creates mixin definition providing method to determine if language isInvalidLanguage

11) ItemSelectorWrapper
   ✔ passes the item ID to the entityselector widget on mount

12) RedundantLanguageIndicator
   ✔ creates mixin definition with watch that fires immediately
   ✔ creates mixin watch handler that updates redundantLanguages with respective language values
   ✔ creates mixin definition providing method to determine if language isRedundantLanguage
   ✔ creates mixin definition with watch on desired property
   ✔ creates mixin property hasRedundantLanguage returning true for existing redundantLanguages
   ✔ creates mixin definition method isRedundantLanguage returning false for empty redundantLanguages
   ✔ creates mixin watch handler that can find multiple redundant languages
   ✔ creates mixin property hasRedundantLanguage returning false for empty redundantLanguages
   ✔ creates mixin definition that adds a redundantLanguages property to data
   ✔ creates mixin definition providing computed property hasRedundantLanguage
   ✔ creates mixin watch handler not taking offence in repeated empty language
   ✔ creates mixin definition with watch that monitors the property recursively

13) actions
   ✔ ADD_REPRESENTATION on state having no representations and multiple lemmas mutates to empty values
   ✔ UPDATE_REPRESENTATION_LANGUAGE delegates to mutation
   ✔ REPLACE_ALL_REPRESENTATIONS delegates to mutation
   ✔ ADD_REPRESENTATION on state having existing representation and one lemma mutates to empty values
   ✔ REMOVE_REPRESENTATION delegates to mutation
   ✔ ADD_REPRESENTATION on state having no representations and one lemma mutates to empty values and derives lemma language
   ✔ UPDATE_REPRESENTATION_VALUE delegates to mutation

14) actionTypes
   ✔ uses unique ids for all action types

15) LemmaList

   16) equals
      ✔ ignores empty lemmas
      ✔ returns true for LemmaList with same lemmas
      ✔ returns false for objects that are not of type LemmaList
      ✔ returns false for LemmaList of different length
      ✔ returns false for LemmaList with different lemmas

   ✔ remove

   ✔ add

   17) copy
      ✔ creates an identical LemmaList
      ✔ clones Lemmas

   ✔ getLemmas

   ✔ length

18) LexemeSubEntityId

   19) getIdSuffix
      ✔ returns the Sense id suffix
      ✔ returns the Form id suffix

20) mutationTypes
   ✔ uses unique ids for all mutation types

21) focusElement
   ✔ returns a callback without doing anything else

   22) callback
      ✔ can handle missing element
      ✔ calls focus on selected element

23) LanguageAndLexicalCategoryWidget
   ✔ shows the language and the lexical category
   ✔ switches to edit mode and back

>> Done!


Summary:

Suites:  23 of 23
Specs:   121 of 121
Expects: 0 (0 failures)
Finished in 0.480 seconds

>> Successful!

Running "stylelint:all" (stylelint) task
>> Linted 8 files without errors

Done.

> test:snl-distnodiff
> run-s snl:install snl:build snl:cp snl:diff


> snl:install
> npm -C $npm_package_config_snl_src i


> new-lexeme-special-page@0.0.1 prepare
> husky install

husky - Git hooks installed

added 1064 packages, and audited 1065 packages in 20s

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

22 vulnerabilities (13 moderate, 8 high, 1 critical)

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

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

Run `npm audit` for details.

> snl:build
> npm -C $npm_package_config_snl_src run build


> new-lexeme-special-page@0.0.1 build
> vite build

vite v2.9.14 building for production...
transforming...
✓ 81 modules transformed.
rendering chunks...
dist/style.css                 26.29 KiB / gzip: 4.03 KiB
dist/SpecialNewLexeme.cjs.js   97.90 KiB / gzip: 32.71 KiB

> snl:cp
> run-p snl:cp:*


> snl:cp:css
> cp $npm_package_config_snl_src/dist/$npm_package_config_snl_css $npm_package_config_snl_dist/


> snl:cp:cjs
> cp $npm_package_config_snl_src/dist/$npm_package_config_snl_cjs $npm_package_config_snl_dist/


> snl:diff
> git diff --exit-code $npm_package_config_snl_dist


> test:snl-main
> git -C $npm_package_config_snl_src branch --contains HEAD main | grep -q .


> test:mwlibs
> echo 'disabled (T297381)' # ZUUL_BRANCH=${ZUUL_BRANCH:-master} lib-version-check

disabled (T297381)

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@babel/traverse": {
      "name": "@babel/traverse",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1096886,
          "name": "@babel/traverse",
          "dependency": "@babel/traverse",
          "title": "Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code",
          "url": "https://github.com/advisories/GHSA-67hx-6x53-jw92",
          "severity": "critical",
          "cwe": [
            "CWE-184",
            "CWE-697"
          ],
          "cvss": {
            "score": 9.4,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
          },
          "range": "<7.23.2"
        }
      ],
      "effects": [],
      "range": "<7.23.2",
      "nodes": [
        "node_modules/@babel/traverse"
      ],
      "fixAvailable": true
    },
    "@wdio/cli": {
      "name": "@wdio/cli",
      "severity": "high",
      "isDirect": true,
      "via": [
        "webdriverio"
      ],
      "effects": [],
      "range": "7.16.5 - 8.40.6",
      "nodes": [
        "node_modules/@wdio/cli"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.2.14",
        "isSemVerMajor": true
      }
    },
    "@wdio/local-runner": {
      "name": "@wdio/local-runner",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/runner"
      ],
      "effects": [],
      "range": "7.16.5 - 8.40.6",
      "nodes": [
        "node_modules/@wdio/local-runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.2.15",
        "isSemVerMajor": true
      }
    },
    "@wdio/runner": {
      "name": "@wdio/runner",
      "severity": "high",
      "isDirect": false,
      "via": [
        "webdriverio"
      ],
      "effects": [
        "@wdio/local-runner"
      ],
      "range": "7.16.5 - 8.40.6",
      "nodes": [
        "node_modules/@wdio/runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.2.15",
        "isSemVerMajor": true
      }
    },
    "@wdio/sync": {
      "name": "@wdio/sync",
      "severity": "high",
      "isDirect": true,
      "via": [
        "webdriverio"
      ],
      "effects": [],
      "range": ">=7.16.5",
      "nodes": [
        "node_modules/@wdio/sync"
      ],
      "fixAvailable": {
        "name": "@wdio/sync",
        "version": "7.14.1",
        "isSemVerMajor": true
      }
    },
    "@xmldom/xmldom": {
      "name": "@xmldom/xmldom",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1091572,
          "name": "@xmldom/xmldom",
          "dependency": "@xmldom/xmldom",
          "title": "xmldom allows multiple root nodes in a DOM",
          "url": "https://github.com/advisories/GHSA-crh6-fp67-6883",
          "severity": "critical",
          "cwe": [
            "CWE-20",
            "CWE-1288"
          ],
          "cvss": {
            "score": 9.8,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
          },
          "range": "<0.7.7"
        }
      ],
      "effects": [],
      "range": "<0.7.7",
      "nodes": [
        "node_modules/@xmldom/xmldom"
      ],
      "fixAvailable": true
    },
    "autoprefixer": {
      "name": "autoprefixer",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "postcss"
      ],
      "effects": [
        "stylelint"
      ],
      "range": "1.0.20131222 - 9.8.8",
      "nodes": [
        "node_modules/autoprefixer"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "braces": {
      "name": "braces",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1098094,
          "name": "braces",
          "dependency": "braces",
          "title": "Uncontrolled resource consumption in braces",
          "url": "https://github.com/advisories/GHSA-grv7-fg5c-xmjg",
          "severity": "high",
          "cwe": [
            "CWE-400",
            "CWE-1050"
          ],
          "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": "<3.0.3"
        }
      ],
      "effects": [],
      "range": "<3.0.3",
      "nodes": [
        "node_modules/braces"
      ],
      "fixAvailable": true
    },
    "devtools": {
      "name": "devtools",
      "severity": "high",
      "isDirect": false,
      "via": [
        "puppeteer-core"
      ],
      "effects": [],
      "range": ">=7.16.5",
      "nodes": [
        "node_modules/@wdio/runner/node_modules/devtools",
        "node_modules/devtools"
      ],
      "fixAvailable": true
    },
    "diff": {
      "name": "diff",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1095029,
          "name": "diff",
          "dependency": "diff",
          "title": "Regular Expression Denial of Service (ReDoS)",
          "url": "https://github.com/advisories/GHSA-h6ch-v84p-w6p9",
          "severity": "high",
          "cwe": [
            "CWE-400"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": "<3.5.0"
        }
      ],
      "effects": [
        "unexpected"
      ],
      "range": "<3.5.0",
      "nodes": [
        "node_modules/unexpected/node_modules/diff"
      ],
      "fixAvailable": {
        "name": "unexpected",
        "version": "13.2.1",
        "isSemVerMajor": true
      }
    },
    "ejs": {
      "name": "ejs",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1089270,
          "name": "ejs",
          "dependency": "ejs",
          "title": "ejs template injection vulnerability",
          "url": "https://github.com/advisories/GHSA-phwq-j96m-2c2q",
          "severity": "critical",
          "cwe": [
            "CWE-74"
          ],
          "cvss": {
            "score": 9.8,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
          },
          "range": "<3.1.7"
        },
        {
          "source": 1098366,
          "name": "ejs",
          "dependency": "ejs",
          "title": "ejs lacks certain pollution protection",
          "url": "https://github.com/advisories/GHSA-ghr5-ch3p-vcr6",
          "severity": "moderate",
          "cwe": [
            "CWE-693",
            "CWE-1321"
          ],
          "cvss": {
            "score": 4,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": "<3.1.10"
        }
      ],
      "effects": [],
      "range": "<=3.1.9",
      "nodes": [
        "node_modules/ejs"
      ],
      "fixAvailable": true
    },
    "eslint-config-wikimedia": {
      "name": "eslint-config-wikimedia",
      "severity": "high",
      "isDirect": true,
      "via": [
        "eslint-plugin-compat"
      ],
      "effects": [],
      "range": "0.18.0 - 0.21.0",
      "nodes": [
        "node_modules/eslint-config-wikimedia"
      ],
      "fixAvailable": {
        "name": "eslint-config-wikimedia",
        "version": "0.28.2",
        "isSemVerMajor": true
      }
    },
    "eslint-plugin-compat": {
      "name": "eslint-plugin-compat",
      "severity": "high",
      "isDirect": false,
      "via": [
        "semver"
      ],
      "effects": [
        "eslint-config-wikimedia"
      ],
      "range": "3.6.0-0 - 4.1.4",
      "nodes": [
        "node_modules/eslint-plugin-compat"
      ],
      "fixAvailable": {
        "name": "eslint-config-wikimedia",
        "version": "0.28.2",
        "isSemVerMajor": true
      }
    },
    "got": {
      "name": "got",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1088948,
          "name": "got",
          "dependency": "got",
          "title": "Got allows a redirect to a UNIX socket",
          "url": "https://github.com/advisories/GHSA-pfrx-2q88-qq97",
          "severity": "moderate",
          "cwe": [],
          "cvss": {
            "score": 5.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"
          },
          "range": "<11.8.5"
        }
      ],
      "effects": [],
      "range": "<11.8.5",
      "nodes": [
        "node_modules/got"
      ],
      "fixAvailable": true
    },
    "grunt-stylelint": {
      "name": "grunt-stylelint",
      "severity": "moderate",
      "isDirect": true,
      "via": [
        "stylelint"
      ],
      "effects": [],
      "range": "<=0.16.0",
      "nodes": [
        "node_modules/grunt-stylelint"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "http-cache-semantics": {
      "name": "http-cache-semantics",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1092316,
          "name": "http-cache-semantics",
          "dependency": "http-cache-semantics",
          "title": "http-cache-semantics vulnerable to Regular Expression Denial of Service",
          "url": "https://github.com/advisories/GHSA-rc47-6667-2j5j",
          "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": "<4.1.1"
        }
      ],
      "effects": [],
      "range": "<4.1.1",
      "nodes": [
        "node_modules/http-cache-semantics"
      ],
      "fixAvailable": true
    },
    "json5": {
      "name": "json5",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1096544,
          "name": "json5",
          "dependency": "json5",
          "title": "Prototype Pollution in JSON5 via Parse Method",
          "url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h",
          "severity": "high",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 7.1,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"
          },
          "range": ">=2.0.0 <2.2.2"
        }
      ],
      "effects": [],
      "range": "2.0.0 - 2.2.1",
      "nodes": [
        "node_modules/json5"
      ],
      "fixAvailable": true
    },
    "micromatch": {
      "name": "micromatch",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1098681,
          "name": "micromatch",
          "dependency": "micromatch",
          "title": "Regular Expression Denial of Service (ReDoS) in micromatch",
          "url": "https://github.com/advisories/GHSA-952p-6rrq-rcjv",
          "severity": "moderate",
          "cwe": [
            "CWE-1333"
          ],
          "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.8"
        }
      ],
      "effects": [],
      "range": "<4.0.8",
      "nodes": [
        "node_modules/micromatch"
      ],
      "fixAvailable": true
    },
    "minimatch": {
      "name": "minimatch",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1096485,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch ReDoS vulnerability",
          "url": "https://github.com/advisories/GHSA-f8q6-p94x-37v3",
          "severity": "high",
          "cwe": [
            "CWE-400",
            "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": "<3.0.5"
        }
      ],
      "effects": [
        "mocha",
        "recursive-readdir"
      ],
      "range": "<3.0.5",
      "nodes": [
        "node_modules/minimatch"
      ],
      "fixAvailable": true
    },
    "minimist": {
      "name": "minimist",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1097678,
          "name": "minimist",
          "dependency": "minimist",
          "title": "Prototype Pollution in minimist",
          "url": "https://github.com/advisories/GHSA-xvch-5gv4-984h",
          "severity": "critical",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 9.8,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
          },
          "range": ">=1.0.0 <1.2.6"
        }
      ],
      "effects": [],
      "range": "1.0.0 - 1.2.5",
      "nodes": [
        "node_modules/minimist"
      ],
      "fixAvailable": true
    },
    "mocha": {
      "name": "mocha",
      "severity": "high",
      "isDirect": false,
      "via": [
        "minimatch",
        "nanoid"
      ],
      "effects": [],
      "range": "5.1.0 - 9.2.1",
      "nodes": [
        "node_modules/mocha"
      ],
      "fixAvailable": true
    },
    "mwbot": {
      "name": "mwbot",
      "severity": "high",
      "isDirect": false,
      "via": [
        "request",
        "semver"
      ],
      "effects": [
        "wdio-mediawiki"
      ],
      "range": ">=0.1.6",
      "nodes": [
        "node_modules/mwbot"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "2.5.0",
        "isSemVerMajor": true
      }
    },
    "nanoid": {
      "name": "nanoid",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1089011,
          "name": "nanoid",
          "dependency": "nanoid",
          "title": "Exposure of Sensitive Information to an Unauthorized Actor in nanoid",
          "url": "https://github.com/advisories/GHSA-qrpm-p2h7-hrv2",
          "severity": "moderate",
          "cwe": [
            "CWE-200"
          ],
          "cvss": {
            "score": 5.5,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
          },
          "range": ">=3.0.0 <3.1.31"
        }
      ],
      "effects": [
        "mocha"
      ],
      "range": "3.0.0 - 3.1.30",
      "nodes": [
        "node_modules/nanoid"
      ],
      "fixAvailable": true
    },
    "path-to-regexp": {
      "name": "path-to-regexp",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1099561,
          "name": "path-to-regexp",
          "dependency": "path-to-regexp",
          "title": "path-to-regexp outputs backtracking regular expressions",
          "url": "https://github.com/advisories/GHSA-9wv6-86v2-598j",
          "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": ">=0.2.0 <1.9.0"
        }
      ],
      "effects": [],
      "range": "0.2.0 - 1.8.0",
      "nodes": [
        "node_modules/path-to-regexp"
      ],
      "fixAvailable": true
    },
    "postcss": {
      "name": "postcss",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1094544,
          "name": "postcss",
          "dependency": "postcss",
          "title": "PostCSS line return parsing error",
          "url": "https://github.com/advisories/GHSA-7fh5-64p2-3v2j",
          "severity": "moderate",
          "cwe": [
            "CWE-74",
            "CWE-144"
          ],
          "cvss": {
            "score": 5.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"
          },
          "range": "<8.4.31"
        }
      ],
      "effects": [
        "autoprefixer",
        "postcss-less",
        "postcss-safe-parser",
        "postcss-sass",
        "postcss-scss",
        "stylelint",
        "sugarss"
      ],
      "range": "<8.4.31",
      "nodes": [
        "node_modules/autoprefixer/node_modules/postcss",
        "node_modules/postcss",
        "node_modules/postcss-less/node_modules/postcss",
        "node_modules/postcss-safe-parser/node_modules/postcss",
        "node_modules/postcss-sass/node_modules/postcss",
        "node_modules/postcss-scss/node_modules/postcss",
        "node_modules/stylelint/node_modules/postcss",
        "node_modules/sugarss/node_modules/postcss"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "postcss-less": {
      "name": "postcss-less",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "postcss"
      ],
      "effects": [
        "stylelint"
      ],
      "range": "<=3.1.4",
      "nodes": [
        "node_modules/postcss-less"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "postcss-safe-parser": {
      "name": "postcss-safe-parser",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "postcss"
      ],
      "effects": [
        "stylelint"
      ],
      "range": "<=4.0.2",
      "nodes": [
        "node_modules/postcss-safe-parser"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "postcss-sass": {
      "name": "postcss-sass",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "postcss"
      ],
      "effects": [
        "stylelint"
      ],
      "range": "<=0.4.4",
      "nodes": [
        "node_modules/postcss-sass"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "postcss-scss": {
      "name": "postcss-scss",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "postcss"
      ],
      "effects": [
        "stylelint"
      ],
      "range": "<=2.1.1",
      "nodes": [
        "node_modules/postcss-scss"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "prismjs": {
      "name": "prismjs",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1090424,
          "name": "prismjs",
          "dependency": "prismjs",
          "title": "Cross-site Scripting in Prism",
          "url": "https://github.com/advisories/GHSA-3949-f494-cm99",
          "severity": "high",
          "cwe": [
            "CWE-79"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:L/A:L"
          },
          "range": ">=1.14.0 <1.27.0"
        }
      ],
      "effects": [],
      "range": "1.14.0 - 1.26.0",
      "nodes": [
        "node_modules/prismjs"
      ],
      "fixAvailable": true
    },
    "puppeteer-core": {
      "name": "puppeteer-core",
      "severity": "high",
      "isDirect": false,
      "via": [
        "ws"
      ],
      "effects": [
        "devtools",
        "webdriverio"
      ],
      "range": "11.0.0 - 22.11.1",
      "nodes": [
        "node_modules/puppeteer-core"
      ],
      "fixAvailable": {
        "name": "webdriverio",
        "version": "9.2.14",
        "isSemVerMajor": true
      }
    },
    "recursive-readdir": {
      "name": "recursive-readdir",
      "severity": "high",
      "isDirect": false,
      "via": [
        "minimatch"
      ],
      "effects": [],
      "range": "1.2.0 - 2.2.2",
      "nodes": [
        "node_modules/recursive-readdir"
      ],
      "fixAvailable": true
    },
    "request": {
      "name": "request",
      "severity": "moderate",
      "isDirect": true,
      "via": [
        {
          "source": 1096727,
          "name": "request",
          "dependency": "request",
          "title": "Server-Side Request Forgery in Request",
          "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
          "severity": "moderate",
          "cwe": [
            "CWE-918"
          ],
          "cvss": {
            "score": 6.1,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
          },
          "range": "<=2.88.2"
        },
        "tough-cookie"
      ],
      "effects": [
        "mwbot"
      ],
      "range": "*",
      "nodes": [
        "node_modules/request"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "2.5.0",
        "isSemVerMajor": true
      }
    },
    "semver": {
      "name": "semver",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1098562,
          "name": "semver",
          "dependency": "semver",
          "title": "semver vulnerable to Regular Expression Denial of Service",
          "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
          "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": ">=7.0.0 <7.5.2"
        },
        {
          "source": 1098563,
          "name": "semver",
          "dependency": "semver",
          "title": "semver vulnerable to Regular Expression Denial of Service",
          "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
          "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": "<5.7.2"
        },
        {
          "source": 1098564,
          "name": "semver",
          "dependency": "semver",
          "title": "semver vulnerable to Regular Expression Denial of Service",
          "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
          "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.0 <6.3.1"
        }
      ],
      "effects": [
        "eslint-plugin-compat",
        "mwbot"
      ],
      "range": "<=5.7.1 || 6.0.0 - 6.3.0 || 7.0.0 - 7.5.1",
      "nodes": [
        "node_modules/@babel/core/node_modules/semver",
        "node_modules/@babel/helper-compilation-targets/node_modules/semver",
        "node_modules/cac/node_modules/semver",
        "node_modules/eslint-plugin-node/node_modules/semver",
        "node_modules/eslint-plugin-vue/node_modules/semver",
        "node_modules/mwbot/node_modules/semver",
        "node_modules/npm-run-all/node_modules/semver",
        "node_modules/read-pkg/node_modules/semver",
        "node_modules/semver",
        "node_modules/vue-eslint-parser/node_modules/semver"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "2.5.0",
        "isSemVerMajor": true
      }
    },
    "stylelint": {
      "name": "stylelint",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "autoprefixer",
        "postcss",
        "postcss-less",
        "postcss-safe-parser",
        "postcss-sass",
        "postcss-scss",
        "sugarss"
      ],
      "effects": [
        "grunt-stylelint"
      ],
      "range": "0.1.0 - 13.13.1",
      "nodes": [
        "node_modules/stylelint"
      ],
      "fixAvailable": {
        "name": "grunt-stylelint",
        "version": "0.20.1",
        "isSemVerMajor": true
      }
    },
    "sugarss": {
      "name": "sugarss",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "postcss"
      ],
      "effects": [],
      "range": "<=2.0.0",
      "nodes": [
        "node_modules/sugarss"
      ],
      "fixAvailable": true
    },
    "tough-cookie": {
      "name": "tough-cookie",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1097682,
          "name": "tough-cookie",
          "dependency": "tough-cookie",
          "title": "tough-cookie Prototype Pollution vulnerability",
          "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
          "severity": "moderate",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 6.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
          },
          "range": "<4.1.3"
        }
      ],
      "effects": [
        "request"
      ],
      "range": "<4.1.3",
      "nodes": [
        "node_modules/request/node_modules/tough-cookie",
        "node_modules/tough-cookie"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "2.5.0",
        "isSemVerMajor": true
      }
    },
    "ua-parser-js": {
      "name": "ua-parser-js",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1092302,
          "name": "ua-parser-js",
          "dependency": "ua-parser-js",
          "title": "ReDoS Vulnerability in ua-parser-js version",
          "url": "https://github.com/advisories/GHSA-fhg7-m89q-25r3",
          "severity": "high",
          "cwe": [
            "CWE-400",
            "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": ">=0.8.0 <1.0.33"
        }
      ],
      "effects": [],
      "range": "0.8.1 - 1.0.32",
      "nodes": [
        "node_modules/ua-parser-js"
      ],
      "fixAvailable": true
    },
    "unexpected": {
      "name": "unexpected",
      "severity": "high",
      "isDirect": true,
      "via": [
        "diff"
      ],
      "effects": [],
      "range": "5.0.0-beta1 - 11.0.0",
      "nodes": [
        "node_modules/unexpected"
      ],
      "fixAvailable": {
        "name": "unexpected",
        "version": "13.2.1",
        "isSemVerMajor": true
      }
    },
    "vue": {
      "name": "vue",
      "severity": "low",
      "isDirect": true,
      "via": [
        {
          "source": 1100238,
          "name": "vue",
          "dependency": "vue",
          "title": "ReDoS vulnerability in vue package that is exploitable through inefficient regex evaluation in the parseHTML function",
          "url": "https://github.com/advisories/GHSA-5j4c-8p2g-v4jx",
          "severity": "low",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 3.7,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": ">=2.0.0-alpha.1 <3.0.0-alpha.0"
        }
      ],
      "effects": [
        "vuex"
      ],
      "range": "2.0.0-alpha.1 - 2.7.16",
      "nodes": [
        "node_modules/vue"
      ],
      "fixAvailable": {
        "name": "vue",
        "version": "3.5.13",
        "isSemVerMajor": true
      }
    },
    "vuex": {
      "name": "vuex",
      "severity": "low",
      "isDirect": true,
      "via": [
        "vue"
      ],
      "effects": [],
      "range": "3.1.3 - 3.6.2",
      "nodes": [
        "node_modules/vuex"
      ],
      "fixAvailable": {
        "name": "vuex",
        "version": "4.1.0",
        "isSemVerMajor": true
      }
    },
    "wdio-mediawiki": {
      "name": "wdio-mediawiki",
      "severity": "high",
      "isDirect": true,
      "via": [
        "mwbot"
      ],
      "effects": [
        "wdio-wikibase"
      ],
      "range": "1.1.0 - 2.2.0",
      "nodes": [
        "node_modules/wdio-mediawiki"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "2.5.0",
        "isSemVerMajor": true
      }
    },
    "wdio-wikibase": {
      "name": "wdio-wikibase",
      "severity": "high",
      "isDirect": true,
      "via": [
        "wdio-mediawiki"
      ],
      "effects": [],
      "range": "5.1.0 - 5.2.0",
      "nodes": [
        "node_modules/wdio-wikibase"
      ],
      "fixAvailable": {
        "name": "wdio-wikibase",
        "version": "6.0.3",
        "isSemVerMajor": true
      }
    },
    "webdriverio": {
      "name": "webdriverio",
      "severity": "high",
      "isDirect": true,
      "via": [
        "devtools",
        "puppeteer-core"
      ],
      "effects": [
        "@wdio/cli",
        "@wdio/runner",
        "@wdio/sync"
      ],
      "range": "7.16.5 - 8.40.6",
      "nodes": [
        "node_modules/@wdio/runner/node_modules/webdriverio",
        "node_modules/webdriverio"
      ],
      "fixAvailable": {
        "name": "webdriverio",
        "version": "9.2.14",
        "isSemVerMajor": true
      }
    },
    "word-wrap": {
      "name": "word-wrap",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1097681,
          "name": "word-wrap",
          "dependency": "word-wrap",
          "title": "word-wrap vulnerable to Regular Expression Denial of Service",
          "url": "https://github.com/advisories/GHSA-j8xg-fqg3-53r7",
          "severity": "moderate",
          "cwe": [
            "CWE-1333"
          ],
          "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": "<1.2.4"
        }
      ],
      "effects": [],
      "range": "<1.2.4",
      "nodes": [
        "node_modules/word-wrap"
      ],
      "fixAvailable": true
    },
    "ws": {
      "name": "ws",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1098392,
          "name": "ws",
          "dependency": "ws",
          "title": "ws affected by a DoS when handling a request with many HTTP headers",
          "url": "https://github.com/advisories/GHSA-3h5v-q93c-6h6q",
          "severity": "high",
          "cwe": [
            "CWE-476"
          ],
          "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.17.1"
        }
      ],
      "effects": [
        "puppeteer-core"
      ],
      "range": "8.0.0 - 8.17.0",
      "nodes": [
        "node_modules/ws"
      ],
      "fixAvailable": {
        "name": "webdriverio",
        "version": "9.2.14",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 2,
      "moderate": 15,
      "high": 25,
      "critical": 4,
      "total": 46
    },
    "dependencies": {
      "prod": 1,
      "dev": 1017,
      "optional": 2,
      "peer": 102,
      "peerOptional": 0,
      "total": 1017
    }
  }
}

--- 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
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wdio/sync@7.36.0',
npm WARN EBADENGINE   required: { node: '>=12.0.0 <16' },
npm WARN EBADENGINE   current: { node: 'v18.19.0', npm: '9.2.0' }
npm WARN EBADENGINE }
--- stdout ---
{
  "added": 73,
  "removed": 28,
  "changed": 88,
  "audited": 1062,
  "funding": 152,
  "audit": {
    "auditReportVersion": 2,
    "vulnerabilities": {
      "@babel/traverse": {
        "name": "@babel/traverse",
        "severity": "critical",
        "isDirect": false,
        "via": [
          {
            "source": 1096886,
            "name": "@babel/traverse",
            "dependency": "@babel/traverse",
            "title": "Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code",
            "url": "https://github.com/advisories/GHSA-67hx-6x53-jw92",
            "severity": "critical",
            "cwe": [
              "CWE-184",
              "CWE-697"
            ],
            "cvss": {
              "score": 9.4,
              "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
            },
            "range": "<7.23.2"
          }
        ],
        "effects": [],
        "range": "<7.23.2",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "@wdio/cli": {
        "name": "@wdio/cli",
        "severity": "high",
        "isDirect": true,
        "via": [
          "webdriverio"
        ],
        "effects": [],
        "range": "7.16.5 - 8.40.6",
        "nodes": [
          "",
          "node_modules/@wdio/cli"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "9.2.14",
          "isSemVerMajor": true
        }
      },
      "@wdio/local-runner": {
        "name": "@wdio/local-runner",
        "severity": "high",
        "isDirect": false,
        "via": [
          "@wdio/runner"
        ],
        "effects": [],
        "range": "7.16.5 - 8.40.6",
        "nodes": [
          ""
        ],
        "fixAvailable": {
          "name": "@wdio/local-runner",
          "version": "9.2.15",
          "isSemVerMajor": true
        }
      },
      "@wdio/runner": {
        "name": "@wdio/runner",
        "severity": "high",
        "isDirect": false,
        "via": [
          "webdriverio"
        ],
        "effects": [
          "@wdio/local-runner"
        ],
        "range": "7.16.5 - 8.40.6",
        "nodes": [
          ""
        ],
        "fixAvailable": {
          "name": "@wdio/local-runner",
          "version": "9.2.15",
          "isSemVerMajor": true
        }
      },
      "@wdio/sync": {
        "name": "@wdio/sync",
        "severity": "high",
        "isDirect": false,
        "via": [
          "webdriverio"
        ],
        "effects": [],
        "range": ">=7.16.5",
        "nodes": [
          ""
        ],
        "fixAvailable": {
          "name": "@wdio/sync",
          "version": "7.14.1",
          "isSemVerMajor": true
        }
      },
      "@xmldom/xmldom": {
        "name": "@xmldom/xmldom",
        "severity": "critical",
        "isDirect": false,
        "via": [
          {
            "source": 1091572,
            "name": "@xmldom/xmldom",
            "dependency": "@xmldom/xmldom",
            "title": "xmldom allows multiple root nodes in a DOM",
            "url": "https://github.com/advisories/GHSA-crh6-fp67-6883",
            "severity": "critical",
            "cwe": [
              "CWE-20",
              "CWE-1288"
            ],
            "cvss": {
              "score": 9.8,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
            },
            "range": "<0.7.7"
          }
        ],
        "effects": [],
        "range": "<0.7.7",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "autoprefixer": {
        "name": "autoprefixer",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          "postcss"
        ],
        "effects": [
          "stylelint"
        ],
        "range": "1.0.20131222 - 9.8.8",
        "nodes": [
          "node_modules/autoprefixer"
        ],
        "fixAvailable": {
          "name": "grunt-stylelint",
          "version": "0.20.1",
          "isSemVerMajor": true
        }
      },
      "braces": {
        "name": "braces",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1098094,
            "name": "braces",
            "dependency": "braces",
            "title": "Uncontrolled resource consumption in braces",
            "url": "https://github.com/advisories/GHSA-grv7-fg5c-xmjg",
            "severity": "high",
            "cwe": [
              "CWE-400",
              "CWE-1050"
            ],
            "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": "<3.0.3"
          }
        ],
        "effects": [],
        "range": "<3.0.3",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "devtools": {
        "name": "devtools",
        "severity": "high",
        "isDirect": false,
        "via": [
          "puppeteer-core"
        ],
        "effects": [],
        "range": ">=7.16.5",
        "nodes": [
          "",
          ""
        ],
        "fixAvailable": true
      },
      "diff": {
        "name": "diff",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1095029,
            "name": "diff",
            "dependency": "diff",
            "title": "Regular Expression Denial of Service (ReDoS)",
            "url": "https://github.com/advisories/GHSA-h6ch-v84p-w6p9",
            "severity": "high",
            "cwe": [
              "CWE-400"
            ],
            "cvss": {
              "score": 0,
              "vectorString": null
            },
            "range": "<3.5.0"
          }
        ],
        "effects": [
          "unexpected"
        ],
        "range": "<3.5.0",
        "nodes": [
          ""
        ],
        "fixAvailable": {
          "name": "unexpected",
          "version": "13.2.1",
          "isSemVerMajor": true
        }
      },
      "ejs": {
        "name": "ejs",
        "severity": "critical",
        "isDirect": false,
        "via": [
          {
            "source": 1089270,
            "name": "ejs",
            "dependency": "ejs",
            "title": "ejs template injection vulnerability",
            "url": "https://github.com/advisories/GHSA-phwq-j96m-2c2q",
            "severity": "critical",
            "cwe": [
              "CWE-74"
            ],
            "cvss": {
              "score": 9.8,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
            },
            "range": "<3.1.7"
          },
          {
            "source": 1098366,
            "name": "ejs",
            "dependency": "ejs",
            "title": "ejs lacks certain pollution protection",
            "url": "https://github.com/advisories/GHSA-ghr5-ch3p-vcr6",
            "severity": "moderate",
            "cwe": [
              "CWE-693",
              "CWE-1321"
            ],
            "cvss": {
              "score": 4,
              "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
            },
            "range": "<3.1.10"
          }
        ],
        "effects": [],
        "range": "<=3.1.9",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "eslint-config-wikimedia": {
        "name": "eslint-config-wikimedia",
        "severity": "high",
        "isDirect": true,
        "via": [
          "eslint-plugin-compat"
        ],
        "effects": [],
        "range": "0.18.0 - 0.21.0",
        "nodes": [
          "node_modules/eslint-config-wikimedia"
        ],
        "fixAvailable": {
          "name": "eslint-config-wikimedia",
          "version": "0.28.2",
          "isSemVerMajor": true
        }
      },
      "eslint-plugin-compat": {
        "name": "eslint-plugin-compat",
        "severity": "high",
        "isDirect": false,
        "via": [
          "semver"
        ],
        "effects": [
          "eslint-config-wikimedia"
        ],
        "range": "3.6.0-0 - 4.1.4",
        "nodes": [
          "node_modules/eslint-plugin-compat"
        ],
        "fixAvailable": {
          "name": "eslint-config-wikimedia",
          "version": "0.28.2",
          "isSemVerMajor": true
        }
      },
      "got": {
        "name": "got",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1088948,
            "name": "got",
            "dependency": "got",
            "title": "Got allows a redirect to a UNIX socket",
            "url": "https://github.com/advisories/GHSA-pfrx-2q88-qq97",
            "severity": "moderate",
            "cwe": [],
            "cvss": {
              "score": 5.3,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"
            },
            "range": "<11.8.5"
          }
        ],
        "effects": [],
        "range": "<11.8.5",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "grunt-stylelint": {
        "name": "grunt-stylelint",
        "severity": "moderate",
        "isDirect": true,
        "via": [
          "stylelint"
        ],
        "effects": [],
        "range": "<=0.16.0",
        "nodes": [
          "node_modules/grunt-stylelint"
        ],
        "fixAvailable": {
          "name": "grunt-stylelint",
          "version": "0.20.1",
          "isSemVerMajor": true
        }
      },
      "http-cache-semantics": {
        "name": "http-cache-semantics",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1092316,
            "name": "http-cache-semantics",
            "dependency": "http-cache-semantics",
            "title": "http-cache-semantics vulnerable to Regular Expression Denial of Service",
            "url": "https://github.com/advisories/GHSA-rc47-6667-2j5j",
            "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": "<4.1.1"
          }
        ],
        "effects": [],
        "range": "<4.1.1",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "json5": {
        "name": "json5",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1096544,
            "name": "json5",
            "dependency": "json5",
            "title": "Prototype Pollution in JSON5 via Parse Method",
            "url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h",
            "severity": "high",
            "cwe": [
              "CWE-1321"
            ],
            "cvss": {
              "score": 7.1,
              "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"
            },
            "range": ">=2.0.0 <2.2.2"
          }
        ],
        "effects": [],
        "range": "2.0.0 - 2.2.1",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "micromatch": {
        "name": "micromatch",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1098681,
            "name": "micromatch",
            "dependency": "micromatch",
            "title": "Regular Expression Denial of Service (ReDoS) in micromatch",
            "url": "https://github.com/advisories/GHSA-952p-6rrq-rcjv",
            "severity": "moderate",
            "cwe": [
              "CWE-1333"
            ],
            "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.8"
          }
        ],
        "effects": [],
        "range": "<4.0.8",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "minimatch": {
        "name": "minimatch",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1096485,
            "name": "minimatch",
            "dependency": "minimatch",
            "title": "minimatch ReDoS vulnerability",
            "url": "https://github.com/advisories/GHSA-f8q6-p94x-37v3",
            "severity": "high",
            "cwe": [
              "CWE-400",
              "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": "<3.0.5"
          }
        ],
        "effects": [
          "mocha",
          "recursive-readdir"
        ],
        "range": "<3.0.5",
        "nodes": [
          "node_modules/minimatch"
        ],
        "fixAvailable": true
      },
      "minimist": {
        "name": "minimist",
        "severity": "critical",
        "isDirect": false,
        "via": [
          {
            "source": 1097678,
            "name": "minimist",
            "dependency": "minimist",
            "title": "Prototype Pollution in minimist",
            "url": "https://github.com/advisories/GHSA-xvch-5gv4-984h",
            "severity": "critical",
            "cwe": [
              "CWE-1321"
            ],
            "cvss": {
              "score": 9.8,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
            },
            "range": ">=1.0.0 <1.2.6"
          }
        ],
        "effects": [],
        "range": "1.0.0 - 1.2.5",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "mocha": {
        "name": "mocha",
        "severity": "high",
        "isDirect": false,
        "via": [
          "minimatch",
          "nanoid"
        ],
        "effects": [],
        "range": "5.1.0 - 9.2.1",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "mwbot": {
        "name": "mwbot",
        "severity": "high",
        "isDirect": false,
        "via": [
          "request",
          "semver"
        ],
        "effects": [
          "wdio-mediawiki"
        ],
        "range": ">=0.1.6",
        "nodes": [
          "node_modules/mwbot"
        ],
        "fixAvailable": {
          "name": "wdio-mediawiki",
          "version": "2.5.0",
          "isSemVerMajor": true
        }
      },
      "nanoid": {
        "name": "nanoid",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1089011,
            "name": "nanoid",
            "dependency": "nanoid",
            "title": "Exposure of Sensitive Information to an Unauthorized Actor in nanoid",
            "url": "https://github.com/advisories/GHSA-qrpm-p2h7-hrv2",
            "severity": "moderate",
            "cwe": [
              "CWE-200"
            ],
            "cvss": {
              "score": 5.5,
              "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
            },
            "range": ">=3.0.0 <3.1.31"
          }
        ],
        "effects": [
          "mocha"
        ],
        "range": "3.0.0 - 3.1.30",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "path-to-regexp": {
        "name": "path-to-regexp",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1099561,
            "name": "path-to-regexp",
            "dependency": "path-to-regexp",
            "title": "path-to-regexp outputs backtracking regular expressions",
            "url": "https://github.com/advisories/GHSA-9wv6-86v2-598j",
            "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": ">=0.2.0 <1.9.0"
          }
        ],
        "effects": [],
        "range": "0.2.0 - 1.8.0",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "postcss": {
        "name": "postcss",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1094544,
            "name": "postcss",
            "dependency": "postcss",
            "title": "PostCSS line return parsing error",
            "url": "https://github.com/advisories/GHSA-7fh5-64p2-3v2j",
            "severity": "moderate",
            "cwe": [
              "CWE-74",
              "CWE-144"
            ],
            "cvss": {
              "score": 5.3,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"
            },
            "range": "<8.4.31"
          }
        ],
        "effects": [
          "autoprefixer",
          "postcss-less",
          "postcss-safe-parser",
          "postcss-sass",
          "postcss-scss",
          "stylelint",
          "sugarss"
        ],
        "range": "<8.4.31",
        "nodes": [
          "",
          "node_modules/autoprefixer/node_modules/postcss",
          "node_modules/postcss-less/node_modules/postcss",
          "node_modules/postcss-safe-parser/node_modules/postcss",
          "node_modules/postcss-sass/node_modules/postcss",
          "node_modules/postcss-scss/node_modules/postcss",
          "node_modules/stylelint/node_modules/postcss",
          "node_modules/sugarss/node_modules/postcss"
        ],
        "fixAvailable": {
          "name": "grunt-stylelint",
          "version": "0.20.1",
          "isSemVerMajor": true
        }
      },
      "postcss-less": {
        "name": "postcss-less",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          "postcss"
        ],
        "effects": [],
        "range": "<=3.1.4",
        "nodes": [
          "node_modules/postcss-less"
        ],
        "fixAvailable": true
      },
      "postcss-safe-parser": {
        "name": "postcss-safe-parser",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          "postcss"
        ],
        "effects": [
          "stylelint"
        ],
        "range": "<=4.0.2",
        "nodes": [
          "node_modules/postcss-safe-parser"
        ],
        "fixAvailable": {
          "name": "grunt-stylelint",
          "version": "0.20.1",
          "isSemVerMajor": true
        }
      },
      "postcss-sass": {
        "name": "postcss-sass",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          "postcss"
        ],
        "effects": [
          "stylelint"
        ],
        "range": "<=0.4.4",
        "nodes": [
          "node_modules/postcss-sass"
        ],
        "fixAvailable": {
          "name": "grunt-stylelint",
          "version": "0.20.1",
          "isSemVerMajor": true
        }
      },
      "postcss-scss": {
        "name": "postcss-scss",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          "postcss"
        ],
        "effects": [
          "stylelint"
        ],
        "range": "<=2.1.1",
        "nodes": [
          "node_modules/postcss-scss"
        ],
        "fixAvailable": {
          "name": "grunt-stylelint",
          "version": "0.20.1",
          "isSemVerMajor": true
        }
      },
      "prismjs": {
        "name": "prismjs",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1090424,
            "name": "prismjs",
            "dependency": "prismjs",
            "title": "Cross-site Scripting in Prism",
            "url": "https://github.com/advisories/GHSA-3949-f494-cm99",
            "severity": "high",
            "cwe": [
              "CWE-79"
            ],
            "cvss": {
              "score": 7.5,
              "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:L/A:L"
            },
            "range": ">=1.14.0 <1.27.0"
          }
        ],
        "effects": [],
        "range": "1.14.0 - 1.26.0",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "puppeteer-core": {
        "name": "puppeteer-core",
        "severity": "high",
        "isDirect": false,
        "via": [
          "ws"
        ],
        "effects": [
          "devtools",
          "webdriverio"
        ],
        "range": "11.0.0 - 22.11.1",
        "nodes": [
          ""
        ],
        "fixAvailable": {
          "name": "webdriverio",
          "version": "9.2.14",
          "isSemVerMajor": true
        }
      },
      "recursive-readdir": {
        "name": "recursive-readdir",
        "severity": "high",
        "isDirect": false,
        "via": [
          "minimatch"
        ],
        "effects": [],
        "range": "1.2.0 - 2.2.2",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "request": {
        "name": "request",
        "severity": "moderate",
        "isDirect": true,
        "via": [
          {
            "source": 1096727,
            "name": "request",
            "dependency": "request",
            "title": "Server-Side Request Forgery in Request",
            "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
            "severity": "moderate",
            "cwe": [
              "CWE-918"
            ],
            "cvss": {
              "score": 6.1,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
            },
            "range": "<=2.88.2"
          },
          "tough-cookie"
        ],
        "effects": [
          "mwbot"
        ],
        "range": "*",
        "nodes": [
          "node_modules/request"
        ],
        "fixAvailable": {
          "name": "wdio-mediawiki",
          "version": "2.5.0",
          "isSemVerMajor": true
        }
      },
      "semver": {
        "name": "semver",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1098562,
            "name": "semver",
            "dependency": "semver",
            "title": "semver vulnerable to Regular Expression Denial of Service",
            "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
            "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": ">=7.0.0 <7.5.2"
          },
          {
            "source": 1098563,
            "name": "semver",
            "dependency": "semver",
            "title": "semver vulnerable to Regular Expression Denial of Service",
            "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
            "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": "<5.7.2"
          },
          {
            "source": 1098564,
            "name": "semver",
            "dependency": "semver",
            "title": "semver vulnerable to Regular Expression Denial of Service",
            "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
            "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.0 <6.3.1"
          }
        ],
        "effects": [
          "eslint-plugin-compat",
          "mwbot"
        ],
        "range": "<=5.7.1 || 6.0.0 - 6.3.0 || 7.0.0 - 7.5.1",
        "nodes": [
          "",
          "",
          "",
          "",
          "",
          "",
          "",
          "",
          "node_modules/mwbot/node_modules/semver",
          "node_modules/semver"
        ],
        "fixAvailable": {
          "name": "eslint-config-wikimedia",
          "version": "0.28.2",
          "isSemVerMajor": true
        }
      },
      "stylelint": {
        "name": "stylelint",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          "autoprefixer",
          "postcss",
          "postcss-less",
          "postcss-safe-parser",
          "postcss-sass",
          "postcss-scss",
          "sugarss"
        ],
        "effects": [
          "grunt-stylelint"
        ],
        "range": "0.1.0 - 13.13.1",
        "nodes": [
          "node_modules/stylelint"
        ],
        "fixAvailable": {
          "name": "grunt-stylelint",
          "version": "0.20.1",
          "isSemVerMajor": true
        }
      },
      "sugarss": {
        "name": "sugarss",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          "postcss"
        ],
        "effects": [
          "stylelint"
        ],
        "range": "<=2.0.0",
        "nodes": [
          "node_modules/sugarss"
        ],
        "fixAvailable": {
          "name": "grunt-stylelint",
          "version": "0.20.1",
          "isSemVerMajor": true
        }
      },
      "tough-cookie": {
        "name": "tough-cookie",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1097682,
            "name": "tough-cookie",
            "dependency": "tough-cookie",
            "title": "tough-cookie Prototype Pollution vulnerability",
            "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
            "severity": "moderate",
            "cwe": [
              "CWE-1321"
            ],
            "cvss": {
              "score": 6.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
            },
            "range": "<4.1.3"
          }
        ],
        "effects": [
          "request"
        ],
        "range": "<4.1.3",
        "nodes": [
          "",
          "node_modules/request/node_modules/tough-cookie"
        ],
        "fixAvailable": {
          "name": "wdio-mediawiki",
          "version": "2.5.0",
          "isSemVerMajor": true
        }
      },
      "ua-parser-js": {
        "name": "ua-parser-js",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1092302,
            "name": "ua-parser-js",
            "dependency": "ua-parser-js",
            "title": "ReDoS Vulnerability in ua-parser-js version",
            "url": "https://github.com/advisories/GHSA-fhg7-m89q-25r3",
            "severity": "high",
            "cwe": [
              "CWE-400",
              "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": ">=0.8.0 <1.0.33"
          }
        ],
        "effects": [],
        "range": "0.8.1 - 1.0.32",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "unexpected": {
        "name": "unexpected",
        "severity": "high",
        "isDirect": true,
        "via": [
          "diff"
        ],
        "effects": [],
        "range": "5.0.0-beta1 - 11.0.0",
        "nodes": [
          "node_modules/unexpected"
        ],
        "fixAvailable": {
          "name": "unexpected",
          "version": "13.2.1",
          "isSemVerMajor": true
        }
      },
      "vue": {
        "name": "vue",
        "severity": "low",
        "isDirect": true,
        "via": [
          {
            "source": 1100238,
            "name": "vue",
            "dependency": "vue",
            "title": "ReDoS vulnerability in vue package that is exploitable through inefficient regex evaluation in the parseHTML function",
            "url": "https://github.com/advisories/GHSA-5j4c-8p2g-v4jx",
            "severity": "low",
            "cwe": [
              "CWE-1333"
            ],
            "cvss": {
              "score": 3.7,
              "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"
            },
            "range": ">=2.0.0-alpha.1 <3.0.0-alpha.0"
          }
        ],
        "effects": [
          "vuex"
        ],
        "range": "2.0.0-alpha.1 - 2.7.16",
        "nodes": [
          "",
          "node_modules/vue"
        ],
        "fixAvailable": {
          "name": "vue",
          "version": "3.5.13",
          "isSemVerMajor": true
        }
      },
      "vuex": {
        "name": "vuex",
        "severity": "low",
        "isDirect": true,
        "via": [
          "vue"
        ],
        "effects": [],
        "range": "3.1.3 - 3.6.2",
        "nodes": [
          "node_modules/vuex"
        ],
        "fixAvailable": {
          "name": "vuex",
          "version": "4.1.0",
          "isSemVerMajor": true
        }
      },
      "wdio-mediawiki": {
        "name": "wdio-mediawiki",
        "severity": "high",
        "isDirect": true,
        "via": [
          "mwbot"
        ],
        "effects": [
          "wdio-wikibase"
        ],
        "range": "1.1.0 - 2.2.0",
        "nodes": [
          "node_modules/wdio-mediawiki"
        ],
        "fixAvailable": {
          "name": "wdio-mediawiki",
          "version": "2.5.0",
          "isSemVerMajor": true
        }
      },
      "wdio-wikibase": {
        "name": "wdio-wikibase",
        "severity": "high",
        "isDirect": true,
        "via": [
          "wdio-mediawiki"
        ],
        "effects": [],
        "range": "5.1.0 - 5.2.0",
        "nodes": [
          "node_modules/wdio-wikibase"
        ],
        "fixAvailable": {
          "name": "wdio-wikibase",
          "version": "6.0.3",
          "isSemVerMajor": true
        }
      },
      "webdriverio": {
        "name": "webdriverio",
        "severity": "high",
        "isDirect": true,
        "via": [
          "devtools",
          "puppeteer-core"
        ],
        "effects": [
          "@wdio/cli",
          "@wdio/runner",
          "@wdio/sync"
        ],
        "range": "7.16.5 - 8.40.6",
        "nodes": [
          "",
          "",
          "node_modules/webdriverio"
        ],
        "fixAvailable": {
          "name": "webdriverio",
          "version": "9.2.14",
          "isSemVerMajor": true
        }
      },
      "word-wrap": {
        "name": "word-wrap",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1097681,
            "name": "word-wrap",
            "dependency": "word-wrap",
            "title": "word-wrap vulnerable to Regular Expression Denial of Service",
            "url": "https://github.com/advisories/GHSA-j8xg-fqg3-53r7",
            "severity": "moderate",
            "cwe": [
              "CWE-1333"
            ],
            "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": "<1.2.4"
          }
        ],
        "effects": [],
        "range": "<1.2.4",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "ws": {
        "name": "ws",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1098392,
            "name": "ws",
            "dependency": "ws",
            "title": "ws affected by a DoS when handling a request with many HTTP headers",
            "url": "https://github.com/advisories/GHSA-3h5v-q93c-6h6q",
            "severity": "high",
            "cwe": [
              "CWE-476"
            ],
            "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.17.1"
          }
        ],
        "effects": [
          "puppeteer-core"
        ],
        "range": "8.0.0 - 8.17.0",
        "nodes": [
          ""
        ],
        "fixAvailable": {
          "name": "webdriverio",
          "version": "9.2.14",
          "isSemVerMajor": true
        }
      }
    },
    "metadata": {
      "vulnerabilities": {
        "info": 0,
        "low": 2,
        "moderate": 15,
        "high": 25,
        "critical": 4,
        "total": 46
      },
      "dependencies": {
        "prod": 1,
        "dev": 1061,
        "optional": 3,
        "peer": 100,
        "peerOptional": 0,
        "total": 1061
      }
    }
  }
}

--- end ---
{"added": 73, "removed": 28, "changed": 88, "audited": 1062, "funding": 152, "audit": {"auditReportVersion": 2, "vulnerabilities": {"@babel/traverse": {"name": "@babel/traverse", "severity": "critical", "isDirect": false, "via": [{"source": 1096886, "name": "@babel/traverse", "dependency": "@babel/traverse", "title": "Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code", "url": "https://github.com/advisories/GHSA-67hx-6x53-jw92", "severity": "critical", "cwe": ["CWE-184", "CWE-697"], "cvss": {"score": 9.4, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"}, "range": "<7.23.2"}], "effects": [], "range": "<7.23.2", "nodes": [""], "fixAvailable": true}, "@wdio/cli": {"name": "@wdio/cli", "severity": "high", "isDirect": true, "via": ["webdriverio"], "effects": [], "range": "7.16.5 - 8.40.6", "nodes": ["", "node_modules/@wdio/cli"], "fixAvailable": {"name": "@wdio/cli", "version": "9.2.14", "isSemVerMajor": true}}, "@wdio/local-runner": {"name": "@wdio/local-runner", "severity": "high", "isDirect": false, "via": ["@wdio/runner"], "effects": [], "range": "7.16.5 - 8.40.6", "nodes": [""], "fixAvailable": {"name": "@wdio/local-runner", "version": "9.2.15", "isSemVerMajor": true}}, "@wdio/runner": {"name": "@wdio/runner", "severity": "high", "isDirect": false, "via": ["webdriverio"], "effects": ["@wdio/local-runner"], "range": "7.16.5 - 8.40.6", "nodes": [""], "fixAvailable": {"name": "@wdio/local-runner", "version": "9.2.15", "isSemVerMajor": true}}, "@wdio/sync": {"name": "@wdio/sync", "severity": "high", "isDirect": false, "via": ["webdriverio"], "effects": [], "range": ">=7.16.5", "nodes": [""], "fixAvailable": {"name": "@wdio/sync", "version": "7.14.1", "isSemVerMajor": true}}, "@xmldom/xmldom": {"name": "@xmldom/xmldom", "severity": "critical", "isDirect": false, "via": [{"source": 1091572, "name": "@xmldom/xmldom", "dependency": "@xmldom/xmldom", "title": "xmldom allows multiple root nodes in a DOM", "url": "https://github.com/advisories/GHSA-crh6-fp67-6883", "severity": "critical", "cwe": ["CWE-20", "CWE-1288"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": "<0.7.7"}], "effects": [], "range": "<0.7.7", "nodes": [""], "fixAvailable": true}, "autoprefixer": {"name": "autoprefixer", "severity": "moderate", "isDirect": false, "via": ["postcss"], "effects": ["stylelint"], "range": "1.0.20131222 - 9.8.8", "nodes": ["node_modules/autoprefixer"], "fixAvailable": {"name": "grunt-stylelint", "version": "0.20.1", "isSemVerMajor": true}}, "braces": {"name": "braces", "severity": "high", "isDirect": false, "via": [{"source": 1098094, "name": "braces", "dependency": "braces", "title": "Uncontrolled resource consumption in braces", "url": "https://github.com/advisories/GHSA-grv7-fg5c-xmjg", "severity": "high", "cwe": ["CWE-400", "CWE-1050"], "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": "<3.0.3"}], "effects": [], "range": "<3.0.3", "nodes": [""], "fixAvailable": true}, "devtools": {"name": "devtools", "severity": "high", "isDirect": false, "via": ["puppeteer-core"], "effects": [], "range": ">=7.16.5", "nodes": ["", ""], "fixAvailable": true}, "diff": {"name": "diff", "severity": "high", "isDirect": false, "via": [{"source": 1095029, "name": "diff", "dependency": "diff", "title": "Regular Expression Denial of Service (ReDoS)", "url": "https://github.com/advisories/GHSA-h6ch-v84p-w6p9", "severity": "high", "cwe": ["CWE-400"], "cvss": {"score": 0, "vectorString": null}, "range": "<3.5.0"}], "effects": ["unexpected"], "range": "<3.5.0", "nodes": [""], "fixAvailable": {"name": "unexpected", "version": "13.2.1", "isSemVerMajor": true}}, "ejs": {"name": "ejs", "severity": "critical", "isDirect": false, "via": [{"source": 1089270, "name": "ejs", "dependency": "ejs", "title": "ejs template injection vulnerability", "url": "https://github.com/advisories/GHSA-phwq-j96m-2c2q", "severity": "critical", "cwe": ["CWE-74"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": "<3.1.7"}, {"source": 1098366, "name": "ejs", "dependency": "ejs", "title": "ejs lacks certain pollution protection", "url": "https://github.com/advisories/GHSA-ghr5-ch3p-vcr6", "severity": "moderate", "cwe": ["CWE-693", "CWE-1321"], "cvss": {"score": 4, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": "<3.1.10"}], "effects": [], "range": "<=3.1.9", "nodes": [""], "fixAvailable": true}, "eslint-config-wikimedia": {"name": "eslint-config-wikimedia", "severity": "high", "isDirect": true, "via": ["eslint-plugin-compat"], "effects": [], "range": "0.18.0 - 0.21.0", "nodes": ["node_modules/eslint-config-wikimedia"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.28.2", "isSemVerMajor": true}}, "eslint-plugin-compat": {"name": "eslint-plugin-compat", "severity": "high", "isDirect": false, "via": ["semver"], "effects": ["eslint-config-wikimedia"], "range": "3.6.0-0 - 4.1.4", "nodes": ["node_modules/eslint-plugin-compat"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.28.2", "isSemVerMajor": true}}, "got": {"name": "got", "severity": "moderate", "isDirect": false, "via": [{"source": 1088948, "name": "got", "dependency": "got", "title": "Got allows a redirect to a UNIX socket", "url": "https://github.com/advisories/GHSA-pfrx-2q88-qq97", "severity": "moderate", "cwe": [], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"}, "range": "<11.8.5"}], "effects": [], "range": "<11.8.5", "nodes": [""], "fixAvailable": true}, "grunt-stylelint": {"name": "grunt-stylelint", "severity": "moderate", "isDirect": true, "via": ["stylelint"], "effects": [], "range": "<=0.16.0", "nodes": ["node_modules/grunt-stylelint"], "fixAvailable": {"name": "grunt-stylelint", "version": "0.20.1", "isSemVerMajor": true}}, "http-cache-semantics": {"name": "http-cache-semantics", "severity": "high", "isDirect": false, "via": [{"source": 1092316, "name": "http-cache-semantics", "dependency": "http-cache-semantics", "title": "http-cache-semantics vulnerable to Regular Expression Denial of Service", "url": "https://github.com/advisories/GHSA-rc47-6667-2j5j", "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": "<4.1.1"}], "effects": [], "range": "<4.1.1", "nodes": [""], "fixAvailable": true}, "json5": {"name": "json5", "severity": "high", "isDirect": false, "via": [{"source": 1096544, "name": "json5", "dependency": "json5", "title": "Prototype Pollution in JSON5 via Parse Method", "url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h", "severity": "high", "cwe": ["CWE-1321"], "cvss": {"score": 7.1, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"}, "range": ">=2.0.0 <2.2.2"}], "effects": [], "range": "2.0.0 - 2.2.1", "nodes": [""], "fixAvailable": true}, "micromatch": {"name": "micromatch", "severity": "moderate", "isDirect": false, "via": [{"source": 1098681, "name": "micromatch", "dependency": "micromatch", "title": "Regular Expression Denial of Service (ReDoS) in micromatch", "url": "https://github.com/advisories/GHSA-952p-6rrq-rcjv", "severity": "moderate", "cwe": ["CWE-1333"], "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.8"}], "effects": [], "range": "<4.0.8", "nodes": [""], "fixAvailable": true}, "minimatch": {"name": "minimatch", "severity": "high", "isDirect": false, "via": [{"source": 1096485, "name": "minimatch", "dependency": "minimatch", "title": "minimatch ReDoS vulnerability", "url": "https://github.com/advisories/GHSA-f8q6-p94x-37v3", "severity": "high", "cwe": ["CWE-400", "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": "<3.0.5"}], "effects": ["mocha", "recursive-readdir"], "range": "<3.0.5", "nodes": ["node_modules/minimatch"], "fixAvailable": true}, "minimist": {"name": "minimist", "severity": "critical", "isDirect": false, "via": [{"source": 1097678, "name": "minimist", "dependency": "minimist", "title": "Prototype Pollution in minimist", "url": "https://github.com/advisories/GHSA-xvch-5gv4-984h", "severity": "critical", "cwe": ["CWE-1321"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": ">=1.0.0 <1.2.6"}], "effects": [], "range": "1.0.0 - 1.2.5", "nodes": [""], "fixAvailable": true}, "mocha": {"name": "mocha", "severity": "high", "isDirect": false, "via": ["minimatch", "nanoid"], "effects": [], "range": "5.1.0 - 9.2.1", "nodes": [""], "fixAvailable": true}, "mwbot": {"name": "mwbot", "severity": "high", "isDirect": false, "via": ["request", "semver"], "effects": ["wdio-mediawiki"], "range": ">=0.1.6", "nodes": ["node_modules/mwbot"], "fixAvailable": {"name": "wdio-mediawiki", "version": "2.5.0", "isSemVerMajor": true}}, "nanoid": {"name": "nanoid", "severity": "moderate", "isDirect": false, "via": [{"source": 1089011, "name": "nanoid", "dependency": "nanoid", "title": "Exposure of Sensitive Information to an Unauthorized Actor in nanoid", "url": "https://github.com/advisories/GHSA-qrpm-p2h7-hrv2", "severity": "moderate", "cwe": ["CWE-200"], "cvss": {"score": 5.5, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"}, "range": ">=3.0.0 <3.1.31"}], "effects": ["mocha"], "range": "3.0.0 - 3.1.30", "nodes": [""], "fixAvailable": true}, "path-to-regexp": {"name": "path-to-regexp", "severity": "high", "isDirect": false, "via": [{"source": 1099561, "name": "path-to-regexp", "dependency": "path-to-regexp", "title": "path-to-regexp outputs backtracking regular expressions", "url": "https://github.com/advisories/GHSA-9wv6-86v2-598j", "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": ">=0.2.0 <1.9.0"}], "effects": [], "range": "0.2.0 - 1.8.0", "nodes": [""], "fixAvailable": true}, "postcss": {"name": "postcss", "severity": "moderate", "isDirect": false, "via": [{"source": 1094544, "name": "postcss", "dependency": "postcss", "title": "PostCSS line return parsing error", "url": "https://github.com/advisories/GHSA-7fh5-64p2-3v2j", "severity": "moderate", "cwe": ["CWE-74", "CWE-144"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"}, "range": "<8.4.31"}], "effects": ["autoprefixer", "postcss-less", "postcss-safe-parser", "postcss-sass", "postcss-scss", "stylelint", "sugarss"], "range": "<8.4.31", "nodes": ["", "node_modules/autoprefixer/node_modules/postcss", "node_modules/postcss-less/node_modules/postcss", "node_modules/postcss-safe-parser/node_modules/postcss", "node_modules/postcss-sass/node_modules/postcss", "node_modules/postcss-scss/node_modules/postcss", "node_modules/stylelint/node_modules/postcss", "node_modules/sugarss/node_modules/postcss"], "fixAvailable": {"name": "grunt-stylelint", "version": "0.20.1", "isSemVerMajor": true}}, "postcss-less": {"name": "postcss-less", "severity": "moderate", "isDirect": false, "via": ["postcss"], "effects": [], "range": "<=3.1.4", "nodes": ["node_modules/postcss-less"], "fixAvailable": true}, "postcss-safe-parser": {"name": "postcss-safe-parser", "severity": "moderate", "isDirect": false, "via": ["postcss"], "effects": ["stylelint"], "range": "<=4.0.2", "nodes": ["node_modules/postcss-safe-parser"], "fixAvailable": {"name": "grunt-stylelint", "version": "0.20.1", "isSemVerMajor": true}}, "postcss-sass": {"name": "postcss-sass", "severity": "moderate", "isDirect": false, "via": ["postcss"], "effects": ["stylelint"], "range": "<=0.4.4", "nodes": ["node_modules/postcss-sass"], "fixAvailable": {"name": "grunt-stylelint", "version": "0.20.1", "isSemVerMajor": true}}, "postcss-scss": {"name": "postcss-scss", "severity": "moderate", "isDirect": false, "via": ["postcss"], "effects": ["stylelint"], "range": "<=2.1.1", "nodes": ["node_modules/postcss-scss"], "fixAvailable": {"name": "grunt-stylelint", "version": "0.20.1", "isSemVerMajor": true}}, "prismjs": {"name": "prismjs", "severity": "high", "isDirect": false, "via": [{"source": 1090424, "name": "prismjs", "dependency": "prismjs", "title": "Cross-site Scripting in Prism", "url": "https://github.com/advisories/GHSA-3949-f494-cm99", "severity": "high", "cwe": ["CWE-79"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:L/A:L"}, "range": ">=1.14.0 <1.27.0"}], "effects": [], "range": "1.14.0 - 1.26.0", "nodes": [""], "fixAvailable": true}, "puppeteer-core": {"name": "puppeteer-core", "severity": "high", "isDirect": false, "via": ["ws"], "effects": ["devtools", "webdriverio"], "range": "11.0.0 - 22.11.1", "nodes": [""], "fixAvailable": {"name": "webdriverio", "version": "9.2.14", "isSemVerMajor": true}}, "recursive-readdir": {"name": "recursive-readdir", "severity": "high", "isDirect": false, "via": ["minimatch"], "effects": [], "range": "1.2.0 - 2.2.2", "nodes": [""], "fixAvailable": true}, "request": {"name": "request", "severity": "moderate", "isDirect": true, "via": [{"source": 1096727, "name": "request", "dependency": "request", "title": "Server-Side Request Forgery in Request", "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6", "severity": "moderate", "cwe": ["CWE-918"], "cvss": {"score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"}, "range": "<=2.88.2"}, "tough-cookie"], "effects": ["mwbot"], "range": "*", "nodes": ["node_modules/request"], "fixAvailable": {"name": "wdio-mediawiki", "version": "2.5.0", "isSemVerMajor": true}}, "semver": {"name": "semver", "severity": "high", "isDirect": false, "via": [{"source": 1098562, "name": "semver", "dependency": "semver", "title": "semver vulnerable to Regular Expression Denial of Service", "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw", "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": ">=7.0.0 <7.5.2"}, {"source": 1098563, "name": "semver", "dependency": "semver", "title": "semver vulnerable to Regular Expression Denial of Service", "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw", "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": "<5.7.2"}, {"source": 1098564, "name": "semver", "dependency": "semver", "title": "semver vulnerable to Regular Expression Denial of Service", "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw", "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.0 <6.3.1"}], "effects": ["eslint-plugin-compat", "mwbot"], "range": "<=5.7.1 || 6.0.0 - 6.3.0 || 7.0.0 - 7.5.1", "nodes": ["", "", "", "", "", "", "", "", "node_modules/mwbot/node_modules/semver", "node_modules/semver"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.28.2", "isSemVerMajor": true}}, "stylelint": {"name": "stylelint", "severity": "moderate", "isDirect": false, "via": ["autoprefixer", "postcss", "postcss-less", "postcss-safe-parser", "postcss-sass", "postcss-scss", "sugarss"], "effects": ["grunt-stylelint"], "range": "0.1.0 - 13.13.1", "nodes": ["node_modules/stylelint"], "fixAvailable": {"name": "grunt-stylelint", "version": "0.20.1", "isSemVerMajor": true}}, "sugarss": {"name": "sugarss", "severity": "moderate", "isDirect": false, "via": ["postcss"], "effects": ["stylelint"], "range": "<=2.0.0", "nodes": ["node_modules/sugarss"], "fixAvailable": {"name": "grunt-stylelint", "version": "0.20.1", "isSemVerMajor": true}}, "tough-cookie": {"name": "tough-cookie", "severity": "moderate", "isDirect": false, "via": [{"source": 1097682, "name": "tough-cookie", "dependency": "tough-cookie", "title": "tough-cookie Prototype Pollution vulnerability", "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"}, "range": "<4.1.3"}], "effects": ["request"], "range": "<4.1.3", "nodes": ["", "node_modules/request/node_modules/tough-cookie"], "fixAvailable": {"name": "wdio-mediawiki", "version": "2.5.0", "isSemVerMajor": true}}, "ua-parser-js": {"name": "ua-parser-js", "severity": "high", "isDirect": false, "via": [{"source": 1092302, "name": "ua-parser-js", "dependency": "ua-parser-js", "title": "ReDoS Vulnerability in ua-parser-js version", "url": "https://github.com/advisories/GHSA-fhg7-m89q-25r3", "severity": "high", "cwe": ["CWE-400", "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": ">=0.8.0 <1.0.33"}], "effects": [], "range": "0.8.1 - 1.0.32", "nodes": [""], "fixAvailable": true}, "unexpected": {"name": "unexpected", "severity": "high", "isDirect": true, "via": ["diff"], "effects": [], "range": "5.0.0-beta1 - 11.0.0", "nodes": ["node_modules/unexpected"], "fixAvailable": {"name": "unexpected", "version": "13.2.1", "isSemVerMajor": true}}, "vue": {"name": "vue", "severity": "low", "isDirect": true, "via": [{"source": 1100238, "name": "vue", "dependency": "vue", "title": "ReDoS vulnerability in vue package that is exploitable through inefficient regex evaluation in the parseHTML function", "url": "https://github.com/advisories/GHSA-5j4c-8p2g-v4jx", "severity": "low", "cwe": ["CWE-1333"], "cvss": {"score": 3.7, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": ">=2.0.0-alpha.1 <3.0.0-alpha.0"}], "effects": ["vuex"], "range": "2.0.0-alpha.1 - 2.7.16", "nodes": ["", "node_modules/vue"], "fixAvailable": {"name": "vue", "version": "3.5.13", "isSemVerMajor": true}}, "vuex": {"name": "vuex", "severity": "low", "isDirect": true, "via": ["vue"], "effects": [], "range": "3.1.3 - 3.6.2", "nodes": ["node_modules/vuex"], "fixAvailable": {"name": "vuex", "version": "4.1.0", "isSemVerMajor": true}}, "wdio-mediawiki": {"name": "wdio-mediawiki", "severity": "high", "isDirect": true, "via": ["mwbot"], "effects": ["wdio-wikibase"], "range": "1.1.0 - 2.2.0", "nodes": ["node_modules/wdio-mediawiki"], "fixAvailable": {"name": "wdio-mediawiki", "version": "2.5.0", "isSemVerMajor": true}}, "wdio-wikibase": {"name": "wdio-wikibase", "severity": "high", "isDirect": true, "via": ["wdio-mediawiki"], "effects": [], "range": "5.1.0 - 5.2.0", "nodes": ["node_modules/wdio-wikibase"], "fixAvailable": {"name": "wdio-wikibase", "version": "6.0.3", "isSemVerMajor": true}}, "webdriverio": {"name": "webdriverio", "severity": "high", "isDirect": true, "via": ["devtools", "puppeteer-core"], "effects": ["@wdio/cli", "@wdio/runner", "@wdio/sync"], "range": "7.16.5 - 8.40.6", "nodes": ["", "", "node_modules/webdriverio"], "fixAvailable": {"name": "webdriverio", "version": "9.2.14", "isSemVerMajor": true}}, "word-wrap": {"name": "word-wrap", "severity": "moderate", "isDirect": false, "via": [{"source": 1097681, "name": "word-wrap", "dependency": "word-wrap", "title": "word-wrap vulnerable to Regular Expression Denial of Service", "url": "https://github.com/advisories/GHSA-j8xg-fqg3-53r7", "severity": "moderate", "cwe": ["CWE-1333"], "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": "<1.2.4"}], "effects": [], "range": "<1.2.4", "nodes": [""], "fixAvailable": true}, "ws": {"name": "ws", "severity": "high", "isDirect": false, "via": [{"source": 1098392, "name": "ws", "dependency": "ws", "title": "ws affected by a DoS when handling a request with many HTTP headers", "url": "https://github.com/advisories/GHSA-3h5v-q93c-6h6q", "severity": "high", "cwe": ["CWE-476"], "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.17.1"}], "effects": ["puppeteer-core"], "range": "8.0.0 - 8.17.0", "nodes": [""], "fixAvailable": {"name": "webdriverio", "version": "9.2.14", "isSemVerMajor": true}}}, "metadata": {"vulnerabilities": {"info": 0, "low": 2, "moderate": 15, "high": 25, "critical": 4, "total": 46}, "dependencies": {"prod": 1, "dev": 1061, "optional": 3, "peer": 100, "peerOptional": 0, "total": 1061}}}}
$ /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 EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wdio/sync@7.36.0',
npm WARN EBADENGINE   required: { node: '>=12.0.0 <16' },
npm WARN EBADENGINE   current: { node: 'v18.19.0', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated @xmldom/xmldom@0.7.13: this version is no longer supported, please update to at least 0.8.*
npm WARN deprecated vue@2.7.16: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.
--- stdout ---

added 72 packages, removed 28 packages, changed 88 packages, and audited 1061 packages in 12s

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

# npm audit report

diff  <3.5.0
Severity: high
Regular Expression Denial of Service (ReDoS) - https://github.com/advisories/GHSA-h6ch-v84p-w6p9
fix available via `npm audit fix --force`
Will install unexpected@13.2.1, which is a breaking change
node_modules/unexpected/node_modules/diff
  unexpected  5.0.0-beta1 - 11.0.0
  Depends on vulnerable versions of diff
  node_modules/unexpected

minimatch  <3.0.5
Severity: high
minimatch ReDoS vulnerability - https://github.com/advisories/GHSA-f8q6-p94x-37v3
fix available via `npm audit fix`
node_modules/minimatch

postcss  <8.4.31
Severity: moderate
PostCSS line return parsing error - https://github.com/advisories/GHSA-7fh5-64p2-3v2j
fix available via `npm audit fix --force`
Will install grunt-stylelint@0.20.1, which is a breaking change
node_modules/autoprefixer/node_modules/postcss
node_modules/postcss-less/node_modules/postcss
node_modules/postcss-safe-parser/node_modules/postcss
node_modules/postcss-sass/node_modules/postcss
node_modules/postcss-scss/node_modules/postcss
node_modules/stylelint/node_modules/postcss
node_modules/sugarss/node_modules/postcss
  autoprefixer  1.0.20131222 - 9.8.8
  Depends on vulnerable versions of postcss
  node_modules/autoprefixer
    stylelint  0.1.0 - 13.13.1
    Depends on vulnerable versions of autoprefixer
    Depends on vulnerable versions of postcss
    Depends on vulnerable versions of postcss-less
    Depends on vulnerable versions of postcss-safe-parser
    Depends on vulnerable versions of postcss-sass
    Depends on vulnerable versions of postcss-scss
    Depends on vulnerable versions of sugarss
    node_modules/stylelint
      grunt-stylelint  <=0.16.0
      Depends on vulnerable versions of stylelint
      node_modules/grunt-stylelint
  postcss-less  <=3.1.4
  Depends on vulnerable versions of postcss
  node_modules/postcss-less
  postcss-safe-parser  <=4.0.2
  Depends on vulnerable versions of postcss
  node_modules/postcss-safe-parser
  postcss-sass  <=0.4.4
  Depends on vulnerable versions of postcss
  node_modules/postcss-sass
  postcss-scss  <=2.1.1
  Depends on vulnerable versions of postcss
  node_modules/postcss-scss
  sugarss  <=2.0.0
  Depends on vulnerable versions of postcss
  node_modules/sugarss

request  *
Severity: moderate
Server-Side Request Forgery in Request - https://github.com/advisories/GHSA-p8p7-x288-28g6
Depends on vulnerable versions of tough-cookie
fix available via `npm audit fix --force`
Will install wdio-mediawiki@2.5.0, which is a breaking change
node_modules/request
  mwbot  >=0.1.6
  Depends on vulnerable versions of request
  Depends on vulnerable versions of semver
  node_modules/mwbot
    wdio-mediawiki  1.1.0 - 2.2.0
    Depends on vulnerable versions of mwbot
    node_modules/wdio-mediawiki
      wdio-wikibase  5.1.0 - 5.2.0
      Depends on vulnerable versions of wdio-mediawiki
      node_modules/wdio-wikibase

semver  7.0.0 - 7.5.1
Severity: high
semver vulnerable to Regular Expression Denial of Service - https://github.com/advisories/GHSA-c2qf-rxjj-qqgw
fix available via `npm audit fix --force`
Will install wdio-mediawiki@2.5.0, which is a breaking change
node_modules/mwbot/node_modules/semver
node_modules/semver
  eslint-plugin-compat  3.6.0-0 - 4.1.4
  Depends on vulnerable versions of semver
  node_modules/eslint-plugin-compat
    eslint-config-wikimedia  0.18.0 - 0.21.0
    Depends on vulnerable versions of eslint-plugin-compat
    node_modules/eslint-config-wikimedia

tough-cookie  <4.1.3
Severity: moderate
tough-cookie Prototype Pollution vulnerability - https://github.com/advisories/GHSA-72xf-g2v4-qvf3
fix available via `npm audit fix --force`
Will install wdio-mediawiki@2.5.0, which is a breaking change
node_modules/request/node_modules/tough-cookie

vue  2.0.0-alpha.1 - 2.7.16
ReDoS vulnerability in vue package that is exploitable through inefficient regex evaluation in the parseHTML function - https://github.com/advisories/GHSA-5j4c-8p2g-v4jx
fix available via `npm audit fix --force`
Will install vue@3.5.13, which is a breaking change
node_modules/vue
  vuex  3.1.3 - 3.6.2
  Depends on vulnerable versions of vue
  node_modules/vuex

ws  8.0.0 - 8.17.0
Severity: high
ws affected by a DoS when handling a request with many HTTP headers - https://github.com/advisories/GHSA-3h5v-q93c-6h6q
fix available via `npm audit fix --force`
Will install webdriverio@9.2.14, which is a breaking change
node_modules/devtools/node_modules/ws
node_modules/puppeteer-core/node_modules/ws
  puppeteer-core  11.0.0 - 22.11.1
  Depends on vulnerable versions of ws
  node_modules/devtools/node_modules/puppeteer-core
  node_modules/puppeteer-core
    devtools  >=7.16.5
    Depends on vulnerable versions of puppeteer-core
    node_modules/devtools
    webdriverio  7.16.5 - 8.40.6
    Depends on vulnerable versions of devtools
    Depends on vulnerable versions of puppeteer-core
    node_modules/webdriverio
      @wdio/cli  7.16.5 - 8.40.6
      Depends on vulnerable versions of webdriverio
      node_modules/@wdio/cli
      @wdio/runner  7.16.5 - 8.40.6
      Depends on vulnerable versions of webdriverio
      node_modules/@wdio/runner
        @wdio/local-runner  7.16.5 - 8.40.6
        Depends on vulnerable versions of @wdio/runner
        node_modules/@wdio/local-runner
      @wdio/sync  >=7.16.5
      Depends on vulnerable versions of webdriverio
      node_modules/@wdio/sync

30 vulnerabilities (2 low, 11 moderate, 17 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 EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wdio/sync@7.36.0',
npm WARN EBADENGINE   required: { node: '>=12.0.0 <16' },
npm WARN EBADENGINE   current: { node: 'v18.19.0', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated @stylelint/postcss-markdown@0.36.2: Use the original unforked package instead: postcss-markdown
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated grunt-jasmine-nodejs@1.6.1: Deprecated in favor of npm scripts.
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.1.7: Glob versions prior to v9 are no longer supported
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated @xmldom/xmldom@0.7.13: this version is no longer supported, please update to at least 0.8.*
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated vue@2.7.16: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.
npm WARN deprecated core-js@2.6.12: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
--- stdout ---

added 1060 packages, and audited 1061 packages in 23s

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

30 vulnerabilities (2 low, 11 moderate, 17 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

Run `npm audit` for details.

--- end ---
$ /usr/bin/npm test
--- stderr ---
[Vue warn]: Error in mounted hook: "TypeError: mw.message(...).text is not a function"

found in

---> <LanguageSelector>
       <Root>
TypeError: mw.message(...).text is not a function
    at getLanguageLabel (/src/repo/resources/widgets/LanguageSelectorWrapper.js:23:8)
    at /src/repo/resources/widgets/LanguageSelectorWrapper.js:29:25
    at Array.forEach (<anonymous>)
    at VueComponent.mounted (/src/repo/resources/widgets/LanguageSelectorWrapper.js:28:20)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:3718:63)
    at callHook$1 (/src/repo/node_modules/vue/dist/vue.js:3221:15)
    at Object.insert (/src/repo/node_modules/vue/dist/vue.js:4947:15)
    at invokeInsertHook (/src/repo/node_modules/vue/dist/vue.js:6977:40)
    at Vue.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:7189:11)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:2958:27)
    at Vue.updateComponent (/src/repo/node_modules/vue/dist/vue.js:3064:18)
    at Watcher.get (/src/repo/node_modules/vue/dist/vue.js:4196:35)
    at Watcher.run (/src/repo/node_modules/vue/dist/vue.js:4272:32)
    at flushSchedulerQueue (/src/repo/node_modules/vue/dist/vue.js:3314:19)
    at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:3844:22)
    at flushCallbacks (/src/repo/node_modules/vue/dist/vue.js:3766:20)
[Vue warn]: Error in mounted hook: "TypeError: mw.message(...).text is not a function"

found in

---> <LanguageSelector>
       <Root>
TypeError: mw.message(...).text is not a function
    at getLanguageLabel (/src/repo/resources/widgets/LanguageSelectorWrapper.js:23:8)
    at /src/repo/resources/widgets/LanguageSelectorWrapper.js:29:25
    at Array.forEach (<anonymous>)
    at VueComponent.mounted (/src/repo/resources/widgets/LanguageSelectorWrapper.js:28:20)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:3718:63)
    at callHook$1 (/src/repo/node_modules/vue/dist/vue.js:3221:15)
    at Object.insert (/src/repo/node_modules/vue/dist/vue.js:4947:15)
    at invokeInsertHook (/src/repo/node_modules/vue/dist/vue.js:6977:40)
    at Vue.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:7189:11)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:2958:27)
    at Vue.updateComponent (/src/repo/node_modules/vue/dist/vue.js:3064:18)
    at Watcher.get (/src/repo/node_modules/vue/dist/vue.js:4196:35)
    at Watcher.run (/src/repo/node_modules/vue/dist/vue.js:4272:32)
    at flushSchedulerQueue (/src/repo/node_modules/vue/dist/vue.js:3314:19)
    at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:3844:22)
    at flushCallbacks (/src/repo/node_modules/vue/dist/vue.js:3766:20)
[Vue warn]: Error in mounted hook: "TypeError: mw.message(...).text is not a function"

found in

---> <LanguageSelector>
       <Root>
TypeError: mw.message(...).text is not a function
    at getLanguageLabel (/src/repo/resources/widgets/LanguageSelectorWrapper.js:23:8)
    at /src/repo/resources/widgets/LanguageSelectorWrapper.js:29:25
    at Array.forEach (<anonymous>)
    at VueComponent.mounted (/src/repo/resources/widgets/LanguageSelectorWrapper.js:28:20)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:3718:63)
    at callHook$1 (/src/repo/node_modules/vue/dist/vue.js:3221:15)
    at Object.insert (/src/repo/node_modules/vue/dist/vue.js:4947:15)
    at invokeInsertHook (/src/repo/node_modules/vue/dist/vue.js:6977:40)
    at Vue.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:7189:11)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:2958:27)
    at Vue.updateComponent (/src/repo/node_modules/vue/dist/vue.js:3064:18)
    at Watcher.get (/src/repo/node_modules/vue/dist/vue.js:4196:35)
    at Watcher.run (/src/repo/node_modules/vue/dist/vue.js:4272:32)
    at flushSchedulerQueue (/src/repo/node_modules/vue/dist/vue.js:3314:19)
    at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:3844:22)
    at flushCallbacks (/src/repo/node_modules/vue/dist/vue.js:3766:20)
[Vue warn]: Error in mounted hook: "TypeError: mw.message(...).text is not a function"

found in

---> <LanguageSelector>
       <Root>
TypeError: mw.message(...).text is not a function
    at getLanguageLabel (/src/repo/resources/widgets/LanguageSelectorWrapper.js:23:8)
    at /src/repo/resources/widgets/LanguageSelectorWrapper.js:29:25
    at Array.forEach (<anonymous>)
    at VueComponent.mounted (/src/repo/resources/widgets/LanguageSelectorWrapper.js:28:20)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:3718:63)
    at callHook$1 (/src/repo/node_modules/vue/dist/vue.js:3221:15)
    at Object.insert (/src/repo/node_modules/vue/dist/vue.js:4947:15)
    at invokeInsertHook (/src/repo/node_modules/vue/dist/vue.js:6977:40)
    at Vue.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:7189:11)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:2958:27)
    at Vue.updateComponent (/src/repo/node_modules/vue/dist/vue.js:3064:18)
    at Watcher.get (/src/repo/node_modules/vue/dist/vue.js:4196:35)
    at Watcher.run (/src/repo/node_modules/vue/dist/vue.js:4272:32)
    at flushSchedulerQueue (/src/repo/node_modules/vue/dist/vue.js:3314:19)
    at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:3844:22)
    at flushCallbacks (/src/repo/node_modules/vue/dist/vue.js:3766:20)
[Vue warn]: Error in mounted hook: "TypeError: api.formatValue is not a function"

found in

---> <ItemSelector>
       <Root>
TypeError: api.formatValue is not a function
    at formatEntityLabel (/src/repo/resources/widgets/ItemSelectorWrapper.js:13:7)
    at VueComponent.mounted (/src/repo/resources/widgets/ItemSelectorWrapper.js:37:5)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:3718:63)
    at callHook$1 (/src/repo/node_modules/vue/dist/vue.js:3221:15)
    at Object.insert (/src/repo/node_modules/vue/dist/vue.js:4947:15)
    at invokeInsertHook (/src/repo/node_modules/vue/dist/vue.js:6977:40)
    at VueComponent.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:7189:11)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:2958:27)
    at VueComponent.updateComponent (/src/repo/node_modules/vue/dist/vue.js:3064:18)
    at Watcher.get (/src/repo/node_modules/vue/dist/vue.js:4196:35)
    at Watcher.run (/src/repo/node_modules/vue/dist/vue.js:4272:32)
    at flushSchedulerQueue (/src/repo/node_modules/vue/dist/vue.js:3314:19)
    at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:3844:22)
    at flushCallbacks (/src/repo/node_modules/vue/dist/vue.js:3766:20)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Vue warn]: Error in mounted hook: "TypeError: api.formatValue is not a function"

found in

---> <ItemSelector>
       <Root>
TypeError: api.formatValue is not a function
    at formatEntityLabel (/src/repo/resources/widgets/ItemSelectorWrapper.js:13:7)
    at VueComponent.mounted (/src/repo/resources/widgets/ItemSelectorWrapper.js:37:5)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:3718:63)
    at callHook$1 (/src/repo/node_modules/vue/dist/vue.js:3221:15)
    at Object.insert (/src/repo/node_modules/vue/dist/vue.js:4947:15)
    at invokeInsertHook (/src/repo/node_modules/vue/dist/vue.js:6977:40)
    at VueComponent.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:7189:11)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:2958:27)
    at VueComponent.updateComponent (/src/repo/node_modules/vue/dist/vue.js:3064:18)
    at Watcher.get (/src/repo/node_modules/vue/dist/vue.js:4196:35)
    at Watcher.run (/src/repo/node_modules/vue/dist/vue.js:4272:32)
    at flushSchedulerQueue (/src/repo/node_modules/vue/dist/vue.js:3314:19)
    at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:3844:22)
    at flushCallbacks (/src/repo/node_modules/vue/dist/vue.js:3766:20)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Vue warn]: Error in destroyed hook: "TypeError: Cannot read properties of undefined (reading 'destroy')"

found in

---> <ItemSelector>
       <Root>
TypeError: Cannot read properties of undefined (reading 'destroy')
    at VueComponent.destroyed (/src/repo/resources/widgets/ItemSelectorWrapper.js:66:43)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:3718:63)
    at callHook$1 (/src/repo/node_modules/vue/dist/vue.js:3221:15)
    at Vue.$destroy (/src/repo/node_modules/vue/dist/vue.js:3011:11)
    at destroy (/src/repo/node_modules/vue/dist/vue.js:4967:37)
    at invokeDestroyHook (/src/repo/node_modules/vue/dist/vue.js:6735:19)
    at removeVnodes (/src/repo/node_modules/vue/dist/vue.js:6751:23)
    at updateChildren (/src/repo/node_modules/vue/dist/vue.js:6874:15)
    at patchVnode (/src/repo/node_modules/vue/dist/vue.js:6944:23)
    at updateChildren (/src/repo/node_modules/vue/dist/vue.js:6818:19)
    at patchVnode (/src/repo/node_modules/vue/dist/vue.js:6944:23)
    at updateChildren (/src/repo/node_modules/vue/dist/vue.js:6818:19)
    at patchVnode (/src/repo/node_modules/vue/dist/vue.js:6944:23)
    at VueComponent.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:7110:19)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:2958:27)
    at VueComponent.updateComponent (/src/repo/node_modules/vue/dist/vue.js:3064:18)
[Vue warn]: Error in destroyed hook: "TypeError: Cannot read properties of undefined (reading 'destroy')"

found in

---> <ItemSelector>
       <Root>
TypeError: Cannot read properties of undefined (reading 'destroy')
    at VueComponent.destroyed (/src/repo/resources/widgets/ItemSelectorWrapper.js:66:43)
    at invokeWithErrorHandling (/src/repo/node_modules/vue/dist/vue.js:3718:63)
    at callHook$1 (/src/repo/node_modules/vue/dist/vue.js:3221:15)
    at Vue.$destroy (/src/repo/node_modules/vue/dist/vue.js:3011:11)
    at destroy (/src/repo/node_modules/vue/dist/vue.js:4967:37)
    at invokeDestroyHook (/src/repo/node_modules/vue/dist/vue.js:6735:19)
    at removeVnodes (/src/repo/node_modules/vue/dist/vue.js:6751:23)
    at updateChildren (/src/repo/node_modules/vue/dist/vue.js:6874:15)
    at patchVnode (/src/repo/node_modules/vue/dist/vue.js:6944:23)
    at updateChildren (/src/repo/node_modules/vue/dist/vue.js:6818:19)
    at patchVnode (/src/repo/node_modules/vue/dist/vue.js:6944:23)
    at updateChildren (/src/repo/node_modules/vue/dist/vue.js:6818:19)
    at patchVnode (/src/repo/node_modules/vue/dist/vue.js:6944:23)
    at VueComponent.patch [as __patch__] (/src/repo/node_modules/vue/dist/vue.js:7110:19)
    at Vue._update (/src/repo/node_modules/vue/dist/vue.js:2958:27)
    at VueComponent.updateComponent (/src/repo/node_modules/vue/dist/vue.js:3064:18)
[Vue warn]: Error in nextTick: "UnexpectedError: 
expected
<div class="lemma-widget">
  <ul class="lemma-widget_lemma-list">
    <li class="lemma-widget_lemma">...</li>
  </ul>
</div>
to contain no lemmas
  expected DOMElement to contain no elements matching '.lemma-widget_lemma'

  NodeList[
    <li class="lemma-widget_lemma">
      <span lang="en" class="lemma-widget_lemma-value">...</span>

      <span class="lemma-widget_lemma-language">...</span>
    </li> // should be removed
  ]
"

(found in <Root>)
Error [UnexpectedError]: 
expected
<div class="lemma-widget">
  <ul class="lemma-widget_lemma-list">
    <li class="lemma-widget_lemma">...</li>
  </ul>
</div>
to contain no lemmas
  expected DOMElement to contain no elements matching '.lemma-widget_lemma'

  NodeList[
    <li class="lemma-widget_lemma">
      <span lang="en" class="lemma-widget_lemma-value">...</span>

      <span class="lemma-widget_lemma-language">...</span>
    </li> // should be removed
  ]

    at VueComponent.<anonymous> (/src/repo/tests/jasmine/LemmaWidget.spec.js:68:4)
    at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:3844:22)
    at flushCallbacks (/src/repo/node_modules/vue/dist/vue.js:3766:20)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    set the query parameter full-trace=true to see the full stack trace {
  errorMode: 'nested',
  expect: <ref *1> [Function: wrappedExpect] {
    context: Context { expect: [Unexpected], level: 0 },
    execute: [Circular *1],
    alternations: [],
    flags: { no: true },
    subject: HTMLDivElement {
      _prevClass: 'lemma-widget',
      __vue__: [VueComponent],
      [Symbol(SameObject caches)]: [Object: null prototype]
    },
    testDescription: 'to contain no lemmas',
    args: [],
    assertionRule: {
      handler: [Function (anonymous)],
      alternations: [],
      flags: [Object],
      subject: [Object],
      args: [],
      testDescriptionString: 'to contain no lemmas',
      declaration: '<DOMElement> to contain [no] lemmas',
      unexpected: undefined,
      specificity: [Array]
    },
    subjectOutput: [Function (anonymous)],
    argsOutput: [],
    errorMode: 'nested'
  },
  parent: Error [UnexpectedError]: 
  expected
  <div class="lemma-widget">
    <ul class="lemma-widget_lemma-list">
      <li class="lemma-widget_lemma">...</li>
    </ul>
  </div>
  to contain no elements matching '.lemma-widget_lemma'
  
  NodeList[
    <li class="lemma-widget_lemma">
      <span lang="en" class="lemma-widget_lemma-value">...</span>
  
      <span class="lemma-widget_lemma-language">...</span>
    </li> // should be removed
  ]
  
      at VueComponent.<anonymous> (/src/repo/tests/jasmine/LemmaWidget.spec.js:68:4)
      at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:3844:22)
      set the query parameter full-trace=true to see the full stack trace {
    errorMode: 'default',
    expect: <ref *2> [Function: wrappedExpect] {
      context: [Context],
      execute: [Circular *2],
      alternations: [],
      flags: [Object],
      subject: [HTMLDivElement],
      testDescription: 'to contain no elements matching',
      args: [Array],
      assertionRule: [Object],
      subjectOutput: [Function (anonymous)],
      _assertionIndices: [],
      argsOutput: [Array]
    },
    parent: Error [UnexpectedError]
        at oathbreaker (/src/repo/node_modules/unexpected/build/lib/oathbreaker.js:45:13)
        at executeExpect (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1272:12)
        at /src/repo/node_modules/unexpected/build/lib/Unexpected.js:1236:16
        at Function.callInNestedContext (/src/repo/node_modules/unexpected/build/lib/createWrappedExpectProto.js:112:34)
        at wrappedExpect (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1235:28)
        at Function.<anonymous> (/src/repo/node_modules/unexpected-dom/lib/index.js:1482:18)
        at executeExpect (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1272:77)
        at Unexpected.expect [as _expect] (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1276:18)
        at Unexpected.expect (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:903:23)
        at executeExpect (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1212:72)
        at /src/repo/node_modules/unexpected/build/lib/Unexpected.js:1236:16
        at Function.callInNestedContext (/src/repo/node_modules/unexpected/build/lib/createWrappedExpectProto.js:112:34)
        at wrappedExpect (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1235:28)
        at Function.<anonymous> (/src/repo/tests/jasmine/LemmaWidget.spec.js:121:3)
        at executeExpect (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1272:77)
        at Unexpected.expect [as _expect] (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1276:18) {
      errorMode: 'default',
      expect: [Function],
      parent: [Error],
      originalError: undefined
    },
    originalError: undefined,
    _hasSerializedErrorMessage: true
  },
  originalError: undefined,
  _hasSerializedErrorMessage: true
}
[Vue warn]: Error in nextTick: "UnexpectedError: 
expected
<div class="lemma-widget">
  <ul class="lemma-widget_lemma-list">
    <li class="lemma-widget_lemma">...</li>
  </ul>
</div>
to contain lemma Lemma({ value: '', language: '' })
  expected DOMElement when queried for .lemma-widget_lemma .lemma-widget_lemma-value to have an item satisfying to have text ''
    expected
    NodeList[
      <span lang="en" class="lemma-widget_lemma-value">hello</span>
    ]
    to have an item satisfying to have text ''
"

(found in <Root>)
Error [UnexpectedError]: 
expected
<div class="lemma-widget">
  <ul class="lemma-widget_lemma-list">
    <li class="lemma-widget_lemma">...</li>
  </ul>
</div>
to contain lemma Lemma({ value: '', language: '' })
  expected DOMElement when queried for .lemma-widget_lemma .lemma-widget_lemma-value to have an item satisfying to have text ''
    expected
    NodeList[
      <span lang="en" class="lemma-widget_lemma-value">hello</span>
    ]
    to have an item satisfying to have text ''

    at VueComponent.<anonymous> (/src/repo/tests/jasmine/LemmaWidget.spec.js:56:4)
    at Array.<anonymous> (/src/repo/node_modules/vue/dist/vue.js:3844:22)
    at flushCallbacks (/src/repo/node_modules/vue/dist/vue.js:3766:20)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    set the query parameter full-trace=true to see the full stack trace {
  errorMode: 'nested',
  expect: <ref *1> [Function: wrappedExpect] {
    context: Context { expect: [Unexpected], level: 0 },
    execute: [Circular *1],
    alternations: [],
    flags: {},
    subject: HTMLDivElement {
      _prevClass: 'lemma-widget',
      __vue__: [VueComponent],
      [Symbol(SameObject caches)]: [Object: null prototype]
    },
    testDescription: 'to contain lemma',
    args: [ [Lemma] ],
    assertionRule: {
      handler: [Function (anonymous)],
      alternations: [],
      flags: {},
      subject: [Object],
      args: [Array],
      testDescriptionString: 'to contain lemma',
      declaration: '<DOMElement> to contain lemma <object>',
      unexpected: undefined,
      specificity: [Array]
    },
    subjectOutput: [Function (anonymous)],
    argsOutput: [ [Function (anonymous)] ],
    errorMode: 'nested'
  },
  parent: Error [UnexpectedError]: 
  expected
  <div class="lemma-widget">
    <ul class="lemma-widget_lemma-list">
      <li class="lemma-widget_lemma">...</li>
    </ul>
  </div>
  when queried for .lemma-widget_lemma .lemma-widget_lemma-value to have an item satisfying to have text ''
    expected
    NodeList[
      <span lang="en" class="lemma-widget_lemma-value">hello</span>
    ]
    to have an item satisfying to have text ''
  
      at VueComponent.<anonymous> (/src/repo/tests/jasmine/LemmaWidget.spec.js:56:4)
      set the query parameter full-trace=true to see the full stack trace {
    errorMode: 'nested',
    expect: <ref *2> [Function: wrappedExpect] {
      context: [Context],
      execute: [Circular *2],
      alternations: [],
      flags: [Object],
      subject: [HTMLDivElement],
      testDescription: 'when queried for',
      args: [Array],
      assertionRule: [Object],
      subjectOutput: [Function (anonymous)],
      _assertionIndices: [Array],
      argsOutput: [Array],
      errorMode: 'nested'
    },
    parent: Error [UnexpectedError]
        at Function.callInNestedContext (/src/repo/node_modules/unexpected/build/lib/createWrappedExpectProto.js:131:30)
        at wrappedExpect (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1235:28)
        at Function.<anonymous> (/src/repo/node_modules/unexpected/build/lib/assertions.js:910:19)
        at executeExpect (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1272:77)
        at /src/repo/node_modules/unexpected/build/lib/Unexpected.js:1236:16
        at Function.callInNestedContext (/src/repo/node_modules/unexpected/build/lib/createWrappedExpectProto.js:112:34)
        at Function.wrappedExpect [as execute] (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1235:28)
        at Function.shift (/src/repo/node_modules/unexpected/build/lib/createWrappedExpectProto.js:198:31)
        at Function.<anonymous> (/src/repo/node_modules/unexpected-dom/lib/index.js:1457:23)
        at executeExpect (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1272:77)
        at Unexpected.expect [as _expect] (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1276:18)
        at Unexpected.expect (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:903:23)
        at executeExpect (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1212:72)
        at /src/repo/node_modules/unexpected/build/lib/Unexpected.js:1236:16
        at Function.callInNestedContext (/src/repo/node_modules/unexpected/build/lib/createWrappedExpectProto.js:112:34)
        at wrappedExpect (/src/repo/node_modules/unexpected/build/lib/Unexpected.js:1235:28) {
      errorMode: 'default',
      expect: [Function],
      parent: [Error],
      originalError: undefined
    },
    originalError: undefined,
    _hasSerializedErrorMessage: true
  },
  originalError: undefined,
  _hasSerializedErrorMessage: true
}
ERROR: "test:grunt" exited with 3.
--- stdout ---

> test
> run-s test:*


> test:grunt
> grunt test

Running "eslint:all" (eslint) task

/src/repo/resources/jquery.wikibase.lexemeformview.js
  287:0  warning  Missing JSDoc @param "lemmas" type           jsdoc/require-param-type
  288:0  warning  Missing JSDoc @param "formIndex" type        jsdoc/require-param-type
  289:0  warning  Missing JSDoc @param "formId" type           jsdoc/require-param-type
  290:0  warning  Missing JSDoc @param "representations" type  jsdoc/require-param-type

/src/repo/resources/special/SpecialNewLexemeAlphaSkipVueApp.js
  0:0  warning  File ignored because of a matching ignore pattern. Use "--no-ignore" to override

/src/repo/resources/view/ViewFactoryFactory.js
  17:0  warning  Syntax error in type: []  jsdoc/valid-types

/src/repo/resources/widgets/GlossWidget.js
  34:0  warning  Syntax error in type: [{ value: string, language: string }]  jsdoc/valid-types

/src/repo/tests/selenium/pageobjects/lexeme.page.js
  236:0  warning  Missing JSDoc @param "input" type  jsdoc/require-param-type
  237:0  warning  Missing JSDoc @param "value" type  jsdoc/require-param-type

/src/repo/tests/selenium/specs/header.edit.js
  12:25  warning  "../../../../Wikibase/repo/tests/selenium/wdio-wikibase/wikibase.api" is not found  node/no-missing-require

✖ 10 problems (0 errors, 10 warnings)


Running "banana:WikibaseLexeme" (banana) task
>> 3 message directories checked.

Running "jasmine_nodejs:all" (jasmine_nodejs) task

>> Executing 121 defined specs...

Test Suites & Specs:

1) focusElement

   2) callback
Download the Vue Devtools extension for a better development experience:
https://github.com/vuejs/vue-devtools
You are running Vue in development mode.
Make sure to turn on production mode when deploying for production.
See more tips at https://vuejs.org/guide/deployment.html
Download the Vue Devtools extension for a better development experience:
https://github.com/vuejs/vue-devtools
You are running Vue in development mode.
Make sure to turn on production mode when deploying for production.
See more tips at https://vuejs.org/guide/deployment.html
      ✔ calls focus on selected element
      ✔ can handle missing element

   ✔ returns a callback without doing anything else

3) GlossWidget
   ✔ create with no glosses - when switched to edit mode empty gloss is added
   ✔ remove a gloss
   ✔ initialize widget with one gloss
   ✔ switch to edit mode
   ✔ removes empty glosses when saved
   ✔ add a new gloss
   ✔ stop editing

4) InvalidLanguageIndicator
   ✔ creates mixin watch handler not taking offence in empty language
   ✔ creates mixin property hasInvalidLanguage returning true for existing InvalidLanguages
   ✔ creates mixin watch handler that updates InvalidLanguages with respective language values
   ✔ creates mixin watch handler that can find multiple invalid languages
   ✔ creates mixin definition with watch that does not fire immediately
   ✔ creates mixin definition that adds an InvalidLanguages property to data
   ✔ creates mixin definition with watch on desired property
   ✔ creates mixin definition with watch that monitors the property recursively
   ✔ creates mixin definition providing method to determine if language isInvalidLanguage
   ✔ creates mixin definition method isInvalidLanguage returning false for empty InvalidLanguages
   ✔ creates mixin definition providing computed property hasInvalidLanguage
   ✔ creates mixin property hasInvalidLanguage returning false for empty InvalidLanguages

5) RedundantLanguageIndicator
   ✔ creates mixin definition method isRedundantLanguage returning false for empty redundantLanguages
   ✔ creates mixin definition providing method to determine if language isRedundantLanguage
   ✔ creates mixin definition that adds a redundantLanguages property to data
   ✔ creates mixin definition with watch that monitors the property recursively
   ✔ creates mixin definition with watch that fires immediately
   ✔ creates mixin definition with watch on desired property
   ✔ creates mixin watch handler not taking offence in repeated empty language
   ✔ creates mixin watch handler that can find multiple redundant languages
   ✔ creates mixin watch handler that updates redundantLanguages with respective language values
   ✔ creates mixin property hasRedundantLanguage returning true for existing redundantLanguages
   ✔ creates mixin property hasRedundantLanguage returning false for empty redundantLanguages
   ✔ creates mixin definition providing computed property hasRedundantLanguage

6) ItemSelectorWrapper
   ✔ passes the item ID to the entityselector widget on mount

7) RepresentationWidget
   ✔ is not in edit mode after editing is stopped
   ✔ adds an empty representation on add
   ✔ is not in edit mode after being created
   ✔ switches to edit mode when editing
   ✔ detects redundant representation languages and marks the widget
   ✔ can carry redundant representations
   ✔ detects redundant representation languages and can mark the individual languages
   ✔ adds a new representation with lemma language when editing the widget with no representations and one lemma
   ✔ shows only the representation it contains when editing the widget with some representation
   ✔ cannot remove representation if not in edit mode
   ✔ adds a new empty representation when editing the widget with no representations and multiple lemmas
   ✔ cannot add representation if not in edit mode
   ✔ can remove a representation
   ✔ adds a representation with unique lemmas language on add after delete

8) mutationTypes
   ✔ uses unique ids for all mutation types

9) LemmaList
   ✔ length
   ✔ add

   10) copy
      ✔ clones Lemmas
      ✔ creates an identical LemmaList

   ✔ remove

   11) equals
      ✔ returns true for LemmaList with same lemmas
      ✔ returns false for objects that are not of type LemmaList
      ✔ ignores empty lemmas
      ✔ returns false for LemmaList with different lemmas
      ✔ returns false for LemmaList of different length

   ✔ getLemmas

12) mutations
   ✔ UPDATE_REPRESENTATION_VALUE changes correct representation value
   ✔ ADD_REPRESENTATION adds a new representation to the right form
   ✔ REPLACE_ALL_REPRESENTATIONS replaces representations of correct form
   ✔ UPDATE_REPRESENTATION_LANGUAGE changes correct representation language
   ✔ REMOVE_REPRESENTATION removes representation leaving others with updated index
   ✔ DERIVE_REPRESENTATION_LANGUAGE_FROM_LEMMA changes representation language correctly

13) LanguageAndLexicalCategoryWidget
   ✔ shows the language and the lexical category
   ✔ switches to edit mode and back

14) actionTypes
   ✔ uses unique ids for all action types

15) store
   ✔ creates initial state

16) LexemeSubEntityId

   17) getIdSuffix
      ✔ returns the Sense id suffix
      ✔ returns the Form id suffix

18) actions
   ✔ REPLACE_ALL_REPRESENTATIONS delegates to mutation
   ✔ UPDATE_REPRESENTATION_VALUE delegates to mutation
   ✔ UPDATE_REPRESENTATION_LANGUAGE delegates to mutation
   ✔ REMOVE_REPRESENTATION delegates to mutation
   ✔ ADD_REPRESENTATION on state having no representations and one lemma mutates to empty values and derives lemma language
   ✔ ADD_REPRESENTATION on state having existing representation and one lemma mutates to empty values
   ✔ ADD_REPRESENTATION on state having no representations and multiple lemmas mutates to empty values

19) wikibase.lexeme.widgets.LemmaWidget
   ✔ detects redundant lemma language to mark the individual languages
   ✔ can carry redundant lemma languages
   ✖ remove a lemma (1 failure)
   ✖ add a new lemma (1 failure)
   ✔ edit mode is false
   ✔ edit mode is true
   ✔ detects redundant lemma languages to mark the widget
   ✔ marks-up the lemma term with the lemma language
   ✔ initialize widget with one lemma

20) LexemeHeader.newLexemeHeaderStore
   ✔ action save on success mutates the state to start saving, updates state and finishes saving
   ✔ action save calls API with correct parameters and changes state using data from response
   ✔ failed save returns rejected promise with a single error object
   ✔ failed save returns rejected promise with first error object if API returns multiple errors
   ✔ mutation updateRevisionId changes baseRevId to given value
   ✔ mutation startSaving switches the isSaving flag to true
   ✔ mutation updateLanguage changes lexical category and the link to given values
   ✔ mutation updateLemmas changes lemmas to given values
   ✔ action save calls API with correct parameters when removing an item from the state
   ✔ mutation finishSaving switches the isSaving flag to false
   ✔ mutation updateLanguage changes language and languageLink to given values

21) wikibase.lexeme.widgets.LexemeHeader

   22) hasChanges
      ✔ returns true when lemmas change
      ✔ ignores added empty lemmas
      ✔ returns false by default
      ✔ returns true when language changes
      ✔ returns true when lexical category changes

   ✔ binds to lemma-widget hasRedundantLanguage event

   ✔ shows save button enabled when not unsaveable

   ✔ updates language and lexical category on save

   23) isUnsaveable
      ✔ returns false by default
      ✔ returns true when there are no changes
      ✔ returns true when there are changes but saving is ongoing
      ✔ returns true when there are changes but also lemmas with redundant languages

   ✔ shows save button disabled when unsaveable

   ✔ passes language and lexical category to LanguageAndLexicalCategoryWidget

   ✔ save lemma list with error

   ✔ cancel edit mode

   ✔ shows save button disabled without changes

   ✔ passes lemmas to LemmaWidget

   ✔ save lemma list

   ✔ switch to edit mode

   ✔ attempting to save with empty lemmas fails

>> Done!


Failed Specs:

1) wikibase.lexeme.widgets.LemmaWidget : remove a lemma
   Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
       at listOnTimeout node:internal/timers:569:17
       at process.processTimers node:internal/timers:512:7

2) wikibase.lexeme.widgets.LemmaWidget : add a new lemma
   Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
       at listOnTimeout node:internal/timers:569:17
       at process.processTimers node:internal/timers:512:7

Summary:

Suites:  23 of 23
Specs:   121 of 121
Expects: 2 (2 failures)
Finished in 10.544 seconds

Warning: Task "jasmine_nodejs:all" failed. Use --force to continue.

Aborted due to warnings.

--- end ---
Traceback (most recent call last):
  File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/__init__.py", line 1868, in main
    libup.run(args.repo, args.output, args.branch)
  File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/__init__.py", line 1813, in run
    self.npm_audit_fix(new_npm_audit)
  File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/__init__.py", line 275, in npm_audit_fix
    self.npm_test()
  File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/__init__.py", line 325, in npm_test
    self.check_call(["npm", "test"])
  File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/shell2.py", line 59, in check_call
    res.check_returncode()
  File "/usr/lib/python3.11/subprocess.py", line 502, in check_returncode
    raise CalledProcessError(self.returncode, self.args, self.stdout,
subprocess.CalledProcessError: Command '['/usr/bin/npm', 'test']' returned non-zero exit status 1.

composer dependencies

Dependencies
Development dependencies

npm dependencies

Development dependencies

Logs

Source code is licensed under the AGPL.