mediawiki/extensions/ReaderExperiments: main (log #2458723)

sourcepatches

This run took 75 seconds.

From f956921d0c888b60cb60f77de0ca2b57086dec66 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Fri, 1 May 2026 07:39:14 +0000
Subject: [PATCH] build: Updating postcss to 8.5.13

* https://github.com/advisories/GHSA-qx2v-qp2m-jg93

Change-Id: Ibff21a2a57a10eb8b030e320ca15a3d5c0294834
---
 package-lock.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 08993e2..0e7d503 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8598,9 +8598,9 @@
 			}
 		},
 		"node_modules/postcss": {
-			"version": "8.5.6",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
-			"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+			"version": "8.5.13",
+			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.13.tgz",
+			"integrity": "sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag==",
 			"dev": true,
 			"funding": [
 				{
-- 
2.47.3

$ date
--- stdout ---
Fri May  1 07:38:18 UTC 2026

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-ReaderExperiments.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 ---
1e2ef6644aef31a47aa5e9f8d1e3a36d9c607ec5 refs/heads/master

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@tootallnate/once": {
      "name": "@tootallnate/once",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1113977,
          "name": "@tootallnate/once",
          "dependency": "@tootallnate/once",
          "title": "@tootallnate/once vulnerable to Incorrect Control Flow Scoping",
          "url": "https://github.com/advisories/GHSA-vpq2-c234-7xj6",
          "severity": "low",
          "cwe": [
            "CWE-705"
          ],
          "cvss": {
            "score": 3.3,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": "<3.0.1"
        }
      ],
      "effects": [
        "http-proxy-agent"
      ],
      "range": "<3.0.1",
      "nodes": [
        "node_modules/@tootallnate/once"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "http-proxy-agent": {
      "name": "http-proxy-agent",
      "severity": "low",
      "isDirect": false,
      "via": [
        "@tootallnate/once"
      ],
      "effects": [
        "jsdom"
      ],
      "range": "4.0.1 - 5.0.0",
      "nodes": [
        "node_modules/http-proxy-agent"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "jest-environment-jsdom": {
      "name": "jest-environment-jsdom",
      "severity": "low",
      "isDirect": true,
      "via": [
        "jsdom"
      ],
      "effects": [],
      "range": "27.0.1 - 30.0.0-rc.1",
      "nodes": [
        "node_modules/jest-environment-jsdom"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "jsdom": {
      "name": "jsdom",
      "severity": "low",
      "isDirect": false,
      "via": [
        "http-proxy-agent"
      ],
      "effects": [
        "jest-environment-jsdom"
      ],
      "range": "16.6.0 - 22.1.0",
      "nodes": [
        "node_modules/jsdom"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "postcss": {
      "name": "postcss",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1117015,
          "name": "postcss",
          "dependency": "postcss",
          "title": "PostCSS has XSS via Unescaped </style> in its CSS Stringify Output",
          "url": "https://github.com/advisories/GHSA-qx2v-qp2m-jg93",
          "severity": "moderate",
          "cwe": [
            "CWE-79"
          ],
          "cvss": {
            "score": 6.1,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
          },
          "range": "<8.5.10"
        }
      ],
      "effects": [],
      "range": "<8.5.10",
      "nodes": [
        "node_modules/postcss"
      ],
      "fixAvailable": true
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 4,
      "moderate": 1,
      "high": 0,
      "critical": 0,
      "total": 5
    },
    "dependencies": {
      "prod": 1,
      "dev": 833,
      "optional": 3,
      "peer": 1,
      "peerOptional": 0,
      "total": 833
    }
  }
}

--- 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: 36 installs, 0 updates, 0 removals
  - Locking composer/pcre (3.3.2)
  - Locking composer/semver (3.4.4)
  - Locking composer/spdx-licenses (1.5.10)
  - Locking composer/xdebug-handler (3.0.5)
  - Locking danog/advanced-json-rpc (v3.2.3)
  - Locking dealerdirect/phpcodesniffer-composer-installer (v1.2.0)
  - Locking doctrine/deprecations (1.1.6)
  - Locking mediawiki/mediawiki-codesniffer (v50.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.20.0)
  - 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.4.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.0.8)
  - Locking symfony/deprecation-contracts (v3.6.0)
  - Locking symfony/polyfill-ctype (v1.37.0)
  - Locking symfony/polyfill-intl-grapheme (v1.37.0)
  - Locking symfony/polyfill-intl-normalizer (v1.37.0)
  - Locking symfony/polyfill-mbstring (v1.37.0)
  - Locking symfony/service-contracts (v3.6.1)
  - Locking symfony/string (v8.0.8)
  - Locking webmozart/assert (2.3.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 36 installs, 0 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]
  - Installing squizlabs/php_codesniffer (3.13.5): Extracting archive
  - Installing dealerdirect/phpcodesniffer-composer-installer (v1.2.0): Extracting archive
  - Installing composer/pcre (3.3.2): Extracting archive
  - Installing phpcsstandards/phpcsutils (1.2.2): Extracting archive
  - Installing phpcsstandards/phpcsextra (1.4.0): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.37.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.10): Extracting archive
  - Installing composer/semver (3.4.4): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v50.0.0): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.37.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.37.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.37.0): Extracting archive
  - Installing symfony/string (v8.0.8): Extracting archive
  - Installing symfony/deprecation-contracts (v3.6.0): Extracting archive
  - Installing psr/container (2.0.2): Extracting archive
  - Installing symfony/service-contracts (v3.6.1): Extracting archive
  - Installing symfony/console (v8.0.8): 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.3.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 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/34 [>---------------------------]   0%
 28/34 [=======================>----]  82%
 34/34 [============================] 100%
1 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
16 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@tootallnate/once": {
      "name": "@tootallnate/once",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1113977,
          "name": "@tootallnate/once",
          "dependency": "@tootallnate/once",
          "title": "@tootallnate/once vulnerable to Incorrect Control Flow Scoping",
          "url": "https://github.com/advisories/GHSA-vpq2-c234-7xj6",
          "severity": "low",
          "cwe": [
            "CWE-705"
          ],
          "cvss": {
            "score": 3.3,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": "<3.0.1"
        }
      ],
      "effects": [
        "http-proxy-agent"
      ],
      "range": "<3.0.1",
      "nodes": [
        "node_modules/@tootallnate/once"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "http-proxy-agent": {
      "name": "http-proxy-agent",
      "severity": "low",
      "isDirect": false,
      "via": [
        "@tootallnate/once"
      ],
      "effects": [
        "jsdom"
      ],
      "range": "4.0.1 - 5.0.0",
      "nodes": [
        "node_modules/http-proxy-agent"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "jest-environment-jsdom": {
      "name": "jest-environment-jsdom",
      "severity": "low",
      "isDirect": true,
      "via": [
        "jsdom"
      ],
      "effects": [],
      "range": "27.0.1 - 30.0.0-rc.1",
      "nodes": [
        "node_modules/jest-environment-jsdom"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "jsdom": {
      "name": "jsdom",
      "severity": "low",
      "isDirect": false,
      "via": [
        "http-proxy-agent"
      ],
      "effects": [
        "jest-environment-jsdom"
      ],
      "range": "16.6.0 - 22.1.0",
      "nodes": [
        "node_modules/jsdom"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "postcss": {
      "name": "postcss",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1117015,
          "name": "postcss",
          "dependency": "postcss",
          "title": "PostCSS has XSS via Unescaped </style> in its CSS Stringify Output",
          "url": "https://github.com/advisories/GHSA-qx2v-qp2m-jg93",
          "severity": "moderate",
          "cwe": [
            "CWE-79"
          ],
          "cvss": {
            "score": 6.1,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
          },
          "range": "<8.5.10"
        }
      ],
      "effects": [],
      "range": "<8.5.10",
      "nodes": [
        "node_modules/postcss"
      ],
      "fixAvailable": true
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 4,
      "moderate": 1,
      "high": 0,
      "critical": 0,
      "total": 5
    },
    "dependencies": {
      "prod": 1,
      "dev": 833,
      "optional": 3,
      "peer": 1,
      "peerOptional": 0,
      "total": 833
    }
  }
}

--- end ---
Attempting to npm audit fix
$ /usr/bin/npm audit fix --dry-run --only=dev --json
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex-design-tokens@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', 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: '@wikimedia/codex-icons@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
--- stdout ---
{
  "added": 833,
  "removed": 0,
  "changed": 0,
  "audited": 834,
  "funding": 133,
  "audit": {
    "auditReportVersion": 2,
    "vulnerabilities": {
      "@tootallnate/once": {
        "name": "@tootallnate/once",
        "severity": "low",
        "isDirect": false,
        "via": [
          {
            "source": 1113977,
            "name": "@tootallnate/once",
            "dependency": "@tootallnate/once",
            "title": "@tootallnate/once vulnerable to Incorrect Control Flow Scoping",
            "url": "https://github.com/advisories/GHSA-vpq2-c234-7xj6",
            "severity": "low",
            "cwe": [
              "CWE-705"
            ],
            "cvss": {
              "score": 3.3,
              "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"
            },
            "range": "<3.0.1"
          }
        ],
        "effects": [
          "http-proxy-agent"
        ],
        "range": "<3.0.1",
        "nodes": [
          "node_modules/@tootallnate/once"
        ],
        "fixAvailable": {
          "name": "jest-environment-jsdom",
          "version": "30.3.0",
          "isSemVerMajor": true
        }
      },
      "http-proxy-agent": {
        "name": "http-proxy-agent",
        "severity": "low",
        "isDirect": false,
        "via": [
          "@tootallnate/once"
        ],
        "effects": [
          "jsdom"
        ],
        "range": "4.0.1 - 5.0.0",
        "nodes": [
          "node_modules/http-proxy-agent"
        ],
        "fixAvailable": {
          "name": "jest-environment-jsdom",
          "version": "30.3.0",
          "isSemVerMajor": true
        }
      },
      "jest-environment-jsdom": {
        "name": "jest-environment-jsdom",
        "severity": "low",
        "isDirect": true,
        "via": [
          "jsdom"
        ],
        "effects": [],
        "range": "27.0.1 - 30.0.0-rc.1",
        "nodes": [
          "node_modules/jest-environment-jsdom"
        ],
        "fixAvailable": {
          "name": "jest-environment-jsdom",
          "version": "30.3.0",
          "isSemVerMajor": true
        }
      },
      "jsdom": {
        "name": "jsdom",
        "severity": "low",
        "isDirect": false,
        "via": [
          "http-proxy-agent"
        ],
        "effects": [
          "jest-environment-jsdom"
        ],
        "range": "16.6.0 - 22.1.0",
        "nodes": [
          "node_modules/jsdom"
        ],
        "fixAvailable": {
          "name": "jest-environment-jsdom",
          "version": "30.3.0",
          "isSemVerMajor": true
        }
      },
      "postcss": {
        "name": "postcss",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1117015,
            "name": "postcss",
            "dependency": "postcss",
            "title": "PostCSS has XSS via Unescaped </style> in its CSS Stringify Output",
            "url": "https://github.com/advisories/GHSA-qx2v-qp2m-jg93",
            "severity": "moderate",
            "cwe": [
              "CWE-79"
            ],
            "cvss": {
              "score": 6.1,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
            },
            "range": "<8.5.10"
          }
        ],
        "effects": [],
        "range": "<8.5.10",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      }
    },
    "metadata": {
      "vulnerabilities": {
        "info": 0,
        "low": 4,
        "moderate": 1,
        "high": 0,
        "critical": 0,
        "total": 5
      },
      "dependencies": {
        "prod": 1,
        "dev": 833,
        "optional": 3,
        "peer": 1,
        "peerOptional": 0,
        "total": 833
      }
    }
  }
}

--- end ---
{"added": 833, "removed": 0, "changed": 0, "audited": 834, "funding": 133, "audit": {"auditReportVersion": 2, "vulnerabilities": {"@tootallnate/once": {"name": "@tootallnate/once", "severity": "low", "isDirect": false, "via": [{"source": 1113977, "name": "@tootallnate/once", "dependency": "@tootallnate/once", "title": "@tootallnate/once vulnerable to Incorrect Control Flow Scoping", "url": "https://github.com/advisories/GHSA-vpq2-c234-7xj6", "severity": "low", "cwe": ["CWE-705"], "cvss": {"score": 3.3, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"}, "range": "<3.0.1"}], "effects": ["http-proxy-agent"], "range": "<3.0.1", "nodes": ["node_modules/@tootallnate/once"], "fixAvailable": {"name": "jest-environment-jsdom", "version": "30.3.0", "isSemVerMajor": true}}, "http-proxy-agent": {"name": "http-proxy-agent", "severity": "low", "isDirect": false, "via": ["@tootallnate/once"], "effects": ["jsdom"], "range": "4.0.1 - 5.0.0", "nodes": ["node_modules/http-proxy-agent"], "fixAvailable": {"name": "jest-environment-jsdom", "version": "30.3.0", "isSemVerMajor": true}}, "jest-environment-jsdom": {"name": "jest-environment-jsdom", "severity": "low", "isDirect": true, "via": ["jsdom"], "effects": [], "range": "27.0.1 - 30.0.0-rc.1", "nodes": ["node_modules/jest-environment-jsdom"], "fixAvailable": {"name": "jest-environment-jsdom", "version": "30.3.0", "isSemVerMajor": true}}, "jsdom": {"name": "jsdom", "severity": "low", "isDirect": false, "via": ["http-proxy-agent"], "effects": ["jest-environment-jsdom"], "range": "16.6.0 - 22.1.0", "nodes": ["node_modules/jsdom"], "fixAvailable": {"name": "jest-environment-jsdom", "version": "30.3.0", "isSemVerMajor": true}}, "postcss": {"name": "postcss", "severity": "moderate", "isDirect": false, "via": [{"source": 1117015, "name": "postcss", "dependency": "postcss", "title": "PostCSS has XSS via Unescaped </style> in its CSS Stringify Output", "url": "https://github.com/advisories/GHSA-qx2v-qp2m-jg93", "severity": "moderate", "cwe": ["CWE-79"], "cvss": {"score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"}, "range": "<8.5.10"}], "effects": [], "range": "<8.5.10", "nodes": [""], "fixAvailable": true}}, "metadata": {"vulnerabilities": {"info": 0, "low": 4, "moderate": 1, "high": 0, "critical": 0, "total": 5}, "dependencies": {"prod": 1, "dev": 833, "optional": 3, "peer": 1, "peerOptional": 0, "total": 833}}}}
$ /usr/bin/npm audit fix --only=dev
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex-design-tokens@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', 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: '@wikimedia/codex-icons@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
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 domexception@4.0.0: Use your platform's native DOMException instead
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 832 packages, and audited 833 packages in 9s

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

# npm audit report

@tootallnate/once  <3.0.1
@tootallnate/once vulnerable to Incorrect Control Flow Scoping - https://github.com/advisories/GHSA-vpq2-c234-7xj6
fix available via `npm audit fix --force`
Will install jest-environment-jsdom@30.3.0, which is a breaking change
node_modules/@tootallnate/once
  http-proxy-agent  4.0.1 - 5.0.0
  Depends on vulnerable versions of @tootallnate/once
  node_modules/http-proxy-agent
    jsdom  16.6.0 - 22.1.0
    Depends on vulnerable versions of http-proxy-agent
    node_modules/jsdom
      jest-environment-jsdom  27.0.1 - 30.0.0-rc.1
      Depends on vulnerable versions of jsdom
      node_modules/jest-environment-jsdom

4 low severity vulnerabilities

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

--- end ---
Verifying that tests still pass
$ /usr/bin/npm ci
--- stderr ---
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex-design-tokens@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', 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: '@wikimedia/codex-icons@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
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 domexception@4.0.0: Use your platform's native DOMException instead
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 832 packages, and audited 833 packages in 12s

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

4 low severity vulnerabilities

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/textFragment.test.js
PASS tests/jest/DetailViewCaption.test.js
PASS tests/jest/VisualTableOfContentsItem.test.js
PASS tests/jest/App.test.js
PASS tests/jest/Carousel.test.js
PASS tests/jest/Overlay.test.js
PASS tests/jest/useMediaSearchResults.test.js
PASS tests/jest/VisualTableOfContents.test.js
PASS tests/jest/thumbExtractor.test.js
PASS tests/jest/DetailView.test.js
PASS tests/jest/CarouselItem.test.js

Test Suites: 11 passed, 11 total
Tests:       57 passed, 57 total
Snapshots:   0 total
Time:        5.952 s
Ran all test suites.
--- stdout ---

> test
> grunt lint && npm run jest

Running "eslint:all" (eslint) task

/src/repo/resources/common/composables/useBackgroundColor.js
  140:1  warning  This line has a length of 103. Maximum allowed is 100  max-len

/src/repo/resources/common/composables/useContentImages.js
  17:1  warning  This line has a length of 116. Maximum allowed is 100  max-len

/src/repo/resources/common/thumbExtractor.js
  169:1  warning  This line has a length of 102. Maximum allowed is 100  max-len

/src/repo/resources/experiments/imageBrowsing/components/CarouselItem.vue
  61:1  warning  This line has a length of 106. Maximum allowed is 100  max-len

/src/repo/resources/experiments/imageBrowsing/components/CroppedImage.vue
  226:1  warning  This line has a length of 101. Maximum allowed is 100  max-len

/src/repo/resources/experiments/imageBrowsing/components/DetailViewCaption.vue
  198:1  warning  This line has a length of 107. Maximum allowed is 100  max-len

/src/repo/resources/experiments/imageBrowsing/composables/useMediaSearchResults.js
    8:1  warning  This line has a length of 105. Maximum allowed is 100  max-len
    9:1  warning  This line has a length of 105. Maximum allowed is 100  max-len
  166:1  warning  This line has a length of 135. Maximum allowed is 100  max-len
  172:1  warning  This line has a length of 102. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/FloatingButtonApp.vue
  69:1  warning  This line has a length of 164. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/StickyHeaderApp.vue
  101:1  warning  This line has a length of 164. Maximum allowed is 100  max-len
  244:1  warning  This line has a length of 103. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/components/Scrollable.vue
  31:1  warning  This line has a length of 138. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/components/TableOfContents.vue
  16:1  warning  This line has a length of 131. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/composables/useActiveHeading.js
  68:1  warning  This line has a length of 108. Maximum allowed is 100  max-len

/src/repo/resources/experiments/mobilePagePreviews/components/BottomSheet.vue
  48:1  warning  This line has a length of 116. Maximum allowed is 100  max-len

/src/repo/resources/experiments/mobilePagePreviews/components/PagePreviewCard.vue
  70:1  warning  This line has a length of 110. Maximum allowed is 100  max-len

/src/repo/resources/experiments/shareHighlight/components/QuoteCard.vue
  189:1  warning  This line has a length of 118. Maximum allowed is 100  max-len

/src/repo/resources/experiments/shareHighlight/components/ShareQuoteDialog.vue
  143:1  warning  This line has a length of 105. Maximum allowed is 100  max-len

/src/repo/resources/experiments/shareHighlight/utils/textFragment.js
  7:1  warning  This line has a length of 103. Maximum allowed is 100  max-len

/src/repo/resources/lib/foreign-resources.yaml
  8:1  warning  This line has a length of 108. Maximum allowed is 100  max-len

✖ 22 problems (0 errors, 22 warnings)


Running "stylelint:all" (stylelint) task
>> resources/experiments/shareHighlight/styles/app.less
>>   18:1  ⚠  Unexpected browser feature "css-has" is not supported by Edge 79-81,83-104, Firefox 49-120, Chrome 49-81,83-104, Safari 10-15,10.1,11.1,12.1,13.1,14.1,15.1,15.2-15.3, Safari on iOS 10.0-10.2,10.3,11.0-11.2,11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3  plugin/no-unsupported-browser-features
>> 
>> ⚠ 1 problem (0 errors, 1 warning)

⚠ 1 warning

>> Linted 32 files without errors

Running "banana:ReaderExperiments" (banana) task
>> 1 message directory checked.

Done.

> jest
> jest --config tests/jest/jest.config.js

------------------------------------------|---------|----------|---------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
File                                      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s                                                                                                                                                                            
------------------------------------------|---------|----------|---------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
All files                                 |    63.9 |    74.74 |      50 |    63.9 |                                                                                                                                                                                              
 common                                   |   55.11 |    72.72 |   53.84 |   55.11 |                                                                                                                                                                                              
  excludedImageSelectors.js               |     100 |      100 |     100 |     100 |                                                                                                                                                                                              
  index.js                                |     100 |      100 |     100 |     100 |                                                                                                                                                                                              
  thumbExtractor.js                       |   47.12 |    66.66 |   45.45 |   47.12 | 68-195,235-248,259-261,269-271,280-289,298-299,306-307,324-325,330-348,357-375                                                                                                               
 common/composables                       |   39.06 |    78.57 |   46.15 |   39.06 |                                                                                                                                                                                              
  useBackgroundColor.js                   |   38.92 |    66.66 |   33.33 |   38.92 | 29-71,78-103,132-164                                                                                                                                                                         
  useContentImages.js                     |    82.6 |       75 |     100 |    82.6 | 11-12,17-18                                                                                                                                                                                  
  useImageModel.js                        |   28.07 |      100 |      50 |   28.07 | 16-56                                                                                                                                                                                        
  useSummary.js                           |   34.24 |      100 |   33.33 |   34.24 | 13-22,33-70                                                                                                                                                                                  
 experiments/imageBrowsing                |   76.28 |    57.14 |   85.71 |   76.28 |                                                                                                                                                                                              
  App.vue                                 |   76.28 |    57.14 |   85.71 |   76.28 | 67-108,111-116,133-137,164-165,190-194                                                                                                                                                       
 experiments/imageBrowsing/components     |   74.08 |    77.04 |   58.13 |   74.08 |                                                                                                                                                                                              
  Carousel.vue                            |   76.11 |      100 |      30 |   76.11 | 122-129,137-152,160-175,183-186,194-198,206-208,215-221                                                                                                                                      
  CarouselItem.vue                        |     100 |      100 |     100 |     100 |                                                                                                                                                                                              
  CroppedImage.vue                        |   60.85 |    58.82 |      60 |   60.85 | 102-104,106-117,128-142,175-181,189-288                                                                                                                                                      
  DetailView.vue                          |   84.82 |      100 |   66.66 |   84.82 | 64-80                                                                                                                                                                                        
  DetailViewCaption.vue                   |   93.03 |    88.88 |   66.66 |   93.03 | 78-79,107-112,117-119,133-141,158-159                                                                                                                                                        
  DetailViewControls.vue                  |   43.07 |      100 |       0 |   43.07 | 148-369                                                                                                                                                                                      
  Overlay.vue                             |   95.08 |       75 |   71.42 |   95.08 | 140-141,144-152,167-168,172,176                                                                                                                                                              
  VisualTableOfContents.vue               |     100 |       75 |     100 |     100 | 56                                                                                                                                                                                           
  VisualTableOfContentsItem.vue           |   92.54 |    72.72 |      75 |   92.54 | 94-96,113-114,143-145,154-162                                                                                                                                                                
  VisualTableOfContentsOtherWikis.vue     |   67.97 |      100 |       0 |   67.97 | 68-116                                                                                                                                                                                       
  VisualTableOfContentsOtherWikisItem.vue |   47.03 |      100 |       0 |   47.03 | 63-187                                                                                                                                                                                       
 experiments/imageBrowsing/composables    |   72.64 |    77.61 |   68.42 |   72.64 |                                                                                                                                                                                              
  useAltText.js                           |    90.9 |    71.42 |     100 |    90.9 | 16,19                                                                                                                                                                                        
  useEntityId.js                          |   38.18 |      100 |      50 |   38.18 | 21-54                                                                                                                                                                                        
  useExternalImages.js                    |   21.25 |      100 |   33.33 |   21.25 | 10-34,42-79                                                                                                                                                                                  
  useImageLabel.js                        |      95 |       75 |     100 |      95 | 17                                                                                                                                                                                           
  useMediaSearchResults.js                |   90.54 |     72.5 |     100 |   90.54 | 16-17,226-232,244-252,266-271,273-274                                                                                                                                                        
  useMwApi.js                             |   73.33 |      100 |      50 |   73.33 | 11-14                                                                                                                                                                                        
  useSmartCrop.js                         |   55.88 |    66.66 |   33.33 |   55.88 | 9-18,29-33                                                                                                                                                                                   
  useUniqueExternalGlobalUsageWikis.js    |     100 |      100 |     100 |     100 |                                                                                                                                                                                              
 experiments/shareHighlight/utils         |    90.1 |    88.88 |      75 |    90.1 |                                                                                                                                                                                              
  textFragment.js                         |    90.1 |    88.88 |      75 |    90.1 | 54-55,78-84                                                                                                                                                                                  
 lib/smartcrop                            |   23.06 |    42.85 |    4.34 |   23.06 |                                                                                                                                                                                              
  smartcrop.js                            |   23.06 |    42.85 |    4.34 |   23.06 | 33-34,75-155,161-172,176-200,203-226,229-253,256-264,267-280,283-304,307-344,347-368,372-378,381-414,417-424,428-469,473-477,480-532,542-551,556-558,561-562,564-565,567-578,583-584,587-589 
------------------------------------------|---------|----------|---------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

--- end ---
{"1117015": {"source": 1117015, "name": "postcss", "dependency": "postcss", "title": "PostCSS has XSS via Unescaped </style> in its CSS Stringify Output", "url": "https://github.com/advisories/GHSA-qx2v-qp2m-jg93", "severity": "moderate", "cwe": ["CWE-79"], "cvss": {"score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"}, "range": "<8.5.10"}}
Upgrading n:postcss from 8.5.6 -> 8.5.13
$ package-lock-lint /src/repo/package-lock.json
--- stdout ---
Checking /src/repo/package-lock.json

--- end ---
build: Updating postcss to 8.5.13

* https://github.com/advisories/GHSA-qx2v-qp2m-jg93

$ git add .
--- stdout ---

--- end ---
$ git commit -F /tmp/tmp1yfdyrwb
--- stdout ---
[master f956921] build: Updating postcss to 8.5.13
 1 file changed, 3 insertions(+), 3 deletions(-)

--- end ---
$ git format-patch HEAD~1 --stdout
--- stdout ---
From f956921d0c888b60cb60f77de0ca2b57086dec66 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Fri, 1 May 2026 07:39:14 +0000
Subject: [PATCH] build: Updating postcss to 8.5.13

* https://github.com/advisories/GHSA-qx2v-qp2m-jg93

Change-Id: Ibff21a2a57a10eb8b030e320ca15a3d5c0294834
---
 package-lock.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 08993e2..0e7d503 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8598,9 +8598,9 @@
 			}
 		},
 		"node_modules/postcss": {
-			"version": "8.5.6",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
-			"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+			"version": "8.5.13",
+			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.13.tgz",
+			"integrity": "sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag==",
 			"dev": true,
 			"funding": [
 				{
-- 
2.47.3


--- end ---
Source code is licensed under the AGPL.