feat(worker): 添加微信小游戏 Worker 支持和 Worker Generator CLI (#297)

* feat(worker): 添加微信小游戏 Worker 支持和 Worker Generator CLI

- 新增 @esengine/worker-generator 包,用于从 WorkerEntitySystem 生成 Worker 文件
- WorkerEntitySystem 添加 workerScriptPath 配置项,支持预编译 Worker 脚本
- CLI 工具支持 --wechat 模式,自动转换 ES6+ 为 ES5 语法
- 修复微信小游戏 Worker 消息格式差异(res 直接是数据,无需 .data)
- 更新中英文文档,添加微信小游戏支持章节

* docs: 更新 changelog,添加 v2.3.1 说明并标注 v2.3.0 为废弃

* fix: 修复 CI 检查问题

- 移除 cli.ts 中未使用的 toKebabCase 函数
- 修复 generator.ts 中正则表达式的 ReDoS 风险(使用 [ \t] 替代 \s*)
- 更新 changelog 版本号(2.3.1 -> 2.3.2)

* docs: 移除未发布版本的 changelog 条目

* fix(worker-generator): 使用 TypeScript 编译器替代手写正则进行 ES5 转换

- 修复 CodeQL 检测的 ReDoS 安全问题
- 使用 ts.transpileModule 进行安全可靠的代码转换
- 移除所有可能导致回溯的正则表达式
This commit is contained in:
YHH
2025-12-08 17:02:11 +08:00
committed by GitHub
parent 52bbccd53c
commit dfd0dfc7f9
18 changed files with 2595 additions and 546 deletions

View File

@@ -0,0 +1,41 @@
/**
* @esengine/worker-generator
*
* CLI tool to generate Worker files from WorkerEntitySystem classes
* for WeChat Mini Game and other platforms that require pre-compiled Worker scripts.
*
* 从 WorkerEntitySystem 子类生成 Worker 文件的 CLI 工具
* 用于微信小游戏等需要预编译 Worker 脚本的平台
*
* @example
* ```bash
* # CLI 使用 | CLI Usage
* npx esengine-worker-gen --src ./src --out ./workers --wechat
*
* # 或者 | Or
* pnpm esengine-worker-gen -s ./src -o ./workers -w
* ```
*
* @example
* ```typescript
* // API 使用 | API Usage
* import { parseWorkerSystems, generateWorkerFiles } from '@esengine/worker-generator';
*
* const systems = parseWorkerSystems({
* srcDir: './src',
* outDir: './workers',
* wechat: true,
* });
*
* const result = generateWorkerFiles(systems, config);
* ```
*/
export { parseWorkerSystems } from './parser';
export { generateWorkerFiles } from './generator';
export type {
WorkerSystemInfo,
GeneratorConfig,
GenerationResult,
WorkerScriptMapping,
} from './types';