Fork
0
代码
介绍
代码
Issues
Pull Requests
流水线
Actions
讨论
Wiki
项目成员
分析
项目设置
Fork
0
main
protobuf-arkts-generator
/
src
/
generator
下载当前目录
F
Fengming
v0.2.2: fix util import/export to support tree-shaking
aaeeeb55
创建于
2025年12月19日
历史提交
文件
最后提交记录
最后更新时间
arkpb-gen.js
v0.2.2: fix util import/export to support tree-shaking
5 个月前
visitor-codegen.js
feat: introduce Visitor pattern architecture (v2.0) 重大架构升级:引入 Visitor 模式(参考 SwiftProtobuf 设计) ## 新增运行时核心模块 - **Visitor.ets**: Visitor 接口定义,支持所有 Protobuf 字段类型 - **BinaryEncodingVisitor.ets**: 二进制编码 Visitor(递归深度保护) - **JsonEncodingVisitor.ets**: JSON 编码 Visitor(递归深度保护) - **Message.ets**: 消息抽象基类,traverse() 方法为核心 - **UnknownFields.ets**: 未知字段保留(前后兼容性) - **MessageRegistry.ets**: 消息类型注册表(可选功能) - **MessageUtils.ets**: 消息工具函数集合 ## 核心架构特性 ### 混合序列化策略 - **Binary**: Visitor 模式(灵活、可扩展) - **JSON**: 直接代码生成(性能优化 ~30-50%) ### 关键设计决策 - traverse() 方法实现 Visitor 模式,分离消息遍历与格式编码 - 静态工厂方法(fromJson/fromBinary)提供更好的类型安全 - 递归深度保护(maxRecursionDepth=100)防止栈溢出攻击 - 未知字段保留支持前后兼容 - Map 字段使用 forEach 遍历(符合 ArkTS 规范) ## 代码生成器增强 - **visitor-codegen.js**: 生成 traverse() 和 decodeFrom() 方法 - **arkpb-gen.js**: 重构以支持 Visitor 模式,生成 toJson/fromJson 静态方法 - Reader.ets: 新增递归深度保护和 view() 方法 ## 完整文档系统 - **ARCHITECTURE.md**: 详细的架构设计文档(20KB) - Visitor 模式设计说明 - 混合序列化策略对比 - 关键设计决策详解 - 性能优化策略 - FAQ 常见问题 - **ARKTS-COMPLIANCE.md**: ArkTS 合规性检查清单(14KB) - 70+ 条规则验证 - 常见误判及澄清 - 审查检查清单 - 代码位置索引 - **README.md**: 新增架构特性和 ArkTS 合规性章节 ## ArkTS 100% 合规 ✅ 严格遵循 ArkTS 规范(2025-12-02 版本): - 不使用 any/unknown(使用 Object 和 Record<string, Object>) - 不使用 for...in(使用 forEach 或标准 for 循环) - 不使用解构赋值(使用显式赋值) - 不使用索引访问对象属性(使用点操作符) - 对象布局编译时确定,运行时不可变 - 支持的 Utility Types:Partial、Record、Readonly、Required ## 统计信息 - 新增文件: 10 个(7个运行时 + 2个文档 + 1个代码生成器) - 修改文件: 6 个 - 新增代码: 5,725 行 - 删除代码: 451 行 - 总行数变化: +5,274 行 ## Breaking Changes 本次升级为重大版本更新,建议从 0.1.1 升级到 0.2.0 - 运行时 API 保持向后兼容 - 代码生成器生成的代码结构变化(但 API 一致) - 新增依赖: 无(仍然是零依赖运行时)
5 个月前