Merge branch 'master' into fix/from-decimal-auto-delim

This commit is contained in:
min23asdw 2026-04-22 18:14:44 +07:00 committed by GitHub
commit 517ad85c32
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 531 additions and 188 deletions

View File

@ -43,6 +43,8 @@ updates:
versions: [ '>=0.4.0' ] versions: [ '>=0.4.0' ]
- dependency-name: 'geodesy' - dependency-name: 'geodesy'
versions: [ '>=2.0.0' ] versions: [ '>=2.0.0' ]
- dependency-name: 'jimp'
versions: [ '1.6.1' ]
- dependency-name: 'otpauth' - dependency-name: 'otpauth'
versions: [ '>=9.4.0' ] versions: [ '>=9.4.0' ]
- dependency-name: 'webpack-dev-server' - dependency-name: 'webpack-dev-server'

View File

@ -26,8 +26,7 @@ jobs:
- name: Install - name: Install
run: | run: |
export DETECT_CHROMEDRIVER_VERSION=true npm ci
npm install
npm run setheapsize npm run setheapsize
- name: Lint - name: Lint

View File

@ -22,8 +22,7 @@ jobs:
- name: Install - name: Install
run: | run: |
export DETECT_CHROMEDRIVER_VERSION=true npm ci
npm install
npm run setheapsize npm run setheapsize
- name: Lint - name: Lint
@ -38,7 +37,22 @@ jobs:
if: success() if: success()
run: npx grunt prod run: npx grunt prod
- name: Upload Build Artefact
if: success()
uses: actions/upload-artifact@v7
with:
name: zipped-build
path: build/prod/*.zip
retention-days: 5
- name: UI Tests
if: success()
run: |
sudo apt-get install xvfb
xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui
- name: Set up Docker Buildx - name: Set up Docker Buildx
if: success()
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
- name: Set up QEMU - name: Set up QEMU
@ -50,8 +64,3 @@ jobs:
uses: docker/build-push-action@v6 uses: docker/build-push-action@v6
with: with:
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
- name: UI Tests
if: success()
run: |
sudo apt-get install xvfb
xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui

View File

@ -32,7 +32,6 @@ jobs:
- name: Install - name: Install
run: | run: |
export DETECT_CHROMEDRIVER_VERSION=true
npm ci npm ci
npm run setheapsize npm run setheapsize

View File

@ -13,6 +13,64 @@ All major and minor version changes will be documented in this file. Details of
## Details ## Details
### [10.23.0] - 2026-04-06
- Properly escape HTML entities in sampleDelim to avoid XSS issue [@GCHQDeveloper581] | [#2307]
- chore (deps): bump lodash from 4.17.23 to 4.18.1 | [#2304]
- chore (deps): bump @codemirror/view from 6.40.0 to 6.41.0 | [#2305]
- chore (deps): bump the patch-updates group with 2 updates | [#2303]
- chore (deps): bump @xmldom/xmldom from 0.8.11 to 0.8.12 | [#2302]
- chore (deps): bump picomatch | [#2299]
- chore (deps): bump node-forge from 1.3.3 to 1.4.0 | [#2297]
- chore (deps): bump the patch-updates group with 3 updates | [#2296]
- chore (deps) bump chromedriver from 130.0.4 to 146.0.6 [@GCHQDeveloper581] | [#2292]
- ParseEthernetFrame - Fix vlan calculation [@Kalkran] | [#2295]
- Add pull request template with AI usage disclosure [@C85297] | [#2279]
- fix: return empty output for zero-length To Modhex input [@saschabuehrle] | [#2249]
- Added tab focus to top banner and navigation to About/Support Modal [@j264415] | [#1733]
- Add Parse Ethernet frame Operation, allow Parse IPv4 Header to cascade [@Kalkran] | [#1722]
- Selection and Deselection of autobake checkbox using keyboard [@j264415] | [#1727]
- chore (deps): bump @babel/runtime from 7.28.6 to 7.29.2 | [#2263]
- Add more helpful error for when numerical ingredient is left empty [@Lamby777] [@C85297] | [#1540]
- chore (deps): bump @codemirror/view from 6.39.17 to 6.40.0 | [#2262]
- Bump flatted from 3.3.2 to 3.4.2 [@GCHQDeveloper581] | [#2266]
- feat: add Raw option for Jq operation [@rtpt-romankarwacik] | [#2237]
- chore (deps): bump core-js from 3.48.0 to 3.49.0 | [#2261]
- chore (deps): bump the patch-updates group with 6 updates | [#2260]
- Add Extract Audio Metadata operation [@d0s1nt] [@GCHQDeveloper581] | [#2170]
- Fix Jq issue [@GCHQDeveloper581] | [#2210]
- Configure dependabot updates [@GCHQDeveloper581] | [#2259]
- fix(A1Z26): return empty string instead of empty array for empty input [@brick-pixel] | [#2257]
- Fix broken Docker link in README [@am-periphery] | [#2250]
- Update some dependencies, including a number causing npm audit warnings [@GCHQDeveloper581] | [#2236]
- Bump axios from 1.7.9 to 1.13.6 | [#2234]
- Bump jws from 3.2.2 to 3.2.3 | [#2235]
- Bump pbkdf2 from 3.1.2 to 3.1.5 | [#2229]
- Bump form-data from 4.0.1 to 4.0.5 | [#2228]
- Bump basic-ftp from 5.0.5 to 5.2.0 | [#2231]
- feat: add ARM disassembler operation [@thomasxm] | [#2156]
- Add Text/Integer Converter operation [@p-leriche] [@GCHQDeveloper581] | [#2213]
- Feat/rc6 add RC6 Encrypt/Decrypt operations [@thomasxm] | [#2163]
- [bugfix] Add Bootstrap form style for CodeMirror editor [@Swonkie] | [#2161]
- Add Flask Session operations (Decode, Sign, Verify) [@ThePlayer372-FR] | [#2208]
- fix: `jq-web` -> `jq-wasm`, includes `jq` version `1.8.1` [@W-Floyd] [@GCHQDeveloper581] | [#2223]
- Bump jsonwebtoken from 8.5.1 to 9.0.0 [@GCHQDeveloper581] | [#2219]
- Bump basic-ftp from 5.0.5 to 5.2.0 | [#2218]
- feat: add random integer generation operation [@cktgh] | [#2151]
- Add BigInt utility functions for number theory operations [@p-leriche] [@GCHQDeveloper581] | [#2205]
- Improve SQL Beautify: use sql-formatter and support bind variables [@aby-jo] [@GCHQDeveloper581] | [#2071]
- update tesseract.js to 6.0.1 [@atsiv1] | [#2133]
- Fix hint tooltip display issues [@bartvanandel] | [#2017]
- Simplify babel dependencies [@GCHQDeveloper581] | [#2204]
- Dependency updates [@GCHQDeveloper581] | [#2201]
- Fix: Move Magic checks from Escape to Unescape Unicode Characters [@fjh1997] | [#2195]
- Paste spreadsheets as text [@C85297] | [#2200]
- Fix Roboto Mono font [@C85297] | [#2199]
- Fix return of buffer for PNG QR image generation [@GCHQDeveloper581] [@C85297] | [#2125]
- Update JIMP [@C85297] | [#2171]
- Overwrite NGINX maintainer label [@C85297] | [#2194]
- Bump v10.22.1 [@GCHQDeveloper581] | [#2193]
- Fix npm publish - Run "npm ci" and "npm run node" under node 18 then switch to node 24.5 [@GCHQDeveloper581] | [#2192]
### [10.22.0] - 2026-02-11 ### [10.22.0] - 2026-02-11
- Separate npm publish out into separate job and run with Node 24.5 [@GCHQDeveloper581] | [#2188] - Separate npm publish out into separate job and run with Node 24.5 [@GCHQDeveloper581] | [#2188]
- Fixed Percent delimiter for hex encoding [@beneri] [@C85297] | [#2137] - Fixed Percent delimiter for hex encoding [@beneri] [@C85297] | [#2137]
@ -538,6 +596,7 @@ All major and minor version changes will be documented in this file. Details of
## [4.0.0] - 2016-11-28 ## [4.0.0] - 2016-11-28
- Initial open source commit [@n1474335] | [b1d73a72](https://github.com/gchq/CyberChef/commit/b1d73a725dc7ab9fb7eb789296efd2b7e4b08306) - Initial open source commit [@n1474335] | [b1d73a72](https://github.com/gchq/CyberChef/commit/b1d73a725dc7ab9fb7eb789296efd2b7e4b08306)
[10.23.0]: https://github.com/gchq/CyberChef/releases/tag/v10.23.0
[10.22.0]: https://github.com/gchq/CyberChef/releases/tag/v10.22.0 [10.22.0]: https://github.com/gchq/CyberChef/releases/tag/v10.22.0
[10.21.0]: https://github.com/gchq/CyberChef/releases/tag/v10.21.0 [10.21.0]: https://github.com/gchq/CyberChef/releases/tag/v10.21.0
[10.20.0]: https://github.com/gchq/CyberChef/releases/tag/v10.20.0 [10.20.0]: https://github.com/gchq/CyberChef/releases/tag/v10.20.0
@ -797,6 +856,22 @@ All major and minor version changes will be documented in this file. Details of
[@t-martine]: https://github.com/t-martine [@t-martine]: https://github.com/t-martine
[@wesinator]: https://github.com/wesinator [@wesinator]: https://github.com/wesinator
[@Raka-loah]: https://github.com/Raka-loah [@Raka-loah]: https://github.com/Raka-loah
[@Kalkran]: https://github.com/Kalkran
[@saschabuehrle]: https://github.com/saschabuehrle
[@j264415]: https://github.com/j264415
[@Lamby777]: https://github.com/Lamby777
[@rtpt-romankarwacik]: https://github.com/rtpt-romankarwacik
[@d0s1nt]: https://github.com/d0s1nt
[@brick-pixel]: https://github.com/brick-pixel
[@am-periphery]: https://github.com/am-periphery
[@p-leriche]: https://github.com/p-leriche
[@Swonkie]: https://github.com/Swonkie
[@ThePlayer372-FR]: https://github.com/ThePlayer372-FR
[@W-Floyd]: https://github.com/W-Floyd
[@cktgh]: https://github.com/cktgh
[@aby-jo]: https://github.com/aby-jo
[@atsiv1]: https://github.com/atsiv1
[@fjh1997]: https://github.com/fjh1997
[8ad18b]: https://github.com/gchq/CyberChef/commit/8ad18bc7db6d9ff184ba3518686293a7685bf7b7 [8ad18b]: https://github.com/gchq/CyberChef/commit/8ad18bc7db6d9ff184ba3518686293a7685bf7b7
@ -1010,4 +1085,60 @@ All major and minor version changes will be documented in this file. Details of
[#2183]: https://github.com/gchq/CyberChef/pull/2183 [#2183]: https://github.com/gchq/CyberChef/pull/2183
[#2182]: https://github.com/gchq/CyberChef/pull/2182 [#2182]: https://github.com/gchq/CyberChef/pull/2182
[#2181]: https://github.com/gchq/CyberChef/pull/2181 [#2181]: https://github.com/gchq/CyberChef/pull/2181
[#2307]: https://github.com/gchq/CyberChef/pull/2307
[#2304]: https://github.com/gchq/CyberChef/pull/2304
[#2305]: https://github.com/gchq/CyberChef/pull/2305
[#2303]: https://github.com/gchq/CyberChef/pull/2303
[#2302]: https://github.com/gchq/CyberChef/pull/2302
[#2299]: https://github.com/gchq/CyberChef/pull/2299
[#2297]: https://github.com/gchq/CyberChef/pull/2297
[#2296]: https://github.com/gchq/CyberChef/pull/2296
[#2292]: https://github.com/gchq/CyberChef/pull/2292
[#2295]: https://github.com/gchq/CyberChef/pull/2295
[#2279]: https://github.com/gchq/CyberChef/pull/2279
[#2249]: https://github.com/gchq/CyberChef/pull/2249
[#1733]: https://github.com/gchq/CyberChef/pull/1733
[#1722]: https://github.com/gchq/CyberChef/pull/1722
[#1727]: https://github.com/gchq/CyberChef/pull/1727
[#2263]: https://github.com/gchq/CyberChef/pull/2263
[#1540]: https://github.com/gchq/CyberChef/pull/1540
[#2262]: https://github.com/gchq/CyberChef/pull/2262
[#2266]: https://github.com/gchq/CyberChef/pull/2266
[#2237]: https://github.com/gchq/CyberChef/pull/2237
[#2261]: https://github.com/gchq/CyberChef/pull/2261
[#2260]: https://github.com/gchq/CyberChef/pull/2260
[#2170]: https://github.com/gchq/CyberChef/pull/2170
[#2210]: https://github.com/gchq/CyberChef/pull/2210
[#2259]: https://github.com/gchq/CyberChef/pull/2259
[#2257]: https://github.com/gchq/CyberChef/pull/2257
[#2250]: https://github.com/gchq/CyberChef/pull/2250
[#2236]: https://github.com/gchq/CyberChef/pull/2236
[#2234]: https://github.com/gchq/CyberChef/pull/2234
[#2235]: https://github.com/gchq/CyberChef/pull/2235
[#2229]: https://github.com/gchq/CyberChef/pull/2229
[#2228]: https://github.com/gchq/CyberChef/pull/2228
[#2231]: https://github.com/gchq/CyberChef/pull/2231
[#2156]: https://github.com/gchq/CyberChef/pull/2156
[#2213]: https://github.com/gchq/CyberChef/pull/2213
[#2163]: https://github.com/gchq/CyberChef/pull/2163
[#2161]: https://github.com/gchq/CyberChef/pull/2161
[#2208]: https://github.com/gchq/CyberChef/pull/2208
[#2223]: https://github.com/gchq/CyberChef/pull/2223
[#2219]: https://github.com/gchq/CyberChef/pull/2219
[#2218]: https://github.com/gchq/CyberChef/pull/2218
[#2151]: https://github.com/gchq/CyberChef/pull/2151
[#2205]: https://github.com/gchq/CyberChef/pull/2205
[#2071]: https://github.com/gchq/CyberChef/pull/2071
[#2133]: https://github.com/gchq/CyberChef/pull/2133
[#2017]: https://github.com/gchq/CyberChef/pull/2017
[#2204]: https://github.com/gchq/CyberChef/pull/2204
[#2201]: https://github.com/gchq/CyberChef/pull/2201
[#2195]: https://github.com/gchq/CyberChef/pull/2195
[#2200]: https://github.com/gchq/CyberChef/pull/2200
[#2199]: https://github.com/gchq/CyberChef/pull/2199
[#2125]: https://github.com/gchq/CyberChef/pull/2125
[#2171]: https://github.com/gchq/CyberChef/pull/2171
[#2194]: https://github.com/gchq/CyberChef/pull/2194
[#2193]: https://github.com/gchq/CyberChef/pull/2193
[#2192]: https://github.com/gchq/CyberChef/pull/2192

View File

@ -411,25 +411,11 @@ module.exports = function (grunt) {
stdout: false, stdout: false,
}, },
fixCryptoApiImports: { fixCryptoApiImports: {
command: function () { command: `node ${nodeFlags} src/core/config/scripts/fixCryptoApiImports.mjs`,
switch (process.platform) {
case "darwin":
return `find ./node_modules/crypto-api/src/ \\( -type d -name .git -prune \\) -o -type f -print0 | xargs -0 sed -i '' -e '/\\.mjs/!s/\\(from "\\.[^"]*\\)";/\\1.mjs";/g'`;
default:
return `find ./node_modules/crypto-api/src/ \\( -type d -name .git -prune \\) -o -type f -print0 | xargs -0 sed -i -e '/\\.mjs/!s/\\(from "\\.[^"]*\\)";/\\1.mjs";/g'`;
}
},
stdout: false stdout: false
}, },
fixSnackbarMarkup: { fixSnackbarMarkup: {
command: function () { command: `node ${nodeFlags} src/core/config/scripts/fixSnackBarMarkup.mjs`,
switch (process.platform) {
case "darwin":
return `sed -i '' 's/<div id=snackbar-container\\/>/<div id=snackbar-container>/g' ./node_modules/snackbarjs/src/snackbar.js`;
default:
return `sed -i 's/<div id=snackbar-container\\/>/<div id=snackbar-container>/g' ./node_modules/snackbarjs/src/snackbar.js`;
}
},
stdout: false stdout: false
}, },
}, },

290
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "cyberchef", "name": "cyberchef",
"version": "10.22.1", "version": "10.23.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "cyberchef", "name": "cyberchef",
"version": "10.22.1", "version": "10.23.0",
"hasInstallScript": true, "hasInstallScript": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
@ -14,9 +14,9 @@
"@astronautlabs/amf": "^0.0.6", "@astronautlabs/amf": "^0.0.6",
"@blu3r4y/lzma": "^2.3.3", "@blu3r4y/lzma": "^2.3.3",
"@wavesenterprise/crypto-gost-js": "^2.1.0-RC1", "@wavesenterprise/crypto-gost-js": "^2.1.0-RC1",
"@xmldom/xmldom": "^0.8.11", "@xmldom/xmldom": "^0.8.12",
"argon2-browser": "^1.18.0", "argon2-browser": "^1.18.0",
"arrive": "^2.5.2", "arrive": "^2.5.3",
"assert": "^2.1.0", "assert": "^2.1.0",
"avsc": "^5.7.9", "avsc": "^5.7.9",
"bcryptjs": "^2.4.3", "bcryptjs": "^2.4.3",
@ -38,7 +38,7 @@
"d3": "7.9.0", "d3": "7.9.0",
"d3-hexbin": "^0.2.2", "d3-hexbin": "^0.2.2",
"diff": "^5.2.2", "diff": "^5.2.2",
"dompurify": "^3.3.3", "dompurify": "^3.4.0",
"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",
@ -52,7 +52,7 @@
"hash-wasm": "^4.12.0", "hash-wasm": "^4.12.0",
"highlight.js": "^11.11.1", "highlight.js": "^11.11.1",
"ieee754": "^1.2.1", "ieee754": "^1.2.1",
"jimp": "^1.6.0", "jimp": "1.6.0",
"jq-web": "^0.5.1", "jq-web": "^0.5.1",
"jquery": "3.7.1", "jquery": "3.7.1",
"js-sha3": "^0.9.3", "js-sha3": "^0.9.3",
@ -62,11 +62,11 @@
"jsonpath-plus": "^10.4.0", "jsonpath-plus": "^10.4.0",
"jsonwebtoken": "9.0.3", "jsonwebtoken": "9.0.3",
"jsqr": "^1.4.0", "jsqr": "^1.4.0",
"jsrsasign": "^11.1.1", "jsrsasign": "^11.1.2",
"kbpgp": "^2.1.17", "kbpgp": "^2.1.17",
"libbzip2-wasm": "0.0.4", "libbzip2-wasm": "0.0.4",
"libyara-wasm": "^1.2.1", "libyara-wasm": "^1.2.1",
"lodash": "^4.17.23", "lodash": "^4.18.1",
"loglevel": "^1.9.2", "loglevel": "^1.9.2",
"loglevel-message-prefix": "^3.0.0", "loglevel-message-prefix": "^3.0.0",
"lz-string": "^1.5.0", "lz-string": "^1.5.0",
@ -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": "^7.5.4", "protobufjs": "^7.5.5",
"qr-image": "^3.2.0", "qr-image": "^3.2.0",
"reflect-metadata": "^0.2.2", "reflect-metadata": "^0.2.2",
"rison": "^0.1.1", "rison": "^0.1.1",
@ -93,7 +93,7 @@
"snackbarjs": "^1.1.0", "snackbarjs": "^1.1.0",
"sortablejs": "^1.15.7", "sortablejs": "^1.15.7",
"split.js": "^1.6.5", "split.js": "^1.6.5",
"sql-formatter": "^15.6.12", "sql-formatter": "^15.7.3",
"ssdeep.js": "0.0.3", "ssdeep.js": "0.0.3",
"stream-browserify": "^3.0.0", "stream-browserify": "^3.0.0",
"tesseract.js": "^6.0.1", "tesseract.js": "^6.0.1",
@ -117,8 +117,8 @@
"@codemirror/language": "^6.12.3", "@codemirror/language": "^6.12.3",
"@codemirror/search": "^6.6.0", "@codemirror/search": "^6.6.0",
"@codemirror/state": "^6.5.4", "@codemirror/state": "^6.5.4",
"@codemirror/view": "^6.40.0", "@codemirror/view": "^6.41.0",
"autoprefixer": "^10.4.27", "autoprefixer": "^10.5.0",
"babel-loader": "^10.1.1", "babel-loader": "^10.1.1",
"base64-loader": "^1.0.0", "base64-loader": "^1.0.0",
"chromedriver": "^146.0.6", "chromedriver": "^146.0.6",
@ -132,7 +132,7 @@
"eslint": "^9.39.4", "eslint": "^9.39.4",
"eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-jsdoc": "^50.8.0",
"globals": "^15.15.0", "globals": "^15.15.0",
"grunt": "^1.6.1", "grunt": "^1.6.2",
"grunt-chmod": "~1.1.1", "grunt-chmod": "~1.1.1",
"grunt-concurrent": "^3.0.0", "grunt-concurrent": "^3.0.0",
"grunt-contrib-clean": "~2.0.1", "grunt-contrib-clean": "~2.0.1",
@ -148,14 +148,14 @@
"mini-css-extract-plugin": "2.10.2", "mini-css-extract-plugin": "2.10.2",
"modify-source-webpack-plugin": "^4.1.0", "modify-source-webpack-plugin": "^4.1.0",
"nightwatch": "^3.15.0", "nightwatch": "^3.15.0",
"postcss": "^8.5.8", "postcss": "^8.5.10",
"postcss-css-variables": "^0.19.0", "postcss-css-variables": "^0.19.0",
"postcss-import": "^16.1.1", "postcss-import": "^16.1.1",
"postcss-loader": "^8.2.1", "postcss-loader": "^8.2.1",
"prompt": "^1.3.0", "prompt": "^1.3.0",
"sitemap": "^8.0.3", "sitemap": "^8.0.3",
"terser": "^5.46.1", "terser": "^5.46.1",
"webpack": "^5.105.4", "webpack": "^5.106.2",
"webpack-bundle-analyzer": "^4.10.2", "webpack-bundle-analyzer": "^4.10.2",
"webpack-dev-server": "5.0.4", "webpack-dev-server": "5.0.4",
"webpack-node-externals": "^3.0.0", "webpack-node-externals": "^3.0.0",
@ -1890,9 +1890,9 @@
} }
}, },
"node_modules/@codemirror/view": { "node_modules/@codemirror/view": {
"version": "6.40.0", "version": "6.41.0",
"resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.40.0.tgz", "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.41.0.tgz",
"integrity": "sha512-WA0zdU7xfF10+5I3HhUUq3kqOx3KjqmtQ9lqZjfK7jtYk4G72YW9rezcSywpaUMCWOMlq+6E0pO1IWg1TNIhtg==", "integrity": "sha512-6H/qadXsVuDY219Yljhohglve8xf4B8xJkVOEWfA5uiYKiTFppjqsvsfR5iPA0RbvRBoOyTZpbLIxe9+0UR8xA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -4524,9 +4524,9 @@
} }
}, },
"node_modules/@xmldom/xmldom": { "node_modules/@xmldom/xmldom": {
"version": "0.8.11", "version": "0.8.12",
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.12.tgz",
"integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", "integrity": "sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg==",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=10.0.0" "node": ">=10.0.0"
@ -5003,9 +5003,9 @@
} }
}, },
"node_modules/arrive": { "node_modules/arrive": {
"version": "2.5.2", "version": "2.5.3",
"resolved": "https://registry.npmjs.org/arrive/-/arrive-2.5.2.tgz", "resolved": "https://registry.npmjs.org/arrive/-/arrive-2.5.3.tgz",
"integrity": "sha512-A9asXhuUR6pgHtwUciZw4FRZDR09ZwVsz1ckEGE6W9gXWrYM9cAkuKzHplpYN0bd/iobg0xqQ9fpRr/GHPsXUw==", "integrity": "sha512-FsZjDDxS2BZ1TuGvqhTf8KbGaH0hOx+DS7HhYIvsreCkAuSUFgJ9NUhIC4f3SM3c5T/1he1KAn566GZjzqJarA==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/asn1.js": { "node_modules/asn1.js": {
@ -5089,9 +5089,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/autoprefixer": { "node_modules/autoprefixer": {
"version": "10.4.27", "version": "10.5.0",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz",
"integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -5109,8 +5109,8 @@
], ],
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"browserslist": "^4.28.1", "browserslist": "^4.28.2",
"caniuse-lite": "^1.0.30001774", "caniuse-lite": "^1.0.30001787",
"fraction.js": "^5.3.4", "fraction.js": "^5.3.4",
"picocolors": "^1.1.1", "picocolors": "^1.1.1",
"postcss-value-parser": "^4.2.0" "postcss-value-parser": "^4.2.0"
@ -5169,15 +5169,25 @@
} }
}, },
"node_modules/axios": { "node_modules/axios": {
"version": "1.13.6", "version": "1.15.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz",
"integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"follow-redirects": "^1.15.11", "follow-redirects": "^1.15.11",
"form-data": "^4.0.5", "form-data": "^4.0.5",
"proxy-from-env": "^1.1.0" "proxy-from-env": "^2.1.0"
}
},
"node_modules/axios/node_modules/proxy-from-env": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
"integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=10"
} }
}, },
"node_modules/babel-loader": { "node_modules/babel-loader": {
@ -5283,9 +5293,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/baseline-browser-mapping": { "node_modules/baseline-browser-mapping": {
"version": "2.10.0", "version": "2.10.19",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.19.tgz",
"integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", "integrity": "sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"bin": { "bin": {
@ -5316,9 +5326,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/basic-ftp": { "node_modules/basic-ftp": {
"version": "5.2.0", "version": "5.2.2",
"resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz", "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.2.tgz",
"integrity": "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==", "integrity": "sha512-1tDrzKsdCg70WGvbFss/ulVAxupNauGnOlgpyjKzeQxzyllBLS0CGLV7tjIXTK3ZQA9/FBEm9qyFFN1bciA6pw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -5738,9 +5748,9 @@
} }
}, },
"node_modules/brace-expansion": { "node_modules/brace-expansion": {
"version": "1.1.12", "version": "1.1.13",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -5855,9 +5865,9 @@
} }
}, },
"node_modules/browserslist": { "node_modules/browserslist": {
"version": "4.28.1", "version": "4.28.2",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz",
"integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -5875,11 +5885,11 @@
], ],
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"baseline-browser-mapping": "^2.9.0", "baseline-browser-mapping": "^2.10.12",
"caniuse-lite": "^1.0.30001759", "caniuse-lite": "^1.0.30001782",
"electron-to-chromium": "^1.5.263", "electron-to-chromium": "^1.5.328",
"node-releases": "^2.0.27", "node-releases": "^2.0.36",
"update-browserslist-db": "^1.2.0" "update-browserslist-db": "^1.2.3"
}, },
"bin": { "bin": {
"browserslist": "cli.js" "browserslist": "cli.js"
@ -6087,9 +6097,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001777", "version": "1.0.30001788",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001777.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001788.tgz",
"integrity": "sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==", "integrity": "sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -8286,9 +8296,9 @@
} }
}, },
"node_modules/dompurify": { "node_modules/dompurify": {
"version": "3.3.3", "version": "3.4.0",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.3.tgz", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.0.tgz",
"integrity": "sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==", "integrity": "sha512-nolgK9JcaUXMSmW+j1yaSvaEaoXYHwWyGJlkoCTghc97KgGDDSnpoU/PlEnw63Ah+TGKFOyY+X5LnxaWbCSfXg==",
"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"
@ -8407,9 +8417,9 @@
} }
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.5.307", "version": "1.5.339",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.339.tgz",
"integrity": "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==", "integrity": "sha512-Is+0BBHJ4NrdpAYiperrmp53pLywG/yV/6lIMTAnhxvzj/Cmn5Q/ogSHC6AKe7X+8kPLxxFk0cs5oc/3j/fxIg==",
"dev": true, "dev": true,
"license": "ISC" "license": "ISC"
}, },
@ -9138,6 +9148,16 @@
"node": ">= 0.8.0" "node": ">= 0.8.0"
} }
}, },
"node_modules/exit-x": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz",
"integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/expand-tilde": { "node_modules/expand-tilde": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
@ -9479,9 +9499,9 @@
} }
}, },
"node_modules/filelist/node_modules/brace-expansion": { "node_modules/filelist/node_modules/brace-expansion": {
"version": "2.0.2", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -9644,9 +9664,9 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/follow-redirects": { "node_modules/follow-redirects": {
"version": "1.15.11", "version": "1.16.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
"integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -10160,9 +10180,9 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/grunt": { "node_modules/grunt": {
"version": "1.6.1", "version": "1.6.2",
"resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz", "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.2.tgz",
"integrity": "sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA==", "integrity": "sha512-bUzh5nA/P5L66ihXTDP6J5BGnMB/8lXJXejYWSbH4Y4TvWM9t2S39sggQDYYQlx06cYcCsmu63HMYHGCIzUVfg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -10171,14 +10191,14 @@
"exit": "~0.1.2", "exit": "~0.1.2",
"findup-sync": "~5.0.0", "findup-sync": "~5.0.0",
"glob": "~7.1.6", "glob": "~7.1.6",
"grunt-cli": "~1.4.3", "grunt-cli": "^1.4.3",
"grunt-known-options": "~2.0.0", "grunt-known-options": "~2.0.0",
"grunt-legacy-log": "~3.0.0", "grunt-legacy-log": "~3.0.0",
"grunt-legacy-util": "~2.0.1", "grunt-legacy-util": "~2.0.1",
"iconv-lite": "~0.6.3", "iconv-lite": "~0.6.3",
"js-yaml": "~3.14.0", "js-yaml": "~3.14.0",
"minimatch": "~3.0.4", "minimatch": "^3.1.5",
"nopt": "~3.0.6" "nopt": "^5.0.0"
}, },
"bin": { "bin": {
"grunt": "bin/grunt" "grunt": "bin/grunt"
@ -10420,30 +10440,29 @@
} }
}, },
"node_modules/grunt-legacy-log": { "node_modules/grunt-legacy-log": {
"version": "3.0.0", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.1.tgz",
"integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", "integrity": "sha512-vytI3IUC8qUK9TcvvpHpGJzDojua/sfJV4TdLB4FtCFzospqduzBuL3+dEfpvO+tGECv7/273+33hjjMXSa92g==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"colors": "~1.1.2", "colors": "~1.1.2",
"grunt-legacy-log-utils": "~2.1.0", "grunt-legacy-log-utils": "^2.1.3",
"hooker": "~0.2.3", "hooker": "~0.2.3",
"lodash": "~4.17.19" "lodash": "^4.18.0"
}, },
"engines": { "engines": {
"node": ">= 0.10.0" "node": ">= 0.10.0"
} }
}, },
"node_modules/grunt-legacy-log-utils": { "node_modules/grunt-legacy-log-utils": {
"version": "2.1.0", "version": "2.1.3",
"resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.3.tgz",
"integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", "integrity": "sha512-sgG+QvKmdb44wZyzJP+ejDsy3jYxG2wzohpol+JTMlXqMUBDoZb01JPQ5jKAedtZBFwhmABAc88T9hEBLy3U+Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"chalk": "~4.1.0", "chalk": "^4.1.0"
"lodash": "~4.17.19"
}, },
"engines": { "engines": {
"node": ">=10" "node": ">=10"
@ -10506,17 +10525,17 @@
} }
}, },
"node_modules/grunt-legacy-util": { "node_modules/grunt-legacy-util": {
"version": "2.0.1", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.2.tgz",
"integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==", "integrity": "sha512-0xoDILyR4BVJel5uJwnhjdWN9evOQ8A0uXbQUIJ0hgVthIA6kloXHSoqATQPj6BRrHrHkcQtCeGVb0ixFoHyEQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"async": "~3.2.0", "async": "~3.2.0",
"exit": "~0.1.2", "exit-x": "~0.2.2",
"getobject": "~1.0.0", "getobject": "~1.0.0",
"hooker": "~0.2.3", "hooker": "~0.2.3",
"lodash": "~4.17.21", "lodash": "^4.18.0",
"underscore.string": "~3.3.5", "underscore.string": "~3.3.5",
"which": "~2.0.2" "which": "~2.0.2"
}, },
@ -10595,9 +10614,9 @@
} }
}, },
"node_modules/grunt/node_modules/minimatch": { "node_modules/grunt/node_modules/minimatch": {
"version": "3.0.8", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
"integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@ -12393,13 +12412,10 @@
"license": "Apache-2.0" "license": "Apache-2.0"
}, },
"node_modules/jsrsasign": { "node_modules/jsrsasign": {
"version": "11.1.1", "version": "11.1.2",
"resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-11.1.1.tgz", "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-11.1.2.tgz",
"integrity": "sha512-6w95OOXH8DNeGxakqLndBEqqwQ6A70zGaky1oxfg8WVLWOnghTfJsc5Tknx+Z88MHSb1bGLcqQHImOF8Lk22XA==", "integrity": "sha512-GJuqiU/Grs6BaBBXMAZM9kxhsBrksZE0pF3qIfpkopMd7OMJ9zZmE/+CpV//97srfEyyyq1Ec0ELQtSlW/gPTA==",
"license": "MIT", "license": "MIT"
"funding": {
"url": "https://github.com/kjur/jsrsasign#donations"
}
}, },
"node_modules/jszip": { "node_modules/jszip": {
"version": "3.10.1", "version": "3.10.1",
@ -12676,9 +12692,9 @@
} }
}, },
"node_modules/lodash": { "node_modules/lodash": {
"version": "4.17.23", "version": "4.18.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
"integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/lodash.debounce": { "node_modules/lodash.debounce": {
@ -13214,9 +13230,9 @@
} }
}, },
"node_modules/mocha/node_modules/brace-expansion": { "node_modules/mocha/node_modules/brace-expansion": {
"version": "2.0.2", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -13815,9 +13831,9 @@
} }
}, },
"node_modules/nopt": { "node_modules/nopt": {
"version": "3.0.6", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
"integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@ -13825,6 +13841,9 @@
}, },
"bin": { "bin": {
"nopt": "bin/nopt.js" "nopt": "bin/nopt.js"
},
"engines": {
"node": ">=6"
} }
}, },
"node_modules/normalize-path": { "node_modules/normalize-path": {
@ -14618,9 +14637,9 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/path-to-regexp": { "node_modules/path-to-regexp": {
"version": "0.1.12", "version": "0.1.13",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz",
"integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==",
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
@ -14796,9 +14815,9 @@
} }
}, },
"node_modules/postcss": { "node_modules/postcss": {
"version": "8.5.8", "version": "8.5.10",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz",
"integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -15055,9 +15074,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/protobufjs": { "node_modules/protobufjs": {
"version": "7.5.4", "version": "7.5.5",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.5.tgz",
"integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", "integrity": "sha512-3wY1AxV+VBNW8Yypfd1yQY9pXnqTAN+KwQxL8iYm3/BjKYMNg4i0owhEe26PWDOMaIrzeeF98Lqd5NGz4omiIg==",
"hasInstallScript": true, "hasInstallScript": true,
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"dependencies": { "dependencies": {
@ -15439,9 +15458,9 @@
} }
}, },
"node_modules/readdir-glob/node_modules/brace-expansion": { "node_modules/readdir-glob/node_modules/brace-expansion": {
"version": "2.0.2", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -16633,9 +16652,9 @@
"license": "BSD-3-Clause" "license": "BSD-3-Clause"
}, },
"node_modules/sql-formatter": { "node_modules/sql-formatter": {
"version": "15.7.2", "version": "15.7.3",
"resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-15.7.2.tgz", "resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-15.7.3.tgz",
"integrity": "sha512-b0BGoM81KFRVSpZFwPpIPU5gng4YD8DI/taLD96NXCFRf5af3FzSE4aSwjKmxcyTmf/MfPu91j75883nRrWDBw==", "integrity": "sha512-5+zl9Nqg5aNjss0tb1G+StpC4dJKbjv3+g8CL/+V+00PfZop+2RKGyi53ScFl0dr+Dkx1LjmUO54Q3N7K3EtMw==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"argparse": "^2.0.1", "argparse": "^2.0.1",
@ -17871,9 +17890,9 @@
} }
}, },
"node_modules/webpack": { "node_modules/webpack": {
"version": "5.105.4", "version": "5.106.2",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.2.tgz",
"integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -17893,9 +17912,8 @@
"events": "^3.2.0", "events": "^3.2.0",
"glob-to-regexp": "^0.4.1", "glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.2.11", "graceful-fs": "^4.2.11",
"json-parse-even-better-errors": "^2.3.1",
"loader-runner": "^4.3.1", "loader-runner": "^4.3.1",
"mime-types": "^2.1.27", "mime-db": "^1.54.0",
"neo-async": "^2.6.2", "neo-async": "^2.6.2",
"schema-utils": "^4.3.3", "schema-utils": "^4.3.3",
"tapable": "^2.3.0", "tapable": "^2.3.0",
@ -18085,9 +18103,9 @@
} }
}, },
"node_modules/webpack-dev-server/node_modules/brace-expansion": { "node_modules/webpack-dev-server/node_modules/brace-expansion": {
"version": "2.0.2", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -18216,6 +18234,16 @@
"node": ">=10.13.0" "node": ">=10.13.0"
} }
}, },
"node_modules/webpack/node_modules/mime-db": {
"version": "1.54.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/websocket-driver": { "node_modules/websocket-driver": {
"version": "0.7.4", "version": "0.7.4",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
@ -18715,9 +18743,9 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/yaml": { "node_modules/yaml": {
"version": "2.8.2", "version": "2.8.3",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
"integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
"bin": { "bin": {

View File

@ -1,6 +1,6 @@
{ {
"name": "cyberchef", "name": "cyberchef",
"version": "10.22.1", "version": "10.23.0",
"description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
"author": "n1474335 <n1474335@gmail.com>", "author": "n1474335 <n1474335@gmail.com>",
"homepage": "https://gchq.github.io/CyberChef", "homepage": "https://gchq.github.io/CyberChef",
@ -48,8 +48,8 @@
"@codemirror/language": "^6.12.3", "@codemirror/language": "^6.12.3",
"@codemirror/search": "^6.6.0", "@codemirror/search": "^6.6.0",
"@codemirror/state": "^6.5.4", "@codemirror/state": "^6.5.4",
"@codemirror/view": "^6.40.0", "@codemirror/view": "^6.41.0",
"autoprefixer": "^10.4.27", "autoprefixer": "^10.5.0",
"babel-loader": "^10.1.1", "babel-loader": "^10.1.1",
"base64-loader": "^1.0.0", "base64-loader": "^1.0.0",
"chromedriver": "^146.0.6", "chromedriver": "^146.0.6",
@ -63,7 +63,7 @@
"eslint": "^9.39.4", "eslint": "^9.39.4",
"eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-jsdoc": "^50.8.0",
"globals": "^15.15.0", "globals": "^15.15.0",
"grunt": "^1.6.1", "grunt": "^1.6.2",
"grunt-chmod": "~1.1.1", "grunt-chmod": "~1.1.1",
"grunt-concurrent": "^3.0.0", "grunt-concurrent": "^3.0.0",
"grunt-contrib-clean": "~2.0.1", "grunt-contrib-clean": "~2.0.1",
@ -79,14 +79,14 @@
"mini-css-extract-plugin": "2.10.2", "mini-css-extract-plugin": "2.10.2",
"modify-source-webpack-plugin": "^4.1.0", "modify-source-webpack-plugin": "^4.1.0",
"nightwatch": "^3.15.0", "nightwatch": "^3.15.0",
"postcss": "^8.5.8", "postcss": "^8.5.10",
"postcss-css-variables": "^0.19.0", "postcss-css-variables": "^0.19.0",
"postcss-import": "^16.1.1", "postcss-import": "^16.1.1",
"postcss-loader": "^8.2.1", "postcss-loader": "^8.2.1",
"prompt": "^1.3.0", "prompt": "^1.3.0",
"sitemap": "^8.0.3", "sitemap": "^8.0.3",
"terser": "^5.46.1", "terser": "^5.46.1",
"webpack": "^5.105.4", "webpack": "^5.106.2",
"webpack-bundle-analyzer": "^4.10.2", "webpack-bundle-analyzer": "^4.10.2",
"webpack-dev-server": "5.0.4", "webpack-dev-server": "5.0.4",
"webpack-node-externals": "^3.0.0", "webpack-node-externals": "^3.0.0",
@ -97,9 +97,9 @@
"@astronautlabs/amf": "^0.0.6", "@astronautlabs/amf": "^0.0.6",
"@blu3r4y/lzma": "^2.3.3", "@blu3r4y/lzma": "^2.3.3",
"@wavesenterprise/crypto-gost-js": "^2.1.0-RC1", "@wavesenterprise/crypto-gost-js": "^2.1.0-RC1",
"@xmldom/xmldom": "^0.8.11", "@xmldom/xmldom": "^0.8.12",
"argon2-browser": "^1.18.0", "argon2-browser": "^1.18.0",
"arrive": "^2.5.2", "arrive": "^2.5.3",
"assert": "^2.1.0", "assert": "^2.1.0",
"avsc": "^5.7.9", "avsc": "^5.7.9",
"bcryptjs": "^2.4.3", "bcryptjs": "^2.4.3",
@ -121,7 +121,7 @@
"d3": "7.9.0", "d3": "7.9.0",
"d3-hexbin": "^0.2.2", "d3-hexbin": "^0.2.2",
"diff": "^5.2.2", "diff": "^5.2.2",
"dompurify": "^3.3.3", "dompurify": "^3.4.0",
"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",
@ -135,7 +135,7 @@
"hash-wasm": "^4.12.0", "hash-wasm": "^4.12.0",
"highlight.js": "^11.11.1", "highlight.js": "^11.11.1",
"ieee754": "^1.2.1", "ieee754": "^1.2.1",
"jimp": "^1.6.0", "jimp": "1.6.0",
"jq-web": "^0.5.1", "jq-web": "^0.5.1",
"jquery": "3.7.1", "jquery": "3.7.1",
"js-sha3": "^0.9.3", "js-sha3": "^0.9.3",
@ -145,11 +145,11 @@
"jsonpath-plus": "^10.4.0", "jsonpath-plus": "^10.4.0",
"jsonwebtoken": "9.0.3", "jsonwebtoken": "9.0.3",
"jsqr": "^1.4.0", "jsqr": "^1.4.0",
"jsrsasign": "^11.1.1", "jsrsasign": "^11.1.2",
"kbpgp": "^2.1.17", "kbpgp": "^2.1.17",
"libbzip2-wasm": "0.0.4", "libbzip2-wasm": "0.0.4",
"libyara-wasm": "^1.2.1", "libyara-wasm": "^1.2.1",
"lodash": "^4.17.23", "lodash": "^4.18.1",
"loglevel": "^1.9.2", "loglevel": "^1.9.2",
"loglevel-message-prefix": "^3.0.0", "loglevel-message-prefix": "^3.0.0",
"lz-string": "^1.5.0", "lz-string": "^1.5.0",
@ -168,7 +168,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": "^7.5.4", "protobufjs": "^7.5.5",
"qr-image": "^3.2.0", "qr-image": "^3.2.0",
"reflect-metadata": "^0.2.2", "reflect-metadata": "^0.2.2",
"rison": "^0.1.1", "rison": "^0.1.1",
@ -176,7 +176,7 @@
"snackbarjs": "^1.1.0", "snackbarjs": "^1.1.0",
"sortablejs": "^1.15.7", "sortablejs": "^1.15.7",
"split.js": "^1.6.5", "split.js": "^1.6.5",
"sql-formatter": "^15.6.12", "sql-formatter": "^15.7.3",
"ssdeep.js": "0.0.3", "ssdeep.js": "0.0.3",
"stream-browserify": "^3.0.0", "stream-browserify": "^3.0.0",
"tesseract.js": "^6.0.1", "tesseract.js": "^6.0.1",

View File

@ -0,0 +1,54 @@
/**
* This script updates crypto-api package
* It adds .mjs to local imports where its missing
*
* before:
* import foo from "./bar";
* after
* import foo from "./bar.mjs";
*
*/
/* eslint no-console: ["off"] */
import { readdirSync, readFileSync, writeFileSync } from "fs";
import { join } from "path";
// Base directory of crypto-api source
const baseDir = join(process.cwd(), "node_modules/crypto-api/src");
/**
* Recursively walk a directory, updating import statements
* to include ".mjs" if missing
*/
function walk(dir) {
const entries = readdirSync(dir, { withFileTypes: true });
for (const entry of entries) {
if (entry.name === ".git") continue;
const fullPath = join(dir, entry.name);
if (entry.isDirectory()) {
walk(fullPath);
} else if (entry.isFile()) {
const content = readFileSync(fullPath, "utf8");
// Add .mjs to imports if not present
const updated = content.replace(
/from "(\.[^"]*)";/g,
(match, p1) => {
if (p1.endsWith(".mjs")) return match;
return `from "${p1}.mjs";`;
}
);
if (updated !== content) {
writeFileSync(fullPath, updated, "utf8");
}
}
}
}
// Run the walker
walk(baseDir);

