$ date
--- stdout ---
Mon Jul 6 23:48:10 UTC 2026
--- end ---
$ git clone file:///srv/git/mediawiki-extensions-CodeMirror.git /src/repo --depth=1 -b master
--- stderr ---
Cloning into '/src/repo'...
--- stdout ---
--- end ---
$ git config user.name libraryupgrader
--- stdout ---
--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---
--- end ---
$ git submodule update --init
--- stdout ---
--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.
--- end ---
$ git show-ref refs/heads/master
--- stdout ---
e7b49c7327e4e75b6b1d67178ce9d357697dd135 refs/heads/master
--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
"auditReportVersion": 2,
"vulnerabilities": {
"@babel/core": {
"name": "@babel/core",
"severity": "low",
"isDirect": false,
"via": [
{
"source": 1120793,
"name": "@babel/core",
"dependency": "@babel/core",
"title": "@babel/core: Arbitrary File Read via sourceMappingURL Comment",
"url": "https://github.com/advisories/GHSA-4x5r-pxfx-6jf8",
"severity": "low",
"cwe": [
"CWE-22",
"CWE-200"
],
"cvss": {
"score": 3.2,
"vectorString": "CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:C/C:L/I:N/A:N"
},
"range": "<=7.29.0"
}
],
"effects": [],
"range": "<=7.29.0",
"nodes": [
"node_modules/@babel/core"
],
"fixAvailable": true
},
"@wdio/mocha-framework": {
"name": "@wdio/mocha-framework",
"severity": "moderate",
"isDirect": true,
"via": [
"mocha"
],
"effects": [],
"range": ">=7.7.4",
"nodes": [
"node_modules/@wdio/mocha-framework"
],
"fixAvailable": {
"name": "@wdio/mocha-framework",
"version": "7.7.3",
"isSemVerMajor": true
}
},
"esbuild": {
"name": "esbuild",
"severity": "low",
"isDirect": false,
"via": [
{
"source": 1120680,
"name": "esbuild",
"dependency": "esbuild",
"title": "esbuild allows arbitrary file read when running the development server on Windows",
"url": "https://github.com/advisories/GHSA-g7r4-m6w7-qqqr",
"severity": "low",
"cwe": [
"CWE-22"
],
"cvss": {
"score": 2.5,
"vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N"
},
"range": ">=0.27.3 <0.28.1"
}
],
"effects": [],
"range": "0.27.3 - 0.28.0",
"nodes": [
"node_modules/tsx/node_modules/esbuild"
],
"fixAvailable": true
},
"form-data": {
"name": "form-data",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1120743,
"name": "form-data",
"dependency": "form-data",
"title": "form-data: CRLF injection in form-data via unescaped multipart field names and filenames",
"url": "https://github.com/advisories/GHSA-hmw2-7cc7-3qxx",
"severity": "high",
"cwe": [
"CWE-93"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
},
"range": ">=4.0.0 <4.0.6"
}
],
"effects": [],
"range": "4.0.0 - 4.0.5",
"nodes": [
"node_modules/form-data"
],
"fixAvailable": true
},
"js-yaml": {
"name": "js-yaml",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1121859,
"name": "js-yaml",
"dependency": "js-yaml",
"title": "JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases",
"url": "https://github.com/advisories/GHSA-h67p-54hq-rp68",
"severity": "moderate",
"cwe": [
"CWE-407"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": "<3.15.0"
},
{
"source": 1121860,
"name": "js-yaml",
"dependency": "js-yaml",
"title": "JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases",
"url": "https://github.com/advisories/GHSA-h67p-54hq-rp68",
"severity": "moderate",
"cwe": [
"CWE-407"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": ">=4.0.0 <=4.1.1"
}
],
"effects": [],
"range": "<=3.14.2 || 4.0.0 - 4.1.1",
"nodes": [
"node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml",
"node_modules/js-yaml"
],
"fixAvailable": true
},
"linkify-it": {
"name": "linkify-it",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1121797,
"name": "linkify-it",
"dependency": "linkify-it",
"title": "LinkifyIt#match scan loop has quadratic algorithmic complexity",
"url": "https://github.com/advisories/GHSA-22p9-wv53-3rq4",
"severity": "high",
"cwe": [
"CWE-1333"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<=5.0.0"
}
],
"effects": [],
"range": "<=5.0.0",
"nodes": [
"node_modules/linkify-it"
],
"fixAvailable": true
},
"markdown-it": {
"name": "markdown-it",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1120820,
"name": "markdown-it",
"dependency": "markdown-it",
"title": "markdown-it: Quadratic complexity DoS in smartquotes rule via replaceAt string operations",
"url": "https://github.com/advisories/GHSA-6v5v-wf23-fmfq",
"severity": "moderate",
"cwe": [
"CWE-400",
"CWE-407"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": "<=14.1.1"
}
],
"effects": [],
"range": "<=14.1.1",
"nodes": [
"node_modules/markdown-it"
],
"fixAvailable": true
},
"mocha": {
"name": "mocha",
"severity": "moderate",
"isDirect": false,
"via": [
"serialize-javascript"
],
"effects": [
"@wdio/mocha-framework"
],
"range": "8.2.0 - 12.0.0-beta-2",
"nodes": [
"node_modules/mocha"
],
"fixAvailable": {
"name": "@wdio/mocha-framework",
"version": "7.7.3",
"isSemVerMajor": true
}
},
"serialize-javascript": {
"name": "serialize-javascript",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1113686,
"name": "serialize-javascript",
"dependency": "serialize-javascript",
"title": "Serialize JavaScript is Vulnerable to RCE via RegExp.flags and Date.prototype.toISOString()",
"url": "https://github.com/advisories/GHSA-5c6j-r48x-rmvq",
"severity": "high",
"cwe": [
"CWE-96"
],
"cvss": {
"score": 8.1,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"
},
"range": "<=7.0.2"
},
{
"source": 1119440,
"name": "serialize-javascript",
"dependency": "serialize-javascript",
"title": "Serialize JavaScript has CPU Exhaustion Denial of Service via crafted array-like objects",
"url": "https://github.com/advisories/GHSA-qj8w-gfj5-8c6v",
"severity": "moderate",
"cwe": [
"CWE-400",
"CWE-834"
],
"cvss": {
"score": 5.9,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=5.0.0 <7.0.5"
}
],
"effects": [
"mocha"
],
"range": "<=7.0.4",
"nodes": [
"node_modules/serialize-javascript"
],
"fixAvailable": {
"name": "@wdio/mocha-framework",
"version": "7.7.3",
"isSemVerMajor": true
}
},
"undici": {
"name": "undici",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1121187,
"name": "undici",
"dependency": "undici",
"title": "undici vulnerable to TLS certificate validation bypass via dropped requestTls in SOCKS5 ProxyAgent",
"url": "https://github.com/advisories/GHSA-vmh5-mc38-953g",
"severity": "high",
"cwe": [
"CWE-295"
],
"cvss": {
"score": 7.4,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N"
},
"range": ">=7.23.0 <7.28.0"
},
{
"source": 1121241,
"name": "undici",
"dependency": "undici",
"title": "undici vulnerable to HTTP header injection via Set-Cookie percent-decoding",
"url": "https://github.com/advisories/GHSA-p88m-4jfj-68fv",
"severity": "moderate",
"cwe": [
"CWE-93"
],
"cvss": {
"score": 5.9,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N"
},
"range": ">=7.0.0 <7.28.0"
},
{
"source": 1121242,
"name": "undici",
"dependency": "undici",
"title": "undici vulnerable to HTTP header injection via Set-Cookie percent-decoding",
"url": "https://github.com/advisories/GHSA-p88m-4jfj-68fv",
"severity": "moderate",
"cwe": [
"CWE-93"
],
"cvss": {
"score": 5.9,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N"
},
"range": "<6.27.0"
},
{
"source": 1121244,
"name": "undici",
"dependency": "undici",
"title": "undici WebSocket client vulnerable to denial of service via fragment count bypass",
"url": "https://github.com/advisories/GHSA-vxpw-j846-p89q",
"severity": "high",
"cwe": [
"CWE-400",
"CWE-770"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=7.0.0 <7.28.0"
},
{
"source": 1121245,
"name": "undici",
"dependency": "undici",
"title": "undici WebSocket client vulnerable to denial of service via fragment count bypass",
"url": "https://github.com/advisories/GHSA-vxpw-j846-p89q",
"severity": "high",
"cwe": [
"CWE-400",
"CWE-770"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": "<6.27.0"
},
{
"source": 1121247,
"name": "undici",
"dependency": "undici",
"title": "undici vulnerable to cross-origin request routing via SOCKS5 proxy pool reuse",
"url": "https://github.com/advisories/GHSA-hm92-r4w5-c3mj",
"severity": "high",
"cwe": [
"CWE-346"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H"
},
"range": ">=7.23.0 <7.28.0"
},
{
"source": 1121249,
"name": "undici",
"dependency": "undici",
"title": "undici vulnerable to HTTP response queue poisoning via keep-alive socket reuse",
"url": "https://github.com/advisories/GHSA-35p6-xmwp-9g52",
"severity": "low",
"cwe": [
"CWE-367"
],
"cvss": {
"score": 3.7,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N"
},
"range": ">=7.0.0 <7.28.0"
},
{
"source": 1121250,
"name": "undici",
"dependency": "undici",
"title": "undici vulnerable to HTTP response queue poisoning via keep-alive socket reuse",
"url": "https://github.com/advisories/GHSA-35p6-xmwp-9g52",
"severity": "low",
"cwe": [
"CWE-367"
],
"cvss": {
"score": 3.7,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N"
},
"range": "<6.27.0"
},
{
"source": 1121254,
"name": "undici",
"dependency": "undici",
"title": "undici vulnerable to Set-Cookie SameSite attribute downgrade via permissive substring matching",
"url": "https://github.com/advisories/GHSA-g8m3-5g58-fq7m",
"severity": "low",
"cwe": [
"CWE-183"
],
"cvss": {
"score": 3.7,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N"
},
"range": ">=7.0.0 <7.28.0"
},
{
"source": 1121255,
"name": "undici",
"dependency": "undici",
"title": "undici vulnerable to Set-Cookie SameSite attribute downgrade via permissive substring matching",
"url": "https://github.com/advisories/GHSA-g8m3-5g58-fq7m",
"severity": "low",
"cwe": [
"CWE-183"
],
"cvss": {
"score": 3.7,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N"
},
"range": "<6.27.0"
},
{
"source": 1121428,
"name": "undici",
"dependency": "undici",
"title": "undici vulnerable to cross-user information disclosure via shared cache whitespace bypass",
"url": "https://github.com/advisories/GHSA-pr7r-676h-xcf6",
"severity": "moderate",
"cwe": [
"CWE-524"
],
"cvss": {
"score": 5.9,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N"
},
"range": ">=7.0.0 <7.28.0"
}
],
"effects": [],
"range": "<=6.26.0 || 7.0.0 - 7.27.2",
"nodes": [
"node_modules/cheerio/node_modules/undici",
"node_modules/undici"
],
"fixAvailable": true
},
"ws": {
"name": "ws",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1120730,
"name": "ws",
"dependency": "ws",
"title": "ws: Memory exhaustion DoS from tiny fragments and data chunks",
"url": "https://github.com/advisories/GHSA-96hv-2xvq-fx4p",
"severity": "high",
"cwe": [
"CWE-400",
"CWE-770"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=8.0.0 <8.21.0"
}
],
"effects": [],
"range": "8.0.0 - 8.20.1",
"nodes": [
"node_modules/ws"
],
"fixAvailable": true
}
},
"metadata": {
"vulnerabilities": {
"info": 0,
"low": 2,
"moderate": 4,
"high": 5,
"critical": 0,
"total": 11
},
"dependencies": {
"prod": 1,
"dev": 1433,
"optional": 119,
"peer": 25,
"peerOptional": 0,
"total": 1433
}
}
}
--- 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: 38 installs, 0 updates, 0 removals
- Locking composer/pcre (3.4.0)
- Locking composer/semver (3.4.4)
- Locking composer/spdx-licenses (1.6.0)
- Locking composer/xdebug-handler (3.0.5)
- Locking danog/advanced-json-rpc (v3.2.3)
- Locking dealerdirect/phpcodesniffer-composer-installer (v1.2.1)
- Locking doctrine/deprecations (1.1.6)
- Locking mediawiki/mediawiki-codesniffer (v51.0.0)
- Locking mediawiki/mediawiki-phan-config (0.20.0)
- Locking mediawiki/minus-x (2.0.1)
- Locking mediawiki/phan-taint-check-plugin (9.1.0)
- Locking netresearch/jsonmapper (v5.0.1)
- Locking phan/phan (6.0.2)
- Locking phan/tolerant-php-parser (v0.2.0)
- Locking phan/var_representation_polyfill (0.1.4)
- Locking php-parallel-lint/php-console-color (v1.0.1)
- Locking php-parallel-lint/php-console-highlighter (v1.0.0)
- Locking php-parallel-lint/php-parallel-lint (v1.4.0)
- Locking phpcsstandards/phpcsextra (1.5.0)
- Locking phpcsstandards/phpcsutils (1.2.2)
- Locking phpdocumentor/reflection-common (2.2.0)
- Locking phpdocumentor/reflection-docblock (6.0.3)
- Locking phpdocumentor/type-resolver (2.0.0)
- Locking phpstan/phpdoc-parser (2.3.2)
- Locking psr/container (2.0.2)
- Locking psr/log (3.0.2)
- Locking sabre/event (6.1.0)
- Locking squizlabs/php_codesniffer (3.13.5)
- Locking symfony/console (v8.1.1)
- Locking symfony/deprecation-contracts (v3.7.1)
- Locking symfony/polyfill-ctype (v1.37.0)
- Locking symfony/polyfill-intl-grapheme (v1.38.1)
- Locking symfony/polyfill-intl-normalizer (v1.38.0)
- Locking symfony/polyfill-mbstring (v1.38.2)
- Locking symfony/polyfill-php85 (v1.38.1)
- Locking symfony/service-contracts (v3.7.1)
- Locking symfony/string (v8.1.0)
- Locking webmozart/assert (2.4.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 38 installs, 0 updates, 0 removals
0 [>---------------------------] 0 [->--------------------------]
- Installing squizlabs/php_codesniffer (3.13.5): Extracting archive
- Installing dealerdirect/phpcodesniffer-composer-installer (v1.2.1): Extracting archive
- Installing composer/pcre (3.4.0): Extracting archive
- Installing phpcsstandards/phpcsutils (1.2.2): Extracting archive
- Installing phpcsstandards/phpcsextra (1.5.0): Extracting archive
- Installing symfony/polyfill-mbstring (v1.38.2): Extracting archive
- Installing composer/spdx-licenses (1.6.0): Extracting archive
- Installing composer/semver (3.4.4): Extracting archive
- Installing mediawiki/mediawiki-codesniffer (v51.0.0): Extracting archive
- Installing symfony/polyfill-intl-normalizer (v1.38.0): Extracting archive
- Installing symfony/polyfill-intl-grapheme (v1.38.1): Extracting archive
- Installing symfony/polyfill-ctype (v1.37.0): Extracting archive
- Installing symfony/string (v8.1.0): Extracting archive
- Installing symfony/deprecation-contracts (v3.7.1): Extracting archive
- Installing psr/container (2.0.2): Extracting archive
- Installing symfony/service-contracts (v3.7.1): Extracting archive
- Installing symfony/polyfill-php85 (v1.38.1): Extracting archive
- Installing symfony/console (v8.1.1): Extracting archive
- Installing sabre/event (6.1.0): Extracting archive
- Installing phan/var_representation_polyfill (0.1.4): Extracting archive
- Installing phan/tolerant-php-parser (v0.2.0): Extracting archive
- Installing netresearch/jsonmapper (v5.0.1): Extracting archive
- Installing webmozart/assert (2.4.1): Extracting archive
- Installing phpstan/phpdoc-parser (2.3.2): Extracting archive
- Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
- Installing doctrine/deprecations (1.1.6): Extracting archive
- Installing phpdocumentor/type-resolver (2.0.0): Extracting archive
- Installing phpdocumentor/reflection-docblock (6.0.3): Extracting archive
- Installing danog/advanced-json-rpc (v3.2.3): Extracting archive
- Installing psr/log (3.0.2): Extracting archive
- Installing composer/xdebug-handler (3.0.5): Extracting archive
- Installing phan/phan (6.0.2): Extracting archive
- Installing mediawiki/phan-taint-check-plugin (9.1.0): Extracting archive
- Installing mediawiki/mediawiki-phan-config (0.20.0): Extracting archive
- Installing mediawiki/minus-x (2.0.1): Extracting archive
- Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive
- Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive
- Installing php-parallel-lint/php-parallel-lint (v1.4.0): Extracting archive
0/36 [>---------------------------] 0%
29/36 [======================>-----] 80%
36/36 [============================] 100%
1 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
17 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils
--- end ---
Upgrading n:stylelint-config-wikimedia from 0.18.0 -> 0.19.2
$ /usr/bin/npm install
--- stderr ---
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@wikimedia/codex-design-tokens@2.5.1',
npm WARN EBADENGINE required: { node: '>=20.20.2', npm: '>=10.8.1' },
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: 'luacheck-browserify@0.10.0',
npm WARN EBADENGINE required: { node: '>=20.19.5' },
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm WARN deprecated lodash.get@4.4.2: This package is deprecated. Use the optional chaining (?.) operator instead.
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm WARN deprecated whatwg-encoding@3.1.1: Use @exodus/bytes instead for a more spec-conformant and faster implementation
npm WARN deprecated whatwg-encoding@2.0.0: Use @exodus/bytes instead for a more spec-conformant and faster implementation
npm WARN deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated glob@8.1.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated glob@7.2.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead
npm WARN deprecated @sinonjs/text-encoding@0.7.3: Deprecated: no longer maintained and no longer used by Sinon packages. See
npm WARN deprecated https://github.com/sinonjs/nise/issues/243 for replacement details.
npm WARN deprecated glob@10.5.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated sinon@12.0.1: 16.1.1
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
--- stdout ---
added 1320 packages, and audited 1321 packages in 32s
234 packages are looking for funding
run `npm fund` for details
11 vulnerabilities (2 low, 4 moderate, 5 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 ---
$ package-lock-lint /src/repo/package-lock.json
--- stdout ---
Checking /src/repo/package-lock.json
--- end ---
$ ./node_modules/.bin/stylelint resources/ve-cm/ve.ui.CodeMirror.minerva.less resources/codemirror.styleModule.less resources/codemirror.less resources/codemirror.keymap.less resources/modes/mediawiki/codemirror.mediawiki.less resources/codemirror.wikieditor.less resources/codemirror.mixins.less resources/modes/mediawiki/codemirror.mediawiki.colorblind.less resources/ve-cm/ve.ui.CodeMirror.less --fix
--- stdout ---
--- end ---
$ ./node_modules/.bin/stylelint resources/ve-cm/ve.ui.CodeMirror.minerva.less resources/codemirror.styleModule.less resources/codemirror.less resources/codemirror.keymap.less resources/modes/mediawiki/codemirror.mediawiki.less resources/codemirror.wikieditor.less resources/codemirror.mixins.less resources/modes/mediawiki/codemirror.mediawiki.colorblind.less resources/ve-cm/ve.ui.CodeMirror.less -f json
--- stdout ---
[{"source":"/src/repo/resources/ve-cm/ve.ui.CodeMirror.minerva.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/ve-cm/ve.ui.CodeMirror.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/codemirror.styleModule.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/codemirror.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/codemirror.keymap.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/codemirror.wikieditor.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/codemirror.mixins.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/modes/mediawiki/codemirror.mediawiki.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/modes/mediawiki/codemirror.mediawiki.colorblind.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]}]
--- end ---
$ /usr/bin/npm ci
--- stderr ---
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@wikimedia/codex-design-tokens@2.5.1',
npm WARN EBADENGINE required: { node: '>=20.20.2', npm: '>=10.8.1' },
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: 'luacheck-browserify@0.10.0',
npm WARN EBADENGINE required: { node: '>=20.19.5' },
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm WARN deprecated lodash.get@4.4.2: This package is deprecated. Use the optional chaining (?.) operator instead.
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm WARN deprecated whatwg-encoding@3.1.1: Use @exodus/bytes instead for a more spec-conformant and faster implementation
npm WARN deprecated whatwg-encoding@2.0.0: Use @exodus/bytes instead for a more spec-conformant and faster implementation
npm WARN deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated glob@8.1.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated glob@7.2.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead
npm WARN deprecated @sinonjs/text-encoding@0.7.3: Deprecated: no longer maintained and no longer used by Sinon packages. See
npm WARN deprecated https://github.com/sinonjs/nise/issues/243 for replacement details.
npm WARN deprecated glob@10.5.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated sinon@12.0.1: 16.1.1
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
--- stdout ---
added 1320 packages, and audited 1321 packages in 37s
234 packages are looking for funding
run `npm fund` for details
11 vulnerabilities (2 low, 4 moderate, 5 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 ---
PASS tests/jest/codemirror.preferences.test.js (6.314 s)
PASS tests/jest/modes/codemirror.mediawiki.test.js (8.852 s)
PASS tests/jest/codemirror.test.js (9.391 s)
PASS tests/jest/codemirror.wikieditor.test.js
PASS tests/jest/modes/codemirror.mediawiki.parser.test.js
PASS tests/jest/codemirror.codex.test.js
PASS tests/jest/modes/codemirror.mediawiki.lint.test.js
PASS tests/jest/modes/codemirror.json.lint.test.js
PASS tests/jest/codemirror.extensionRegistry.test.js
PASS tests/jest/codemirror.search.test.js
PASS tests/jest/modes/codemirror.mediawiki.autocomplete.test.js
PASS tests/jest/codemirror.keymap.test.js
PASS tests/jest/codemirror.matchbrackets.test.js
PASS tests/jest/codemirror.lint.test.js
PASS tests/jest/codemirror.visualEditor.test.js
PASS tests/jest/modes/codemirror.mediawiki.keymap.test.js
PASS tests/jest/modes/codemirror.lua.autocomplete.test.js
PASS tests/jest/codemirror.child.test.js
PASS tests/jest/modes/codemirror.mediawiki.bidiIsolation.test.js
PASS tests/jest/codemirror.gotoLine.test.js
PASS tests/jest/modes/codemirror.mediawiki.matchTag.test.js
PASS tests/jest/modes/codemirror.mediawiki.openLinks.test.js
PASS tests/jest/modes/codemirror.javascript.test.js (7.314 s)
PASS tests/jest/modes/codemirror.css.test.js
PASS tests/jest/modes/codemirror.css.autocomplete.test.js
PASS tests/jest/modes/codemirror.javascript.autocomplete.test.js
PASS tests/jest/codemirror.init.test.js
PASS tests/jest/modes/codemirror.lua.codeFolding.test.js
Test Suites: 28 passed, 28 total
Tests: 3189 passed, 3189 total
Snapshots: 0 total
Time: 21.711 s
Ran all test suites.
resources/codemirror.bundle.lib.js → resources/lib/codemirror.bundle.lib.js...
created resources/lib/codemirror.bundle.lib.js in 1.6s
resources/modes/codemirror.bundle.modes.js → resources/lib/codemirror.bundle.modes.js...
(!) Conflicting re-exports
"resources/modes/codemirror.bundle.modes.js" re-exports "autoCloseTags" from both "node_modules/@codemirror/lang-javascript/dist/index.js" and "node_modules/@codemirror/lang-html/dist/index.js" (will be ignored).
created resources/lib/codemirror.bundle.modes.js in 337ms
resources/modes/codemirror.bundle.abusefilter.js → resources/lib/codemirror.bundle.abusefilter.js...
created resources/lib/codemirror.bundle.abusefilter.js in 186ms
✘ [ERROR] Could not resolve "stylelint-config-recommended"
resources/workers/css/worker.js:2:27:
2 │ const { rules } = require( 'stylelint-config-recommended' );
╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The path "." is not currently exported by package "stylelint-config-recommended":
node_modules/stylelint-config-recommended/package.json:24:13:
24 │ "exports": {
╵ ^
None of the conditions in the package definition ("import") match any of the currently active conditions ("browser", "default", "module", "require"):
node_modules/stylelint-config-recommended/package.json:25:9:
25 │ ".": {
╵ ^
Consider using an "import" statement to import this file, which will work because the "import" condition is supported by this package:
resources/workers/css/worker.js:2:27:
2 │ const { rules } = require( 'stylelint-config-recommended' );
╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can mark the path "stylelint-config-recommended" as external to exclude it from the bundle, which will remove this error and leave the unresolved path in the bundle. You can also surround this "require" call with a try/catch block to handle this failure at run-time instead of bundle-time.
1 error
--- stdout ---
> test
> npm run test:lint && npm run test:unit && npm run check-built-assets
> test:lint
> npm run test:lint:styles && npm run test:lint:js && npm run test:lint:i18n
> test:lint:styles
> stylelint --cache "resources/**/*.less"
> test:lint:js
> ESLINT_USE_FLAT_CONFIG=false eslint --cache .
/src/repo/tests/jest/modes/codemirror.mediawiki.keymap.test.js
1:1 warning Unused eslint-disable directive (no problems were reported from 'n/no-missing-require')
✖ 1 problem (0 errors, 1 warning)
0 errors and 1 warning potentially fixable with the `--fix` option.
> test:lint:i18n
> banana-checker i18n/
Checked 1 message directory.
> test:unit
> jest
----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
All files | 80.6 | 72.02 | 75.5 | 80.91 |
resources | 82.14 | 69.17 | 76.5 | 82.38 |
codemirror.bundle.lib.js | 0 | 0 | 0 | 0 |
codemirror.child.js | 87.5 | 100 | 85.71 | 87.5 | 52-53
codemirror.codex.js | 97.08 | 79.24 | 81.25 | 97.08 | 231,370-371,476,482-483
codemirror.extensionRegistry.js | 91.11 | 82.35 | 100 | 91.11 | 168,216-217,252
codemirror.gotoLine.js | 90.62 | 58.06 | 100 | 90.47 | 167,175-179,181
codemirror.indentGuides.js | 70.27 | 55 | 75 | 68.57 | 20-22,54-59,64-67,72
codemirror.init.js | 24.44 | 31.81 | 11.11 | 25 | 27-88,108-142,154
codemirror.js | 89.42 | 80.79 | 86.25 | 89.66 | 370,475-484,760-767,873,973,987-992,1022,1108,1112,1123,1128,1140,1162,1402,1424,1426-1442
codemirror.keymap.js | 97.85 | 93.33 | 94.11 | 97.85 | 249,395,431
codemirror.lint.js | 94.39 | 84.21 | 90.47 | 94.28 | 36,41,106-107,176-179
codemirror.matchbrackets.js | 57.6 | 48.23 | 46.66 | 57.77 | 90-95,115,146-155,189-204,249-269
codemirror.panel.js | 100 | 100 | 33.33 | 100 |
codemirror.preferences.js | 85.88 | 82.45 | 76.08 | 86.17 | 283,493,547-549,585,628-629,669,717,731,743-748,760-761,804-810,830-831,846-857
codemirror.search.js | 70.5 | 36.17 | 68.75 | 70.5 | 108-135,209-219,298-303,340-341,352-353,457-496,533-547,559-562
codemirror.textSelection.js | 81.96 | 96.42 | 83.33 | 83.33 | 83-88,191-192,196-197,229-239
codemirror.validator.js | 48.14 | 35 | 71.42 | 48.14 | 65,67-68,72-78,84-92
codemirror.visualEditor.js | 67.53 | 40 | 83.33 | 68.42 | 111-112,272-354
codemirror.wikieditor.js | 70.1 | 64.86 | 55.26 | 70.83 | 66,78,85,104-118,281,302,305,320-348,385,474-490,498,521-526
resources/modes | 65.63 | 59.19 | 71.6 | 65.5 |
codemirror.bundle.abusefilter.js | 0 | 0 | 0 | 0 |
codemirror.bundle.modes.js | 0 | 0 | 0 | 0 |
codemirror.css.js | 70.9 | 56 | 57.14 | 70.37 | 47-48,94,109-123,159-161
codemirror.doctag.js | 43.75 | 31.25 | 80 | 41.93 | 18-44
codemirror.javascript.js | 63.79 | 61.29 | 82.35 | 63.79 | 94-99,103-123,205,219-220
codemirror.json.js | 0 | 0 | 0 | 0 | 1-73
codemirror.lua.js | 75.83 | 68.23 | 77.27 | 76.06 | 346-364,405,433,444,446,451,463,473,533,542-543,556-559
codemirror.mode.exporter.js | 100 | 100 | 100 | 100 |
codemirror.mode.js | 84.21 | 100 | 72.72 | 83.33 | 69-78,114
codemirror.vue.js | 100 | 100 | 100 | 100 |
resources/modes/abusefilter | 0 | 0 | 0 | 0 |
codemirror.abusefilter.js | 0 | 0 | 0 | 0 | 1-99
codemirror.abusefilter.validator.js | 0 | 100 | 0 | 0 | 1-19
resources/modes/json | 99.41 | 99.03 | 100 | 99.41 |
codemirror.json.lint.js | 99.41 | 99.03 | 100 | 99.41 | 111
resources/modes/mediawiki | 81.27 | 74.26 | 77.54 | 81.66 |
codemirror.mediawiki.autocomplete.js | 71.42 | 55.29 | 58.62 | 71.42 | 50,56-62,67,93-94,101-104,107,111-114,120,135-140,157-158,188,195-201,281
codemirror.mediawiki.bidiIsolation.js | 100 | 61.11 | 100 | 100 | 33,92-113
codemirror.mediawiki.closeTags.js | 17.39 | 0 | 0 | 17.39 | 6-38
codemirror.mediawiki.codeFolding.js | 55.55 | 49.05 | 46.15 | 56.2 | 136,147,152-161,187,193,204,234-235,249-253,272-281,308-319,331-350,374-431
codemirror.mediawiki.config.js | 100 | 100 | 100 | 100 |
codemirror.mediawiki.js | 94.85 | 94.72 | 94.28 | 94.81 | 181-200,306-307,383-384,435,519-521,531-534,629-631,1066-1068,1072-1073,1374,1404-1409,1541,1596-1600,1706,1731-1732,1746,1763
codemirror.mediawiki.keymap.js | 78.94 | 70 | 72.22 | 78.94 | 211-212,228-247,312-331,383-388
codemirror.mediawiki.lint.js | 70.58 | 33.33 | 55.55 | 75 | 27,153,177-189
codemirror.mediawiki.matchTag.js | 70.49 | 42.85 | 71.42 | 70.68 | 59-63,136-154
codemirror.mediawiki.openLinks.js | 21.95 | 11.68 | 80 | 21.95 | 61-153
codemirror.mediawiki.validator.js | 80 | 100 | 50 | 80 | 18
----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
> check-built-assets
> { git status resources/lib/ | grep "nothing to commit, working tree clean"; } && { echo 'CHECKING BUILD SOURCES ARE COMMITTED' && npm run build && git status resources/lib/ | grep "nothing to commit, working tree clean" || { npm run node-debug; false; }; }
nothing to commit, working tree clean
CHECKING BUILD SOURCES ARE COMMITTED
> build
> rollup -c && npm run build:stylelint && npm run build:eslint && npm run build:luacheck && npm run build:wikilint
> build:stylelint
> esbuild resources/workers/css/worker.js --charset=utf8 --bundle --minify --target=es2017 --format=iife --outfile=resources/workers/css/worker.min.js
> node-debug
> node -v && npm -v && echo 'ERROR: Please ensure that production assets have been built with `npm run build` and committed. For the recommended Node.js version, see .nvmrc.'
v20.19.2
9.2.0
ERROR: Please ensure that production assets have been built with `npm run build` and committed. For the recommended Node.js version, see .nvmrc.
--- end ---
$ node_modules/.bin/jest -u
--- stderr ---
PASS tests/jest/modes/codemirror.mediawiki.test.js
PASS tests/jest/modes/codemirror.javascript.test.js
PASS tests/jest/codemirror.preferences.test.js
PASS tests/jest/modes/codemirror.css.test.js
PASS tests/jest/codemirror.test.js
PASS tests/jest/modes/codemirror.mediawiki.keymap.test.js
PASS tests/jest/modes/codemirror.mediawiki.lint.test.js
PASS tests/jest/modes/codemirror.mediawiki.parser.test.js
PASS tests/jest/codemirror.child.test.js
PASS tests/jest/codemirror.matchbrackets.test.js
PASS tests/jest/codemirror.wikieditor.test.js
PASS tests/jest/codemirror.search.test.js
PASS tests/jest/codemirror.visualEditor.test.js
PASS tests/jest/modes/codemirror.lua.autocomplete.test.js
PASS tests/jest/modes/codemirror.css.autocomplete.test.js
PASS tests/jest/codemirror.keymap.test.js
PASS tests/jest/modes/codemirror.json.lint.test.js
PASS tests/jest/modes/codemirror.javascript.autocomplete.test.js
PASS tests/jest/modes/codemirror.lua.codeFolding.test.js
PASS tests/jest/modes/codemirror.mediawiki.openLinks.test.js
PASS tests/jest/modes/codemirror.mediawiki.autocomplete.test.js
PASS tests/jest/codemirror.extensionRegistry.test.js
PASS tests/jest/codemirror.gotoLine.test.js
PASS tests/jest/modes/codemirror.mediawiki.matchTag.test.js
PASS tests/jest/modes/codemirror.mediawiki.bidiIsolation.test.js
PASS tests/jest/codemirror.codex.test.js
PASS tests/jest/codemirror.init.test.js
PASS tests/jest/codemirror.lint.test.js
Test Suites: 28 passed, 28 total
Tests: 3189 passed, 3189 total
Snapshots: 0 total
Time: 11.001 s, estimated 18 s
Ran all test suites.
--- stdout ---
----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
All files | 80.6 | 72.02 | 75.5 | 80.91 |
resources | 82.14 | 69.17 | 76.5 | 82.38 |
codemirror.bundle.lib.js | 0 | 0 | 0 | 0 |
codemirror.child.js | 87.5 | 100 | 85.71 | 87.5 | 52-53
codemirror.codex.js | 97.08 | 79.24 | 81.25 | 97.08 | 231,370-371,476,482-483
codemirror.extensionRegistry.js | 91.11 | 82.35 | 100 | 91.11 | 168,216-217,252
codemirror.gotoLine.js | 90.62 | 58.06 | 100 | 90.47 | 167,175-179,181
codemirror.indentGuides.js | 70.27 | 55 | 75 | 68.57 | 20-22,54-59,64-67,72
codemirror.init.js | 24.44 | 31.81 | 11.11 | 25 | 27-88,108-142,154
codemirror.js | 89.42 | 80.79 | 86.25 | 89.66 | 370,475-484,760-767,873,973,987-992,1022,1108,1112,1123,1128,1140,1162,1402,1424,1426-1442
codemirror.keymap.js | 97.85 | 93.33 | 94.11 | 97.85 | 249,395,431
codemirror.lint.js | 94.39 | 84.21 | 90.47 | 94.28 | 36,41,106-107,176-179
codemirror.matchbrackets.js | 57.6 | 48.23 | 46.66 | 57.77 | 90-95,115,146-155,189-204,249-269
codemirror.panel.js | 100 | 100 | 33.33 | 100 |
codemirror.preferences.js | 85.88 | 82.45 | 76.08 | 86.17 | 283,493,547-549,585,628-629,669,717,731,743-748,760-761,804-810,830-831,846-857
codemirror.search.js | 70.5 | 36.17 | 68.75 | 70.5 | 108-135,209-219,298-303,340-341,352-353,457-496,533-547,559-562
codemirror.textSelection.js | 81.96 | 96.42 | 83.33 | 83.33 | 83-88,191-192,196-197,229-239
codemirror.validator.js | 48.14 | 35 | 71.42 | 48.14 | 65,67-68,72-78,84-92
codemirror.visualEditor.js | 67.53 | 40 | 83.33 | 68.42 | 111-112,272-354
codemirror.wikieditor.js | 70.1 | 64.86 | 55.26 | 70.83 | 66,78,85,104-118,281,302,305,320-348,385,474-490,498,521-526
resources/modes | 65.63 | 59.19 | 71.6 | 65.5 |
codemirror.bundle.abusefilter.js | 0 | 0 | 0 | 0 |
codemirror.bundle.modes.js | 0 | 0 | 0 | 0 |
codemirror.css.js | 70.9 | 56 | 57.14 | 70.37 | 47-48,94,109-123,159-161
codemirror.doctag.js | 43.75 | 31.25 | 80 | 41.93 | 18-44
codemirror.javascript.js | 63.79 | 61.29 | 82.35 | 63.79 | 94-99,103-123,205,219-220
codemirror.json.js | 0 | 0 | 0 | 0 | 1-73
codemirror.lua.js | 75.83 | 68.23 | 77.27 | 76.06 | 346-364,405,433,444,446,451,463,473,533,542-543,556-559
codemirror.mode.exporter.js | 100 | 100 | 100 | 100 |
codemirror.mode.js | 84.21 | 100 | 72.72 | 83.33 | 69-78,114
codemirror.vue.js | 100 | 100 | 100 | 100 |
resources/modes/abusefilter | 0 | 0 | 0 | 0 |
codemirror.abusefilter.js | 0 | 0 | 0 | 0 | 1-99
codemirror.abusefilter.validator.js | 0 | 100 | 0 | 0 | 1-19
resources/modes/json | 99.41 | 99.03 | 100 | 99.41 |
codemirror.json.lint.js | 99.41 | 99.03 | 100 | 99.41 | 111
resources/modes/mediawiki | 81.27 | 74.26 | 77.54 | 81.66 |
codemirror.mediawiki.autocomplete.js | 71.42 | 55.29 | 58.62 | 71.42 | 50,56-62,67,93-94,101-104,107,111-114,120,135-140,157-158,188,195-201,281
codemirror.mediawiki.bidiIsolation.js | 100 | 61.11 | 100 | 100 | 33,92-113
codemirror.mediawiki.closeTags.js | 17.39 | 0 | 0 | 17.39 | 6-38
codemirror.mediawiki.codeFolding.js | 55.55 | 49.05 | 46.15 | 56.2 | 136,147,152-161,187,193,204,234-235,249-253,272-281,308-319,331-350,374-431
codemirror.mediawiki.config.js | 100 | 100 | 100 | 100 |
codemirror.mediawiki.js | 94.85 | 94.72 | 94.28 | 94.81 | 181-200,306-307,383-384,435,519-521,531-534,629-631,1066-1068,1072-1073,1374,1404-1409,1541,1596-1600,1706,1731-1732,1746,1763
codemirror.mediawiki.keymap.js | 78.94 | 70 | 72.22 | 78.94 | 211-212,228-247,312-331,383-388
codemirror.mediawiki.lint.js | 70.58 | 33.33 | 55.55 | 75 | 27,153,177-189
codemirror.mediawiki.matchTag.js | 70.49 | 42.85 | 71.42 | 70.68 | 59-63,136-154
codemirror.mediawiki.openLinks.js | 21.95 | 11.68 | 80 | 21.95 | 61-153
codemirror.mediawiki.validator.js | 80 | 100 | 50 | 80 | 18
----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
--- end ---
$ /usr/bin/npm test
--- stderr ---
PASS tests/jest/codemirror.test.js
PASS tests/jest/codemirror.matchbrackets.test.js
PASS tests/jest/modes/codemirror.mediawiki.parser.test.js
PASS tests/jest/modes/codemirror.mediawiki.test.js
PASS tests/jest/modes/codemirror.javascript.test.js
PASS tests/jest/modes/codemirror.mediawiki.keymap.test.js
PASS tests/jest/codemirror.wikieditor.test.js
PASS tests/jest/modes/codemirror.css.test.js
PASS tests/jest/codemirror.keymap.test.js
PASS tests/jest/codemirror.child.test.js
PASS tests/jest/modes/codemirror.mediawiki.openLinks.test.js
PASS tests/jest/modes/codemirror.mediawiki.lint.test.js
PASS tests/jest/codemirror.preferences.test.js
PASS tests/jest/codemirror.search.test.js
PASS tests/jest/modes/codemirror.lua.codeFolding.test.js
PASS tests/jest/codemirror.visualEditor.test.js
PASS tests/jest/modes/codemirror.mediawiki.autocomplete.test.js
PASS tests/jest/modes/codemirror.javascript.autocomplete.test.js
PASS tests/jest/modes/codemirror.mediawiki.matchTag.test.js
PASS tests/jest/modes/codemirror.css.autocomplete.test.js
PASS tests/jest/modes/codemirror.lua.autocomplete.test.js
PASS tests/jest/modes/codemirror.json.lint.test.js
PASS tests/jest/modes/codemirror.mediawiki.bidiIsolation.test.js
PASS tests/jest/codemirror.codex.test.js
PASS tests/jest/codemirror.lint.test.js
PASS tests/jest/codemirror.gotoLine.test.js
PASS tests/jest/codemirror.extensionRegistry.test.js
PASS tests/jest/codemirror.init.test.js
Test Suites: 28 passed, 28 total
Tests: 3189 passed, 3189 total
Snapshots: 0 total
Time: 11.193 s
Ran all test suites.
resources/codemirror.bundle.lib.js → resources/lib/codemirror.bundle.lib.js...
created resources/lib/codemirror.bundle.lib.js in 1.6s
resources/modes/codemirror.bundle.modes.js → resources/lib/codemirror.bundle.modes.js...
(!) Conflicting re-exports
"resources/modes/codemirror.bundle.modes.js" re-exports "autoCloseTags" from both "node_modules/@codemirror/lang-javascript/dist/index.js" and "node_modules/@codemirror/lang-html/dist/index.js" (will be ignored).
created resources/lib/codemirror.bundle.modes.js in 406ms
resources/modes/codemirror.bundle.abusefilter.js → resources/lib/codemirror.bundle.abusefilter.js...
created resources/lib/codemirror.bundle.abusefilter.js in 249ms
✘ [ERROR] Could not resolve "stylelint-config-recommended"
resources/workers/css/worker.js:2:27:
2 │ const { rules } = require( 'stylelint-config-recommended' );
╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The path "." is not currently exported by package "stylelint-config-recommended":
node_modules/stylelint-config-recommended/package.json:24:13:
24 │ "exports": {
╵ ^
None of the conditions in the package definition ("import") match any of the currently active conditions ("browser", "default", "module", "require"):
node_modules/stylelint-config-recommended/package.json:25:9:
25 │ ".": {
╵ ^
Consider using an "import" statement to import this file, which will work because the "import" condition is supported by this package:
resources/workers/css/worker.js:2:27:
2 │ const { rules } = require( 'stylelint-config-recommended' );
╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can mark the path "stylelint-config-recommended" as external to exclude it from the bundle, which will remove this error and leave the unresolved path in the bundle. You can also surround this "require" call with a try/catch block to handle this failure at run-time instead of bundle-time.
1 error
--- stdout ---
> test
> npm run test:lint && npm run test:unit && npm run check-built-assets
> test:lint
> npm run test:lint:styles && npm run test:lint:js && npm run test:lint:i18n
> test:lint:styles
> stylelint --cache "resources/**/*.less"
> test:lint:js
> ESLINT_USE_FLAT_CONFIG=false eslint --cache .
/src/repo/tests/jest/modes/codemirror.mediawiki.keymap.test.js
1:1 warning Unused eslint-disable directive (no problems were reported from 'n/no-missing-require')
✖ 1 problem (0 errors, 1 warning)
0 errors and 1 warning potentially fixable with the `--fix` option.
> test:lint:i18n
> banana-checker i18n/
Checked 1 message directory.
> test:unit
> jest
----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
All files | 80.6 | 72.02 | 75.5 | 80.91 |
resources | 82.14 | 69.17 | 76.5 | 82.38 |
codemirror.bundle.lib.js | 0 | 0 | 0 | 0 |
codemirror.child.js | 87.5 | 100 | 85.71 | 87.5 | 52-53
codemirror.codex.js | 97.08 | 79.24 | 81.25 | 97.08 | 231,370-371,476,482-483
codemirror.extensionRegistry.js | 91.11 | 82.35 | 100 | 91.11 | 168,216-217,252
codemirror.gotoLine.js | 90.62 | 58.06 | 100 | 90.47 | 167,175-179,181
codemirror.indentGuides.js | 70.27 | 55 | 75 | 68.57 | 20-22,54-59,64-67,72
codemirror.init.js | 24.44 | 31.81 | 11.11 | 25 | 27-88,108-142,154
codemirror.js | 89.42 | 80.79 | 86.25 | 89.66 | 370,475-484,760-767,873,973,987-992,1022,1108,1112,1123,1128,1140,1162,1402,1424,1426-1442
codemirror.keymap.js | 97.85 | 93.33 | 94.11 | 97.85 | 249,395,431
codemirror.lint.js | 94.39 | 84.21 | 90.47 | 94.28 | 36,41,106-107,176-179
codemirror.matchbrackets.js | 57.6 | 48.23 | 46.66 | 57.77 | 90-95,115,146-155,189-204,249-269
codemirror.panel.js | 100 | 100 | 33.33 | 100 |
codemirror.preferences.js | 85.88 | 82.45 | 76.08 | 86.17 | 283,493,547-549,585,628-629,669,717,731,743-748,760-761,804-810,830-831,846-857
codemirror.search.js | 70.5 | 36.17 | 68.75 | 70.5 | 108-135,209-219,298-303,340-341,352-353,457-496,533-547,559-562
codemirror.textSelection.js | 81.96 | 96.42 | 83.33 | 83.33 | 83-88,191-192,196-197,229-239
codemirror.validator.js | 48.14 | 35 | 71.42 | 48.14 | 65,67-68,72-78,84-92
codemirror.visualEditor.js | 67.53 | 40 | 83.33 | 68.42 | 111-112,272-354
codemirror.wikieditor.js | 70.1 | 64.86 | 55.26 | 70.83 | 66,78,85,104-118,281,302,305,320-348,385,474-490,498,521-526
resources/modes | 65.63 | 59.19 | 71.6 | 65.5 |
codemirror.bundle.abusefilter.js | 0 | 0 | 0 | 0 |
codemirror.bundle.modes.js | 0 | 0 | 0 | 0 |
codemirror.css.js | 70.9 | 56 | 57.14 | 70.37 | 47-48,94,109-123,159-161
codemirror.doctag.js | 43.75 | 31.25 | 80 | 41.93 | 18-44
codemirror.javascript.js | 63.79 | 61.29 | 82.35 | 63.79 | 94-99,103-123,205,219-220
codemirror.json.js | 0 | 0 | 0 | 0 | 1-73
codemirror.lua.js | 75.83 | 68.23 | 77.27 | 76.06 | 346-364,405,433,444,446,451,463,473,533,542-543,556-559
codemirror.mode.exporter.js | 100 | 100 | 100 | 100 |
codemirror.mode.js | 84.21 | 100 | 72.72 | 83.33 | 69-78,114
codemirror.vue.js | 100 | 100 | 100 | 100 |
resources/modes/abusefilter | 0 | 0 | 0 | 0 |
codemirror.abusefilter.js | 0 | 0 | 0 | 0 | 1-99
codemirror.abusefilter.validator.js | 0 | 100 | 0 | 0 | 1-19
resources/modes/json | 99.41 | 99.03 | 100 | 99.41 |
codemirror.json.lint.js | 99.41 | 99.03 | 100 | 99.41 | 111
resources/modes/mediawiki | 81.27 | 74.26 | 77.54 | 81.66 |
codemirror.mediawiki.autocomplete.js | 71.42 | 55.29 | 58.62 | 71.42 | 50,56-62,67,93-94,101-104,107,111-114,120,135-140,157-158,188,195-201,281
codemirror.mediawiki.bidiIsolation.js | 100 | 61.11 | 100 | 100 | 33,92-113
codemirror.mediawiki.closeTags.js | 17.39 | 0 | 0 | 17.39 | 6-38
codemirror.mediawiki.codeFolding.js | 55.55 | 49.05 | 46.15 | 56.2 | 136,147,152-161,187,193,204,234-235,249-253,272-281,308-319,331-350,374-431
codemirror.mediawiki.config.js | 100 | 100 | 100 | 100 |
codemirror.mediawiki.js | 94.85 | 94.72 | 94.28 | 94.81 | 181-200,306-307,383-384,435,519-521,531-534,629-631,1066-1068,1072-1073,1374,1404-1409,1541,1596-1600,1706,1731-1732,1746,1763
codemirror.mediawiki.keymap.js | 78.94 | 70 | 72.22 | 78.94 | 211-212,228-247,312-331,383-388
codemirror.mediawiki.lint.js | 70.58 | 33.33 | 55.55 | 75 | 27,153,177-189
codemirror.mediawiki.matchTag.js | 70.49 | 42.85 | 71.42 | 70.68 | 59-63,136-154
codemirror.mediawiki.openLinks.js | 21.95 | 11.68 | 80 | 21.95 | 61-153
codemirror.mediawiki.validator.js | 80 | 100 | 50 | 80 | 18
----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
> check-built-assets
> { git status resources/lib/ | grep "nothing to commit, working tree clean"; } && { echo 'CHECKING BUILD SOURCES ARE COMMITTED' && npm run build && git status resources/lib/ | grep "nothing to commit, working tree clean" || { npm run node-debug; false; }; }
nothing to commit, working tree clean
CHECKING BUILD SOURCES ARE COMMITTED
> build
> rollup -c && npm run build:stylelint && npm run build:eslint && npm run build:luacheck && npm run build:wikilint
> build:stylelint
> esbuild resources/workers/css/worker.js --charset=utf8 --bundle --minify --target=es2017 --format=iife --outfile=resources/workers/css/worker.min.js
> node-debug
> node -v && npm -v && echo 'ERROR: Please ensure that production assets have been built with `npm run build` and committed. For the recommended Node.js version, see .nvmrc.'
v20.19.2
9.2.0
ERROR: Please ensure that production assets have been built with `npm run build` and committed. For the recommended Node.js version, see .nvmrc.
--- end ---
Traceback (most recent call last):
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 289, in npm_test
self.check_call(["npm", "test"])
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.13/site-packages/runner/shell2.py", line 66, in check_call
res.check_returncode()
~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3.13/subprocess.py", line 508, in check_returncode
raise CalledProcessError(self.returncode, self.args, self.stdout,
self.stderr)
subprocess.CalledProcessError: Command '['/usr/bin/npm', 'test']' returned non-zero exit status 1.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 1268, in main
libup.run()
~~~~~~~~~^^
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 1202, in run
self.npm_upgrade(plan)
~~~~~~~~~~~~~~~~^^^^^^
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 1064, in npm_upgrade
self.npm_test()
~~~~~~~~~~~~~^^
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 303, in npm_test
self.check_call(["npm", "test"])
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.13/site-packages/runner/shell2.py", line 66, in check_call
res.check_returncode()
~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3.13/subprocess.py", line 508, in check_returncode
raise CalledProcessError(self.returncode, self.args, self.stdout,
self.stderr)
subprocess.CalledProcessError: Command '['/usr/bin/npm', 'test']' returned non-zero exit status 1.