{"version":3,"file":"compare-nodes.cjs","sources":["../../../src/cli/utils/compare-nodes.ts"],"sourcesContent":["/**\n * Compare two AST nodes ignoring location info and comments\n */\nexport function compareNodes(a: unknown, b: unknown): boolean {\n  if (a === b) {\n    return true;\n  }\n  if (!a || !b) {\n    return false;\n  }\n  if (Array.isArray(a)) {\n    if (!Array.isArray(b) || a.length !== b.length) {\n      return false;\n    }\n    return a.every((item, i) => compareNodes(item, b[i]));\n  }\n  if (typeof a !== \"object\" || typeof b !== \"object\") {\n    return a === b;\n  }\n\n  // Handle string literals specially - normalize quotes\n  if (\n    \"type\" in a &&\n    \"type\" in b &&\n    (a.type === \"StringLiteral\" || a.type === \"Literal\") &&\n    (b.type === \"StringLiteral\" || b.type === \"Literal\") &&\n    \"value\" in a &&\n    \"value\" in b &&\n    typeof a.value === \"string\" &&\n    typeof b.value === \"string\"\n  ) {\n    return a.value === b.value;\n  }\n\n  // Skip location and comment-related properties\n  const keysA = Object.keys(a).filter(\n    (k) => ![\"start\", \"end\", \"loc\", \"range\", \"tokens\", \"comments\", \"leadingComments\", \"trailingComments\"].includes(k),\n  );\n  const keysB = Object.keys(b).filter(\n    (k) => ![\"start\", \"end\", \"loc\", \"range\", \"tokens\", \"comments\", \"leadingComments\", \"trailingComments\"].includes(k),\n  );\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n  return keysA.every((key) => compareNodes(a[key as keyof typeof a], b[key as keyof typeof b]));\n}\n"],"names":[],"mappings":";;AACO,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;AACnC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AACf,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAChB,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACxB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;AACpD,MAAM,OAAO,KAAK;AAClB,IAAI;AACJ,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACtD,IAAI,OAAO,CAAC,KAAK,CAAC;AAClB,EAAE;AACF,EAAE,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE;AAChP,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;AAC9B,EAAE;AACF,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;AACrC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC;AACpH,GAAG;AACH,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;AACrC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC;AACpH,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;AACrC,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D;;;;"}