n8n-nodes-base
Version:
Base nodes of n8n
67 lines • 2.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseJsonIfPresent = parseJsonIfPresent;
exports.cleanOutputForToolUse = cleanOutputForToolUse;
const n8n_workflow_1 = require("n8n-workflow");
/**
* Parse JSON when the 'Parse JSON Output' parameter is enabled
* @param this - The execution context
* @param index - The index of the node
* @param response - The Airtop API response to parse
* @returns The parsed output
*/
function parseJsonIfPresent(index, response) {
const parseJsonOutput = this.getNodeParameter('additionalFields.parseJsonOutput', index, false);
const outputJsonSchema = this.getNodeParameter('additionalFields.outputSchema', index, '');
if (!parseJsonOutput || !outputJsonSchema.startsWith('{')) {
return response;
}
try {
const output = JSON.parse(response.data?.modelResponse ?? '');
return {
sessionId: response.sessionId,
windowId: response.windowId,
output,
};
}
catch (error) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Output is not a valid JSON');
}
}
/**
* Clean up the output when used as a tool
* @param output - The output to clean up
* @returns The cleaned up output
*/
function cleanOutputForToolUse(output) {
const getOutput = (executionData) => {
// Return error message
if (executionData.json?.errors?.length) {
const errorMessage = executionData.json?.errors[0].message;
return {
output: `Error: ${errorMessage}`,
};
}
// Return output parsed from JSON
if (executionData.json?.output) {
return executionData.json?.output;
}
// Return model response
if (executionData.json?.data?.modelResponse) {
return {
output: executionData.json?.data?.modelResponse,
};
}
// Return everything else
return {
output: { ...(executionData.json?.data ?? {}) },
};
};
return output.map((executionData) => ({
...executionData,
json: {
...getOutput(executionData),
},
}));
}
//# sourceMappingURL=output.utils.js.map