{"version":3,"file":"update-dependencies-Dk3dz_G3.cjs","sources":["../src/update-dependencies.ts"],"sourcesContent":["'use strict'\nimport { join } from 'path'\nimport ora from 'ora'\nimport chalk from 'chalk'\nimport { cleanDependencies, installProjectDependencies } from './utils/install.ts'\nimport { createDependencyManager } from './utils/dependency.ts'\nimport { FileOperations } from './core/FileOperations.ts'\nimport { Discovery } from './core/Discovery.ts'\nimport { UIService } from './services/UIService.ts'\nimport { createDependencyValidator } from './utils/dependency-validator.ts'\n\n/**\n * 更新项目依赖\n */\nexport async function updateDependencies(): Promise<void> {\n  const { projectPath } = await Discovery.findProjectRoot()\n  if (!projectPath) {\n    throw new Error('未找到项目根目录（package.json）')\n  }\n\n  // 交互式选择依赖列表文件\n  const uiService = new UIService()\n  const selectedFile = await uiService.selectDependencyFile(projectPath)\n\n  // 使用依赖表更新并安装\n  await updateToRecommendedVersions(projectPath, selectedFile)\n}\n\n/**\n * 更新到推荐版本\n */\nasync function updateToRecommendedVersions(\n  projectRoot: string,\n  customDependencyFile?: string | null\n): Promise<void> {\n  const spinner = ora('正在更新依赖到推荐版本...').start()\n\n  try {\n    let dependencyManager = createDependencyManager()\n\n    // 如果选择了自定义依赖文件，验证并使用\n    if (customDependencyFile) {\n      spinner.text = '正在验证依赖列表文件...'\n      const validator = createDependencyValidator()\n      const validationResult = await validator.validateDependencyFile(customDependencyFile)\n\n      if (!validationResult.isValid) {\n        spinner.fail('依赖列表文件验证失败')\n        validator.printValidationResult(validationResult, customDependencyFile)\n        console.log(chalk.yellow('\\n⚠️ 将使用项目默认依赖列表'))\n        dependencyManager = createDependencyManager()\n      } else {\n        spinner.succeed('依赖列表文件验证通过')\n        validator.printValidationResult(validationResult, customDependencyFile)\n\n        // 使用自定义依赖列表创建依赖管理器\n        const customConfig: {\n          customDependencies?: Record<string, string>\n          customDevDependencies?: Record<string, string>\n        } = {}\n        if (validationResult.dependencies) {\n          customConfig.customDependencies = validationResult.dependencies\n        }\n        if (validationResult.devDependencies) {\n          customConfig.customDevDependencies = validationResult.devDependencies\n        }\n        dependencyManager = createDependencyManager(customConfig)\n      }\n    }\n\n    // 更新项目依赖配置\n    spinner.text = '正在分析依赖配置...'\n    const hasUpdates = await dependencyManager.updateToRecommendedVersions(projectRoot)\n    spinner.stop()\n\n    // 如果没有更新，提前退出\n    if (!hasUpdates) {\n      console.log(chalk.green('✅ 所有依赖已是最新版本'))\n      return\n    }\n\n    // 检查是否已安装过依赖\n    const nodeModulesExists = await FileOperations.exists(join(projectRoot, 'node_modules'))\n    if (nodeModulesExists) {\n      spinner.start('正在清理现有依赖...')\n      await cleanDependencies(projectRoot)\n      spinner.stop()\n    }\n\n    // 检测包管理器并安装依赖\n    spinner.start('正在安装依赖...')\n    await installProjectDependencies(projectRoot)\n    spinner.succeed('依赖更新完成')\n  } catch (error: any) {\n    spinner.fail('依赖更新失败')\n\n    // 如果是 pnpm 冲突错误，提供解决建议\n    if (error.message?.includes('ERR_PNPM_INCLUDED_DEPS_CONFLICT')) {\n      console.log('\\n💡 解决建议:')\n      console.log('1. 手动删除 node_modules 目录和 pnpm-lock.yaml 文件')\n      console.log('2. 运行 \"pnpm install\" 重新安装依赖')\n      console.log('3. 或者选择 \"清理并重新安装\" 选项')\n    }\n\n    throw error\n  }\n}\n\n/**\n * 检查依赖状态\n */\nexport async function checkDependencies(): Promise<void> {\n  const { projectPath } = await Discovery.findProjectRoot()\n  if (!projectPath) {\n    throw new Error('未找到项目根目录（package.json）')\n  }\n\n  await checkDependencyStatus(projectPath)\n}\n\nasync function checkDependencyStatus(projectRoot: string): Promise<void> {\n  const spinner = ora('正在检查依赖状态...').start()\n\n  try {\n    const dependencyManager = createDependencyManager()\n\n    // 分析依赖状态\n    const analysis = await dependencyManager.analyzeDependencies(projectRoot)\n\n    spinner.stop()\n\n    // 生成详细报告\n    dependencyManager.generateReport(analysis)\n\n    // 检查兼容性\n    dependencyManager.checkCompatibility(analysis)\n\n    console.log('\\n提示: 运行 \"quality-helper update-deps\" 更新依赖')\n  } catch (error: any) {\n    spinner.fail('依赖状态检查失败')\n    throw error\n  }\n}\n"],"names":["async","projectPath","Discovery","findProjectRoot","Error","projectRoot","spinner","ora","start","dependencyManager","createDependencyManager","analysis","analyzeDependencies","stop","generateReport","checkCompatibility","console","log","error","fail","checkDependencyStatus","uiService","UIService","selectedFile","selectDependencyFile","customDependencyFile","text","validator","createDependencyValidator","validationResult","validateDependencyFile","isValid","succeed","printValidationResult","customConfig","dependencies","customDependencies","devDependencies","customDevDependencies","chalk","yellow","hasUpdates","updateToRecommendedVersions","green","FileOperations","exists","join","cleanDependencies","installProjectDependencies","message","includes"],"mappings":"+PA+GAA,iBACE,MAAMC,YAAEA,SAAsBC,EAAAA,UAAUC,kBACxC,IAAKF,EACH,MAAM,IAAIG,MAAM,gCAMpBJ,eAAqCK,GACnC,MAAMC,EAAUC,EAAI,eAAeC,QAEnC,IACE,MAAMC,EAAoBC,EAAAA,0BAGpBC,QAAiBF,EAAkBG,oBAAoBP,GAE7DC,EAAQO,OAGRJ,EAAkBK,eAAeH,GAGjCF,EAAkBM,mBAAmBJ,GAErCK,QAAQC,IAAI,6CACd,OAASC,GAEP,MADAZ,EAAQa,KAAK,YACPD,CACR,CACF,CAzBQE,CAAsBnB,EAC9B,6BAxGAD,iBACE,MAAMC,YAAEA,SAAsBC,EAAAA,UAAUC,kBACxC,IAAKF,EACH,MAAM,IAAIG,MAAM,0BAIlB,MAAMiB,EAAY,IAAIC,YAChBC,QAAqBF,EAAUG,qBAAqBvB,SAS5DD,eACEK,EACAoB,GAEA,MAAMnB,EAAUC,EAAI,kBAAkBC,QAEtC,IACE,IAAIC,EAAoBC,EAAAA,0BAGxB,GAAIe,EAAsB,CACxBnB,EAAQoB,KAAO,gBACf,MAAMC,EAAYC,EAAAA,4BACZC,QAAyBF,EAAUG,uBAAuBL,GAEhE,GAAKI,EAAiBE,QAKf,CACLzB,EAAQ0B,QAAQ,cAChBL,EAAUM,sBAAsBJ,EAAkBJ,GAGlD,MAAMS,EAGF,CAAA,EACAL,EAAiBM,eACnBD,EAAaE,mBAAqBP,EAAiBM,cAEjDN,EAAiBQ,kBACnBH,EAAaI,sBAAwBT,EAAiBQ,iBAExD5B,EAAoBC,EAAAA,wBAAwBwB,EAC9C,MApBE5B,EAAQa,KAAK,cACbQ,EAAUM,sBAAsBJ,EAAkBJ,GAClDT,QAAQC,IAAIsB,EAAMC,OAAO,qBACzB/B,EAAoBC,EAAAA,yBAkBxB,CAGAJ,EAAQoB,KAAO,cACf,MAAMe,QAAmBhC,EAAkBiC,4BAA4BrC,GAIvE,GAHAC,EAAQO,QAGH4B,EAEH,YADAzB,QAAQC,IAAIsB,EAAMI,MAAM,uBAKMC,iBAAeC,OAAOC,EAAAA,KAAKzC,EAAa,mBAEtEC,EAAQE,MAAM,qBACRuC,EAAAA,kBAAkB1C,GACxBC,EAAQO,QAIVP,EAAQE,MAAM,mBACRwC,EAAAA,2BAA2B3C,GACjCC,EAAQ0B,QAAQ,SAClB,OAASd,GAWP,MAVAZ,EAAQa,KAAK,UAGTD,EAAM+B,SAASC,SAAS,qCAC1BlC,QAAQC,IAAI,cACZD,QAAQC,IAAI,8CACZD,QAAQC,IAAI,+BACZD,QAAQC,IAAI,yBAGRC,CACR,CACF,CAjFQwB,CAA4BzC,EAAasB,EACjD"}