From d10adcf35d8db3669c34fb1924185f2831bc4fa8 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Sun, 8 May 2022 16:47:31 +0200 Subject: [PATCH] Fix `getPropertyNodeFromPath` conditions --- server/src/jsonUtils.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/server/src/jsonUtils.ts b/server/src/jsonUtils.ts index dd07dd7..02e2d1b 100644 --- a/server/src/jsonUtils.ts +++ b/server/src/jsonUtils.ts @@ -15,12 +15,23 @@ export function getPropertyNodeFromPath(root: ASTNode, path: string): ASTNode | while (segments.length) { const segment = segments[0]; segments = segments?.slice(1); + const isLast = !segments.length; if (currentNode.type == "object") { const property = currentNode.properties.find((p) => p.keyNode.value == segment); - if (property && !segments.length) return property; + if (property && isLast) return property; if (!property?.valueNode) return null; if (property.valueNode.type == "object") { currentNode = property.valueNode; + } else if (property.valueNode.type == "array") { + currentNode = property.valueNode; + } else { + return null; + } + } else if (currentNode.type == "array") { + const index = Number(segment); + const itemAtIndex = currentNode.items.at(index); + if (itemAtIndex) { + currentNode = itemAtIndex; } else { return null; }