本文档记录 Cross Request Master 的技术改进计划,从当前”开源合格”状态提升到”优秀开源项目”。
✅ 已完成
src/helpers/已解决的问题:
src/helpers/
query-string.js - buildQueryString 函数body-parser.js - bodyToString 函数下一步计划(后续版本):
src/
├── core/
│ ├── transport.js # Chrome 消息传递
│ ├── request.js # 请求编排
│ └── response.js # 响应处理
├── helpers/
│ ├── body-parser.js # bodyToString, ensureJsonParsed (可导出)
│ ├── query-string.js # buildQueryString (可导出)
│ ├── error-builder.js # buildErrorResponse
│ └── url-resolver.js # 相对 URL 解析
├── ui/
│ ├── curl-display.js # cURL 弹窗
│ └── error-display.js # 错误提示
├── adapters/
│ ├── yapi.js # YApi 适配器
│ └── jquery.js # jQuery 拦截
└── index.js # 主入口,组装各模块
挑战(已解决):
manifest.json 中声明所有脚本已采用方案:
window.CrossRequestHelpers 暴露接口实际用时: 约 2 小时(快速重构)
当前问题:
改进计划:
// helpers/body-parser.js
/**
* 智能解析响应体
* @param {*} body - 响应体(可能是对象、字符串或标量)
* @param {string} contentType - Content-Type 头
* @returns {*} 解析后的数据
*/
function ensureJsonParsed(body, contentType) {
// 统一的解析逻辑
}
/**
* 将响应体转为字符串
* @param {*} body - 响应体
* @param {*} originalBody - 原始响应体(如需保留格式)
* @returns {string}
*/
function bodyToString(body, originalBody = null) {
// 如果提供了原始字符串,优先使用
if (originalBody && typeof originalBody === 'string') {
return originalBody;
}
// 否则转换
// ...
}
时间估计: 1 周
当前问题:
bodyToString() 重新序列化对象,丢失原始格式改进计划:
// background.js 中同时保留两种格式
return {
status: response.status,
statusText: response.statusText,
headers: responseHeaders,
body: responseBody, // 原始字符串
bodyParsed: parsedBody, // 解析后的对象/标量
ok: response.ok
};
// index.js 中使用
response.data = response.bodyParsed; // YApi 使用解析后的
response.body = response.body; // 保持原始字符串不变
时间估计: 3-5 天
当前问题:
改进计划:
// helpers/logger.js
const Logger = {
levels: {
DEBUG: 0,
INFO: 1,
WARN: 2,
ERROR: 3
},
currentLevel: 1, // 默认 INFO
debug(source, message, data) {
if (this.currentLevel <= this.levels.DEBUG) {
console.log(`[DEBUG][${source}] ${message}`, data);
}
},
info(source, message, data) {
if (this.currentLevel <= this.levels.INFO) {
console.log(`[INFO][${source}] ${message}`, data);
}
},
// 用户可见的错误(中文)
userError(message) {
console.error('[用户错误]', message);
// 显示用户友好的错误提示
},
// 开发者错误(英文,包含堆栈)
devError(source, message, error) {
console.error(`[DEV ERROR][${source}] ${message}`, error);
}
};
时间估计: 1 周
改进计划:
i18n/ 目录时间估计: 2 周
改进计划:
# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- run: npm ci
- run: npm run lint
- run: npm run format:check
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- run: npm ci
- run: npm test
- uses: codecov/codecov-action@v3
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: zip -r extension.zip . -x "node_modules/*" ".*"
- uses: actions/upload-artifact@v3
with:
name: extension
path: extension.zip
时间估计: 3-5 天
当前: 只有示例测试
目标覆盖率:
测试文件结构:
__tests__/
├── helpers/
│ ├── body-parser.test.js
│ ├── error-builder.test.js
│ └── url-resolver.test.js
├── core/
│ ├── transport.test.js
│ └── response.test.js
├── adapters/
│ └── yapi.test.js
└── integration/
└── full-flow.test.js
时间估计: 2-3 周
改进计划:
改进计划:
good first issue 或 help wanted 的任务最后更新: 2025-10-17
当前版本: v4.5.0
下一个版本: v4.6.0 (待定)
src/helpers/(query-string.js, body-parser.js)