mirror of
https://github.com/czlonkowski/n8n-mcp.git
synced 2026-03-28 13:13:08 +00:00
refactor: deduplicate tryParseJson — export from handlers-n8n-manager
tryParseJson was duplicated in handlers-workflow-diff.ts. Now imported from handlers-n8n-manager.ts where it was already defined. Updated test mock to use importOriginal so the real function is available. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2731,7 +2731,7 @@ const updateTableSchema = tableIdSchema.extend({
|
|||||||
|
|
||||||
// MCP transports may serialize JSON objects/arrays as strings.
|
// MCP transports may serialize JSON objects/arrays as strings.
|
||||||
// Parse them back, but return the original value on failure so Zod reports a proper type error.
|
// Parse them back, but return the original value on failure so Zod reports a proper type error.
|
||||||
function tryParseJson(val: unknown): unknown {
|
export function tryParseJson(val: unknown): unknown {
|
||||||
if (typeof val !== 'string') return val;
|
if (typeof val !== 'string') return val;
|
||||||
try { return JSON.parse(val); } catch { return val; }
|
try { return JSON.parse(val); } catch { return val; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { z } from 'zod';
|
|||||||
import { McpToolResponse } from '../types/n8n-api';
|
import { McpToolResponse } from '../types/n8n-api';
|
||||||
import { WorkflowDiffRequest, WorkflowDiffOperation, WorkflowDiffValidationError } from '../types/workflow-diff';
|
import { WorkflowDiffRequest, WorkflowDiffOperation, WorkflowDiffValidationError } from '../types/workflow-diff';
|
||||||
import { WorkflowDiffEngine } from '../services/workflow-diff-engine';
|
import { WorkflowDiffEngine } from '../services/workflow-diff-engine';
|
||||||
import { getN8nApiClient } from './handlers-n8n-manager';
|
import { getN8nApiClient, tryParseJson } from './handlers-n8n-manager';
|
||||||
import { N8nApiError, getUserFriendlyErrorMessage } from '../utils/n8n-errors';
|
import { N8nApiError, getUserFriendlyErrorMessage } from '../utils/n8n-errors';
|
||||||
import { logger } from '../utils/logger';
|
import { logger } from '../utils/logger';
|
||||||
import { InstanceContext } from '../types/instance-context';
|
import { InstanceContext } from '../types/instance-context';
|
||||||
@@ -36,12 +36,6 @@ const NODE_TARGETING_OPERATIONS = new Set([
|
|||||||
'updateNode', 'removeNode', 'moveNode', 'enableNode', 'disableNode'
|
'updateNode', 'removeNode', 'moveNode', 'enableNode', 'disableNode'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Parse JSON strings to values — VS Code extension sends arrays as JSON strings (#600)
|
|
||||||
function tryParseJson(val: unknown): unknown {
|
|
||||||
if (typeof val !== 'string') return val;
|
|
||||||
try { return JSON.parse(val); } catch { return val; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// Zod schema for the diff request
|
// Zod schema for the diff request
|
||||||
const workflowDiffSchema = z.object({
|
const workflowDiffSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
|
|||||||
@@ -17,9 +17,13 @@ vi.mock('@/services/workflow-diff-engine');
|
|||||||
vi.mock('@/services/n8n-api-client');
|
vi.mock('@/services/n8n-api-client');
|
||||||
vi.mock('@/config/n8n-api');
|
vi.mock('@/config/n8n-api');
|
||||||
vi.mock('@/utils/logger');
|
vi.mock('@/utils/logger');
|
||||||
vi.mock('@/mcp/handlers-n8n-manager', () => ({
|
vi.mock('@/mcp/handlers-n8n-manager', async (importOriginal) => {
|
||||||
getN8nApiClient: vi.fn(),
|
const actual = await importOriginal<typeof import('@/mcp/handlers-n8n-manager')>();
|
||||||
}));
|
return {
|
||||||
|
...actual,
|
||||||
|
getN8nApiClient: vi.fn(),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
// Import mocked modules
|
// Import mocked modules
|
||||||
import { getN8nApiClient } from '@/mcp/handlers-n8n-manager';
|
import { getN8nApiClient } from '@/mcp/handlers-n8n-manager';
|
||||||
|
|||||||
Reference in New Issue
Block a user