cyberchef 10.24.0 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/.devcontainer/devcontainer.json +1 -1
  2. package/.nvmrc +1 -1
  3. package/CHANGELOG.md +172 -0
  4. package/Dockerfile +2 -2
  5. package/Gruntfile.js +11 -6
  6. package/README.md +6 -4
  7. package/SECURITY.md +8 -18
  8. package/babel.config.js +4 -1
  9. package/package.json +48 -43
  10. package/src/core/ChefWorker.js +1 -1
  11. package/src/core/Recipe.mjs +1 -1
  12. package/src/core/config/Categories.json +6 -0
  13. package/src/core/config/OperationConfig.json +140 -16
  14. package/src/core/config/modules/Default.mjs +8 -0
  15. package/src/core/config/modules/PGP.mjs +2 -0
  16. package/src/core/config/scripts/generateOpsIndex.mjs +63 -0
  17. package/src/core/config/scripts/newOperation.mjs +31 -4
  18. package/src/core/lib/Magic.mjs +1 -1
  19. package/src/core/operations/AESDecrypt.mjs +61 -16
  20. package/src/core/operations/AESEncrypt.mjs +26 -11
  21. package/src/core/operations/BLAKE3.mjs +13 -7
  22. package/src/core/operations/BSONDeserialise.mjs +2 -2
  23. package/src/core/operations/BSONSerialise.mjs +3 -2
  24. package/src/core/operations/Bcrypt.mjs +1 -1
  25. package/src/core/operations/BcryptCompare.mjs +1 -1
  26. package/src/core/operations/DecodeText.mjs +4 -0
  27. package/src/core/operations/EncodeText.mjs +4 -0
  28. package/src/core/operations/EscapeSmartCharacters.mjs +129 -0
  29. package/src/core/operations/FromPunycode.mjs +1 -1
  30. package/src/core/operations/GenerateLoremIpsum.mjs +34 -3
  31. package/src/core/operations/GeneratePGPKeyPair.mjs +8 -7
  32. package/src/core/operations/PGPSign.mjs +83 -0
  33. package/src/core/operations/ParseEthernetFrame.mjs +1 -1
  34. package/src/core/operations/ParseIPv4Header.mjs +1 -1
  35. package/src/core/operations/ParseObjectIDTimestamp.mjs +2 -2
  36. package/src/core/operations/ParseUserAgent.mjs +1 -1
  37. package/src/core/operations/ROR13.mjs +83 -0
  38. package/src/core/operations/RemoveANSIEscapeCodes.mjs +41 -0
  39. package/src/core/operations/SeriesChart.mjs +16 -0
  40. package/src/core/operations/ShowBase64Offsets.mjs +28 -28
  41. package/src/core/operations/ToPunycode.mjs +1 -1
  42. package/src/core/operations/Wrap.mjs +47 -0
  43. package/src/core/operations/index.mjs +10 -0
  44. package/src/node/NodeRecipe.mjs +8 -7
  45. package/src/node/api.mjs +4 -4
  46. package/src/node/index.mjs +25 -0
  47. package/src/web/App.mjs +19 -1
  48. package/src/web/HTMLIngredient.mjs +1 -0
  49. package/src/web/html/index.html +3 -3
  50. package/src/web/index.js +2 -2
  51. package/src/web/static/sitemap.mjs +4 -4
  52. package/src/web/waiters/RecipeWaiter.mjs +9 -1
  53. package/tests/browser/02_ops.js +7 -7
  54. package/tests/browser/03_recipe_load.js +48 -0
  55. package/tests/browser/browserUtils.js +6 -3
  56. package/tests/lib/wasmFetchPolyfill.mjs +31 -0
  57. package/tests/node/consumers/cjs-consumer.js +2 -2
  58. package/tests/node/consumers/esm-consumer.mjs +2 -2
  59. package/tests/node/index.mjs +1 -0
  60. package/tests/node/tests/Categories.mjs +2 -2
  61. package/tests/node/tests/PGP.mjs +69 -0
  62. package/tests/node/tests/nodeApi.mjs +55 -58
  63. package/tests/node/tests/operations.mjs +41 -2
  64. package/tests/operations/index.mjs +72 -66
  65. package/tests/operations/tests/BLAKE3.mjs +18 -0
  66. package/tests/operations/tests/Base64.mjs +11 -0
  67. package/tests/operations/tests/CharEnc.mjs +26 -0
  68. package/tests/operations/tests/Charts.mjs +11 -0
  69. package/tests/operations/tests/Crypt.mjs +288 -62
  70. package/tests/operations/tests/EscapeSmartCharacters.mjs +132 -0
  71. package/tests/operations/tests/FlaskSession.mjs +11 -8
  72. package/tests/operations/tests/GenerateLoremIpsum.mjs +80 -0
  73. package/tests/operations/tests/IPv6Transition.mjs +4 -4
  74. package/tests/operations/tests/PGP.mjs +178 -154
  75. package/tests/operations/tests/ParseEthernetFrame.mjs +11 -0
  76. package/tests/operations/tests/ParseIPv4Header.mjs +23 -0
  77. package/tests/operations/tests/ParseX509CRL.mjs +16 -16
  78. package/tests/operations/tests/ROR13.mjs +45 -0
  79. package/tests/operations/tests/Register.mjs +3 -1
  80. package/tests/operations/tests/RemoveANSIEscapeCodes.mjs +62 -0
  81. package/tests/operations/tests/Wrap.mjs +44 -0
