UNPKG

cyberchef

Version:

The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.

66 lines (57 loc) 1.44 kB
/** * @author zhzy0077 [zhzy0077@hotmail.com] * @copyright Crown Copyright 2023 * @license Apache-2.0 */ import Operation from "../Operation.mjs"; import OperationError from "../errors/OperationError.mjs"; import jq from "jq-web"; /** * jq operation */ class Jq extends Operation { /** * Jq constructor */ constructor() { super(); this.name = "Jq"; this.module = "Jq"; this.description = "jq is a lightweight and flexible command-line JSON processor."; this.infoURL = "https://github.com/jqlang/jq"; this.inputType = "JSON"; this.outputType = "string"; this.args = [ { name: "Query", type: "string", value: "" }, { name: "Raw", type: "boolean", value: false }, ]; } /** * @param {JSON} input * @param {Object[]} args * @returns {string} */ run(input, args) { const [query, raw] = args; let result; try { result = jq.json(input, query); } catch (err) { throw new OperationError(`Invalid jq expression: ${err.message}`); } if (raw && typeof result === "string") { return result; } else { return JSON.stringify(result); } } } export default Jq;