Skip to content

Commit 6f29e24

Browse files
authored
fix(variables): fix variables block json resolution (#1997)
1 parent c2ccd51 commit 6f29e24

File tree

1 file changed

+9
-20
lines changed

1 file changed

+9
-20
lines changed

apps/sim/executor/handlers/variables/variables-handler.ts

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -127,33 +127,22 @@ export class VariablesBlockHandler implements BlockHandler {
127127
}
128128

129129
if (type === 'object' || type === 'array') {
130+
// If value is already an object or array, accept it as-is
131+
// The type hint is for UI purposes and string parsing, not runtime validation
130132
if (typeof value === 'object' && value !== null) {
131-
if (type === 'array' && !Array.isArray(value)) {
132-
throw new Error(
133-
`Invalid array value for variable "${variableName || 'unknown'}": expected an array, got an object`
134-
)
135-
}
136-
if (type === 'object' && Array.isArray(value)) {
137-
throw new Error(
138-
`Invalid object value for variable "${variableName || 'unknown'}": expected an object, got an array`
139-
)
140-
}
141133
return value
142134
}
135+
// If it's a string, try to parse it as JSON
143136
if (typeof value === 'string' && value.trim()) {
144137
try {
145138
const parsed = JSON.parse(value)
146-
if (type === 'array' && !Array.isArray(parsed)) {
147-
throw new Error(
148-
`Invalid array value for variable "${variableName || 'unknown'}": parsed value is not an array`
149-
)
150-
}
151-
if (type === 'object' && (Array.isArray(parsed) || typeof parsed !== 'object')) {
152-
throw new Error(
153-
`Invalid object value for variable "${variableName || 'unknown'}": parsed value is not an object`
154-
)
139+
// Accept any valid JSON object or array
140+
if (typeof parsed === 'object' && parsed !== null) {
141+
return parsed
155142
}
156-
return parsed
143+
throw new Error(
144+
`Invalid JSON for variable "${variableName || 'unknown'}": parsed value is not an object or array`
145+
)
157146
} catch (error: any) {
158147
throw new Error(
159148
`Invalid JSON for variable "${variableName || 'unknown'}": ${error.message}`

0 commit comments

Comments
 (0)