Merge branch 'master' into feat/newline-operation

This commit is contained in:
GCHQ Developer 85297 2026-02-06 00:34:18 +00:00 committed by GitHub
commit bfda2979a4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 190 additions and 179 deletions

View File

@ -12,3 +12,7 @@ indent_size = 4
[{package.json,.travis.yml,nightwatch.json}] [{package.json,.travis.yml,nightwatch.json}]
indent_style = space indent_style = space
indent_size = 2 indent_size = 2
[.github/**.yml]
indent_style = space
indent_size = 2

View File

@ -1,40 +0,0 @@
name: "CodeQL Analysis"
on:
workflow_dispatch:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
types: [synchronize, opened, reopened]
schedule:
- cron: '22 17 * * 5'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:${{matrix.language}}"

View File

@ -1,5 +1,8 @@
name: "Master Build, Test & Deploy" name: "Master Build, Test & Deploy"
permissions:
contents: read
on: on:
workflow_dispatch: workflow_dispatch:
push: push:
@ -8,14 +11,17 @@ on:
jobs: jobs:
main: main:
permissions:
contents: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v6
- name: Set node version - name: Set node version
uses: actions/setup-node@v3 uses: actions/setup-node@v6
with: with:
node-version: '18.x' node-version: 18
registry-url: "https://registry.npmjs.org"
- name: Install - name: Install
run: | run: |

View File

@ -1,5 +1,8 @@
name: "Pull Requests" name: "Pull Requests"
permissions:
contents: read
on: on:
workflow_dispatch: workflow_dispatch:
pull_request: pull_request:
@ -9,12 +12,13 @@ jobs:
main: main:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v6
- name: Set node version - name: Set node version
uses: actions/setup-node@v3 uses: actions/setup-node@v6
with: with:
node-version: '18.x' node-version: 18
registry-url: "https://registry.npmjs.org"
- name: Install - name: Install
run: | run: |
@ -45,8 +49,6 @@ jobs:
id: build-image id: build-image
uses: docker/build-push-action@v6 uses: docker/build-push-action@v6
with: with:
# Not being uploaded to any registry, use a simple name to allow Buildah to build correctly.
image: cyberchef
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
- name: UI Tests - name: UI Tests
if: success() if: success()

View File

@ -4,7 +4,11 @@ on:
workflow_dispatch: workflow_dispatch:
push: push:
tags: tags:
- 'v*' - "v*"
permissions:
id-token: write
contents: read
env: env:
REGISTRY: ghcr.io REGISTRY: ghcr.io
@ -16,12 +20,13 @@ jobs:
main: main:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v6
- name: Set node version - name: Set node version
uses: actions/setup-node@v3 uses: actions/setup-node@v6
with: with:
node-version: '18.x' node-version: 18
registry-url: "https://registry.npmjs.org"
- name: Install - name: Install
run: | run: |
@ -89,6 +94,4 @@ jobs:
body: "See the [CHANGELOG](https://github.com/gchq/CyberChef/blob/master/CHANGELOG.md) and [commit messages](https://github.com/gchq/CyberChef/commits/master) for details." body: "See the [CHANGELOG](https://github.com/gchq/CyberChef/blob/master/CHANGELOG.md) and [commit messages](https://github.com/gchq/CyberChef/commits/master) for details."
- name: Publish to NPM - name: Publish to NPM
uses: JS-DevTools/npm-publish@v1 run: npm publish
with:
token: ${{ secrets.NPM_TOKEN }}

View File

@ -66,7 +66,7 @@ export function removeSubheadingsFromArray(array) {
* @param str * @param str
*/ */
export function sanitise(str) { export function sanitise(str) {
return str.replace(/ /g, "").toLowerCase(); return str.replace(/[/\s.-]/g, "").toLowerCase();
} }

View File

@ -345,6 +345,42 @@ TestRegister.addApiTests([
assert.strictEqual(result.toString(), "begin_something_aaaaaaaaaaaaaa_end_something"); assert.strictEqual(result.toString(), "begin_something_aaaaaaaaaaaaaa_end_something");
}), }),
it("chef.bake: should accept operation names from Chef Website which contain forward slash", () => {
const result = chef.bake("I'll have the test salmon", [
{ "op": "Find / Replace",
"args": [{ "option": "Regex", "string": "test" }, "good", true, false, true, false]}
]);
assert.strictEqual(result.toString(), "I'll have the good salmon");
}),
it("chef.bake: should accept operation names from Chef Website which contain a hyphen", () => {
const result = chef.bake("I'll have the test salmon", [
{ "op": "Adler-32 Checksum",
"args": [] }
]);
assert.strictEqual(result.toString(), "6e4208f8");
}),
it("chef.bake: should accept operation names from Chef Website which contain a period", () => {
const result = chef.bake("30 13 02 01 05 16 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f", [
{ "op": "Parse ASN.1 hex string",
"args": [0, 32] }
]);
assert.strictEqual(result.toString(), `SEQUENCE
INTEGER 05
IA5String 'Anybody there?'
`);
}),
it("Excluded operations: throw a sensible error when you try and call one", () => {
try {
chef.fork();
} catch (e) {
assert.strictEqual(e.type, "ExcludedOperationError");
assert.strictEqual(e.message, "Sorry, the Fork operation is not available in the Node.js version of CyberChef.");
}
}),
it("chef.bake: cannot accept flowControl operations in recipe", () => { it("chef.bake: cannot accept flowControl operations in recipe", () => {
assert.throws(() => chef.bake("some input", "magic"), { assert.throws(() => chef.bake("some input", "magic"), {
name: "TypeError", name: "TypeError",