mediawiki/extensions/CodeMirror: main (log #2502961)

sourcepatches

This run took 189 seconds.

$ date
--- stdout ---
Sun Jun 14 04:06:12 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 ---
aef7716a8ddbee348591039995d7a23235c7614a refs/heads/master

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@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": "high",
      "isDirect": true,
      "via": [
        {
          "source": 1120679,
          "name": "esbuild",
          "dependency": "esbuild",
          "title": "esbuild: Missing binary integrity verification in Deno module enables remote code execution via NPM_CONFIG_REGISTRY",
          "url": "https://github.com/advisories/GHSA-gv7w-rqvm-qjhr",
          "severity": "high",
          "cwe": [
            "CWE-426",
            "CWE-494"
          ],
          "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": ">=0.17.0 <0.28.1"
        },
        {
          "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": [
        "tsx"
      ],
      "range": "0.17.0 - 0.28.0",
      "nodes": [
        "node_modules/esbuild",
        "node_modules/tsx/node_modules/esbuild"
      ],
      "fixAvailable": {
        "name": "esbuild",
        "version": "0.28.1",
        "isSemVerMajor": 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
      }
    },
    "tsx": {
      "name": "tsx",
      "severity": "high",
      "isDirect": false,
      "via": [
        "esbuild"
      ],
      "effects": [],
      "range": "3.13.0 - 4.21.1",
      "nodes": [
        "node_modules/tsx"
      ],
      "fixAvailable": true
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 2,
      "high": 3,
      "critical": 0,
      "total": 5
    },
    "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.0)
  - Locking symfony/deprecation-contracts (v3.7.0)
  - 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.0)
  - Locking symfony/string (v8.1.0)
  - Locking webmozart/assert (2.4.0)
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.0): Extracting archive
  - Installing psr/container (2.0.2): Extracting archive
  - Installing symfony/service-contracts (v3.7.0): Extracting archive
  - Installing symfony/polyfill-php85 (v1.38.1): Extracting archive
  - Installing symfony/console (v8.1.0): 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.0): 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%
 28/36 [=====================>------]  77%
 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 33s

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

