Merge branch 'gchq:master' into RenderPDF

This commit is contained in:
Shailendra Singh 2026-06-19 17:19:06 +05:30 committed by GitHub
commit 613002f84e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 59 additions and 36 deletions

View File

@ -4,7 +4,7 @@
# Modifier --platform=$BUILDPLATFORM limits the platform to "BUILDPLATFORM" during buildx multi-platform builds # Modifier --platform=$BUILDPLATFORM limits the platform to "BUILDPLATFORM" during buildx multi-platform builds
# This is because npm "chromedriver" package is not compatiable with all platforms # This is because npm "chromedriver" package is not compatiable with all platforms
# For more info see: https://docs.docker.com/build/building/multi-platform/#cross-compilation # For more info see: https://docs.docker.com/build/building/multi-platform/#cross-compilation
FROM --platform=$BUILDPLATFORM node:24-alpine@sha256:fb71d01345f11b708a3553c66e7c74074f2d506400ea81973343d915cb64eef0 AS builder FROM --platform=$BUILDPLATFORM node:24-alpine@sha256:156b55f92e98ccd5ef49578a8cea0df4679826564bad1c9d4ef04462b9f0ded6 AS builder
WORKDIR /app WORKDIR /app
@ -27,7 +27,7 @@ RUN npm run build
######################################### #########################################
# Package static build files into nginx # # Package static build files into nginx #
######################################### #########################################
FROM nginxinc/nginx-unprivileged:stable-alpine@sha256:37f356a5eba5d187365b4f59cd6cc29f1f922ad18146d554b576a80983377e6a AS cyberchef FROM nginxinc/nginx-unprivileged:stable-alpine@sha256:fafa1102c789119971b3d83f9293f1ef5526bc73583a12e13ff5cd1299ed8b6c AS cyberchef
LABEL maintainer="GCHQ <oss@gchq.gov.uk>" LABEL maintainer="GCHQ <oss@gchq.gov.uk>"

56
package-lock.json generated
View File