@@ -3,7 +3,7 @@
3
3
  {
4
4
  "name": "CyberChef",
5
5
  // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6
- "image": "mcr.microsoft.com/devcontainers/javascript-node:1-18-bookworm",
6
+ "image": "mcr.microsoft.com/devcontainers/javascript-node:24-trixie",
7
7
 
8
8
  // Features to add to the dev container. More info: https://containers.dev/features.
9
9
  "features": {
package/.nvmrc CHANGED
@@ -1 +1 @@
1
- 18
1
+ 24
package/CHANGELOG.md CHANGED
@@ -13,6 +13,91 @@ All major and minor version changes will be documented in this file. Details of
13
13
 
14
14
  ## Details
15
15
 
16
+ ### [11.1.0] - 2026-06-13
17
+ This release includes a security fix ([#2557])
18
+ - Security: Add fix, and tests, for Lorem Ipsum DoS issue [@GCHQDeveloper581] | [#2557]
19
+ - chore (deps): bump the patch-updates group with 4 updates | [#2552]
20
+ - chore (deps): bump the actions-dependencies group with 2 updates | [#2551]
21
+ - chore (deps): bump the docker-dependencies group with 2 updates | [#2550]
22
+ - chore (deps): bump protobufjs from 8.5.0 to 8.6.2 in the minor-updates group | [#2553]
23
+ - Security Policy Update [@C85297] | [#2547]
24
+ - Fix spurious error messages generated during webpack build [@GCHQDeveloper581] | [#2545]
25
+ - chore (deps): bump shell-quote from 1.8.3 to 1.8.4 | [#2543]
26
+ - Implementing ROR13 feature [@Fufu-btw] | [#2539]
27
+ - New operation improvements [@jl5193] [@GCHQDeveloper581] | [#1431]
28
+ - Npm and yarn/major version updates [@GCHQDeveloper581] | [#2527]
29
+ - Update README to reflect AES Decrypt changes [@andreasrtv] | [#2502]
30
+ - feat: add Escape Smart Characters operation [@HarelKatz] | [#2391]
31
+ - feat: Get AES IV from input (QoL) [@andreasrtv] | [#2471]
32
+ - fix: validate text encoding options [@SyedIshmumAhnaf] | [#2497]
33
+ - chore (deps): bump the minor-updates group with 5 updates [@GCHQDeveloper581] | [#2500]
34
+ - chore (deps): bump the patch-updates group with 2 updates | [#2499]
35
+ - chore (deps): bump nginxinc/nginx-unprivileged from `df0e9ed` to `0a1e718` in the docker-dependencies group | [#2498]
36
+ - Add remove ANSI escape codes operation [@Louis-Ladd] [@GCHQDeveloper581] | [#2143]
37
+ - Fix option ingredients being overwriten [@C85297] | [#2341]
38
+ - chore (deps): bump qs and express | [#2478]
39
+ - chore (deps): bump tmp from 0.2.5 to 0.2.7 | [#2479]
40
+ - chore (deps): bump the patch-updates group across 1 directory with 6 updates | [#2463]
41
+ - chore (deps): bump the docker-dependencies group across 1 directory with 2 updates | [#2468]
42
+ - chore (deps): bump terser from 5.46.2 to 5.48.0 | [#2385]
43
+ - Make dependabot quieter [@GCHQDeveloper581] | [#2467]
44
+ - update sitemap [@Blank0120] | [#2443]
45
+ - Bump webpack-dev-server to 5.2.4 [@GCHQDeveloper581] | [#2417]
46
+ - Fix pgp tests [@GCHQDeveloper581] [@C85297] | [#2461]
47
+ - chore (deps): bump the patch-updates group across 1 directory with 4 updates | [#2438]
48
+ - chore (deps): bump docker/setup-buildx-action from 4.0.0 to 4.1.0 | [#2439]
49
+ - chore (deps): bump docker/login-action from 4.1.0 to 4.2.0 | [#2441]
50
+ - chore (deps): bump docker/metadata-action from 6.0.0 to 6.1.0 | [#2442]
51
+ - update bson [@Blank0120] [@GCHQDeveloper581] | [#2425]
52
+ - chore (deps): bump webpack from 5.106.2 to 5.107.1 | [#2428]
53
+ - chore (deps): bump protobufjs from 7.5.8 to 7.6.0 | [#2429]
54
+ - chore (deps): bump sql-formatter from 15.7.4 to 15.8.0 | [#2430]
55
+ - chore (deps): bump docker/build-push-action from 7.1.0 to 7.2.0 | [#2431]
56
+ - Fix flaky `npm run testui` [@lzandman] | [#2412]
57
+ - Include git ref in website download zip name [@C85297] | [#2339]
58
+ - Bump nginxinc/nginx-unprivileged from `808f784` to `b9f7ba1` | [#2389]
59
+ - Series Chart HTML Formatting fix [@C85297] | [#2403]
60
+ - Parse Ethernet Frame HTML formatting fix [@C85297] | [#2402]
61
+ - Parse IPv4 Header HTML formatting fix [@C85297] | [#2401]
62
+ - Update chromedriver, and install corresponding chrome in workflows (fixes build) [@GCHQDeveloper581] | [#2387]
63
+ - chore (deps): bump @codemirror/view from 6.41.1 to 6.43.0 | [#2384]
64
+ - chore (deps): bump globals from 17.5.0 to 17.6.0 | [#2386]
65
+ - chore (deps): bump the patch-updates group across 1 directory with 3 updates | [#2388]
66
+ - [StepSecurity] Apply security best practices [@GCHQDeveloper581] StepSecurity Bot <bot@stepsecurity.io> | [#2378]
67
+ - Build docker container for arm v7 as well [@GCHQDeveloper581] | [#2379]
68
+ - chore (deps): bump fast-uri from 3.1.0 to 3.1.2 | [#2372]
69
+ - update bcryptjs [@C85297] [@GCHQDeveloper581] | [#2368]
70
+ - chore (deps): bump picomatch from 2.3.1 to 2.3.2 | [#2370]
71
+ - chore (deps): bump ip-address from 10.1.0 to 10.2.0 | [#2371]
72
+ - chore (deps): bump axios from 1.15.0 to 1.16.0 | [#2369]
73
+ - feat(operation-wrap): add new Wrap operation to format text at specified line width [@0xff1ce] | [#1882]
74
+ - chore (deps): bump the patch-updates group across 1 directory with 5 updates | [#2354]
75
+ - chore (deps): bump docker/login-action from 3 to 4 | [#2363]
76
+ - chore (deps): bump docker/setup-buildx-action from 3 to 4 | [#2364]
77
+ - chore (deps): bump crazy-max/ghaction-github-pages from 3 to 5 | [#2365]
78
+ - chore (deps): bump docker/metadata-action from 4 to 6 | [#2366]
79
+ - chore (deps): bump docker/setup-qemu-action from 3 to 4 | [#2367]
80
+ - Update dependabot for Node 24. [@GCHQDeveloper581] | [#2361]
81
+ - chore (deps): bump uuid from 13.0.0 to 14.0.0 | [#2332]
82
+ - chore (deps): bump webpack-bundle-analyzer from 5.2.0 to 5.3.0 | [#2353]
83
+ - Fix all zeros after 16384 bytes with Blake3 [@zachbowden] [@GCHQDeveloper581] | [#2351]
84
+
85
+ ## [11.0.0] - 2026-04-28
86
+ - Revert sitemap to v8.0.X to fix build/deploy on master [@GCHQDeveloper581] | [#2348]
87
+ - Node version update from 22 to 24 [@lzandman] [@GCHQDeveloper581] | [#2347]
88
+ - Fix XSS in Show Base64 offsets [@C85297] | [#2346]
89
+ - Make compatible with node >=22 [@GCHQDeveloper581] | [#2273]
90
+ - Fix(node): enable asynchronous operation support in Node.js API [@engin0223] [@GCHQDeveloper581] | [#2342]
91
+ - Feature: Change to nginx-unprivileged image for better kubernetes support [@hsolberg] | [#1922]
92
+
93
+ Breaking changes:
94
+ - Minimum supported node version - now v24 (was v16)
95
+ - Change of exported port on Docker Container - now 8080 (was 80)
96
+ - Node API now exports "bake" and "execute" functions as async.
97
+
98
+ <details>
99
+ <summary>Click to expand v10 minor versions</summary>
100
+
16
101
  ### [10.24.0] - 2026-04-27
17
102
  - Update CONTRIBUTING.md [@GCHQDeveloper581] | [#2333]
18
103
  - Fix, and link, Fernet tests [@GCHQDeveloper581] | [#2335]
@@ -277,6 +362,8 @@ All major and minor version changes will be documented in this file. Details of
277
362
  - Added 'Levenshtein Distance' operation [@mikecat] | [#1498]
278
363
  - Added 'Swap case' operation [@mikecat] | [#1499]
279
364
 
365
+ </details>
366
+
280
367
  ## [10.0.0] - 2023-03-22
281
368
  - [Full details explained here](https://github.com/gchq/CyberChef/wiki/Character-encoding,-EOL-separators,-and-editor-features)
282
369
  - Status bars added to the Input and Output [@n1474335] | [#1405]
@@ -620,6 +707,8 @@ All major and minor version changes will be documented in this file. Details of
620
707
  ## [4.0.0] - 2016-11-28
621
708
  - Initial open source commit [@n1474335] | [b1d73a72](https://github.com/gchq/CyberChef/commit/b1d73a725dc7ab9fb7eb789296efd2b7e4b08306)
622
709
 
710
+ [11.1.0]: https://github.com/gchq/CyberChef/releases/tag/v11.1.0
711
+ [11.0.0]: https://github.com/gchq/CyberChef/releases/tag/v11.0.0
623
712
  [10.24.0]: https://github.com/gchq/CyberChef/releases/tag/v10.24.0
624
713
  [10.23.0]: https://github.com/gchq/CyberChef/releases/tag/v10.23.0
625
714
  [10.22.0]: https://github.com/gchq/CyberChef/releases/tag/v10.22.0
@@ -901,6 +990,17 @@ All major and minor version changes will be documented in this file. Details of
901
990
  [@BjoernAkAManf]: https://github.com/BjoernAkAManf
902
991
  [@ko80240]: https://github.com/ko80240
903
992
  [@BigYellowHammer]: https://github.com/BigYellowHammer
993
+ [@hsolberg]: https://github.com/hsolberg
994
+ [@lzandman]: https://github.com/lzandman
995
+ [@engin0223]: https://github.com/engin0223
996
+ [@Fufu-btw]: https://github.com/Fufu-btw
997
+ [@jl5193]: https://github.com/jl5193
998
+ [@andreasrtv]: https://github.com/andreasrtv
999
+ [@HarelKatz]: https://github.com/HarelKatz
1000
+ [@SyedIshmumAhnaf]: https://github.com/SyedIshmumAhnaf
1001
+ [@Louis-Ladd]: https://github.com/Louis-Ladd
1002
+ [@Blank0120]: https://github.com/Blank0120
1003
+ [@zachbowden]: https://github.com/zachbowden
904
1004
 
905
1005
 
906
1006
  [8ad18b]: https://github.com/gchq/CyberChef/commit/8ad18bc7db6d9ff184ba3518686293a7685bf7b7
@@ -1192,4 +1292,76 @@ All major and minor version changes will be documented in this file. Details of
1192
1292
  [#2315]: https://github.com/gchq/CyberChef/pull/2315
1193
1293
  [#2313]: https://github.com/gchq/CyberChef/pull/2313
1194
1294
  [#2311]: https://github.com/gchq/CyberChef/pull/2311
1295
+ [#2348]: https://github.com/gchq/CyberChef/pull/2348
1296
+ [#2347]: https://github.com/gchq/CyberChef/pull/2347
1297
+ [#2346]: https://github.com/gchq/CyberChef/pull/2346
1298
+ [#2273]: https://github.com/gchq/CyberChef/pull/2273
1299
+ [#2342]: https://github.com/gchq/CyberChef/pull/2342
1300
+ [#1922]: https://github.com/gchq/CyberChef/pull/1922
1301
+ [#2557]: https://github.com/gchq/CyberChef/pull/2557
1302
+ [#2552]: https://github.com/gchq/CyberChef/pull/2552
1303
+ [#2551]: https://github.com/gchq/CyberChef/pull/2551
1304
+ [#2550]: https://github.com/gchq/CyberChef/pull/2550
1305
+ [#2553]: https://github.com/gchq/CyberChef/pull/2553
1306
+ [#2547]: https://github.com/gchq/CyberChef/pull/2547
1307
+ [#2545]: https://github.com/gchq/CyberChef/pull/2545
1308
+ [#2543]: https://github.com/gchq/CyberChef/pull/2543
1309
+ [#2539]: https://github.com/gchq/CyberChef/pull/2539
1310
+ [#1431]: https://github.com/gchq/CyberChef/pull/1431
1311
+ [#2527]: https://github.com/gchq/CyberChef/pull/2527
1312
+ [#2502]: https://github.com/gchq/CyberChef/pull/2502
1313
+ [#2391]: https://github.com/gchq/CyberChef/pull/2391
1314
+ [#2471]: https://github.com/gchq/CyberChef/pull/2471
1315
+ [#2497]: https://github.com/gchq/CyberChef/pull/2497
1316
+ [#2500]: https://github.com/gchq/CyberChef/pull/2500
1317
+ [#2499]: https://github.com/gchq/CyberChef/pull/2499
1318
+ [#2498]: https://github.com/gchq/CyberChef/pull/2498
1319
+ [#2143]: https://github.com/gchq/CyberChef/pull/2143
1320
+ [#2341]: https://github.com/gchq/CyberChef/pull/2341
1321
+ [#2478]: https://github.com/gchq/CyberChef/pull/2478
1322
+ [#2479]: https://github.com/gchq/CyberChef/pull/2479
1323
+ [#2463]: https://github.com/gchq/CyberChef/pull/2463
1324
+ [#2468]: https://github.com/gchq/CyberChef/pull/2468
1325
+ [#2385]: https://github.com/gchq/CyberChef/pull/2385
1326
+ [#2467]: https://github.com/gchq/CyberChef/pull/2467
1327
+ [#2443]: https://github.com/gchq/CyberChef/pull/2443
1328
+ [#2417]: https://github.com/gchq/CyberChef/pull/2417
1329
+ [#2461]: https://github.com/gchq/CyberChef/pull/2461
1330
+ [#2438]: https://github.com/gchq/CyberChef/pull/2438
1331
+ [#2439]: https://github.com/gchq/CyberChef/pull/2439
1332
+ [#2441]: https://github.com/gchq/CyberChef/pull/2441
1333
+ [#2442]: https://github.com/gchq/CyberChef/pull/2442
1334
+ [#2425]: https://github.com/gchq/CyberChef/pull/2425
1335
+ [#2428]: https://github.com/gchq/CyberChef/pull/2428
1336
+ [#2429]: https://github.com/gchq/CyberChef/pull/2429
1337
+ [#2430]: https://github.com/gchq/CyberChef/pull/2430
1338
+ [#2431]: https://github.com/gchq/CyberChef/pull/2431
1339
+ [#2412]: https://github.com/gchq/CyberChef/pull/2412
1340
+ [#2339]: https://github.com/gchq/CyberChef/pull/2339
1341
+ [#2389]: https://github.com/gchq/CyberChef/pull/2389
1342
+ [#2403]: https://github.com/gchq/CyberChef/pull/2403
1343
+ [#2402]: https://github.com/gchq/CyberChef/pull/2402
1344
+ [#2401]: https://github.com/gchq/CyberChef/pull/2401
1345
+ [#2387]: https://github.com/gchq/CyberChef/pull/2387
1346
+ [#2384]: https://github.com/gchq/CyberChef/pull/2384
1347
+ [#2386]: https://github.com/gchq/CyberChef/pull/2386
1348
+ [#2388]: https://github.com/gchq/CyberChef/pull/2388
1349
+ [#2378]: https://github.com/gchq/CyberChef/pull/2378
1350
+ [#2379]: https://github.com/gchq/CyberChef/pull/2379
1351
+ [#2372]: https://github.com/gchq/CyberChef/pull/2372
1352
+ [#2368]: https://github.com/gchq/CyberChef/pull/2368
1353
+ [#2370]: https://github.com/gchq/CyberChef/pull/2370
1354
+ [#2371]: https://github.com/gchq/CyberChef/pull/2371
1355
+ [#2369]: https://github.com/gchq/CyberChef/pull/2369
1356
+ [#1882]: https://github.com/gchq/CyberChef/pull/1882
1357
+ [#2354]: https://github.com/gchq/CyberChef/pull/2354
1358
+ [#2363]: https://github.com/gchq/CyberChef/pull/2363
1359
+ [#2364]: https://github.com/gchq/CyberChef/pull/2364
1360
+ [#2365]: https://github.com/gchq/CyberChef/pull/2365
1361
+ [#2366]: https://github.com/gchq/CyberChef/pull/2366
1362
+ [#2367]: https://github.com/gchq/CyberChef/pull/2367
1363
+ [#2361]: https://github.com/gchq/CyberChef/pull/2361
1364
+ [#2332]: https://github.com/gchq/CyberChef/pull/2332
1365
+ [#2353]: https://github.com/gchq/CyberChef/pull/2353
1366
+ [#2351]: https://github.com/gchq/CyberChef/pull/2351
1195
1367
 
package/Dockerfile CHANGED
@@ -4,7 +4,7 @@
4
4
  # Modifier --platform=$BUILDPLATFORM limits the platform to "BUILDPLATFORM" during buildx multi-platform builds
5
5
  # This is because npm "chromedriver" package is not compatiable with all platforms
6
6
  # For more info see: https://docs.docker.com/build/building/multi-platform/#cross-compilation
7
- FROM --platform=$BUILDPLATFORM node:18-alpine AS builder
7
+ FROM --platform=$BUILDPLATFORM node:24-alpine@sha256:fb71d01345f11b708a3553c66e7c74074f2d506400ea81973343d915cb64eef0 AS builder
8
8
 
9
9
  WORKDIR /app
10
10
 
@@ -27,7 +27,7 @@ RUN npm run build
27
27
  #########################################
28
28
  # Package static build files into nginx #
29
29
  #########################################
30
- FROM nginx:stable-alpine AS cyberchef
30
+ FROM nginxinc/nginx-unprivileged:stable-alpine@sha256:37f356a5eba5d187365b4f59cd6cc29f1f922ad18146d554b576a80983377e6a AS cyberchef
31
31
 
32
32
  LABEL maintainer="GCHQ <oss@gchq.gov.uk>"
33
33
 
package/Gruntfile.js CHANGED
@@ -6,7 +6,7 @@ const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPl
6
6
  const glob = require("glob");
7
7
  const path = require("path");
8
8
 
9
- const nodeFlags = "--experimental-modules --experimental-json-modules --experimental-specifier-resolution=node --no-warnings --no-deprecation";
9
+ const nodeFlags = "--no-warnings --no-deprecation";
10
10
 
11
11
  /**
12
12
  * Grunt configuration for building the app in various formats.
@@ -89,6 +89,8 @@ module.exports = function (grunt) {
89
89
  const compileYear = grunt.template.today("UTC:yyyy"),
90
90
  compileTime = grunt.template.today("UTC:dd/mm/yyyy HH:MM:ss") + " UTC",
91
91
  pkg = grunt.file.readJSON("package.json"),
92
+ version = process.env.GITHUB_SHA || `v${pkg.version}`,
93
+ downloadZipFilename = `CyberChef_${version}.zip`,
92
94
  webpackConfig = require("./webpack.config.js"),
93
95
  BUILD_CONSTANTS = {
94
96
  COMPILE_YEAR: JSON.stringify(compileYear),
@@ -129,7 +131,9 @@ module.exports = function (grunt) {
129
131
  chunks: ["main"],
130
132
  compileYear: compileYear,
131
133
  compileTime: compileTime,
132
- version: pkg.version,
134
+ version: version,
135
+ latestReleaseVersion: pkg.version,
136
+ downloadZipFilename: downloadZipFilename,
133
137
  minify: {
134
138
  removeComments: true,
135
139
  collapseWhitespace: true,
@@ -140,7 +144,8 @@ module.exports = function (grunt) {
140
144
  new BundleAnalyzerPlugin({
141
145
  analyzerMode: "static",
142
146
  reportFilename: "BundleAnalyzerReport.html",
143
- openAnalyzer: false
147
+ openAnalyzer: false,
148
+ excludeAssets: /.*Worker.js/
144
149
  }),
145
150
  ]
146
151
  };
@@ -245,7 +250,7 @@ module.exports = function (grunt) {
245
250
  "!build/prod/index.html",
246
251
  "!build/prod/BundleAnalyzerReport.html",
247
252
  ],
248
- dest: `build/prod/CyberChef_v${pkg.version}.zip`
253
+ dest: `build/prod/${downloadZipFilename}`
249
254
  }
250
255
  },
251
256
  connect: {
@@ -333,12 +338,12 @@ module.exports = function (grunt) {
333
338
  switch (process.platform) {
334
339
  case "darwin":
335
340
  return chainCommands([
336
- `shasum -a 256 build/prod/CyberChef_v${pkg.version}.zip | awk '{print $1;}' > build/prod/sha256digest.txt`,
341
+ `shasum -a 256 build/prod/${downloadZipFilename} | awk '{print $1;}' > build/prod/sha256digest.txt`,
337
342
  `sed -i '' -e "s/DOWNLOAD_HASH_PLACEHOLDER/$(cat build/prod/sha256digest.txt)/" build/prod/index.html`
338
343
  ]);
339
344
  default:
340
345
  return chainCommands([
341
- `sha256sum build/prod/CyberChef_v${pkg.version}.zip | awk '{print $1;}' > build/prod/sha256digest.txt`,
346
+ `sha256sum build/prod/${downloadZipFilename} | awk '{print $1;}' > build/prod/sha256digest.txt`,
342
347
  `sed -i -e "s/DOWNLOAD_HASH_PLACEHOLDER/$(cat build/prod/sha256digest.txt)/" build/prod/index.html`
343
348
  ]);
344
349
  }
package/README.md CHANGED
@@ -36,7 +36,7 @@ docker build --tag cyberchef --ulimit nofile=10000 .
36
36
  ```
37
37
  2. Run the docker container
38
38
  ```bash
39
- docker run -it -p 8080:80 cyberchef
39
+ docker run -it -p 8080:8080 cyberchef
40
40
  ```
41
41
  3. Navigate to `http://localhost:8080` in your browser
42
42
 
@@ -45,7 +45,7 @@ docker run -it -p 8080:80 cyberchef
45
45
  If you prefer to skip the build process, you can use the pre-built image
46
46
 
47
47
  ```bash
48
- docker run -it -p 8080:80 ghcr.io/gchq/cyberchef:latest
48
+ docker run -it -p 8080:8080 ghcr.io/gchq/cyberchef:latest
49
49
  ```
50
50
 
51
51
  Just like before, navigate to `http://localhost:8080` in your browser.
@@ -72,6 +72,7 @@ You can use as many operations as you like in simple or complex ways. Some examp
72
72
  - [Carry out different operations on data of different types][8]
73
73
  - [Use parts of the input as arguments to operations][9]
74
74
  - [Perform AES decryption, extracting the IV from the beginning of the cipher stream][10]
75
+ - [A simpler way to perform the same AES Decryption][13]
75
76
  - [Automagically detect several layers of nested encoding][12]
76
77
 
77
78
 
@@ -120,7 +121,7 @@ CyberChef is built to support
120
121
 
121
122
  ## Node.js support
122
123
 
123
- CyberChef is built to fully support Node.js `v16`. For more information, see the ["Node API" wiki page](https://github.com/gchq/CyberChef/wiki/Node-API)
124
+ CyberChef is built to fully support Node.js `v24`. For more information, see the ["Node API" wiki page](https://github.com/gchq/CyberChef/wiki/Node-API)
124
125
 
125
126
 
126
127
  ## Contributing
@@ -147,6 +148,7 @@ CyberChef is released under the [Apache 2.0 Licence](https://www.apache.org/lice
147
148
  [7]: https://gchq.github.io/CyberChef/#recipe=Fork('%5C%5Cn','%5C%5Cn',false)From_UNIX_Timestamp('Seconds%20(s)')&input=OTc4MzQ2ODAwCjEwMTI2NTEyMDAKMTA0NjY5NjQwMAoxMDgxMDg3MjAwCjExMTUzMDUyMDAKMTE0OTYwOTYwMA
148
149
  [8]: https://gchq.github.io/CyberChef/#recipe=Fork('%5C%5Cn','%5C%5Cn',false)Conditional_Jump('1',false,'base64',10)To_Hex('Space')Return()Label('base64')To_Base64('A-Za-z0-9%2B/%3D')&input=U29tZSBkYXRhIHdpdGggYSAxIGluIGl0ClNvbWUgZGF0YSB3aXRoIGEgMiBpbiBpdA
149
150
  [9]: https://gchq.github.io/CyberChef/#recipe=Register('key%3D(%5B%5C%5Cda-f%5D*)',true,false)Find_/_Replace(%7B'option':'Regex','string':'.*data%3D(.*)'%7D,'$1',true,false,true)RC4(%7B'option':'Hex','string':'$R0'%7D,'Hex','Latin1')&input=aHR0cDovL21hbHdhcmV6LmJpei9iZWFjb24ucGhwP2tleT0wZTkzMmE1YyZkYXRhPThkYjdkNWViZTM4NjYzYTU0ZWNiYjMzNGUzZGIxMQ
150
- [10]: https://gchq.github.io/CyberChef/#recipe=Register('(.%7B32%7D)',true,false)Drop_bytes(0,32,false)AES_Decrypt(%7B'option':'Hex','string':'1748e7179bd56570d51fa4ba287cc3e5'%7D,%7B'option':'Hex','string':'$R0'%7D,'CTR','Hex','Raw',%7B'option':'Hex','string':''%7D)&input=NTFlMjAxZDQ2MzY5OGVmNWY3MTdmNzFmNWI0NzEyYWYyMGJlNjc0YjNiZmY1M2QzODU0NjM5NmVlNjFkYWFjNDkwOGUzMTljYTNmY2Y3MDg5YmZiNmIzOGVhOTllNzgxZDI2ZTU3N2JhOWRkNmYzMTFhMzk0MjBiODk3OGU5MzAxNGIwNDJkNDQ3MjZjYWVkZjU0MzZlYWY2NTI0MjljMGRmOTRiNTIxNjc2YzdjMmNlODEyMDk3YzI3NzI3M2M3YzcyY2Q4OWFlYzhkOWZiNGEyNzU4NmNjZjZhYTBhZWUyMjRjMzRiYTNiZmRmN2FlYjFkZGQ0Nzc2MjJiOTFlNzJjOWU3MDlhYjYwZjhkYWY3MzFlYzBjYzg1Y2UwZjc0NmZmMTU1NGE1YTNlYzI5MWNhNDBmOWU2MjlhODcyNTkyZDk4OGZkZDgzNDUzNGFiYTc5YzFhZDE2NzY3NjlhN2MwMTBiZjA0NzM5ZWNkYjY1ZDk1MzAyMzcxZDYyOWQ5ZTM3ZTdiNGEzNjFkYTQ2OGYxZWQ1MzU4OTIyZDJlYTc1MmRkMTFjMzY2ZjMwMTdiMTRhYTAxMWQyYWYwM2M0NGY5NTU3OTA5OGExNWUzY2Y5YjQ0ODZmOGZmZTljMjM5ZjM0ZGU3MTUxZjZjYTY1MDBmZTRiODUwYzNmMWMwMmU4MDFjYWYzYTI0NDY0NjE0ZTQyODAxNjE1YjhmZmFhMDdhYzgyNTE0OTNmZmRhN2RlNWRkZjMzNjg4ODBjMmI5NWIwMzBmNDFmOGYxNTA2NmFkZDA3MWE2NmNmNjBlNWY0NmYzYTIzMGQzOTdiNjUyOTYzYTIxYTUzZg
151
+ [10]: https://gchq.github.io/CyberChef/#recipe=Register('(.%7B32%7D)',true,false,false)Drop_bytes(0,32,false)AES_Decrypt(%7B'option':'Hex','string':'1748e7179bd56570d51fa4ba287cc3e5'%7D,%7B'option':'Hex','string':'$R0'%7D,16,'CTR','Hex','Raw',%7B'option':'Hex','string':''%7D,%7B'option':'Hex','string':''%7D,'Off')&input=NTFlMjAxZDQ2MzY5OGVmNWY3MTdmNzFmNWI0NzEyYWYyMGJlNjc0YjNiZmY1M2QzODU0NjM5NmVlNjFkYWFjNDkwOGUzMTljYTNmY2Y3MDg5YmZiNmIzOGVhOTllNzgxZDI2ZTU3N2JhOWRkNmYzMTFhMzk0MjBiODk3OGU5MzAxNGIwNDJkNDQ3MjZjYWVkZjU0MzZlYWY2NTI0MjljMGRmOTRiNTIxNjc2YzdjMmNlODEyMDk3YzI3NzI3M2M3YzcyY2Q4OWFlYzhkOWZiNGEyNzU4NmNjZjZhYTBhZWUyMjRjMzRiYTNiZmRmN2FlYjFkZGQ0Nzc2MjJiOTFlNzJjOWU3MDlhYjYwZjhkYWY3MzFlYzBjYzg1Y2UwZjc0NmZmMTU1NGE1YTNlYzI5MWNhNDBmOWU2MjlhODcyNTkyZDk4OGZkZDgzNDUzNGFiYTc5YzFhZDE2NzY3NjlhN2MwMTBiZjA0NzM5ZWNkYjY1ZDk1MzAyMzcxZDYyOWQ5ZTM3ZTdiNGEzNjFkYTQ2OGYxZWQ1MzU4OTIyZDJlYTc1MmRkMTFjMzY2ZjMwMTdiMTRhYTAxMWQyYWYwM2M0NGY5NTU3OTA5OGExNWUzY2Y5YjQ0ODZmOGZmZTljMjM5ZjM0ZGU3MTUxZjZjYTY1MDBmZTRiODUwYzNmMWMwMmU4MDFjYWYzYTI0NDY0NjE0ZTQyODAxNjE1YjhmZmFhMDdhYzgyNTE0OTNmZmRhN2RlNWRkZjMzNjg4ODBjMmI5NWIwMzBmNDFmOGYxNTA2NmFkZDA3MWE2NmNmNjBlNWY0NmYzYTIzMGQzOTdiNjUyOTYzYTIxYTUzZg
151
152
  [11]: https://gchq.github.io/CyberChef/#recipe=XOR(%7B'option':'Hex','string':'3a'%7D,'Standard',false)To_Hexdump(16,false,false)&input=VGhlIGFuc3dlciB0byB0aGUgdWx0aW1hdGUgcXVlc3Rpb24gb2YgbGlmZSwgdGhlIFVuaXZlcnNlLCBhbmQgZXZlcnl0aGluZyBpcyA0Mi4
152
153
  [12]: https://gchq.github.io/CyberChef/#recipe=Magic(3,false,false)&input=V1VhZ3dzaWFlNm1QOGdOdENDTFVGcENwQ0IyNlJtQkRvREQ4UGFjZEFtekF6QlZqa0syUXN0RlhhS2hwQzZpVVM3UkhxWHJKdEZpc29SU2dvSjR3aGptMWFybTg2NHFhTnE0UmNmVW1MSHJjc0FhWmM1VFhDWWlmTmRnUzgzZ0RlZWpHWDQ2Z2FpTXl1QlY2RXNrSHQxc2NnSjg4eDJ0TlNvdFFEd2JHWTFtbUNvYjJBUkdGdkNLWU5xaU45aXBNcTFaVTFtZ2tkYk51R2NiNzZhUnRZV2hDR1VjOGc5M1VKdWRoYjhodHNoZVpud1RwZ3FoeDgzU1ZKU1pYTVhVakpUMnptcEM3dVhXdHVtcW9rYmRTaTg4WXRrV0RBYzFUb291aDJvSDRENGRkbU5LSldVRHBNd21uZ1VtSzE0eHdtb21jY1BRRTloTTE3MkFQblNxd3hkS1ExNzJSa2NBc3lzbm1qNWdHdFJtVk5OaDJzMzU5d3I2bVMyUVJQ
154
+ [13]: https://gchq.github.io/CyberChef/#recipe=AES_Decrypt(%7B'option':'Hex','string':'1748e7179bd56570d51fa4ba287cc3e5'%7D,%7B'option':'Hex','string':'$R0'%7D,16,'CTR','Hex','Raw',%7B'option':'Hex','string':''%7D,%7B'option':'Hex','string':''%7D,'From%20start')&input=NTFlMjAxZDQ2MzY5OGVmNWY3MTdmNzFmNWI0NzEyYWYyMGJlNjc0YjNiZmY1M2QzODU0NjM5NmVlNjFkYWFjNDkwOGUzMTljYTNmY2Y3MDg5YmZiNmIzOGVhOTllNzgxZDI2ZTU3N2JhOWRkNmYzMTFhMzk0MjBiODk3OGU5MzAxNGIwNDJkNDQ3MjZjYWVkZjU0MzZlYWY2NTI0MjljMGRmOTRiNTIxNjc2YzdjMmNlODEyMDk3YzI3NzI3M2M3YzcyY2Q4OWFlYzhkOWZiNGEyNzU4NmNjZjZhYTBhZWUyMjRjMzRiYTNiZmRmN2FlYjFkZGQ0Nzc2MjJiOTFlNzJjOWU3MDlhYjYwZjhkYWY3MzFlYzBjYzg1Y2UwZjc0NmZmMTU1NGE1YTNlYzI5MWNhNDBmOWU2MjlhODcyNTkyZDk4OGZkZDgzNDUzNGFiYTc5YzFhZDE2NzY3NjlhN2MwMTBiZjA0NzM5ZWNkYjY1ZDk1MzAyMzcxZDYyOWQ5ZTM3ZTdiNGEzNjFkYTQ2OGYxZWQ1MzU4OTIyZDJlYTc1MmRkMTFjMzY2ZjMwMTdiMTRhYTAxMWQyYWYwM2M0NGY5NTU3OTA5OGExNWUzY2Y5YjQ0ODZmOGZmZTljMjM5ZjM0ZGU3MTUxZjZjYTY1MDBmZTRiODUwYzNmMWMwMmU4MDFjYWYzYTI0NDY0NjE0ZTQyODAxNjE1YjhmZmFhMDdhYzgyNTE0OTNmZmRhN2RlNWRkZjMzNjg4ODBjMmI5NWIwMzBmNDFmOGYxNTA2NmFkZDA3MWE2NmNmNjBlNWY0NmYzYTIzMGQzOTdiNjUyOTYzYTIxYTUzZg
package/SECURITY.md CHANGED
@@ -2,25 +2,15 @@
2
2
 
3
3
  ## Supported Versions
4
4
 
5
- CyberChef is supported on a best endeavours basis. Patches will be applied to
6
- the latest version rather than retroactively to older versions. To ensure you
7
- are using the most secure version of CyberChef, please make sure you have the
8
- [latest release](https://github.com/gchq/CyberChef/releases/latest). The
9
- official [live demo](https://gchq.github.io/CyberChef/) is always up to date.
5
+ CyberChef is supported on a best endeavours basis.
6
+ Patches will be applied to the latest version rather than retroactively to older versions.
7
+ To ensure you are using the most secure version of CyberChef, please make sure you have the [latest release](https://github.com/gchq/CyberChef/releases/latest). [The official website](https://gchq.github.io/CyberChef/) is always up to date.
10
8
 
11
9
  ## Reporting a Vulnerability
12
10
 
13
- In most scenarios, the most appropriate way to report a vulnerability is to
14
- [raise a new issue](https://github.com/gchq/CyberChef/issues/new/choose)
15
- describing the problem in as much detail as possible, ideally with examples.
16
- This will obviously be public. If you feel that the vulnerability is
17
- significant enough to warrant a private disclosure, please email
18
- [oss@gchq.gov.uk](mailto:oss@gchq.gov.uk) and
19
- [n1474335@gmail.com](mailto:n1474335@gmail.com).
11
+ If you discover a vulnerability in CyberChef, please do not publicly disclose it, and do not create a GitHub issue.
20
12
 
21
- Disclosures of vulnerabilities in CyberChef are always welcomed. Whilst we aim
22
- to write clean and secure code free from bugs, we recognise that this is an open
23
- source project written by analysts in their spare time, relying on dozens of
24
- open source libraries that are modified and updated on a regular basis. We hope
25
- that the community will continue to support us as we endeavour to maintain and
26
- develop this tool together.
13
+ Instead, send an email as soon as possible to [CyberChefSecurity@gchq.gov.uk](mailto:CyberChefSecurity@gchq.gov.uk).
14
+ The report will be acknowledged and actioned urgently by the CyberChef maintainers.
15
+
16
+ If you do not receive a timely acknowledgement, please notify [oss@gchq.gov.uk](mailto:oss@gchq.gov.uk) and [CyberChef@gchq.gov.uk](mailto:CyberChef@gchq.gov.uk) of your vulnerability report.
package/babel.config.js CHANGED
@@ -16,6 +16,9 @@ module.exports = function(api) {
16
16
  "regenerator": true
17
17
  }
18
18
  ]
19
- ]
19
+ ],
20
+ "generatorOpts": {
21
+ "importAttributesKeyword": "with"
22
+ }
20
23
  };
21
24
  };
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "cyberchef",
3
- "version": "10.24.0",
3
+ "version": "11.1.0",
4
4
  "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
5
- "author": "n1474335 <n1474335@gmail.com>",
5
+ "author": "GCHQ <CyberChef@gchq.gov.uk>",
6
6
  "homepage": "https://gchq.github.io/CyberChef",
7
7
  "copyright": "Crown copyright 2016",
8
8
  "license": "Apache-2.0",
@@ -36,33 +36,34 @@
36
36
  "browserslist": [
37
37
  "Chrome >= 50",
38
38
  "Firefox >= 38",
39
- "node >= 16"
39
+ "node >= 24"
40
40
  ],
41
41
  "devDependencies": {
42
- "@babel/eslint-parser": "^7.28.6",
42
+ "@babel/eslint-parser": "^7.29.7",
43
43
  "@babel/plugin-syntax-import-assertions": "^7.28.6",
44
- "@babel/plugin-transform-runtime": "^7.29.0",
45
- "@babel/preset-env": "^7.29.2",
46
- "@babel/runtime": "^7.29.2",
44
+ "@babel/plugin-transform-runtime": "^7.29.7",
45
+ "@babel/preset-env": "^7.29.7",
46
+ "@babel/runtime": "^7.29.7",
47
47
  "@codemirror/commands": "^6.10.3",
48
48
  "@codemirror/language": "^6.12.3",
49
49
  "@codemirror/search": "^6.7.0",
50
50
  "@codemirror/state": "^6.5.4",
51
- "@codemirror/view": "^6.41.1",
51
+ "@codemirror/view": "^6.43.1",
52
+ "@puppeteer/browsers": "3.0.4",
52
53
  "autoprefixer": "^10.5.0",
53
54
  "babel-loader": "^10.1.1",
54
55
  "base64-loader": "^1.0.0",
55
- "chromedriver": "^146.0.6",
56
+ "chromedriver": "^148.0.4",
56
57
  "cli-progress": "^3.12.0",
57
58
  "colors": "^1.4.0",
58
- "compression-webpack-plugin": "^11.1.0",
59
- "copy-webpack-plugin": "^13.0.1",
59
+ "compression-webpack-plugin": "^12.0.0",
60
+ "copy-webpack-plugin": "^14.0.0",
60
61
  "core-js": "^3.49.0",
61
- "cspell": "^8.19.4",
62
- "css-loader": "7.1.4",
62
+ "cspell": "^10.0.1",
63
+ "css-loader": "^7.1.4",
63
64
  "eslint": "^9.39.4",
64
65
  "eslint-plugin-jsdoc": "^50.8.0",
65
- "globals": "^15.15.0",
66
+ "globals": "^17.6.0",
66
67
  "grunt": "^1.6.2",
67
68
  "grunt-chmod": "~1.1.1",
68
69
  "grunt-concurrent": "^3.0.0",
@@ -70,25 +71,25 @@
70
71
  "grunt-contrib-connect": "^5.0.1",
71
72
  "grunt-contrib-copy": "~1.0.0",
72
73
  "grunt-contrib-watch": "^1.1.0",
73
- "grunt-eslint": "^25.0.0",
74
+ "grunt-eslint": "^26.0.0",
74
75
  "grunt-exec": "~3.0.0",
75
- "grunt-webpack": "^6.0.0",
76
+ "grunt-webpack": "^8.0.0",
76
77
  "grunt-zip": "^1.0.0",
77
78
  "html-webpack-plugin": "^5.6.7",
78
79
  "imports-loader": "^5.0.0",
79
80
  "mini-css-extract-plugin": "2.10.2",
80
81
  "modify-source-webpack-plugin": "^4.1.0",
81
- "nightwatch": "^3.15.0",
82
- "postcss": "^8.5.10",
82
+ "nightwatch": "^3.16.0",
83
+ "postcss": "^8.5.15",
83
84
  "postcss-css-variables": "^0.19.0",
84
85
  "postcss-import": "^16.1.1",
85
86
  "postcss-loader": "^8.2.1",
86
87
  "prompt": "^1.3.0",
87
- "sitemap": "^8.0.3",
88
- "terser": "^5.46.2",
89
- "webpack": "^5.106.2",
90
- "webpack-bundle-analyzer": "^4.10.2",
91
- "webpack-dev-server": "5.0.4",
88
+ "sitemap": "^9.0.1",
89
+ "terser": "^5.48.0",
90
+ "webpack": "^5.107.2",
91
+ "webpack-bundle-analyzer": "^5.3.0",
92
+ "webpack-dev-server": "^5.2.4",
92
93
  "webpack-node-externals": "^3.0.0",
93
94
  "worker-loader": "^3.0.8"
94
95
  },
@@ -96,22 +97,23 @@
96
97
  "@alexaltea/capstone-js": "^3.0.5",
97
98
  "@astronautlabs/amf": "^0.0.6",
98
99
  "@blu3r4y/lzma": "^2.3.3",
100
+ "@noble/hashes": "2.2.0",
99
101
  "@wavesenterprise/crypto-gost-js": "^2.1.0-RC1",
100
102
  "@xmldom/xmldom": "^0.8.13",
101
103
  "argon2-browser": "^1.18.0",
102
104
  "arrive": "^2.5.3",
103
105
  "assert": "^2.1.0",
104
106
  "avsc": "^5.7.9",
105
- "bcryptjs": "^2.4.3",
106
- "bignumber.js": "^9.3.1",
107
+ "bcryptjs": "^3.0.3",
108
+ "bignumber.js": "^11.1.3",
107
109
  "blakejs": "^1.2.1",
108
110
  "bootstrap": "4.6.2",
109
111
  "bootstrap-colorpicker": "^3.4.0",
110
112
  "bootstrap-material-design": "^4.1.3",
111
113
  "browserify-zlib": "^0.2.0",
112
- "bson": "^4.7.2",
114
+ "bson": "^7.2.0",
113
115
  "buffer": "^6.0.3",
114
- "cbor": "9.0.2",
116
+ "cbor": "10.0.12",
115
117
  "chi-squared": "^1.1.0",
116
118
  "codepage": "^1.15.0",
117
119
  "crypto-api": "^0.8.5",
@@ -120,8 +122,8 @@
120
122
  "ctph.js": "0.0.5",
121
123
  "d3": "7.9.0",
122
124
  "d3-hexbin": "^0.2.2",
123
- "diff": "^5.2.2",
124
- "dompurify": "^3.4.1",
125
+ "diff": "^9.0.0",
126
+ "dompurify": "^3.4.8",
125
127
  "es6-promisify": "^7.0.0",
126
128
  "escodegen": "^2.1.0",
127
129
  "esprima": "^4.0.1",
@@ -132,7 +134,6 @@
132
134
  "flat": "^6.0.1",
133
135
  "geodesy": "1.1.3",
134
136
  "handlebars": "^4.7.9",
135
- "hash-wasm": "^4.12.0",
136
137
  "highlight.js": "^11.11.1",
137
138
  "ieee754": "^1.2.1",
138
139
  "jimp": "1.6.0",
@@ -141,7 +142,7 @@
141
142
  "js-sha3": "^0.9.3",
142
143
  "jsesc": "^3.1.0",
143
144
  "json5": "^2.2.3",
144
- "jsonata": "^2.1.0",
145
+ "jsonata": "^2.2.1",
145
146
  "jsonpath-plus": "^10.4.0",
146
147
  "jsonwebtoken": "9.0.3",
147
148
  "jsqr": "^1.4.0",
@@ -154,9 +155,9 @@
154
155
  "loglevel-message-prefix": "^3.0.0",
155
156
  "lz-string": "^1.5.0",
156
157
  "lz4js": "^0.2.0",
157
- "markdown-it": "^14.1.1",
158
+ "markdown-it": "^14.2.0",
158
159
  "moment": "^2.30.1",
159
- "moment-timezone": "^0.6.1",
160
+ "moment-timezone": "^0.6.2",
160
161
  "ngeohash": "^0.6.3",
161
162
  "node-forge": "^1.4.0",
162
163
  "node-md6": "^0.1.0",
@@ -164,11 +165,12 @@
164
165
  "notepack.io": "^3.0.1",
165
166
  "ntlm": "^0.1.3",
166
167
  "nwmatcher": "^1.4.4",
167
- "otpauth": "9.3.6",
168
+ "otpauth": "^9.5.0",
168
169
  "path": "^0.12.7",
169
170
  "popper.js": "^1.16.1",
170
171
  "process": "^0.11.10",
171
- "protobufjs": "^7.5.5",
172
+ "protobufjs": "^8.6.2",
173
+ "punycode.js": "^2.3.1",
172
174
  "qr-image": "^3.2.0",
173
175
  "reflect-metadata": "^0.2.2",
174
176
  "rison": "^0.1.1",
@@ -176,15 +178,15 @@
176
178
  "snackbarjs": "^1.1.0",
177
179
  "sortablejs": "^1.15.7",
178
180
  "split.js": "^1.6.5",
179
- "sql-formatter": "^15.7.3",
181
+ "sql-formatter": "^15.8.1",
180
182
  "ssdeep.js": "0.0.3",
181
183
  "stream-browserify": "^3.0.0",
182
- "tesseract.js": "^6.0.1",
183
- "ua-parser-js": "^1.0.41",
184
+ "tesseract.js": "^7.0.0",
185
+ "ua-parser-js": "^2.0.10",
184
186
  "unorm": "^1.6.0",
185
187
  "url": "^0.11.4",
186
188
  "utf8": "^3.0.0",
187
- "uuid": "^13.0.0",
189
+ "uuid": "^14.0.0",
188
190
  "vkbeautify": "^0.99.3",
189
191
  "xpath": "0.0.34",
190
192
  "xregexp": "^5.1.2",
@@ -194,18 +196,21 @@
194
196
  "start": "npx grunt dev",
195
197
  "build": "npx grunt prod",
196
198
  "node": "npx grunt node",
197
- "repl": "node --experimental-modules --experimental-json-modules --experimental-specifier-resolution=node --no-experimental-fetch --no-warnings src/node/repl.mjs",
198
- "test": "npx grunt configTests && node --experimental-modules --experimental-json-modules --no-warnings --no-deprecation --openssl-legacy-provider --no-experimental-fetch tests/node/index.mjs && node --experimental-modules --experimental-json-modules --no-warnings --no-deprecation --openssl-legacy-provider --no-experimental-fetch --trace-uncaught tests/operations/index.mjs",
199
+ "repl": "node --no-warnings src/node/repl.mjs",
200
+ "test": "npx grunt configTests && node --no-warnings --no-deprecation --openssl-legacy-provider tests/node/index.mjs && node --no-warnings --no-deprecation --openssl-legacy-provider --trace-uncaught tests/operations/index.mjs",
199
201
  "testnodeconsumer": "npx grunt testnodeconsumer",
200
202
  "testui": "npx grunt testui",
201
203
  "testuidev": "npx nightwatch --env=dev",
202
204
  "lint": "npx grunt lint",
203
205
  "lint:grammar": "cspell ./src",
204
206
  "postinstall": "npx grunt exec:fixCryptoApiImports && npx grunt exec:fixSnackbarMarkup",
205
- "newop": "node --experimental-modules --experimental-json-modules src/core/config/scripts/newOperation.mjs",
206
- "minor": "node --experimental-modules --experimental-json-modules src/core/config/scripts/newMinorVersion.mjs && npm version minor --git-tag-version=false && echo \"Updated to version v$(npm pkg get version | xargs), please create a pull request and once merged use 'npm run tag'\"",
207
+ "newop": "node src/core/config/scripts/newOperation.mjs",
208
+ "minor": "node src/core/config/scripts/newMinorVersion.mjs && npm version minor --git-tag-version=false && echo \"Updated to version v$(npm pkg get version | xargs), please create a pull request and once merged use 'npm run tag'\"",
207
209
  "tag": "git tag -s \"v$(npm pkg get version | xargs)\" -m \"$(npm pkg get version | xargs)\" && echo \"Created v$(npm pkg get version | xargs), now check and push the tag\"",
208
210
  "getheapsize": "node -e 'console.log(`node heap limit = ${require(\"v8\").getHeapStatistics().heap_size_limit / (1024 * 1024)} Mb`)'",
209
211
  "setheapsize": "export NODE_OPTIONS=--max_old_space_size=2048"
212
+ },
213
+ "engines": {
214
+ "node": ">=24 <25"
210
215
  }
211
216
  }
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import Chef from "./Chef.mjs";
10
- import OperationConfig from "./config/OperationConfig.json" assert {type: "json"};
10
+ import OperationConfig from "./config/OperationConfig.json" with { type: "json" };
11
11
  import OpModules from "./config/modules/OpModules.mjs";
12
12
  import loglevelMessagePrefix from "loglevel-message-prefix";
13
13
 
@@ -4,7 +4,7 @@
4
4
  * @license Apache-2.0
5
5
  */
6
6
 
7
- import OperationConfig from "./config/OperationConfig.json" assert {type: "json"};
7
+ import OperationConfig from "./config/OperationConfig.json" with { type: "json" };
8
8
  import OperationError from "./errors/OperationError.mjs";
9
9
  import Operation from "./Operation.mjs";
10
10
  import DishError from "./errors/DishError.mjs";