5 vulnerabilities (2 moderate, 3 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/codemirror.styleModule.less resources/modes/mediawiki/codemirror.mediawiki.colorblind.less resources/modes/mediawiki/codemirror.mediawiki.less resources/codemirror.mixins.less resources/codemirror.keymap.less resources/ve-cm/ve.ui.CodeMirror.minerva.less resources/codemirror.less resources/ve-cm/ve.ui.CodeMirror.less resources/codemirror.wikieditor.less --fix
--- stdout ---

--- end ---
$ ./node_modules/.bin/stylelint resources/codemirror.styleModule.less resources/modes/mediawiki/codemirror.mediawiki.colorblind.less resources/modes/mediawiki/codemirror.mediawiki.less resources/codemirror.mixins.less resources/codemirror.keymap.less resources/ve-cm/ve.ui.CodeMirror.minerva.less resources/codemirror.less resources/ve-cm/ve.ui.CodeMirror.less resources/codemirror.wikieditor.less -f json
--- stdout ---
[{"source":"/src/repo/resources/codemirror.styleModule.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/codemirror.mixins.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.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/codemirror.wikieditor.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/modes/mediawiki/codemirror.mediawiki.colorblind.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/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":[]}]
--- 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.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 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

5 vulnerabilities (2 moderate, 3 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 (5.682 s)
PASS tests/jest/modes/codemirror.mediawiki.test.js (7.529 s)
PASS tests/jest/codemirror.test.js (8.637 s)
PASS tests/jest/modes/codemirror.mediawiki.parser.test.js
PASS tests/jest/codemirror.wikieditor.test.js
PASS tests/jest/codemirror.codex.test.js
PASS tests/jest/modes/codemirror.json.lint.test.js
PASS tests/jest/codemirror.extensionRegistry.test.js
PASS tests/jest/modes/codemirror.mediawiki.lint.test.js
PASS tests/jest/codemirror.search.test.js
PASS tests/jest/modes/codemirror.mediawiki.autocomplete.test.js
PASS tests/jest/modes/codemirror.mediawiki.keymap.test.js
PASS tests/jest/codemirror.lint.test.js
PASS tests/jest/codemirror.matchbrackets.test.js
PASS tests/jest/codemirror.keymap.test.js
PASS tests/jest/codemirror.visualEditor.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.autocomplete.test.js
PASS tests/jest/modes/codemirror.css.test.js
PASS tests/jest/modes/codemirror.javascript.test.js (6.537 s)
PASS tests/jest/modes/codemirror.css.autocomplete.test.js
PASS tests/jest/modes/codemirror.lua.codeFolding.test.js
PASS tests/jest/codemirror.init.test.js

Test Suites: 28 passed, 28 total
Tests:       3189 passed, 3189 total
Snapshots:   0 total
Time:        19.216 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 331ms

resources/modes/codemirror.bundle.abusefilter.js → resources/lib/codemirror.bundle.abusefilter.js...
created resources/lib/codemirror.bundle.abusefilter.js in 252ms
✘ [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 .


> test:lint:i18n
> banana-checker i18n/

Checked 1 message directory.

> test:unit
> jest

----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
File                                    | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s                                                                                                              
----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
All files                               |   80.66 |    71.99 |   75.61 |   80.95 |                                                                                                                                
 resources                              |   82.27 |    69.11 |   76.72 |   82.47 |                                                                                                                                
  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                    |      25 |    31.81 |    12.5 |      25 | 28-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.88 |    91.48 |   94.11 |   97.88 | 245,386,422                                                                                                                    
  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             |      86 |     82.2 |   76.08 |   86.29 | 283,501,555-557,593,636-637,677,725,739,751-756,768-769,812-818,838-839,854-865                                                
  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.83 |    64.86 |   55.26 |   71.57 | 66,78,85,104-116,279,300,303,318-346,383,472-488,496,519-524                                                                   
 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/codemirror.test.js
PASS tests/jest/modes/codemirror.css.test.js
PASS tests/jest/codemirror.wikieditor.test.js
PASS tests/jest/modes/codemirror.mediawiki.lint.test.js
PASS tests/jest/modes/codemirror.mediawiki.parser.test.js
PASS tests/jest/codemirror.matchbrackets.test.js
PASS tests/jest/codemirror.child.test.js
PASS tests/jest/modes/codemirror.mediawiki.keymap.test.js
PASS tests/jest/modes/codemirror.lua.autocomplete.test.js
PASS tests/jest/codemirror.search.test.js
PASS tests/jest/codemirror.visualEditor.test.js
PASS tests/jest/modes/codemirror.json.lint.test.js
PASS tests/jest/modes/codemirror.mediawiki.autocomplete.test.js
PASS tests/jest/codemirror.keymap.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.css.autocomplete.test.js
PASS tests/jest/codemirror.codex.test.js
PASS tests/jest/modes/codemirror.mediawiki.bidiIsolation.test.js
PASS tests/jest/modes/codemirror.mediawiki.openLinks.test.js
PASS tests/jest/modes/codemirror.lua.codeFolding.test.js
PASS tests/jest/codemirror.lint.test.js
PASS tests/jest/codemirror.init.test.js
PASS tests/jest/modes/codemirror.javascript.autocomplete.test.js

Test Suites: 28 passed, 28 total
Tests:       3189 passed, 3189 total
Snapshots:   0 total
Time:        10.119 s, estimated 16 s
Ran all test suites.
--- stdout ---
----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
File                                    | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s                                                                                                              
----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
All files                               |   80.66 |    71.99 |   75.61 |   80.95 |                                                                                                                                
 resources                              |   82.27 |    69.11 |   76.72 |   82.47 |                                                                                                                                
  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                    |      25 |    31.81 |    12.5 |      25 | 28-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.88 |    91.48 |   94.11 |   97.88 | 245,386,422                                                                                                                    
  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             |      86 |     82.2 |   76.08 |   86.29 | 283,501,555-557,593,636-637,677,725,739,751-756,768-769,812-818,838-839,854-865                                                
  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.83 |    64.86 |   55.26 |   71.57 | 66,78,85,104-116,279,300,303,318-346,383,472-488,496,519-524                                                                   
 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/codemirror.wikieditor.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/modes/codemirror.css.test.js
PASS tests/jest/codemirror.child.test.js
PASS tests/jest/codemirror.search.test.js
PASS tests/jest/codemirror.preferences.test.js
PASS tests/jest/modes/codemirror.mediawiki.lint.test.js
PASS tests/jest/modes/codemirror.mediawiki.matchTag.test.js
PASS tests/jest/modes/codemirror.lua.autocomplete.test.js
PASS tests/jest/modes/codemirror.mediawiki.autocomplete.test.js
PASS tests/jest/modes/codemirror.mediawiki.bidiIsolation.test.js
PASS tests/jest/codemirror.gotoLine.test.js
PASS tests/jest/modes/codemirror.mediawiki.openLinks.test.js
PASS tests/jest/modes/codemirror.lua.codeFolding.test.js
PASS tests/jest/codemirror.visualEditor.test.js
PASS tests/jest/modes/codemirror.json.lint.test.js
PASS tests/jest/modes/codemirror.css.autocomplete.test.js
PASS tests/jest/codemirror.keymap.test.js
PASS tests/jest/codemirror.codex.test.js
PASS tests/jest/codemirror.lint.test.js
PASS tests/jest/codemirror.extensionRegistry.test.js
PASS tests/jest/codemirror.init.test.js
PASS tests/jest/modes/codemirror.javascript.autocomplete.test.js

Test Suites: 28 passed, 28 total
Tests:       3189 passed, 3189 total
Snapshots:   0 total
Time:        10.851 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.8s

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 371ms

resources/modes/codemirror.bundle.abusefilter.js → resources/lib/codemirror.bundle.abusefilter.js...
created resources/lib/codemirror.bundle.abusefilter.js in 188ms
✘ [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 .


> test:lint:i18n
> banana-checker i18n/

Checked 1 message directory.

> test:unit
> jest

----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
File                                    | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s                                                                                                              
----------------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------
All files                               |   80.66 |    71.99 |   75.61 |   80.95 |                                                                                                                                
 resources                              |   82.27 |    69.11 |   76.72 |   82.47 |                                                                                                                                
  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                    |      25 |    31.81 |    12.5 |      25 | 28-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.88 |    91.48 |   94.11 |   97.88 | 245,386,422                                                                                                                    
  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             |      86 |     82.2 |   76.08 |   86.29 | 283,501,555-557,593,636-637,677,725,739,751-756,768-769,812-818,838-839,854-865                                                
  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.83 |    64.86 |   55.26 |   71.57 | 66,78,85,104-116,279,300,303,318-346,383,472-488,496,519-524                                                                   
 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.
Source code is licensed under the AGPL.