$ date
--- stdout ---
Tue Dec 2 04:12:02 UTC 2025
--- end ---
$ git clone file:///srv/git/mediawiki-services-cxserver.git repo --depth=1 -b master
--- stderr ---
Cloning into 'repo'...
--- stdout ---
--- end ---
$ git config user.name libraryupgrader
--- stdout ---
--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---
--- end ---
$ git submodule update --init
--- stdout ---
--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.
--- end ---
$ git show-ref refs/heads/master
--- stdout ---
4492e63827a189f98372d3298bb123fe55d3903e refs/heads/master
--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
"auditReportVersion": 2,
"vulnerabilities": {
"body-parser": {
"name": "body-parser",
"severity": "moderate",
"isDirect": true,
"via": [
{
"source": 1110858,
"name": "body-parser",
"dependency": "body-parser",
"title": "body-parser is vulnerable to denial of service when url encoding is used",
"url": "https://github.com/advisories/GHSA-wqch-xfxh-vrr4",
"severity": "moderate",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": ">=2.2.0 <2.2.1"
}
],
"effects": [],
"range": "2.2.0",
"nodes": [
"node_modules/body-parser"
],
"fixAvailable": true
},
"express": {
"name": "express",
"severity": "low",
"isDirect": true,
"via": [
{
"source": 1111087,
"name": "express",
"dependency": "express",
"title": "express improperly controls modification of query properties",
"url": "https://github.com/advisories/GHSA-pj86-cfqh-vqx6",
"severity": "low",
"cwe": [
"CWE-915"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<4.22.0"
}
],
"effects": [],
"range": "<4.22.0",
"nodes": [
"node_modules/express"
],
"fixAvailable": true
}
},
"metadata": {
"vulnerabilities": {
"info": 0,
"low": 1,
"moderate": 1,
"high": 0,
"critical": 0,
"total": 2
},
"dependencies": {
"prod": 287,
"dev": 539,
"optional": 50,
"peer": 1,
"peerOptional": 0,
"total": 874
}
}
}
--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
"auditReportVersion": 2,
"vulnerabilities": {
"body-parser": {
"name": "body-parser",
"severity": "moderate",
"isDirect": true,
"via": [
{
"source": 1110858,
"name": "body-parser",
"dependency": "body-parser",
"title": "body-parser is vulnerable to denial of service when url encoding is used",
"url": "https://github.com/advisories/GHSA-wqch-xfxh-vrr4",
"severity": "moderate",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": ">=2.2.0 <2.2.1"
}
],
"effects": [],
"range": "2.2.0",
"nodes": [
"node_modules/body-parser"
],
"fixAvailable": true
},
"express": {
"name": "express",
"severity": "low",
"isDirect": true,
"via": [
{
"source": 1111087,
"name": "express",
"dependency": "express",
"title": "express improperly controls modification of query properties",
"url": "https://github.com/advisories/GHSA-pj86-cfqh-vqx6",
"severity": "low",
"cwe": [
"CWE-915"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<4.22.0"
}
],
"effects": [],
"range": "<4.22.0",
"nodes": [
"node_modules/express"
],
"fixAvailable": true
}
},
"metadata": {
"vulnerabilities": {
"info": 0,
"low": 1,
"moderate": 1,
"high": 0,
"critical": 0,
"total": 2
},
"dependencies": {
"prod": 287,
"dev": 539,
"optional": 50,
"peer": 1,
"peerOptional": 0,
"total": 874
}
}
}
--- 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: 'cxserver@1.2.1',
npm WARN EBADENGINE required: { node: '>=22' },
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
--- stdout ---
{
"added": 875,
"removed": 0,
"changed": 0,
"audited": 876,
"funding": 177,
"audit": {
"auditReportVersion": 2,
"vulnerabilities": {
"body-parser": {
"name": "body-parser",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1110858,
"name": "body-parser",
"dependency": "body-parser",
"title": "body-parser is vulnerable to denial of service when url encoding is used",
"url": "https://github.com/advisories/GHSA-wqch-xfxh-vrr4",
"severity": "moderate",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": ">=2.2.0 <2.2.1"
}
],
"effects": [],
"range": "2.2.0",
"nodes": [
""
],
"fixAvailable": true
},
"express": {
"name": "express",
"severity": "low",
"isDirect": false,
"via": [
{
"source": 1111087,
"name": "express",
"dependency": "express",
"title": "express improperly controls modification of query properties",
"url": "https://github.com/advisories/GHSA-pj86-cfqh-vqx6",
"severity": "low",
"cwe": [
"CWE-915"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<4.22.0"
}
],
"effects": [],
"range": "<4.22.0",
"nodes": [
""
],
"fixAvailable": true
}
},
"metadata": {
"vulnerabilities": {
"info": 0,
"low": 1,
"moderate": 1,
"high": 0,
"critical": 0,
"total": 2
},
"dependencies": {
"prod": 288,
"dev": 539,
"optional": 50,
"peer": 1,
"peerOptional": 0,
"total": 875
}
}
}
}
--- end ---
{"added": 875, "removed": 0, "changed": 0, "audited": 876, "funding": 177, "audit": {"auditReportVersion": 2, "vulnerabilities": {"body-parser": {"name": "body-parser", "severity": "moderate", "isDirect": false, "via": [{"source": 1110858, "name": "body-parser", "dependency": "body-parser", "title": "body-parser is vulnerable to denial of service when url encoding is used", "url": "https://github.com/advisories/GHSA-wqch-xfxh-vrr4", "severity": "moderate", "cwe": ["CWE-400"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": ">=2.2.0 <2.2.1"}], "effects": [], "range": "2.2.0", "nodes": [""], "fixAvailable": true}, "express": {"name": "express", "severity": "low", "isDirect": false, "via": [{"source": 1111087, "name": "express", "dependency": "express", "title": "express improperly controls modification of query properties", "url": "https://github.com/advisories/GHSA-pj86-cfqh-vqx6", "severity": "low", "cwe": ["CWE-915"], "cvss": {"score": 0, "vectorString": null}, "range": "<4.22.0"}], "effects": [], "range": "<4.22.0", "nodes": [""], "fixAvailable": true}}, "metadata": {"vulnerabilities": {"info": 0, "low": 1, "moderate": 1, "high": 0, "critical": 0, "total": 2}, "dependencies": {"prod": 288, "dev": 539, "optional": 50, "peer": 1, "peerOptional": 0, "total": 875}}}}
$ /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: 'cxserver@1.2.1',
npm WARN EBADENGINE required: { node: '>=22' },
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 @npmcli/move-file@1.1.2: This functionality has been moved to @npmcli/fs
npm WARN deprecated npmlog@6.0.2: This package is no longer supported.
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
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 are-we-there-yet@3.0.1: This package is no longer supported.
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
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 gauge@4.0.4: This package is no longer supported.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
--- stdout ---
added 874 packages, and audited 875 packages in 11s
177 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
--- end ---
Verifying that tests still pass
$ /usr/bin/npm ci
--- stderr ---
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: 'cxserver@1.2.1',
npm WARN EBADENGINE required: { node: '>=22' },
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 @npmcli/move-file@1.1.2: This functionality has been moved to @npmcli/fs
npm WARN deprecated npmlog@6.0.2: This package is no longer supported.
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
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 are-we-there-yet@3.0.1: This package is no longer supported.
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
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 gauge@4.0.4: This package is no longer supported.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
--- stdout ---
added 874 packages, and audited 875 packages in 15s
177 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
--- end ---
$ /usr/bin/npm test
--- stdout ---
> cxserver@1.2.1 test
> npm run lint && npm run unittest
> cxserver@1.2.1 lint
> eslint .
/src/repo/app.js
50:1 warning The type 'Express' is undefined jsdoc/no-undefined-types
82:34 warning Found non-literal argument to RegExp Constructor security/detect-non-literal-regexp
88:25 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
234:9 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
235:10 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
/src/repo/lib/Config.js
42:28 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
64:38 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
69:6 warning Mixed spaces and tabs no-mixed-spaces-and-tabs
70:6 warning Mixed spaces and tabs no-mixed-spaces-and-tabs
97:29 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
/src/repo/lib/adaptation/TemplateParameterMapper.js
110:5 warning Mixed spaces and tabs no-mixed-spaces-and-tabs
110:7 warning Expected no linebreak before this expression implicit-arrow-linebreak
113:4 warning Mixed spaces and tabs no-mixed-spaces-and-tabs
/src/repo/lib/lineardoc/MwContextualizer.js
143:35 warning Found non-literal argument to RegExp Constructor security/detect-non-literal-regexp
/src/repo/lib/logging.js
7:1 warning The type 'winston' is undefined jsdoc/no-undefined-types
/src/repo/lib/mw/MWPageLoader.js
19:33 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
/src/repo/lib/swagger-ui.js
26:9 warning Found readFile from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
/src/repo/lib/translationunits/MWCategory.js
15:41 warning Unsafe Regular Expression security/detect-unsafe-regex
/src/repo/lib/translationunits/MWFile.js
44:51 warning Unsafe Regular Expression security/detect-unsafe-regex
/src/repo/lib/translationunits/MWImage.js
123:68 warning Unsafe Regular Expression security/detect-unsafe-regex
/src/repo/lib/util.js
132:23 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
/src/repo/scripts/template-mapping.js
108:7 warning Found existsSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
114:14 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
/src/repo/spec.yaml
195:1 warning This line has a length of 139. Maximum allowed is 100 max-len
246:1 warning This line has a length of 139. Maximum allowed is 100 max-len
468:1 warning This line has a length of 109. Maximum allowed is 100 max-len
493:1 warning This line has a length of 110. Maximum allowed is 100 max-len
499:1 warning This line has a length of 216. Maximum allowed is 100 max-len
540:1 warning This line has a length of 110. Maximum allowed is 100 max-len
547:1 warning This line has a length of 216. Maximum allowed is 100 max-len
589:1 warning This line has a length of 106. Maximum allowed is 100 max-len
606:1 warning This line has a length of 134. Maximum allowed is 100 max-len
621:1 warning This line has a length of 109. Maximum allowed is 100 max-len
653:1 warning This line has a length of 106. Maximum allowed is 100 max-len
670:1 warning This line has a length of 134. Maximum allowed is 100 max-len
/src/repo/test/adaptation/SectionTest.js
31:20 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
/src/repo/test/features/app/spec.js
21:16 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
168:10 warning Found non-literal argument to RegExp Constructor security/detect-non-literal-regexp
/src/repo/test/lineardoc/LinearDoc.test.js
28:22 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
32:24 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
36:26 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
78:28 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
101:28 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
156:27 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
249:28 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
/src/repo/test/mw/MWPageLoaderTest.js
37:27 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
46:5 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
/src/repo/test/mw/SectionWrap.test.js
17:33 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
/src/repo/test/segmentation/CXSegmenter.test.js
28:19 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
34:3 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
/src/repo/test/testutils.js
22:5 warning Found writeFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
/src/repo/test/translationunits/MWReference.test.js
38:21 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
55:27 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
/src/repo/test/utils/assert.js
8:40 warning Found non-literal argument to RegExp Constructor security/detect-non-literal-regexp
✖ 54 problems (0 errors, 54 warnings)
> cxserver@1.2.1 unittest
> NODE_ENV=test node --test
TAP version 13
# {"@timestamp":"2025-12-02T04:13:00.187Z","ecs.version":"8.10.0","log.level":"info","message":"Starting cxserver-dev","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:00.263Z","ecs.version":"8.10.0","log.level":"info","message":"responseTimeMetric","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:00.266Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 346 languages from the configuration","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:00.317Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 6 MT providers","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:00.376Z","ecs.version":"8.10.0","log.level":"debug","message":"No title for the MWLink: {\\"name\\":\\"a\\",\\"attributes\\":{\\"rel\\":\\"mw:WikiLink\\",\\"href\\":\\"Oxygen\\",\\"id\\":\\"mwAA\\",\\"data-cx\\":\\"{\\\\\\"adapted\\\\\\":false}\\"},\\"isSelfClosing\\":false}","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:00.404Z","ecs.version":"8.10.0","log.level":"debug","message":"No title for the MWLink: {\\"name\\":\\"a\\",\\"attributes\\":{\\"rel\\":\\"mw:WikiLink\\",\\"href\\":\\"Atomic number\\",\\"id\\":\\"mwAB\\",\\"data-cx\\":\\"{\\\\\\"adapted\\\\\\":false}\\"},\\"isSelfClosing\\":false}","service":"cxserver-dev"}
# Subtest: Adaptation tests
# Subtest: Link adaptation basic test
ok 1 - Link adaptation basic test
---
duration_ms: 312.656277
...
# Subtest: Link adaptation - Full paragraph and relative links
ok 2 - Link adaptation - Full paragraph and relative links
---
duration_ms: 42.689962
...
# Subtest: Image adaptation basic test
ok 3 - Image adaptation basic test
---
duration_ms: 121.456383
...
# Subtest: Image adaptation - Inline image with span tag
ok 4 - Image adaptation - Inline image with span tag
---
duration_ms: 24.457239
...
# Subtest: Image adaptation - Inline image with span tag
ok 5 - Image adaptation - Inline image with span tag
---
duration_ms: 31.654208
...
# Subtest: Image adaptation - Source and target language directions differs
ok 6 - Image adaptation - Source and target language directions differs
---
duration_ms: 75.698347
...
# Subtest: Image adaptation - Image is not in commons
ok 7 - Image adaptation - Image is not in commons
---
duration_ms: 11.394642
...
# Subtest: Gallery adaptation
ok 8 - Gallery adaptation
---
duration_ms: 26.591455
...
# Subtest: Reference adaptation test without a reference template
ok 9 - Reference adaptation test without a reference template
---
duration_ms: 30.368617
...
# Subtest: Reference adaptation test where the content is reference and template at same time
ok 10 - Reference adaptation test where the content is reference and template at same time
---
duration_ms: 25.440052
...
# Subtest: Reference adaptation test where source and target has no template data. Must use template mapping database
ok 11 - Reference adaptation test where source and target has no template data. Must use template mapping database
---
duration_ms: 93.647285
...
# Subtest: Style tags holding template definition should not be ignored and used for template adaptation
ok 12 - Style tags holding template definition should not be ignored and used for template adaptation
---
duration_ms: 27.557088
...
# Subtest: Audio adaptation
ok 13 - Audio adaptation
---
duration_ms: 8.461024
...
# Subtest: Audio adaptation when audio is not in Commons
ok 14 - Audio adaptation when audio is not in Commons
---
duration_ms: 14.169191
...
# Subtest: Video adaptation
ok 15 - Video adaptation
---
duration_ms: 9.708079
...
# Subtest: Inline Video adaptation
ok 16 - Inline Video adaptation
---
duration_ms: 7.599319
...
1..16
ok 1 - Adaptation tests
---
duration_ms: 1064.36638
type: 'suite'
...
# {"@timestamp":"2025-12-02T04:13:00.228Z","ecs.version":"8.10.0","log.level":"info","message":"Starting cxserver-dev","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:00.288Z","ecs.version":"8.10.0","log.level":"info","message":"responseTimeMetric","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:00.313Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 346 languages from the configuration","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:00.361Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 6 MT providers","service":"cxserver-dev"}
# Subtest: Adaptation tests
# Subtest: should adapt section when: section has lot of templates, but all are fragments of main template
ok 1 - should adapt section when: section has lot of templates, but all are fragments of main template
---
duration_ms: 609.034859
...
1..1
ok 2 - Adaptation tests
---
duration_ms: 765.570432
type: 'suite'
...
# Subtest: Template parameter mapping test
# Subtest: should not have any errors while mapping params
ok 1 - should not have any errors while mapping params
---
duration_ms: 3.299241
...
1..1
ok 3 - Template parameter mapping test
---
duration_ms: 4.875242
type: 'suite'
...
# {"@timestamp":"2025-12-02T04:13:00.801Z","ecs.version":"8.10.0","log.level":"info","message":"Starting cxserver-dev","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:00.844Z","ecs.version":"8.10.0","log.level":"info","message":"responseTimeMetric","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:00.846Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 346 languages from the configuration","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:00.892Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 6 MT providers","service":"cxserver-dev"}
# Subtest: express app
# Subtest: should get robots.txt
ok 1 - should get robots.txt
---
duration_ms: 65.732137
...
# Subtest: should set CORS headers
ok 2 - should set CORS headers
---
duration_ms: 21.451063
...
# Subtest: should set CSP headers
ok 3 - should set CSP headers
---
duration_ms: 10.780201
...
1..3
ok 4 - express app
---
duration_ms: 205.901629
type: 'suite'
...
# {"@timestamp":"2025-12-02T04:13:02.879Z","ecs.version":"8.10.0","log.level":"info","message":"Starting cxserver-dev","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:02.911Z","ecs.version":"8.10.0","log.level":"info","message":"responseTimeMetric","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:02.912Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 346 languages from the configuration","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:02.928Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 6 MT providers","service":"cxserver-dev"}
# Subtest: Swagger spec
# Subtest: get the spec
ok 1 - get the spec
---
duration_ms: 50.063667
...
# Subtest: should expose valid OpenAPI spec
ok 2 - should expose valid OpenAPI spec
---
duration_ms: 40.855628
...
# Subtest: spec validation
ok 3 - spec validation
---
duration_ms: 1.198798
...
# Subtest: routes
# Subtest: robots.txt check
ok 1 - robots.txt check
---
duration_ms: 25.862999
...
# Subtest: root with no query params
ok 2 - root with no query params
---
duration_ms: 7.789548
...
# Subtest: spec from root
ok 3 - spec from root
---
duration_ms: 25.954143
...
# Subtest: doc from root
ok 4 - doc from root
---
duration_ms: 3.886979
...
# Subtest: root with wrong query param
ok 5 - root with wrong query param
---
duration_ms: 3.513232
...
# {"@timestamp":"2025-12-02T04:13:03.099Z","ecs.version":"8.10.0","http":{"request":{"id":"f67db97c-531e-4fed-bf3a-d06f9a1f2cd8","method":"GET"}},"log.level":"debug","message":"Getting page en:User:BSitzmann_(WMF)/MCS/Test/Frankenstein","service":"cxserver-dev","url":{"path":"/v1/page/en/User%3ABSitzmann_(WMF)%2FMCS%2FTest%2FFrankenstein"}}
# {"@timestamp":"2025-12-02T04:13:03.390Z","ecs.version":"8.10.0","http":{"request":{"id":"f67db97c-531e-4fed-bf3a-d06f9a1f2cd8","method":"GET"}},"log.level":"debug","message":"Page sent","service":"cxserver-dev","url":{"path":"/v1/page/en/User%3ABSitzmann_(WMF)%2FMCS%2FTest%2FFrankenstein"}}
# Subtest: Fetch enwiki protected page
ok 6 - Fetch enwiki protected page
---
duration_ms: 314.088779
...
# {"@timestamp":"2025-12-02T04:13:03.408Z","ecs.version":"8.10.0","http":{"request":{"id":"cb5b192e-0091-4a71-a452-660ef72afb91","method":"GET"}},"log.level":"debug","message":"Getting page en:User:BSitzmann_(WMF)/MCS/Test/Frankenstein","service":"cxserver-dev","url":{"path":"/v1/page/en/User%3ABSitzmann_(WMF)%2FMCS%2FTest%2FFrankenstein"}}
# {"@timestamp":"2025-12-02T04:13:03.540Z","ecs.version":"8.10.0","http":{"request":{"id":"cb5b192e-0091-4a71-a452-660ef72afb91","method":"GET"}},"log.level":"debug","message":"Page sent","service":"cxserver-dev","url":{"path":"/v1/page/en/User%3ABSitzmann_(WMF)%2FMCS%2FTest%2FFrankenstein"}}
# Subtest: Fetch protected page with multi-word title
ok 7 - Fetch protected page with multi-word title
---
duration_ms: 161.55955
...
# {"@timestamp":"2025-12-02T04:13:03.569Z","ecs.version":"8.10.0","http":{"request":{"id":"64160beb-be3f-4163-b405-063984b76d45","method":"GET"}},"log.level":"debug","message":"Getting page en:User:BSitzmann_(WMF)/MCS/Test/Frankenstein","service":"cxserver-dev","url":{"path":"/v1/page/en/User%3ABSitzmann_(WMF)%2FMCS%2FTest%2FFrankenstein/1086816359"}}
# {"@timestamp":"2025-12-02T04:13:03.721Z","ecs.version":"8.10.0","http":{"request":{"id":"64160beb-be3f-4163-b405-063984b76d45","method":"GET"}},"log.level":"debug","message":"Page sent","service":"cxserver-dev","url":{"path":"/v1/page/en/User%3ABSitzmann_(WMF)%2FMCS%2FTest%2FFrankenstein/1086816359"}}
# Subtest: Fetch enwiki protected page with revision
ok 8 - Fetch enwiki protected page with revision
---
duration_ms: 163.490115
...
# Subtest: Machine translate an HTML fragment using TestClient.
ok 9 - Machine translate an HTML fragment using TestClient.
---
duration_ms: 167.947665
...
# Subtest: Machine translate an HTML fragment using TestClient.
ok 10 - Machine translate an HTML fragment using TestClient.
---
duration_ms: 18.937804
...
# Subtest: Get the tools between two language pairs
ok 11 - Get the tools between two language pairs
---
duration_ms: 3.558334
...
# Subtest: Get all the language pairs
ok 12 - Get all the language pairs
---
duration_ms: 5.454461
...
# Subtest: Get the MT tool between two language pairs
ok 13 - Get the MT tool between two language pairs
---
duration_ms: 28.354729
...
# Subtest: Get the MT tool between two language pairs
ok 14 - Get the MT tool between two language pairs
---
duration_ms: 8.854527
...
# {"@timestamp":"2025-12-02T04:13:03.966Z","ecs.version":"8.10.0","http":{"request":{"id":"6ffd3054-1309-4ef3-ba3e-081d5075a82f","method":"GET"}},"log.level":"debug","message":"Getting page en:User:BSitzmann_(WMF)/MCS/Test/Frankenstein for es","service":"cxserver-dev","url":{"path":"/v2/page/en/es/User%3ABSitzmann_(WMF)%2FMCS%2FTest%2FFrankenstein"}}
# {"@timestamp":"2025-12-02T04:13:04.156Z","ecs.version":"8.10.0","http":{"request":{"id":"6ffd3054-1309-4ef3-ba3e-081d5075a82f","method":"GET"}},"log.level":"debug","message":"Page sent","service":"cxserver-dev","url":{"path":"/v2/page/en/es/User%3ABSitzmann_(WMF)%2FMCS%2FTest%2FFrankenstein"}}
# Subtest: Translate enwiki protected page
ok 15 - Translate enwiki protected page
---
duration_ms: 199.761291
...
# {"@timestamp":"2025-12-02T04:13:04.167Z","ecs.version":"8.10.0","http":{"request":{"id":"8ef7e2cd-4f8e-46b5-82f0-593fe987c919","method":"GET"}},"log.level":"debug","message":"Getting page en:User:BSitzmann_(WMF)/MCS/Test/Frankenstein for es","service":"cxserver-dev","url":{"path":"/v2/page/en/es/User%3ABSitzmann_(WMF)%2FMCS%2FTest%2FFrankenstein"}}
# {"@timestamp":"2025-12-02T04:13:04.286Z","ecs.version":"8.10.0","http":{"request":{"id":"8ef7e2cd-4f8e-46b5-82f0-593fe987c919","method":"GET"}},"log.level":"debug","message":"Page sent","service":"cxserver-dev","url":{"path":"/v2/page/en/es/User%3ABSitzmann_(WMF)%2FMCS%2FTest%2FFrankenstein"}}
# Subtest: Translate enwiki protected page with multi-word title
ok 16 - Translate enwiki protected page with multi-word title
---
duration_ms: 129.879497
...
# {"@timestamp":"2025-12-02T04:13:04.298Z","ecs.version":"8.10.0","http":{"request":{"id":"4e732637-b767-458d-9f41-3e110900bdef","method":"GET"}},"log.level":"debug","message":"Getting page en:User:BSitzmann_(WMF)/MCS/Test/Frankenstein for es","service":"cxserver-dev","url":{"path":"/v2/page/en/es/User%3ABSitzmann_(WMF)%2FMCS%2FTest%2FFrankenstein/1086816359"}}
# {"@timestamp":"2025-12-02T04:13:04.361Z","ecs.version":"8.10.0","http":{"request":{"id":"4e732637-b767-458d-9f41-3e110900bdef","method":"GET"}},"log.level":"debug","message":"Page sent","service":"cxserver-dev","url":{"path":"/v2/page/en/es/User%3ABSitzmann_(WMF)%2FMCS%2FTest%2FFrankenstein/1086816359"}}
# Subtest: Translate enwiki protected page with revision
ok 17 - Translate enwiki protected page with revision
---
duration_ms: 78.983065
...
# Subtest: Machine translate an HTML fragment using TestClient, adapt the links to target language wiki.
ok 18 - Machine translate an HTML fragment using TestClient, adapt the links to target language wiki.
---
duration_ms: 181.463781
...
# Subtest: Machine translate an HTML fragment using TestClient, adapt the links to target language wiki.
ok 19 - Machine translate an HTML fragment using TestClient, adapt the links to target language wiki.
---
duration_ms: 5.454409
...
# Subtest: Suggest a target title for the given source title and language pairs
ok 20 - Suggest a target title for the given source title and language pairs
---
duration_ms: 241.984653
...
# Subtest: Return an authentication error HTTP status code, when default MT requires authentication and the given JWT is invalid
ok 21 - Return an authentication error HTTP status code, when default MT requires authentication and the given JWT is invalid
---
duration_ms: 23.086436
...
# Subtest: Suggest a target title for the given source title and language pairs
ok 22 - Suggest a target title for the given source title and language pairs
---
duration_ms: 17.673507
...
# Subtest: Return an authentication error HTTP status code, when default MT requires authentication and the given JWT is invalid
ok 23 - Return an authentication error HTTP status code, when default MT requires authentication and the given JWT is invalid
---
duration_ms: 3.851315
...
# {"@timestamp":"2025-12-02T04:13:04.849Z","ecs.version":"8.10.0","http":{"request":{"id":"f41c09d3-e2cc-4985-a97e-51315a8deedc","method":"GET"}},"log.level":"debug","message":"Attempting Paneer in en","service":"cxserver-dev","url":{"path":"/v2/suggest/source/Paneer/ca?sourcelanguages=en"}}
# Subtest: Suggest a source title to use for translation
ok 24 - Suggest a source title to use for translation
---
duration_ms: 96.52077
...
# Subtest: Suggest target section titles for given source sections
ok 25 - Suggest target section titles for given source sections
---
duration_ms: 44.20524
...
# Subtest: Suggest source sections to translate
ok 26 - Suggest source sections to translate
---
duration_ms: 176.721324
...
# Subtest: retrieve service info
ok 27 - retrieve service info
---
duration_ms: 7.357803
...
# Subtest: retrieve service name
ok 28 - retrieve service name
---
duration_ms: 4.713148
...
# Subtest: retrieve service version
ok 29 - retrieve service version
---
duration_ms: 10.651851
...
# Subtest: redirect to the home page
ok 30 - redirect to the home page
---
duration_ms: 6.064505
...
1..30
ok 4 - routes
---
duration_ms: 2171.299748
type: 'suite'
...
1..4
ok 5 - Swagger spec
---
duration_ms: 2323.662169
type: 'suite'
...
# {"@timestamp":"2025-12-02T04:13:02.457Z","ecs.version":"8.10.0","log.level":"info","message":"Starting cxserver-dev","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:02.501Z","ecs.version":"8.10.0","log.level":"info","message":"responseTimeMetric","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:02.502Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 346 languages from the configuration","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:02.565Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 6 MT providers","service":"cxserver-dev"}
# Subtest: service information
# Subtest: should get the service name
ok 1 - should get the service name
---
duration_ms: 30.796834
...
# Subtest: should get the service version
ok 2 - should get the service version
---
duration_ms: 6.167541
...
# Subtest: should redirect to the service home page
ok 3 - should redirect to the service home page
---
duration_ms: 5.780052
...
# Subtest: should get the service info
ok 4 - should get the service info
---
duration_ms: 7.223371
...
1..4
ok 6 - service information
---
duration_ms: 173.908498
type: 'suite'
...
# {"@timestamp":"2025-12-02T04:13:02.932Z","ecs.version":"8.10.0","log.level":"info","message":"Starting cxserver-dev","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:02.990Z","ecs.version":"8.10.0","log.level":"info","message":"responseTimeMetric","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:02.993Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 346 languages from the configuration","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:03.065Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 6 MT providers","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:03.091Z","ecs.version":"8.10.0","http":{"request":{"id":"939e1bc5-f375-4a22-836a-790aae430621","method":"GET"}},"log.level":"debug","message":"Getting page en:Oxygen","service":"cxserver-dev","url":{"path":"/v1/page/en/Oxygen"}}
# {"@timestamp":"2025-12-02T04:13:03.887Z","ecs.version":"8.10.0","http":{"request":{"id":"939e1bc5-f375-4a22-836a-790aae430621","method":"GET"}},"log.level":"debug","message":"Page sent","service":"cxserver-dev","url":{"path":"/v1/page/en/Oxygen"}}
# Subtest: v1 api - page gets
# Subtest: should get the whole page body
ok 1 - should get the whole page body
---
duration_ms: 869.893575
...
# Subtest: should throw a 404 for a non-existent page
ok 2 - should throw a 404 for a non-existent page
---
duration_ms: 7.807814
...
1..2
ok 7 - v1 api - page gets
---
duration_ms: 1027.263581
type: 'suite'
...
# {"@timestamp":"2025-12-02T04:13:04.376Z","ecs.version":"8.10.0","log.level":"info","message":"Starting cxserver-dev","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:04.425Z","ecs.version":"8.10.0","log.level":"info","message":"responseTimeMetric","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:04.429Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 346 languages from the configuration","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:04.491Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 6 MT providers","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:04.527Z","ecs.version":"8.10.0","http":{"request":{"id":"cbe86184-214f-44e5-9018-f3428a5d91ac","method":"GET"}},"log.level":"debug","message":"Getting page en:Pickling for es","service":"cxserver-dev","url":{"path":"/v2/page/en/es/Pickling"}}
# {"@timestamp":"2025-12-02T04:13:05.096Z","ecs.version":"8.10.0","http":{"request":{"id":"cbe86184-214f-44e5-9018-f3428a5d91ac","method":"GET"}},"log.level":"debug","message":"Page sent","service":"cxserver-dev","url":{"path":"/v2/page/en/es/Pickling"}}
# Subtest: v2 api - page gets
# Subtest: should get the whole page body
ok 1 - should get the whole page body
---
duration_ms: 625.957753
...
# {"@timestamp":"2025-12-02T04:13:05.125Z","ecs.version":"8.10.0","http":{"request":{"id":"ae1060ed-7035-4559-bbd2-fecf2c0bd147","method":"GET"}},"log.level":"debug","message":"Getting page en:Wikipedia_content_translation_system for es","service":"cxserver-dev","url":{"path":"/v2/page/en/es/Wikipedia_content_translation_system"}}
# Subtest: should throw a 404 for a non-existent page
ok 2 - should throw a 404 for a non-existent page
---
duration_ms: 67.028926
...
1..2
ok 8 - v2 api - page gets
---
duration_ms: 823.572937
type: 'suite'
...
# Subtest: LinearDoc
# Subtest: should be possible to linearise all kind of HTML inputs
ok 1 - should be possible to linearise all kind of HTML inputs
---
duration_ms: 58.378187
...
# Subtest: should be possible to reconstruct the HTML from LinearDoc
ok 2 - should be possible to reconstruct the HTML from LinearDoc
---
duration_ms: 2.178612
...
# Subtest: should be possible to reduce and expand a document
ok 3 - should be possible to reduce and expand a document
---
duration_ms: 16.135303
...
# Subtest: test HTML compaction roundtrip with inline chunks
ok 4 - test HTML compaction roundtrip with inline chunks
---
duration_ms: 1.97667
...
# Subtest: test HTML expand with external attributes inserted
ok 5 - test HTML expand with external attributes inserted
---
duration_ms: 0.47701
...
# Subtest: test if the content is block level template
ok 6 - test if the content is block level template
---
duration_ms: 93.490601
...
# Subtest: test HTML compaction roundtrip with inline style content
ok 7 - test HTML compaction roundtrip with inline style content
---
duration_ms: 1.914199
...
# Subtest: test HTML compaction roundtrip with template with empty content
ok 8 - test HTML compaction roundtrip with template with empty content
---
duration_ms: 3.995314
...
# Subtest: test getRootItem for ignoring blockspaces
ok 9 - test getRootItem for ignoring blockspaces
---
duration_ms: 0.851654
...
# Subtest: test getRootItem for not ignoring non-whitespace content in textblock
ok 10 - test getRootItem for not ignoring non-whitespace content in textblock
---
duration_ms: 0.656414
...
# Subtest: test getRootItem for ignoring whitespace content in textblock
ok 11 - test getRootItem for ignoring whitespace content in textblock
---
duration_ms: 0.443098
...
1..11
ok 9 - LinearDoc
---
duration_ms: 183.255795
type: 'suite'
...
# Subtest: Apertium machine translation
# Subtest: Test: All caps words
ok 1 - Test: All caps words
---
duration_ms: 114.210961
...
# Subtest: Test: Title caps one-to-many
ok 2 - Test: Title caps one-to-many
---
duration_ms: 21.090408
...
# Subtest: Test: Reordering with nested tags
ok 3 - Test: Reordering with nested tags
---
duration_ms: 22.106494
...
# Subtest: Test: Many-to-one with nested tags
ok 4 - Test: Many-to-one with nested tags
---
duration_ms: 34.741605
...
# Subtest: Test: Reordering at either ends of a tag
ok 5 - Test: Reordering at either ends of a tag
---
duration_ms: 27.674447
...
# Subtest: Test: Identical tags separated by whitespace
ok 6 - Test: Identical tags separated by whitespace
---
duration_ms: 20.432728
...
# Subtest: Test: Non-identical links separated by whitespace
ok 7 - Test: Non-identical links separated by whitespace
---
duration_ms: 14.551169
...
# Subtest: Test: Find longest match among multiple matches
ok 8 - Test: Find longest match among multiple matches
---
duration_ms: 18.318277
...
# Subtest: Test: Do not translate content inside the style tags
ok 9 - Test: Do not translate content inside the style tags
---
duration_ms: 86.572064
...
1..9
ok 10 - Apertium machine translation
---
duration_ms: 362.274945
type: 'suite'
...
# Subtest: Elia machine translation
# Subtest: Should fail because of wrong key
ok 1 - Should fail because of wrong key
---
duration_ms: 6.679538
...
1..1
ok 11 - Elia machine translation
---
duration_ms: 8.533304
type: 'suite'
...
# Subtest: Google machine translation
# Subtest: Should fail because of wrong key
ok 1 - Should fail because of wrong key
---
duration_ms: 12.207761
...
1..1
ok 12 - Google machine translation
---
duration_ms: 13.902
type: 'suite'
...
# Subtest: LingoCloud machine translation
# Subtest: Should fail because of wrong key
ok 1 - Should fail because of wrong key
---
duration_ms: 7.763119
...
1..1
ok 13 - LingoCloud machine translation
---
duration_ms: 9.32298
type: 'suite'
...
# Subtest: Machine translation with wrapped html result
# Subtest: Should throw error
ok 1 - Should throw error
---
duration_ms: 13.341724
...
1..1
ok 14 - Machine translation with wrapped html result
---
duration_ms: 15.021107
type: 'suite'
...
# Subtest: Machine translation result with extra spaces
# Subtest: Should be cleaned up
ok 1 - Should be cleaned up
---
duration_ms: 118.394705
...
1..1
ok 15 - Machine translation result with extra spaces
---
duration_ms: 118.774481
type: 'suite'
...
# Subtest: Subsequence match finding
# Subtest: Should return correct range mapping
ok 1 - Should return correct range mapping
---
duration_ms: 2.48398
...
1..1
ok 16 - Subsequence match finding
---
duration_ms: 2.796746
type: 'suite'
...
# Subtest: Template translation
# Subtest: should not translate the fragement contents.
ok 1 - should not translate the fragement contents.
---
duration_ms: 108.061308
...
1..1
ok 17 - Template translation
---
duration_ms: 109.668429
type: 'suite'
...
# Subtest: Config transform tests
# Subtest: Simple cross product of languages
ok 1 - Simple cross product of languages
---
duration_ms: 4.392386
...
# Subtest: Do not translate between two variants of English
ok 2 - Do not translate between two variants of English
---
duration_ms: 0.325892
...
# Subtest: Exclude "notAsTarget" languages
ok 3 - Exclude "notAsTarget" languages
---
duration_ms: 0.184787
...
# Subtest: Handle pairs in the configuration
ok 4 - Handle pairs in the configuration
---
duration_ms: 0.419239
...
1..4
ok 18 - Config transform tests
---
duration_ms: 7.401107
type: 'suite'
...
# {"@timestamp":"2025-12-02T04:13:08.665Z","ecs.version":"8.10.0","log.level":"info","message":"Starting cxserver-dev","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:08.709Z","ecs.version":"8.10.0","log.level":"info","message":"responseTimeMetric","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:08.711Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 346 languages from the configuration","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:08.766Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 6 MT providers","service":"cxserver-dev"}
# Subtest: MWPageLoader tests
# Subtest: Test: Add data-section-number attribute to every CX section
ok 1 - Test: Add data-section-number attribute to every CX section
---
duration_ms: 23.432048
...
1..1
ok 19 - MWPageLoader tests
---
duration_ms: 140.782443
type: 'suite'
...
# Subtest: Section wrap tests
# Subtest: should parse correctly when section has common pattern of elements
ok 1 - should parse correctly when section has common pattern of elements
---
duration_ms: 1.961854
...
# Subtest: should extract correct number of categories when section has common pattern of elements
ok 2 - should extract correct number of categories when section has common pattern of elements
---
duration_ms: 1.265175
...
# Subtest: should parse correctly when section has categories to be extracted
ok 3 - should parse correctly when section has categories to be extracted
---
duration_ms: 0.14811
...
# Subtest: should extract correct number of categories when section has categories to be extracted
ok 4 - should extract correct number of categories when section has categories to be extracted
---
duration_ms: 0.128365
...
# Subtest: should parse correctly when content has nested sections and tricky transclusion context
ok 5 - should parse correctly when content has nested sections and tricky transclusion context
---
duration_ms: 0.294097
...
# Subtest: should extract correct number of categories when content has nested sections and tricky transclusion context
ok 6 - should extract correct number of categories when content has nested sections and tricky transclusion context
---
duration_ms: 0.16012
...
# Subtest: should parse correctly when content has blank template and then an unrelated table
ok 7 - should parse correctly when content has blank template and then an unrelated table
---
duration_ms: 0.125386
...
# Subtest: should extract correct number of categories when content has blank template and then an unrelated table
ok 8 - should extract correct number of categories when content has blank template and then an unrelated table
---
duration_ms: 0.161046
...
# Subtest: should parse correctly when content is complete page content with html, head tags and body having two templates with fragments
ok 9 - should parse correctly when content is complete page content with html, head tags and body having two templates with fragments
---
duration_ms: 0.273473
...
# Subtest: should extract correct number of categories when content is complete page content with html, head tags and body having two templates with fragments
ok 10 - should extract correct number of categories when content is complete page content with html, head tags and body having two templates with fragments
---
duration_ms: 0.244891
...
# Subtest: should parse correctly when Content has self closing meta tag
ok 11 - should parse correctly when Content has self closing meta tag
---
duration_ms: 0.34708
...
# Subtest: should extract correct number of categories when Content has self closing meta tag
ok 12 - should extract correct number of categories when Content has self closing meta tag
---
duration_ms: 0.181646
...
# Subtest: should parse correctly when Content has template fragments and one fragment is a section candidate. Section has categories too
ok 13 - should parse correctly when Content has template fragments and one fragment is a section candidate. Section has categories too
---
duration_ms: 0.237214
...
# Subtest: should extract correct number of categories when Content has template fragments and one fragment is a section candidate. Section has categories too
ok 14 - should extract correct number of categories when Content has template fragments and one fragment is a section candidate. Section has categories too
---
duration_ms: 0.142954
...
# Subtest: should parse correctly when Content has transclusion and one of its fragment get removed since it is ignorable.
ok 15 - should parse correctly when Content has transclusion and one of its fragment get removed since it is ignorable.
---
duration_ms: 0.306947
...
# Subtest: should extract correct number of categories when Content has transclusion and one of its fragment get removed since it is ignorable.
ok 16 - should extract correct number of categories when Content has transclusion and one of its fragment get removed since it is ignorable.
---
duration_ms: 0.182381
...
# Subtest: should parse correctly when Content has transclusion and same element is removable templatestyle. So do not remove
ok 17 - should parse correctly when Content has transclusion and same element is removable templatestyle. So do not remove
---
duration_ms: 0.152275
...
# Subtest: should extract correct number of categories when Content has transclusion and same element is removable templatestyle. So do not remove
ok 18 - should extract correct number of categories when Content has transclusion and same element is removable templatestyle. So do not remove
---
duration_ms: 0.377446
...
1..18
ok 20 - Section wrap tests
---
duration_ms: 10.314526
type: 'suite'
...
# {"@timestamp":"2025-12-02T04:13:08.874Z","ecs.version":"8.10.0","log.level":"info","message":"Starting cxserver-dev","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:08.936Z","ecs.version":"8.10.0","log.level":"info","message":"responseTimeMetric","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:08.938Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 346 languages from the configuration","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:09.028Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 6 MT providers","service":"cxserver-dev"}
# Subtest: Title pair tests
# Subtest: should adapt the title when: Corresponding title exist in target language
ok 1 - should adapt the title when: Corresponding title exist in target language
---
duration_ms: 214.764388
...
# Subtest: should adapt the title when: Corresponding title exist in target language
ok 2 - should adapt the title when: Corresponding title exist in target language
---
duration_ms: 1.024402
...
# Subtest: should adapt the title when: Corresponding title exist in target language and given title need normalization
ok 3 - should adapt the title when: Corresponding title exist in target language and given title need normalization
---
duration_ms: 0.251904
...
# Subtest: should adapt the title when: Corresponding title does not exist in target language and given title need normalization
ok 4 - should adapt the title when: Corresponding title does not exist in target language and given title need normalization
---
duration_ms: 0.274423
...
# Subtest: should adapt the title when: Corresponding title exist in target language and given title need normalization, has parenthesis
ok 5 - should adapt the title when: Corresponding title exist in target language and given title need normalization, has parenthesis
---
duration_ms: 0.219795
...
# Subtest: should adapt the title when: Source title is percentage encoded, but should not throw error, should return corresponding title
ok 6 - should adapt the title when: Source title is percentage encoded, but should not throw error, should return corresponding title
---
duration_ms: 0.750189
...
# Subtest: should have the queue size 50
ok 7 - should have the queue size 50
---
duration_ms: 2.152246
...
1..7
ok 21 - Title pair tests
---
duration_ms: 304.740078
...
# Subtest: Segmentation tests for am
# Subtest: should not have any errors when: Amharic segmentation - basic test
ok 1 - should not have any errors when: Amharic segmentation - basic test
---
duration_ms: 1.430267
...
1..1
ok 22 - Segmentation tests for am
---
duration_ms: 3.36418
type: 'suite'
...
# Subtest: Segmentation tests for en
# Subtest: should not have any errors when: Simple paragraph test
ok 1 - should not have any errors when: Simple paragraph test
---
duration_ms: 0.756392
...
# Subtest: should not have any errors when: Sentence ending with )
ok 2 - should not have any errors when: Sentence ending with )
---
duration_ms: 0.15381
...
# Subtest: should not have any errors when: Exclamation, punctuation test
ok 3 - should not have any errors when: Exclamation, punctuation test
---
duration_ms: 0.131072
...
# Subtest: should not have any errors when: Multiple sentences
ok 4 - should not have any errors when: Multiple sentences
---
duration_ms: 0.147868
...
# Subtest: should not have any errors when: Multiple sections - div, h1, paragraph
ok 5 - should not have any errors when: Multiple sections - div, h1, paragraph
---
duration_ms: 0.129093
...
# Subtest: should not have any errors when: Sentence starting with a link
ok 6 - should not have any errors when: Sentence starting with a link
---
duration_ms: 0.251949
...
# Subtest: should not have any errors when: Sentence starting with a link and ending with a link
ok 7 - should not have any errors when: Sentence starting with a link and ending with a link
---
duration_ms: 0.253103
...
# Subtest: should not have any errors when: Figure
ok 8 - should not have any errors when: Figure
---
duration_ms: 0.295749
...
# Subtest: should not have any errors when: References can appear after period without space. Example: Hydrogen is a gas.[1] It is ...
ok 9 - should not have any errors when: References can appear after period without space. Example: Hydrogen is a gas.[1] It is ...
---
duration_ms: 0.201518
...
# Subtest: should not have any errors when: References can appear after period without space, repeated. Example: Hydrogen is a gas.[1][2][3] It is ...
ok 10 - should not have any errors when: References can appear after period without space, repeated. Example: Hydrogen is a gas.[1][2][3] It is ...
---
duration_ms: 0.304286
...
# Subtest: should not have any errors when: References can appear inside a sentence. Example: Hydrogen is a gas[1] and it is ...
ok 11 - should not have any errors when: References can appear inside a sentence. Example: Hydrogen is a gas[1] and it is ...
---
duration_ms: 0.258845
...
# Subtest: should not have any errors when: References can appear inside a sentence. Example:Hydrogen's atomic number is one. Hydrogen is a gas[1] and it is ..... Test the flags are reset properly
ok 12 - should not have any errors when: References can appear inside a sentence. Example:Hydrogen's atomic number is one. Hydrogen is a gas[1] and it is ..... Test the flags are reset properly
---
duration_ms: 17.984645
...
# Subtest: should not have any errors when: References can appear repeated inside a sentence. Example: Hydrogen is a gas[1][2][3] and it is ...
ok 13 - should not have any errors when: References can appear repeated inside a sentence. Example: Hydrogen is a gas[1][2][3] and it is ...
---
duration_ms: 0.498552
...
# Subtest: should not have any errors when: References can appear after period and space. Example: Hydrogen is a gas. [1] It is ...
ok 14 - should not have any errors when: References can appear after period and space. Example: Hydrogen is a gas. [1] It is ...
---
duration_ms: 0.268674
...
# Subtest: should not have any errors when: Paragraph from Debian article- repeating references
ok 15 - should not have any errors when: Paragraph from Debian article- repeating references
---
duration_ms: 0.220059
...
# Subtest: should not have any errors when: References after closing bracket and period.
ok 16 - should not have any errors when: References after closing bracket and period.
---
duration_ms: 0.150175
...
# Subtest: should not have any errors when: Three sentences in a single text node
ok 17 - should not have any errors when: Three sentences in a single text node
---
duration_ms: 0.492304
...
# Subtest: should not have any errors when: Paragraph ending with reference and already having reference in between. The second reference should not be identified as repeating reference. If identified as repeating reference, 7 letters from last word will be missing.
ok 18 - should not have any errors when: Paragraph ending with reference and already having reference in between. The second reference should not be identified as repeating reference. If identified as repeating reference, 7 letters from last word will be missing.
---
duration_ms: 0.181852
...
# Subtest: should not have any errors when: Sentences ending with abbreviations
ok 19 - should not have any errors when: Sentences ending with abbreviations
---
duration_ms: 0.129257
...
# Subtest: should not have any errors when: link element inside span element
ok 20 - should not have any errors when: link element inside span element
---
duration_ms: 0.121448
...
# Subtest: should not have any errors when: Do not break inside of links with abbreviations. Example: Carl E. Wieman. See https://phabricator.wikimedia.org/T99504
ok 21 - should not have any errors when: Do not break inside of links with abbreviations. Example: Carl E. Wieman. See https://phabricator.wikimedia.org/T99504
---
duration_ms: 0.114585
...
# Subtest: should not have any errors when: A non-segmentable text chunk inside a textblock should not mark the whole text chunk non-segmentable
ok 22 - should not have any errors when: A non-segmentable text chunk inside a textblock should not mark the whole text chunk non-segmentable
---
duration_ms: 0.103665
...
# Subtest: should not have any errors when: Figure-inline segmentation. Do not violate the MediaWiki DOM spec https://www.mediawiki.org/wiki/Specs/HTML\#Images
ok 23 - should not have any errors when: Figure-inline segmentation. Do not violate the MediaWiki DOM spec https://www.mediawiki.org/wiki/Specs/HTML\#Images
---
duration_ms: 0.0979
...
# Subtest: should not have any errors when: Figure-inline inside a transclusions
ok 24 - should not have any errors when: Figure-inline inside a transclusions
---
duration_ms: 0.114096
...
# Subtest: should not have any errors when: Video tag in figure tag
ok 25 - should not have any errors when: Video tag in figure tag
---
duration_ms: 0.1351
...
# Subtest: should not have any errors when: Audio tag in figure tag
ok 26 - should not have any errors when: Audio tag in figure tag
---
duration_ms: 0.095364
...
# Subtest: should not have any errors when: Audio tag in figure-inline tag
ok 27 - should not have any errors when: Audio tag in figure-inline tag
---
duration_ms: 0.108217
...
# Subtest: should not have any errors when: Video tag in figure-inline tag
ok 28 - should not have any errors when: Video tag in figure-inline tag
---
duration_ms: 0.098539
...
# Subtest: should not have any errors when: Do not segment content inside block templates
ok 29 - should not have any errors when: Do not segment content inside block templates
---
duration_ms: 0.091116
...
# Subtest: should not have any errors when: about attribute alone does not initiate a transclusion context
ok 30 - should not have any errors when: about attribute alone does not initiate a transclusion context
---
duration_ms: 0.100825
...
# Subtest: should not have any errors when: Do not consider style tag with transclusion as block tag
ok 31 - should not have any errors when: Do not consider style tag with transclusion as block tag
---
duration_ms: 0.21479
...
# Subtest: should not have any errors when: Sections with singe paragraph and a transclusion based reference at th end - T283513
ok 32 - should not have any errors when: Sections with singe paragraph and a transclusion based reference at th end - T283513
---
duration_ms: 0.197142
...
# Subtest: should not have any errors when: Handle abbreviations such as Brown v. Board of education - T338689
ok 33 - should not have any errors when: Handle abbreviations such as Brown v. Board of education - T338689
---
duration_ms: 0.106481
...
1..33
ok 23 - Segmentation tests for en
---
duration_ms: 26.298968
type: 'suite'
...
# Subtest: Segmentation tests for de
# Subtest: should not have any errors when: Avoid segmenting inside a transclusion textblock
ok 1 - should not have any errors when: Avoid segmenting inside a transclusion textblock
---
duration_ms: 0.368578
...
1..1
ok 24 - Segmentation tests for de
---
duration_ms: 10.490894
type: 'suite'
...
# Subtest: Segmentation tests for hi
# Subtest: should not have any errors when: Hindi segmentation - basic test
ok 1 - should not have any errors when: Hindi segmentation - basic test
---
duration_ms: 0.220316
...
1..1
ok 25 - Segmentation tests for hi
---
duration_ms: 0.363377
type: 'suite'
...
# Subtest: Segmentation tests for hy
# Subtest: should not have any errors when: Armenian segmentation - basic test
ok 1 - should not have any errors when: Armenian segmentation - basic test
---
duration_ms: 0.188038
...
1..1
ok 26 - Segmentation tests for hy
---
duration_ms: 0.310491
type: 'suite'
...
# Subtest: Segmentation tests for ja
# Subtest: should not have any errors when: Japanese segmentation - basic test
ok 1 - should not have any errors when: Japanese segmentation - basic test
---
duration_ms: 0.114977
...
1..1
ok 27 - Segmentation tests for ja
---
duration_ms: 0.231584
type: 'suite'
...
# Subtest: Segmentation tests for zh
# Subtest: should not have any errors when: Chinese segmentation - basic test
ok 1 - should not have any errors when: Chinese segmentation - basic test
---
duration_ms: 0.155714
...
1..1
ok 28 - Segmentation tests for zh
---
duration_ms: 0.339014
type: 'suite'
...
# Subtest: Segmentation tests for pa
# Subtest: should not have any errors when: Punjabi segmentation - basic test
ok 1 - should not have any errors when: Punjabi segmentation - basic test
---
duration_ms: 3.534423
...
1..1
ok 29 - Segmentation tests for pa
---
duration_ms: 3.652573
type: 'suite'
...
# Subtest: SectionSuggester tests
# Subtest: should find present and missing sections
ok 1 - should find present and missing sections
---
duration_ms: 18.318121
...
# Subtest: should find present and missing sections with sizes when requested
ok 2 - should find present and missing sections with sizes when requested
---
duration_ms: 7.27194
...
1..2
ok 30 - SectionSuggester tests
---
duration_ms: 27.557747
type: 'suite'
...
# Subtest: /src/repo/test/testutils.js
ok 22 - /src/repo/test/testutils.js
---
duration_ms: 148.419539
...
# {"@timestamp":"2025-12-02T04:13:10.885Z","ecs.version":"8.10.0","log.level":"info","message":"Starting cxserver-dev","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:10.938Z","ecs.version":"8.10.0","log.level":"info","message":"responseTimeMetric","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:10.940Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 346 languages from the configuration","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:11.013Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 6 MT providers","service":"cxserver-dev"}
# Subtest: Link Adaptation tests
# Subtest: Basic test
ok 1 - Basic test
---
duration_ms: 210.220844
...
# Subtest: Space in the title
ok 2 - Space in the title
---
duration_ms: 6.250272
...
# Subtest: Relative URL
ok 3 - Relative URL
---
duration_ms: 0.691186
...
# Subtest: Title with parenthesis
ok 4 - Title with parenthesis
---
duration_ms: 3.257736
...
# Subtest: Target title does not exist
ok 5 - Target title does not exist
---
duration_ms: 0.824109
...
# Subtest: Title with translation from Wikidata label
ok 6 - Title with translation from Wikidata label
---
duration_ms: 3.659718
...
# Subtest: ISBN Link adaptation
ok 7 - ISBN Link adaptation
---
duration_ms: 0.977403
...
1..7
ok 32 - Link Adaptation tests
---
duration_ms: 387.996568
type: 'suite'
...
# {"@timestamp":"2025-12-02T04:13:10.897Z","ecs.version":"8.10.0","log.level":"info","message":"Starting cxserver-dev","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:10.947Z","ecs.version":"8.10.0","log.level":"info","message":"responseTimeMetric","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:10.949Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 346 languages from the configuration","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:11.031Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 6 MT providers","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:11.049Z","ecs.version":"8.10.0","log.level":"debug","message":"Not-adapting a reference node without data-mw.body.html: trncttm-2","service":"cxserver-dev"}
# Subtest: Reference adaptation
# Subtest: Adapting a reference with plain text content
ok 1 - Adapting a reference with plain text content
---
duration_ms: 4.995917
...
# Subtest: Adapting a reference with plain text content, sup tag
ok 2 - Adapting a reference with plain text content, sup tag
---
duration_ms: 0.467088
...
# Subtest: Adapting a reference with html content, sup tag
ok 3 - Adapting a reference with html content, sup tag
---
duration_ms: 0.263765
...
# Subtest: Not adapting a reference with no data-mw.body
ok 4 - Not adapting a reference with no data-mw.body
---
duration_ms: 0.50866
...
# Subtest: Partially adapting a reference with named reference
ok 5 - Partially adapting a reference with named reference
---
duration_ms: 0.395084
...
# {"@timestamp":"2025-12-02T04:13:11.459Z","ecs.version":"8.10.0","log.level":"error","message":"Not-adapting a template node with non-JSON data-mw: CITEREFGazette57855","service":"cxserver-dev"}
# Subtest: Mark the reference adaptation failed when the content defined in template not adapted
ok 6 - Mark the reference adaptation failed when the content defined in template not adapted
---
duration_ms: 386.445748
...
# Subtest: Mark the reference adaptation failed when the content defined in template and it is unsupported by CXserver
ok 7 - Mark the reference adaptation failed when the content defined in template and it is unsupported by CXserver
---
duration_ms: 31.936653
...
# Subtest: Partial reference adaptation, when mandatory params are not transferred successfully
ok 8 - Partial reference adaptation, when mandatory params are not transferred successfully
---
duration_ms: 149.283779
...
1..8
ok 33 - Reference adaptation
---
duration_ms: 740.725639
type: 'suite'
...
# {"@timestamp":"2025-12-02T04:13:11.200Z","ecs.version":"8.10.0","log.level":"info","message":"Starting cxserver-dev","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:11.246Z","ecs.version":"8.10.0","log.level":"info","message":"responseTimeMetric","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:11.260Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 346 languages from the configuration","service":"cxserver-dev"}
# {"@timestamp":"2025-12-02T04:13:11.306Z","ecs.version":"8.10.0","log.level":"debug","message":"Found 6 MT providers","service":"cxserver-dev"}
# Subtest: Template adaptation
# Subtest: Template with no equivalents
ok 1 - Template with no equivalents
---
duration_ms: 166.902721
...
# Subtest: Babel template
ok 2 - Babel template
---
duration_ms: 59.804266
...
# Subtest: Cite web template
ok 3 - Cite web template
---
duration_ms: 139.196409
...
# Subtest: Multi-part template for columns
ok 4 - Multi-part template for columns
---
duration_ms: 59.667665
...
# Subtest: Template with equivalents, but target template data missing, no params mapped
ok 5 - Template with equivalents, but target template data missing, no params mapped
---
duration_ms: 71.783315
...
# Subtest: Equivalent template exist, templatedata exists only for source language. Use that as hint for extracting params from template source code in target language
ok 6 - Equivalent template exist, templatedata exists only for source language. Use that as hint for extracting params from template source code in target language
---
duration_ms: 84.404799
...
# Subtest: Template with equivalents, all mandatory params mapped
ok 7 - Template with equivalents, all mandatory params mapped
---
duration_ms: 68.229038
...
# Subtest: Images that are generated by templates
ok 8 - Images that are generated by templates
---
duration_ms: 5.648419
...
1..8
ok 34 - Template adaptation
---
duration_ms: 738.134733
...
# Subtest: /src/repo/test/utils/assert.js
ok 26 - /src/repo/test/utils/assert.js
---
duration_ms: 719.045858
...
1..35
# tests 188
# suites 32
# pass 188
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 13345.962305
--- end ---
{"1110858": {"source": 1110858, "name": "body-parser", "dependency": "body-parser", "title": "body-parser is vulnerable to denial of service when url encoding is used", "url": "https://github.com/advisories/GHSA-wqch-xfxh-vrr4", "severity": "moderate", "cwe": ["CWE-400"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": ">=2.2.0 <2.2.1"}}
Upgrading n:body-parser from 1.20.3, 2.2.0 -> 1.20.3, 2.2.1
{"1111087": {"source": 1111087, "name": "express", "dependency": "express", "title": "express improperly controls modification of query properties", "url": "https://github.com/advisories/GHSA-pj86-cfqh-vqx6", "severity": "low", "cwe": ["CWE-915"], "cvss": {"score": 0, "vectorString": null}, "range": "<4.22.0"}}
Upgrading n:express from 4.21.2 -> 4.22.1
$ package-lock-lint /src/repo/package-lock.json
--- stdout ---
Checking /src/repo/package-lock.json
--- end ---
build: Updating npm dependencies
* body-parser: 1.20.3, 2.2.0 → 1.20.3, 2.2.1
* https://github.com/advisories/GHSA-wqch-xfxh-vrr4
* express: 4.21.2 → 4.22.1
* https://github.com/advisories/GHSA-pj86-cfqh-vqx6
$ git add .
--- stdout ---
--- end ---
$ git commit -F /tmp/tmp60xwei8g
--- stdout ---
[master fc7cb0f] build: Updating npm dependencies
1 file changed, 42 insertions(+), 25 deletions(-)
--- end ---
$ git format-patch HEAD~1 --stdout
--- stdout ---
From fc7cb0f5e74a39f30d24b90126ea61fda2c8ef8c Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Tue, 2 Dec 2025 04:13:12 +0000
Subject: [PATCH] build: Updating npm dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* body-parser: 1.20.3, 2.2.0 → 1.20.3, 2.2.1
* https://github.com/advisories/GHSA-wqch-xfxh-vrr4
* express: 4.21.2 → 4.22.1
* https://github.com/advisories/GHSA-pj86-cfqh-vqx6
Change-Id: I99ed646cceb6f7b9e0cbad29abc2f53777c0a618
---
package-lock.json | 67 +++++++++++++++++++++++++++++------------------
1 file changed, 42 insertions(+), 25 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index e032c54..23a38d7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3002,23 +3002,41 @@
"license": "MIT"
},
"node_modules/body-parser": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
- "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==",
- "license": "MIT",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.1.tgz",
+ "integrity": "sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==",
"dependencies": {
"bytes": "^3.1.2",
"content-type": "^1.0.5",
- "debug": "^4.4.0",
+ "debug": "^4.4.3",
"http-errors": "^2.0.0",
- "iconv-lite": "^0.6.3",
+ "iconv-lite": "^0.7.0",
"on-finished": "^2.4.1",
"qs": "^6.14.0",
- "raw-body": "^3.0.0",
- "type-is": "^2.0.0"
+ "raw-body": "^3.0.1",
+ "type-is": "^2.0.1"
},
"engines": {
"node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/body-parser/node_modules/iconv-lite": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
+ "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/boolbase": {
@@ -5316,39 +5334,38 @@
}
},
"node_modules/express": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
- "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
- "license": "MIT",
+ "version": "4.22.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz",
+ "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.20.3",
- "content-disposition": "0.5.4",
+ "body-parser": "~1.20.3",
+ "content-disposition": "~0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.7.1",
- "cookie-signature": "1.0.6",
+ "cookie": "~0.7.1",
+ "cookie-signature": "~1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "1.3.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
+ "finalhandler": "~1.3.1",
+ "fresh": "~0.5.2",
+ "http-errors": "~2.0.0",
"merge-descriptors": "1.0.3",
"methods": "~1.1.2",
- "on-finished": "2.4.1",
+ "on-finished": "~2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.12",
+ "path-to-regexp": "~0.1.12",
"proxy-addr": "~2.0.7",
- "qs": "6.13.0",
+ "qs": "~6.14.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.19.0",
- "serve-static": "1.16.2",
+ "send": "~0.19.0",
+ "serve-static": "~1.16.2",
"setprototypeof": "1.2.0",
- "statuses": "2.0.1",
+ "statuses": "~2.0.1",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
--
2.47.3
--- end ---