feat: add Raw option for Jq operation (#2237)

This commit is contained in:
Roman Karwacik
2026-03-20 10:26:39 +01:00
committed by GitHub
parent 7f4f90e4f3
commit 290f824e18
2 changed files with 44 additions and 4 deletions

View File

@@ -30,7 +30,12 @@ class Jq extends Operation {
name: "Query",
type: "string",
value: ""
}
},
{
name: "Raw",
type: "boolean",
value: false
},
];
}
@@ -40,7 +45,7 @@ class Jq extends Operation {
* @returns {string}
*/
run(input, args) {
const [query] = args;
const [query, raw] = args;
let result;
try {
@@ -48,8 +53,11 @@ class Jq extends Operation {
} catch (err) {
throw new OperationError(`Invalid jq expression: ${err.message}`);
}
return JSON.stringify(result);
if (raw && typeof result === "string") {
return result;
} else {
return JSON.stringify(result);
}
}
}

View File

@@ -0,0 +1,32 @@
/**
* Jq tests.
*
* @author rtpt-romankarwacik [roman.karwacik@redteam-pentesting.de]
*
*/
import TestRegister from "../../lib/TestRegister.mjs";
TestRegister.addTests([
{
name: "Get raw JSON Property",
input: '{"data": "testString\\u0000"}',
expectedOutput: "testString\u0000",
recipeConfig: [
{
op: "Jq",
args: [".data", true],
},
],
},
{
name: "Get JSON Property",
input: '{"data": "testString\\u0000"}',
expectedOutput: "\"testString\\u0000\"",
recipeConfig: [
{
op: "Jq",
args: [".data", false],
},
],
},
]);