@ -21,7 +21,7 @@
"assert": "^2.1.0", "assert": "^2.1.0",
"avsc": "^5.7.9", "avsc": "^5.7.9",
"bcryptjs": "^3.0.3", "bcryptjs": "^3.0.3",
"bignumber.js": "^11.1.3", "bignumber.js": "^11.1.4",
"blakejs": "^1.2.1", "blakejs": "^1.2.1",
"bootstrap": "4.6.2", "bootstrap": "4.6.2",
"bootstrap-colorpicker": "^3.4.0", "bootstrap-colorpicker": "^3.4.0",
@ -39,7 +39,7 @@
"d3": "7.9.0", "d3": "7.9.0",
"d3-hexbin": "^0.2.2", "d3-hexbin": "^0.2.2",
"diff": "^9.0.0", "diff": "^9.0.0",
"dompurify": "^3.4.9", "dompurify": "^3.4.11",
"es6-promisify": "^7.0.0", "es6-promisify": "^7.0.0",
"escodegen": "^2.1.0", "escodegen": "^2.1.0",
"esprima": "^4.0.1", "esprima": "^4.0.1",
@ -85,7 +85,7 @@
"path": "^0.12.7", "path": "^0.12.7",
"popper.js": "^1.16.1", "popper.js": "^1.16.1",
"process": "^0.11.10", "process": "^0.11.10",
"protobufjs": "^8.6.2", "protobufjs": "^8.6.4",
"punycode.js": "^2.3.1", "punycode.js": "^2.3.1",
"qr-image": "^3.2.0", "qr-image": "^3.2.0",
"reflect-metadata": "^0.2.2", "reflect-metadata": "^0.2.2",
@ -116,7 +116,7 @@
"@babel/runtime": "^7.29.7", "@babel/runtime": "^7.29.7",
"@codemirror/commands": "^6.10.3", "@codemirror/commands": "^6.10.3",
"@codemirror/language": "^6.12.3", "@codemirror/language": "^6.12.3",
"@codemirror/search": "^6.7.0", "@codemirror/search": "^6.7.1",
"@codemirror/state": "^6.5.4", "@codemirror/state": "^6.5.4",
"@codemirror/view": "^6.43.1", "@codemirror/view": "^6.43.1",
"@puppeteer/browsers": "3.0.4", "@puppeteer/browsers": "3.0.4",
@ -159,7 +159,7 @@
"terser": "^5.48.0", "terser": "^5.48.0",
"webpack": "^5.107.2", "webpack": "^5.107.2",
"webpack-bundle-analyzer": "^5.3.0", "webpack-bundle-analyzer": "^5.3.0",
"webpack-dev-server": "^5.2.4", "webpack-dev-server": "^5.2.5",
"webpack-node-externals": "^3.0.0", "webpack-node-externals": "^3.0.0",
"worker-loader": "^3.0.8" "worker-loader": "^3.0.8"
}, },
@ -1876,9 +1876,9 @@
} }
}, },
"node_modules/@codemirror/search": { "node_modules/@codemirror/search": {
"version": "6.7.0", "version": "6.7.1",
"resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.7.0.tgz", "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.7.1.tgz",
"integrity": "sha512-ZvGm99wc/s2cITtMT15LFdn8aH/aS+V+DqyGq/N5ZlV5vWtH+nILvC2nw0zX7ByNoHHDZ2IxxdW38O0tc5nVHg==", "integrity": "sha512-uMe5UO6PamJtSHrXhhHOzSX3ReWtiJrva6GnPMwSOrZtiExb5X5eExhr2OUZQVvdxPsKpY3Ro2mFbQadpPWmHA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -5794,9 +5794,9 @@
} }
}, },
"node_modules/bignumber.js": { "node_modules/bignumber.js": {
"version": "11.1.3", "version": "11.1.4",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-11.1.3.tgz", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-11.1.4.tgz",
"integrity": "sha512-+esZiNSo6VgFokTsYX6mYqNJfFd/IczzZCd4Z7cR8e+AQWhvIcj6nqQ1h9814D9u/TApU0jjTVmfWL0Pd1ZBdA==", "integrity": "sha512-AJ9dSeaUGj2xu7tEwmdqb51dqdb633xo4njI9K8ZFfcLrNr0XN8/EPkkZUNaF9fkCblGt2zVwZymesUdGynEkQ==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/binary-extensions": { "node_modules/binary-extensions": {
@ -8585,9 +8585,9 @@
} }
}, },
"node_modules/dompurify": { "node_modules/dompurify": {
"version": "3.4.9", "version": "3.4.11",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.9.tgz", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.11.tgz",
"integrity": "sha512-4dPSRMRDqHvs0V4YDFCsaIZo4if5u0xM+llyxiM2fwuZFdKArUBAF3VtI2+n8NKg9P870WMdYk0UhqQNoWXbfQ==", "integrity": "sha512-zhlUV12GsaRzMsf9q5M254YhA4+VuF0fG+QFqu6aYpoGlKtz+w8//jBcGVYBgQkR5GHjUomejY84AV+/uPbWdw==",
"license": "(MPL-2.0 OR Apache-2.0)", "license": "(MPL-2.0 OR Apache-2.0)",
"optionalDependencies": { "optionalDependencies": {
"@types/trusted-types": "^2.0.7" "@types/trusted-types": "^2.0.7"
@ -9865,17 +9865,17 @@
} }
}, },
"node_modules/form-data": { "node_modules/form-data": {
"version": "4.0.5", "version": "4.0.6",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz",
"integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"asynckit": "^0.4.0", "asynckit": "^0.4.0",
"combined-stream": "^1.0.8", "combined-stream": "^1.0.8",
"es-set-tostringtag": "^2.1.0", "es-set-tostringtag": "^2.1.0",
"hasown": "^2.0.2", "hasown": "^2.0.4",
"mime-types": "^2.1.12" "mime-types": "^2.1.35"
}, },
"engines": { "engines": {
"node": ">= 6" "node": ">= 6"
@ -10907,9 +10907,9 @@
} }
}, },
"node_modules/hasown": { "node_modules/hasown": {
"version": "2.0.2", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"function-bind": "^1.1.2" "function-bind": "^1.1.2"
@ -15086,9 +15086,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/protobufjs": { "node_modules/protobufjs": {
"version": "8.6.2", "version": "8.6.4",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-8.6.2.tgz", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-8.6.4.tgz",
"integrity": "sha512-CCERJxzRvKMeEdJSLwdQf40TXWNPc8M4RkN7j/lxY6FQB+4do8rETWqj60AqxP9n0XIsxnSefZ8uhAaGKg2njw==", "integrity": "sha512-/+XMv9JalknuncEJSwsyEVlwcxVLKx2iaoSUXFZA86MJkdqyOdfrlB1sB7S6aKyUk9tl20YY+SgQe5J2sJHTcg==",
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"dependencies": { "dependencies": {
"long": "^5.3.2" "long": "^5.3.2"
@ -18112,9 +18112,9 @@
} }
}, },
"node_modules/webpack-dev-server": { "node_modules/webpack-dev-server": {
"version": "5.2.4", "version": "5.2.5",
"resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.4.tgz", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.5.tgz",
"integrity": "sha512-GqDPGZN9bRqKBTkp4aWkobDDHMsrXKoGSdOH56smIri8qR0JG8gfL8/v/f/OZR3/OKXjG8uwJbFVhKm/FNU/UA==", "integrity": "sha512-4wZtCquSuv9CKX8oybo+mqxtxZqWz47uM1Ch94lxowBztOhWCbhqvRbfC/mODOwxgV2brY+JGZpHq58/SuVFYg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {

View File

@ -46,7 +46,7 @@
"@babel/runtime": "^7.29.7", "@babel/runtime": "^7.29.7",
"@codemirror/commands": "^6.10.3", "@codemirror/commands": "^6.10.3",
"@codemirror/language": "^6.12.3", "@codemirror/language": "^6.12.3",
"@codemirror/search": "^6.7.0", "@codemirror/search": "^6.7.1",
"@codemirror/state": "^6.5.4", "@codemirror/state": "^6.5.4",
"@codemirror/view": "^6.43.1", "@codemirror/view": "^6.43.1",
"@puppeteer/browsers": "3.0.4", "@puppeteer/browsers": "3.0.4",
@ -89,7 +89,7 @@
"terser": "^5.48.0", "terser": "^5.48.0",
"webpack": "^5.107.2", "webpack": "^5.107.2",
"webpack-bundle-analyzer": "^5.3.0", "webpack-bundle-analyzer": "^5.3.0",
"webpack-dev-server": "^5.2.4", "webpack-dev-server": "^5.2.5",
"webpack-node-externals": "^3.0.0", "webpack-node-externals": "^3.0.0",
"worker-loader": "^3.0.8" "worker-loader": "^3.0.8"
}, },
@ -105,7 +105,7 @@
"assert": "^2.1.0", "assert": "^2.1.0",
"avsc": "^5.7.9", "avsc": "^5.7.9",
"bcryptjs": "^3.0.3", "bcryptjs": "^3.0.3",
"bignumber.js": "^11.1.3", "bignumber.js": "^11.1.4",
"blakejs": "^1.2.1", "blakejs": "^1.2.1",
"bootstrap": "4.6.2", "bootstrap": "4.6.2",
"bootstrap-colorpicker": "^3.4.0", "bootstrap-colorpicker": "^3.4.0",
@ -123,7 +123,7 @@
"d3": "7.9.0", "d3": "7.9.0",
"d3-hexbin": "^0.2.2", "d3-hexbin": "^0.2.2",
"diff": "^9.0.0", "diff": "^9.0.0",
"dompurify": "^3.4.9", "dompurify": "^3.4.11",
"es6-promisify": "^7.0.0", "es6-promisify": "^7.0.0",
"escodegen": "^2.1.0", "escodegen": "^2.1.0",
"esprima": "^4.0.1", "esprima": "^4.0.1",
@ -169,7 +169,7 @@
"path": "^0.12.7", "path": "^0.12.7",
"popper.js": "^1.16.1", "popper.js": "^1.16.1",
"process": "^0.11.10", "process": "^0.11.10",
"protobufjs": "^8.6.2", "protobufjs": "^8.6.4",
"punycode.js": "^2.3.1", "punycode.js": "^2.3.1",
"qr-image": "^3.2.0", "qr-image": "^3.2.0",
"reflect-metadata": "^0.2.2", "reflect-metadata": "^0.2.2",

