From f1c704cfd10c9e18e9d27dcc42836c87aec1f159 Mon Sep 17 00:00:00 2001 From: YISH Date: Mon, 26 Feb 2024 14:01:24 +0800 Subject: [PATCH] Feature: OverrideConfig allows partial override --- packages/server/src/utils/index.ts | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/packages/server/src/utils/index.ts b/packages/server/src/utils/index.ts index 4f222151..2903d426 100644 --- a/packages/server/src/utils/index.ts +++ b/packages/server/src/utils/index.ts @@ -629,7 +629,33 @@ export const replaceInputsWithConfig = (flowNodeData: INodeData, overrideConfig: } } - let paramValue = overrideConfig[config] ?? inputsObj[config] + let paramValue = inputsObj[config] + const overrideConfigValue = overrideConfig[config] + if (overrideConfigValue) { + if (typeof overrideConfigValue === 'object') { + switch (typeof paramValue) { + case 'string': + if (paramValue.startsWith('{') && paramValue.endsWith('}')) { + try { + paramValue = Object.assign({}, JSON.parse(paramValue), overrideConfigValue) + break + } catch (e) { + // ignore + } + } + paramValue = overrideConfigValue + break + case 'object': + paramValue = Object.assign({}, paramValue, overrideConfigValue) + break + default: + paramValue = overrideConfigValue + break + } + } else { + paramValue = overrideConfigValue + } + } // Check if boolean if (paramValue === 'true') paramValue = true else if (paramValue === 'false') paramValue = false