View File

@ -0,0 +1,28 @@
/**
* This script updates snackbarjs package
* Replaces self-closing div with standard opening div
*
* before:
* <div id=snackbar-container/>
* after:
* <div id=snackbar-container>
*
*/
/* eslint no-console: ["off"] */
import { readFileSync, writeFileSync } from "fs";
import { join } from "path";
// Base directory of snackbarjs source
const filePath = join(process.cwd(), "node_modules/snackbarjs/src/snackbar.js");
const content = readFileSync(filePath, "utf8");
// Replace self-closing div with standard opening div
const updated = content.replace(
/<div id=snackbar-container\/>/g,
"<div id=snackbar-container>"
);
writeFileSync(filePath, updated, "utf8");

View File

@ -45,6 +45,11 @@ export function search(input, searchRegex, removeRegex=null, sortBy=null, unique
return results; return results;
} }
/**
* Email regular expression
*/
export const EMAIL_REGEX = /(?:[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9](?:[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9-]*[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9])?\.)+[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9](?:[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9-]*[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\])/ig;
/** /**
* URL regular expression * URL regular expression

View File

@ -5,7 +5,7 @@
*/ */
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import { search } from "../lib/Extract.mjs"; import { EMAIL_REGEX, search } from "../lib/Extract.mjs";
import { caseInsensitiveSort } from "../lib/Sort.mjs"; import { caseInsensitiveSort } from "../lib/Sort.mjs";
/** /**
@ -50,8 +50,7 @@ class ExtractEmailAddresses extends Operation {
*/ */
run(input, args) { run(input, args) {
const [displayTotal, sort, unique] = args, const [displayTotal, sort, unique] = args,
// email regex from: https://www.regextester.com/98066 regex = EMAIL_REGEX;
regex = /(?:[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9](?:[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9-]*[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9])?\.)+[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9](?:[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9-]*[\u00A0-\uD7FF\uE000-\uFFFFa-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\])/ig;
const results = search( const results = search(
input, input,

View File

@ -99,7 +99,7 @@ class OffsetChecker extends Operation {
} }
} }
return outputs.join(sampleDelim); return outputs.join(Utils.escapeHtml(sampleDelim));
} }
} }

