export function getStateInfo()

in src/utils/astUtilityFunctions.ts [151:181]


export function getStateInfo(
  node: ASTNode,
): { stateName: string; stateType: string | undefined; queryLanguage: QueryLanguages | undefined } | undefined {
  const parent = node.parent
  if (isPropertyNode(node) && parent && isChildOfStates(node.parent)) {
    let stateType: string | undefined
    let queryLanguage: QueryLanguages | undefined = undefined
    if (node.valueNode && isObjectNode(node.valueNode)) {
      const typeProperty = node.valueNode.properties.find((property) => property.keyNode.value === 'Type')
      const queryLanguageValue = node.valueNode.properties
        .find((property) => property.keyNode.value === 'QueryLanguage')
        ?.valueNode?.value?.toString()
      stateType = typeProperty?.valueNode?.value?.toString() ?? undefined
      if (queryLanguageValue === QueryLanguages.JSONata) {
        queryLanguage = QueryLanguages.JSONata
      } else if (queryLanguageValue === QueryLanguages.JSONPath) {
        queryLanguage = QueryLanguages.JSONPath
      }
    }

    return {
      stateName: node.keyNode.value,
      stateType,
      queryLanguage,
    }
  } else if (!parent) {
    return undefined
  }

  return getStateInfo(node.parent)
}