当前位置: 首页 > news >正文

calude code 2.188 根据cli.map还原

得益于 cli.map的sourcesContent

然后还原脚本:

const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');const MAP_FILE = './cli.js.map';
const OUTPUT_DIR = './restored_source';function safeWriteFile(filePath, content) {fs.mkdirSync(path.dirname(filePath), { recursive: true });fs.writeFileSync(filePath, content, 'utf8');
}function normalizeSourcePath(source, index) {if (!source || typeof source !== 'string') {return `unknown_${index}.js`;}let normalized = source.replace(/^webpack:\/\//, '').replace(/^file:\/\//, '').replace(/^\//, '').replace(/[<>:"|?*]/g, '_');if (!normalized.trim()) {normalized = `unknown_${index}.js`;}return normalized;
}function restoreMap() {if (!fs.existsSync(MAP_FILE)) {throw new Error(`找不到文件: ${MAP_FILE}`);}const map = JSON.parse(fs.readFileSync(MAP_FILE, 'utf8'));const sources = Array.isArray(map.sources) ? map.sources : [];const sourcesContent = Array.isArray(map.sourcesContent) ? map.sourcesContent : null;console.log(`sources 数量: ${sources.length}`);console.log(`包含 sourcesContent: ${!!sourcesContent}`);if (!sources.length) {throw new Error('map 文件里没有 sources');}if (!sourcesContent) {throw new Error('map 文件里没有 sourcesContent,无法直接还原完整源码');}let restoredCount = 0;sources.forEach((source, index) => {const content = sourcesContent[index];if (content == null) {console.warn(`跳过 ${source},因为没有对应内容`);return;}const relativePath = normalizeSourcePath(source, index);const outputPath = path.join(OUTPUT_DIR, relativePath);safeWriteFile(outputPath, content);restoredCount++;console.log(`已还原: ${outputPath}`);});console.log(`完成,共还原 ${restoredCount} 个文件`);
}function formatFiles() {try {execSync(`npx prettier --write "${OUTPUT_DIR}/**/*.{js,ts,jsx,tsx,json,css,scss,vue}"`, {stdio: 'inherit'});} catch (err) {console.warn('格式化失败');}
}function main() {try {restoreMap();formatFiles();} catch (err) {console.error('执行失败:', err.message);process.exit(1);}
}main();

已还原: src\utils\zodToJsonSchema.ts
已还原: src\utils\toolSearch.ts
已还原: src\services\vcr.ts
已还原: src\services\tokenEstimation.ts
已还原: src\utils\pdf.ts
已还原: src\tools\FileReadTool\limits.ts
已还原: src\tools\FileReadTool\UI.tsx
已还原: src\tools\FileReadTool\FileReadTool.ts
已还原: src\types\textInputTypes.ts
已还原: src\utils\mcpInstructionsDelta.ts
已还原: src\utils\claudeInChrome\prompt.ts
已还原: src\utils\hooks\hookEvents.ts
已还原: src\utils\hooks\AsyncHookRegistry.ts
已还原: src\utils\messagePredicates.ts
已还原: src\memdir\findRelevantMemories.ts
已还原: src\utils\attachments.ts

http://www.jsqmd.com/news/575177/

相关文章:

  • SGMICRO圣邦微 SGM2036-1.8YUDH4G/TR DFN 线性稳压器(LDO)
  • JNI引用泄漏导致Full GC频发,Java外部函数调用稳定性崩塌!紧急修复手册,含3个可立即部署的JFR诊断脚本
  • 【2025最新】基于SpringBoot+Vue的网上购物商城系统管理系统源码+MyBatis+MySQL
  • 如何评估单网页SEO的ROI
  • 聚焦核心需求:安奈氙灯老化试验箱信用、质量、性能全测评 - 品牌推荐大师
  • intv_ai_mk11参数详解:温度/Top P/输出长度调优策略与效果对比
  • Pixel Language Portal 软件测试实战:根据需求自动生成测试用例与脚本
  • QMK Toolbox终极指南:5步完成机械键盘固件刷写与自定义
  • 5个高效协作技巧:用gInk实现跨设备轻量化标注
  • 网站移动端优化有哪些方法_移动端优化对于SEO排名有什么影响
  • SubtitleEdit:免费开源的字幕编辑解决方案,从入门到精通
  • 2026年GEO服务商月度复盘服务解析:从数据洞察到策略迭代,十家专业机构能力一览 - 品牌2025
  • 探索光伏 - 电池充电模型:稳定直流输出电压的技术之旅
  • Phi-3-mini-4k-instruct语音交互方案:文本到语音的完整实现
  • AI 域名注册商如何帮助用户进行品牌保护和反向域名抢注_AI 域名注册商如何帮助用户进行域名SEO优化
  • XILINX DDR3 VIVADO(二)时钟配置与调试技巧
  • KKFileView 4.3 在CentOS7.9上的高效部署与性能调优指南
  • 激发创意:如何利用快马AI探索软件库e7c9的未知应用场景与组合创新
  • 跨全平台!一款免费开源的电子书阅读器!
  • XGantt:Vue3项目管理的终极可视化解决方案
  • PyTorch 2.8镜像效果展示:Stable Video Diffusion生成1080p视频帧率实测
  • Zotero AI插件终极指南:5分钟打造智能文献管理助手
  • 告别直播回放获取难题!用douyin-downloader实现高效内容管理的3个创新方法
  • 程序员视角:Windows 11 24H2的‘快速启动’到底在后台吃了你多少内存?一次关闭实测
  • Pixel Couplet Gen 多线程并发处理教程:Java线程池提升API吞吐量
  • 加密压缩包密码遗忘?ArchivePasswordTestTool让数据恢复不再困难
  • go 语言之Redis
  • 如何快速打造高效办公界面:Office功能区的终极定制指南
  • 如何利用KeymouseGo实现鼠标键盘自动化操作:终极完整教程
  • BetterNCM安装器:让网易云音乐插件管理更简单的工具