diff --git a/packages/node_modules/@node-red/runtime/lib/flows/Flow.js b/packages/node_modules/@node-red/runtime/lib/flows/Flow.js index 2833341c6..b541a9d95 100644 --- a/packages/node_modules/@node-red/runtime/lib/flows/Flow.js +++ b/packages/node_modules/@node-red/runtime/lib/flows/Flow.js @@ -485,7 +485,7 @@ class Flow { } if (!key.startsWith("$parent.")) { if (this._env.hasOwnProperty(key)) { - return this._env[key] + return (Object.hasOwn(this._env[key], 'value') && this._env[key].__clone__) ? clone(this._env[key].value) : this._env[key] } } else { key = key.substring(8); diff --git a/packages/node_modules/@node-red/runtime/lib/flows/Group.js b/packages/node_modules/@node-red/runtime/lib/flows/Group.js index dc05211a1..521b6ceda 100644 --- a/packages/node_modules/@node-red/runtime/lib/flows/Group.js +++ b/packages/node_modules/@node-red/runtime/lib/flows/Group.js @@ -41,7 +41,7 @@ class Group { } if (!key.startsWith("$parent.")) { if (this._env.hasOwnProperty(key)) { - return this._env[key] + return (Object.hasOwn(this._env[key], 'value') && this._env[key].__clone__) ? clone(this._env[key].value) : this._env[key] } } else { key = key.substring(8); diff --git a/packages/node_modules/@node-red/runtime/lib/flows/Subflow.js b/packages/node_modules/@node-red/runtime/lib/flows/Subflow.js index 15d8d6c37..031e75c36 100644 --- a/packages/node_modules/@node-red/runtime/lib/flows/Subflow.js +++ b/packages/node_modules/@node-red/runtime/lib/flows/Subflow.js @@ -375,7 +375,7 @@ class Subflow extends Flow { } if (!key.startsWith("$parent.")) { if (this._env.hasOwnProperty(key)) { - return this._env[key] + return (Object.hasOwn(this._env[key], 'value') && this._env[key].__clone__) ? clone(this._env[key].value) : this._env[key] } } else { key = key.substring(8); diff --git a/packages/node_modules/@node-red/runtime/lib/flows/util.js b/packages/node_modules/@node-red/runtime/lib/flows/util.js index 2559fd1da..76dbe2223 100644 --- a/packages/node_modules/@node-red/runtime/lib/flows/util.js +++ b/packages/node_modules/@node-red/runtime/lib/flows/util.js @@ -102,6 +102,9 @@ async function evaluateEnvProperties(flow, env, credentials) { pendingEvaluations.push(new Promise((resolve, _) => { redUtil.evaluateNodeProperty(value, 'jsonata', {_flow: flow}, null, (err, result) => { if (!err) { + if (typeof result === 'object') { + result = { value: result, __clone__: true} + } evaluatedEnv[name] = result } resolve() @@ -109,6 +112,9 @@ async function evaluateEnvProperties(flow, env, credentials) { })) } else { value = redUtil.evaluateNodeProperty(value, type, {_flow: flow}, null, null); + if (typeof value === 'object') { + value = { value: value, __clone__: true} + } } evaluatedEnv[name] = value } @@ -138,8 +144,13 @@ async function evaluateEnvProperties(flow, env, credentials) { } }}, null, null); } + if (typeof value === 'object' && !value.__clone__) { + value = { value: value, __clone__: true} + } evaluatedEnv[name] = value + } + // console.log(evaluatedEnv) return evaluatedEnv }