View File

@ -24,6 +24,14 @@
height: 100%; height: 100%;
user-select: auto; user-select: auto;
} }
#output-html > img {
display: block;
max-width: 100%;
max-height: 100%;
margin: auto;
}
#output-text.html-output .cm-line .cm-widgetBuffer, #output-text.html-output .cm-line .cm-widgetBuffer,
#output-text.html-output .cm-line>br { #output-text.html-output .cm-line>br {
display: none; display: none;

View File

@ -492,7 +492,22 @@ function testOpImage(browser, opName, filename, args=[]) {
browser browser
.waitForElementVisible("#output-html img") .waitForElementVisible("#output-html img")
.expect.element("#output-html img").to.have.css("width").which.matches(/^[^0]\d*px/); .expect.element("#output-html img").to.have.css("width").which.matches(/^(?!0+(?:\.0+)?px$)\d+(?:\.\d+)?px$/);
browser.execute(function() {
const output = document.getElementById("output-html");
const img = output.querySelector("img");
const outputRect = output.getBoundingClientRect();
const imgRect = img.getBoundingClientRect();
return {
imageFitsWidth: imgRect.width <= outputRect.width,
imageFitsHeight: imgRect.height <= outputRect.height,
};
}, [], function({value}) {
browser.expect(value.imageFitsWidth).to.be.equal(true);
browser.expect(value.imageFitsHeight).to.be.equal(true);
});
} }
/** @function /** @function