{
  "version": 3,
  "sources": ["../../../src/core/named-expression-renamer.ts"],
  "sourcesContent": [
    "import { parseFormula } from \"../parser/parser.mjs\";\nimport { astToString } from \"../parser/formatter.mjs\";\nimport { transformAST } from \"./ast-traverser.mjs\";\n\n/**\n * Renames named expression references in a formula string\n * @param formula - The formula string (without the leading =)\n * @param oldName - The current named expression name to replace\n * @param newName - The new named expression name\n * @returns The updated formula string, or the original if no changes were made\n */\nexport function renameNamedExpressionInFormula(\n  formula: string,\n  oldName: string,\n  newName: string\n): string {\n  try {\n    const ast = parseFormula(formula);\n    \n    const transformedAST = transformAST(ast, (node) => {\n      if (node.type === \"named-expression\" && node.name === oldName) {\n        return {\n          ...node,\n          name: newName\n        };\n      }\n      return node;\n    });\n\n    return astToString(transformedAST);\n  } catch (error) {\n    // If parsing fails, return the original formula\n    return formula;\n  }\n}\n\n/**\n * Checks if a formula contains references to a specific named expression\n * @param formula - The formula string (without the leading =)\n * @param namedExpressionName - The named expression name to search for\n * @returns True if the formula contains references to the named expression\n */\nexport function formulaReferencesNamedExpression(formula: string, namedExpressionName: string): boolean {\n  try {\n    const ast = parseFormula(formula);\n    let hasReference = false;\n\n    transformAST(ast, (node) => {\n      if (node.type === \"named-expression\" && node.name === namedExpressionName) {\n        hasReference = true;\n      }\n      return node;\n    });\n\n    return hasReference;\n  } catch (error) {\n    // If parsing fails, assume no reference\n    return false;\n  }\n}\n\n/**\n * Gets all named expression names referenced in a formula\n * @param formula - The formula string (without the leading =)\n * @returns Array of unique named expression names referenced in the formula\n */\nexport function getReferencedNamedExpressionNames(formula: string): string[] {\n  try {\n    const ast = parseFormula(formula);\n    const namedExpressionNames = new Set<string>();\n\n    transformAST(ast, (node) => {\n      if (node.type === \"named-expression\" && node.name) {\n        namedExpressionNames.add(node.name);\n      }\n      return node;\n    });\n\n    return Array.from(namedExpressionNames);\n  } catch (error) {\n    // If parsing fails, return empty array\n    return [];\n  }\n}\n"
  ],
  "mappings": ";AAAA;AACA;AACA;AASO,SAAS,8BAA8B,CAC5C,SACA,SACA,SACQ;AAAA,EACR,IAAI;AAAA,IACF,MAAM,MAAM,aAAa,OAAO;AAAA,IAEhC,MAAM,iBAAiB,aAAa,KAAK,CAAC,SAAS;AAAA,MACjD,IAAI,KAAK,SAAS,sBAAsB,KAAK,SAAS,SAAS;AAAA,QAC7D,OAAO;AAAA,aACF;AAAA,UACH,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MACA,OAAO;AAAA,KACR;AAAA,IAED,OAAO,YAAY,cAAc;AAAA,IACjC,OAAO,OAAO;AAAA,IAEd,OAAO;AAAA;AAAA;AAUJ,SAAS,gCAAgC,CAAC,SAAiB,qBAAsC;AAAA,EACtG,IAAI;AAAA,IACF,MAAM,MAAM,aAAa,OAAO;AAAA,IAChC,IAAI,eAAe;AAAA,IAEnB,aAAa,KAAK,CAAC,SAAS;AAAA,MAC1B,IAAI,KAAK,SAAS,sBAAsB,KAAK,SAAS,qBAAqB;AAAA,QACzE,eAAe;AAAA,MACjB;AAAA,MACA,OAAO;AAAA,KACR;AAAA,IAED,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IAEd,OAAO;AAAA;AAAA;AASJ,SAAS,iCAAiC,CAAC,SAA2B;AAAA,EAC3E,IAAI;AAAA,IACF,MAAM,MAAM,aAAa,OAAO;AAAA,IAChC,MAAM,uBAAuB,IAAI;AAAA,IAEjC,aAAa,KAAK,CAAC,SAAS;AAAA,MAC1B,IAAI,KAAK,SAAS,sBAAsB,KAAK,MAAM;AAAA,QACjD,qBAAqB,IAAI,KAAK,IAAI;AAAA,MACpC;AAAA,MACA,OAAO;AAAA,KACR;AAAA,IAED,OAAO,MAAM,KAAK,oBAAoB;AAAA,IACtC,OAAO,OAAO;AAAA,IAEd,OAAO,CAAC;AAAA;AAAA;",
  "debugId": "0C5BD428E9EB519464756E2164756E21",
  "names": []
}