View File

@ -7,6 +7,7 @@
import XRegExp from "xregexp"; import XRegExp from "xregexp";
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import { EMAIL_REGEX } from "../lib/Extract.mjs";
import OperationError from "../errors/OperationError.mjs"; import OperationError from "../errors/OperationError.mjs";
/** /**
@ -45,7 +46,7 @@ class RegularExpression extends Operation {
}, },
{ {
name: "Email address", name: "Email address",
value: "(?:[\\u00A0-\\uD7FF\\uE000-\\uFFFFa-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\u00A0-\\uD7FF\\uE000-\\uFFFFa-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[\\u00A0-\\uD7FF\\uE000-\\uFFFFa-z0-9](?:[\\u00A0-\\uD7FF\\uE000-\\uFFFF-a-z0-9-]*[\\u00A0-\\uD7FF\\uE000-\\uFFFFa-z0-9])?\\.)+[\\u00A0-\\uD7FF\\uE000-\\uFFFFa-z0-9](?:[\\u00A0-\\uD7FF\\uE000-\\uFFFFa-z0-9-]*[\\u00A0-\\uD7FF\\uE000-\\uFFFFa-z0-9])?|\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\.){3}\\])" value: EMAIL_REGEX.source // We use a different regex library, so just take the source regex string here
}, },
{ {
name: "URL", name: "URL",

View File

@ -143,6 +143,7 @@ import "./tests/Rabbit.mjs";
import "./tests/RAKE.mjs"; import "./tests/RAKE.mjs";
import "./tests/Regex.mjs"; import "./tests/Regex.mjs";
import "./tests/Register.mjs"; import "./tests/Register.mjs";
import "./tests/RegularExpression.mjs";
import "./tests/RisonEncodeDecode.mjs"; import "./tests/RisonEncodeDecode.mjs";
import "./tests/Rotate.mjs"; import "./tests/Rotate.mjs";
import "./tests/RSA.mjs"; import "./tests/RSA.mjs";

View File

@ -11,44 +11,70 @@ TestRegister.addTests([
{ {
name: "Extract email address", name: "Extract email address",
input: "email@example.com\nfirstname.lastname@example.com\nemail@subdomain.example.com\nfirstname+lastname@example.com\n1234567890@example.com\nemail@example-one.com\n_______@example.com email@example.name\nemail@example.museum email@example.co.jp firstname-lastname@example.com", input: "email@example.com\nfirstname.lastname@example.com\nemail@subdomain.example.com\nfirstname+lastname@example.com\n1234567890@example.com\nemail@example-one.com\n_______@example.com email@example.name\nemail@example.museum email@example.co.jp firstname-lastname@example.com",
expectedOutput: "email@example.com\nfirstname.lastname@example.com\nemail@subdomain.example.com\nfirstname+lastname@example.com\n1234567890@example.com\nemail@example-one.com\n_______@example.com\nemail@example.name\nemail@example.museum\nemail@example.co.jp\nfirstname-lastname@example.com", expectedOutput:
"email@example.com\nfirstname.lastname@example.com\nemail@subdomain.example.com\nfirstname+lastname@example.com\n1234567890@example.com\nemail@example-one.com\n_______@example.com\nemail@example.name\nemail@example.museum\nemail@example.co.jp\nfirstname-lastname@example.com",
recipeConfig: [ recipeConfig: [
{ {
"op": "Extract email addresses", op: "Extract email addresses",
"args": [false] args: [false],
}, },
], ],
}, },
{ {
name: "Extract email address - Display total", name: "Extract email address - Display total",
input: "email@example.com\nfirstname.lastname@example.com\nemail@subdomain.example.com\nfirstname+lastname@example.com\n1234567890@example.com\nemail@example-one.com\n_______@example.com email@example.name\nemail@example.museum email@example.co.jp firstname-lastname@example.com", input: "email@example.com\nfirstname.lastname@example.com\nemail@subdomain.example.com\nfirstname+lastname@example.com\n1234567890@example.com\nemail@example-one.com\n_______@example.com email@example.name\nemail@example.museum email@example.co.jp firstname-lastname@example.com",
expectedOutput: "Total found: 11\n\nemail@example.com\nfirstname.lastname@example.com\nemail@subdomain.example.com\nfirstname+lastname@example.com\n1234567890@example.com\nemail@example-one.com\n_______@example.com\nemail@example.name\nemail@example.museum\nemail@example.co.jp\nfirstname-lastname@example.com", expectedOutput:
"Total found: 11\n\nemail@example.com\nfirstname.lastname@example.com\nemail@subdomain.example.com\nfirstname+lastname@example.com\n1234567890@example.com\nemail@example-one.com\n_______@example.com\nemail@example.name\nemail@example.museum\nemail@example.co.jp\nfirstname-lastname@example.com",
recipeConfig: [ recipeConfig: [
{ {
"op": "Extract email addresses", op: "Extract email addresses",
"args": [true] args: [true],
}, },
], ],
}, },
{ {
name: "Extract email address (Internationalized)", name: "Extract email address (Internationalized)",
input: "\u4f0a\u662d\u5091@\u90f5\u4ef6.\u5546\u52d9 \u093e\u092e@\u092e\u094b\u0939\u0928.\u0908\u0928\u094d\u092b\u094b\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c \u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc Jos\u1ec5Silv\u1ec5@googl\u1ec5.com\nJos\u1ec5Silv\u1ec5@google.com and Jos\u1ec5Silva@google.com\nFoO@BaR.CoM, john@192.168.10.100\ng\xf3mez@junk.br and Abc.123@example.com.\nuser+mailbox/department=shipping@example.com\n\u7528\u6237@\u4f8b\u5b50.\u5e7f\u544a\n\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e@\u0909\u0926\u093e\u0939\u0930\u0923.\u0915\u0949\u092e\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c\n\u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc\nD\xf6rte@S\xf6rensen.example.com\n\u0430\u0434\u0436\u0430\u0439@\u044d\u043a\u0437\u0430\u043c\u043f\u043b.\u0440\u0443\u0441\ntest@xn--bcher-kva.com", input: "\u4f0a\u662d\u5091@\u90f5\u4ef6.\u5546\u52d9 \u093e\u092e@\u092e\u094b\u0939\u0928.\u0908\u0928\u094d\u092b\u094b\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c \u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc Jos\u1ec5Silv\u1ec5@googl\u1ec5.com\nJos\u1ec5Silv\u1ec5@google.com and Jos\u1ec5Silva@google.com\nFoO@BaR.CoM, john@192.168.10.100\ng\xf3mez@junk.br and Abc.123@example.com.\nuser+mailbox/department=shipping@example.com\n\u7528\u6237@\u4f8b\u5b50.\u5e7f\u544a\n\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e@\u0909\u0926\u093e\u0939\u0930\u0923.\u0915\u0949\u092e\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c\n\u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc\nD\xf6rte@S\xf6rensen.example.com\n\u0430\u0434\u0436\u0430\u0439@\u044d\u043a\u0437\u0430\u043c\u043f\u043b.\u0440\u0443\u0441\ntest@xn--bcher-kva.com",
expectedOutput: "\u4f0a\u662d\u5091@\u90f5\u4ef6.\u5546\u52d9\n\u093e\u092e@\u092e\u094b\u0939\u0928.\u0908\u0928\u094d\u092b\u094b\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c\n\u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc\nJos\u1ec5Silv\u1ec5@googl\u1ec5.com\nJos\u1ec5Silv\u1ec5@google.com\nJos\u1ec5Silva@google.com\nFoO@BaR.CoM\njohn@192.168.10.100\ng\xf3mez@junk.br\nAbc.123@example.com\nuser+mailbox/department=shipping@example.com\n\u7528\u6237@\u4f8b\u5b50.\u5e7f\u544a\n\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e@\u0909\u0926\u093e\u0939\u0930\u0923.\u0915\u0949\u092e\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c\n\u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc\nD\xf6rte@S\xf6rensen.example.com\n\u0430\u0434\u0436\u0430\u0439@\u044d\u043a\u0437\u0430\u043c\u043f\u043b.\u0440\u0443\u0441\ntest@xn--bcher-kva.com", expectedOutput:
"\u4f0a\u662d\u5091@\u90f5\u4ef6.\u5546\u52d9\n\u093e\u092e@\u092e\u094b\u0939\u0928.\u0908\u0928\u094d\u092b\u094b\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c\n\u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc\nJos\u1ec5Silv\u1ec5@googl\u1ec5.com\nJos\u1ec5Silv\u1ec5@google.com\nJos\u1ec5Silva@google.com\nFoO@BaR.CoM\njohn@192.168.10.100\ng\xf3mez@junk.br\nAbc.123@example.com\nuser+mailbox/department=shipping@example.com\n\u7528\u6237@\u4f8b\u5b50.\u5e7f\u544a\n\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e@\u0909\u0926\u093e\u0939\u0930\u0923.\u0915\u0949\u092e\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c\n\u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc\nD\xf6rte@S\xf6rensen.example.com\n\u0430\u0434\u0436\u0430\u0439@\u044d\u043a\u0437\u0430\u043c\u043f\u043b.\u0440\u0443\u0441\ntest@xn--bcher-kva.com",
recipeConfig: [ recipeConfig: [
{ {
"op": "Extract email addresses", op: "Extract email addresses",
"args": [false] args: [false],
}, },
], ],
}, },
{ {
name: "Extract email address - Display total (Internationalized)", name: "Extract email address - Display total (Internationalized)",
input: "\u4f0a\u662d\u5091@\u90f5\u4ef6.\u5546\u52d9 \u093e\u092e@\u092e\u094b\u0939\u0928.\u0908\u0928\u094d\u092b\u094b\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c \u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc Jos\u1ec5Silv\u1ec5@googl\u1ec5.com\nJos\u1ec5Silv\u1ec5@google.com and Jos\u1ec5Silva@google.com\nFoO@BaR.CoM, john@192.168.10.100\ng\xf3mez@junk.br and Abc.123@example.com.\nuser+mailbox/department=shipping@example.com\n\u7528\u6237@\u4f8b\u5b50.\u5e7f\u544a\n\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e@\u0909\u0926\u093e\u0939\u0930\u0923.\u0915\u0949\u092e\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c\n\u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc\nD\xf6rte@S\xf6rensen.example.com\n\u0430\u0434\u0436\u0430\u0439@\u044d\u043a\u0437\u0430\u043c\u043f\u043b.\u0440\u0443\u0441\ntest@xn--bcher-kva.com", input: "\u4f0a\u662d\u5091@\u90f5\u4ef6.\u5546\u52d9 \u093e\u092e@\u092e\u094b\u0939\u0928.\u0908\u0928\u094d\u092b\u094b\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c \u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc Jos\u1ec5Silv\u1ec5@googl\u1ec5.com\nJos\u1ec5Silv\u1ec5@google.com and Jos\u1ec5Silva@google.com\nFoO@BaR.CoM, john@192.168.10.100\ng\xf3mez@junk.br and Abc.123@example.com.\nuser+mailbox/department=shipping@example.com\n\u7528\u6237@\u4f8b\u5b50.\u5e7f\u544a\n\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e@\u0909\u0926\u093e\u0939\u0930\u0923.\u0915\u0949\u092e\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c\n\u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc\nD\xf6rte@S\xf6rensen.example.com\n\u0430\u0434\u0436\u0430\u0439@\u044d\u043a\u0437\u0430\u043c\u043f\u043b.\u0440\u0443\u0441\ntest@xn--bcher-kva.com",
expectedOutput: "Total found: 19\n\n\u4f0a\u662d\u5091@\u90f5\u4ef6.\u5546\u52d9\n\u093e\u092e@\u092e\u094b\u0939\u0928.\u0908\u0928\u094d\u092b\u094b\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c\n\u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc\nJos\u1ec5Silv\u1ec5@googl\u1ec5.com\nJos\u1ec5Silv\u1ec5@google.com\nJos\u1ec5Silva@google.com\nFoO@BaR.CoM\njohn@192.168.10.100\ng\xf3mez@junk.br\nAbc.123@example.com\nuser+mailbox/department=shipping@example.com\n\u7528\u6237@\u4f8b\u5b50.\u5e7f\u544a\n\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e@\u0909\u0926\u093e\u0939\u0930\u0923.\u0915\u0949\u092e\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c\n\u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc\nD\xf6rte@S\xf6rensen.example.com\n\u0430\u0434\u0436\u0430\u0439@\u044d\u043a\u0437\u0430\u043c\u043f\u043b.\u0440\u0443\u0441\ntest@xn--bcher-kva.com", expectedOutput:
"Total found: 19\n\n\u4f0a\u662d\u5091@\u90f5\u4ef6.\u5546\u52d9\n\u093e\u092e@\u092e\u094b\u0939\u0928.\u0908\u0928\u094d\u092b\u094b\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c\n\u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc\nJos\u1ec5Silv\u1ec5@googl\u1ec5.com\nJos\u1ec5Silv\u1ec5@google.com\nJos\u1ec5Silva@google.com\nFoO@BaR.CoM\njohn@192.168.10.100\ng\xf3mez@junk.br\nAbc.123@example.com\nuser+mailbox/department=shipping@example.com\n\u7528\u6237@\u4f8b\u5b50.\u5e7f\u544a\n\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e@\u0909\u0926\u093e\u0939\u0930\u0923.\u0915\u0949\u092e\n\u044e\u0437\u0435\u0440@\u0435\u043a\u0437\u0430\u043c\u043f\u043b.\u043a\u043e\u043c\n\u03b8\u03c3\u03b5\u03c1@\u03b5\u03c7\u03b1\u03bc\u03c0\u03bb\u03b5.\u03c8\u03bf\u03bc\nD\xf6rte@S\xf6rensen.example.com\n\u0430\u0434\u0436\u0430\u0439@\u044d\u043a\u0437\u0430\u043c\u043f\u043b.\u0440\u0443\u0441\ntest@xn--bcher-kva.com",
recipeConfig: [ recipeConfig: [
{ {
"op": "Extract email addresses", op: "Extract email addresses",
"args": [true] args: [true],
},
],
},
{
name: "Extract email address - IP address",
input: "yaunwfkb\nexample@[127.0.0.1]\n091nvka",
expectedOutput: "example@[127.0.0.1]",
recipeConfig: [
{
op: "Extract email addresses",
args: [false],
},
],
},
{
name: "Extract email address - invalid IP address",
input: "yaunwfkb\nfalse_positive@[1.2.3.]\n091nvka",
expectedOutput: "",
recipeConfig: [
{
op: "Extract email addresses",
args: [false],
}, },
], ],
}, },

View File

@ -0,0 +1,75 @@
/**
* Regular Expression tests.
*
* @author C85297 [95289555+C85297@users.noreply.github.com]
* @copyright Crown Copyright 2017
* @license Apache-2.0
*/
import TestRegister from "../../lib/TestRegister.mjs";
import { EMAIL_REGEX } from "../../../src/core/lib/Extract.mjs";
TestRegister.addTests([
{
name: "Regular Expression - built in email regex - IP address",
input: "yaunwfkb\nexample@[127.0.0.1]\n091nvka",
expectedOutput: "example@[127.0.0.1]",
recipeConfig: [
{
op: "Regular expression",
args: [
"Email address",
EMAIL_REGEX.source,
true,
true,
false,
false,
false,
false,
"List matches",
],
},
],
},
{
name: "Regular Expression - built in email regex - invalid IP address",
input: "yaunwfkb\nfalse_positive@[1.2.3.]\n091nvka",
expectedOutput: "",
recipeConfig: [
{
op: "Regular expression",
args: [
"Email address",
EMAIL_REGEX.source,
true,
true,
false,
false,
false,
false,
"List matches",
],
},
],
},
{
name: "Regular Expression - built in email regex - IPv4 from #2318",
input: "user@[1.2.3.4]\ntest@[192.168.0.1]\nno-match@[1.2.3.]",
expectedOutput: "user@[1.2.3.4]\ntest@[192.168.0.1]",
recipeConfig: [
{
op: "Regular expression",
args: [
"Email address",
EMAIL_REGEX.source,
true,
true,
false,
false,
false,
false,
"List matches",
],
},
],
},
]);