{"version":3,"file":"workflow-run-count.mjs","names":[],"sources":["../../../src/codemods/v1/workflow-run-count.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\n\n/**\n * Renames context.runCount to context.retryCount in step execution functions.\n * This provides clearer naming that better describes retry behavior.\n *\n * Before:\n * createStep({\n *   execute: async (inputData, context) => {\n *     console.log(`Step run ${context.runCount} times`);\n *   },\n * });\n *\n * After:\n * createStep({\n *   execute: async (inputData, context) => {\n *     console.log(`Step retry count: ${context.retryCount}`);\n *   },\n * });\n */\nexport default createTransformer((fileInfo, api, options, context) => {\n  const { j, root } = context;\n\n  const oldPropertyName = 'runCount';\n  const newPropertyName = 'retryCount';\n\n  // Track context parameter names in createStep execute functions\n  const contextParamNames = new Set<string>();\n\n  // Find createStep calls and extract context parameter names\n  root\n    .find(j.CallExpression, {\n      callee: {\n        type: 'Identifier',\n        name: 'createStep',\n      },\n    })\n    .forEach(path => {\n      const args = path.value.arguments;\n      if (args.length === 0 || args[0]?.type !== 'ObjectExpression') return;\n\n      const configObj = args[0];\n      if (!configObj.properties) return;\n\n      // Find the execute property\n      configObj.properties.forEach(prop => {\n        if (\n          (prop.type === 'Property' || prop.type === 'ObjectProperty') &&\n          prop.key &&\n          prop.key.type === 'Identifier' &&\n          prop.key.name === 'execute'\n        ) {\n          const value = prop.value;\n          if (value && (value.type === 'ArrowFunctionExpression' || value.type === 'FunctionExpression')) {\n            // Extract the second parameter name (context)\n            const params = value.params;\n            const secondParam = params && params.length >= 2 ? params[1] : null;\n            if (secondParam && secondParam.type === 'Identifier') {\n              contextParamNames.add(secondParam.name);\n            }\n          }\n        }\n      });\n    });\n\n  // Rename context.runCount to context.retryCount\n  const renameMemberProperty = (\n    node: ReturnType<typeof j.memberExpression> | ReturnType<typeof j.optionalMemberExpression>,\n  ) => {\n    // Check if accessing .runCount on a context parameter\n    if (\n      node.object.type === 'Identifier' &&\n      contextParamNames.has(node.object.name) &&\n      node.property.type === 'Identifier' &&\n      node.property.name === oldPropertyName\n    ) {\n      node.property.name = newPropertyName;\n      context.hasChanges = true;\n    }\n  };\n\n  // Handle regular member expressions (context.runCount)\n  root.find(j.MemberExpression).forEach(path => {\n    renameMemberProperty(path.value);\n  });\n\n  // Handle optional member expressions (context?.runCount)\n  root.find(j.OptionalMemberExpression).forEach(path => {\n    renameMemberProperty(path.value);\n  });\n\n  if (context.hasChanges) {\n    context.messages.push('Renamed context.runCount to context.retryCount in step execution functions');\n  }\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAoBA,IAAA,6BAAe,mBAAmB,UAAU,KAAK,SAAS,YAAY;CACpE,MAAM,EAAE,GAAG,SAAS;CAEpB,MAAM,kBAAkB;CACxB,MAAM,kBAAkB;CAGxB,MAAM,oCAAoB,IAAI,IAAY;CAG1C,KACG,KAAK,EAAE,gBAAgB,EACtB,QAAQ;EACN,MAAM;EACN,MAAM;CACR,EACF,CAAC,CAAC,CACD,SAAQ,SAAQ;EACf,MAAM,OAAO,KAAK,MAAM;EACxB,IAAI,KAAK,WAAW,KAAK,KAAK,EAAE,EAAE,SAAS,oBAAoB;EAE/D,MAAM,YAAY,KAAK;EACvB,IAAI,CAAC,UAAU,YAAY;EAG3B,UAAU,WAAW,SAAQ,SAAQ;GACnC,KACG,KAAK,SAAS,cAAc,KAAK,SAAS,qBAC3C,KAAK,OACL,KAAK,IAAI,SAAS,gBAClB,KAAK,IAAI,SAAS,WAClB;IACA,MAAM,QAAQ,KAAK;IACnB,IAAI,UAAU,MAAM,SAAS,6BAA6B,MAAM,SAAS,uBAAuB;KAE9F,MAAM,SAAS,MAAM;KACrB,MAAM,cAAc,UAAU,OAAO,UAAU,IAAI,OAAO,KAAK;KAC/D,IAAI,eAAe,YAAY,SAAS,cACtC,kBAAkB,IAAI,YAAY,IAAI;IAE1C;GACF;EACF,CAAC;CACH,CAAC;CAGH,MAAM,wBACJ,SACG;EAEH,IACE,KAAK,OAAO,SAAS,gBACrB,kBAAkB,IAAI,KAAK,OAAO,IAAI,KACtC,KAAK,SAAS,SAAS,gBACvB,KAAK,SAAS,SAAS,iBACvB;GACA,KAAK,SAAS,OAAO;GACrB,QAAQ,aAAa;EACvB;CACF;CAGA,KAAK,KAAK,EAAE,gBAAgB,CAAC,CAAC,SAAQ,SAAQ;EAC5C,qBAAqB,KAAK,KAAK;CACjC,CAAC;CAGD,KAAK,KAAK,EAAE,wBAAwB,CAAC,CAAC,SAAQ,SAAQ;EACpD,qBAAqB,KAAK,KAAK;CACjC,CAAC;CAED,IAAI,QAAQ,YACV,QAAQ,SAAS,KAAK,4EAA4E;AAEtG,CAAC"}