oak-domain 更新日志
6.0.1 未发布(区间:6.0.0..HEAD)
- 编译器新增发布包实体解析模块,依赖实体入口按
es/entities -> lib/entities -> src/entities查找,并支持同名.d.ts + .js合并解析。 EntityDesc的第四泛型可以从声明文件继承枚举信息,覆盖字符串字面量联合、导入类型别名、enum、as const数组和keyof typeof CONST,例如Language = keyof typeof LANGUAGE_LABELS。ActionDef支持 runtime initializer、import alias 和本地 action/state alias bridge,发布包不再需要靠src提供 initializer 结构。- 新增
OakPackagemetadata 类型和读取规则:oak.business.module、oak.business.dependencies、oak.business.featureInit、oak.compiler.transform成为规范字段,旧的isLib、depLib、featureInit、needOakTransform只作为兼容回退。 LocalizedContent进入基础域,StorageDesc.localizedContent、SelectOption.localizedContent、BackendRuntimeContext.getLocale()和 selection/result rewrite 链路补齐,支持按当前 locale 自动注入翻译内容。Language扩展为zh_CN、en_US、es_ES、fr_FR、ar_SA、ru_RU,Q_FullTextValue.$language也改为复用Language。Decimal<P, S>/Price改为字符串语义,新增 decimal 工具函数和Q_DecimalValue,decimal 字段的 update expression 类型边界收紧,避免直接生成不支持的表达式类型。- 查询类型补齐
$xor、JSON 内部$and/$or/$length/ 点前缀字面量 key、Geo/SingleGeo字段级过滤,以及 Geo 表达式类型。 - locale 编译输出改为
src/data/i18n.json承载大数据,src/data/i18n.ts保持兼容 wrapper;tscBuilder会复制相对 JSON 运行时资产。 - routerBuilder 支持页面 / namespace 的
index.config,生成 web routemeta.title、titleI18nKey、access、namespaceKey、namespacePath,并识别web.mobile.tsx作为 web 渲染文件。 - routerBuilder 增加 Desktop renderer 路由发现;context 序列化与客户端环境元数据可携带 Desktop runtime / renderer 信息,供 application 解析区分浏览器与桌面壳。
- tscBuilder 增加程序化 compiler plugin:
build(pwd, args, plugins)接收TscCompilerPlugin[],插件的prepareProgram(context)可以替换 compiler host、rootNames,并映射或过滤 diagnostics;多个插件按顺序组合。watch program 与分析 Program 隔离,使用 plugin 时不会盲目复用旧 BuilderProgram。它是编译器 API,不等同于在oak.config.ts中填写任意 Vite 插件名。 - schema builder 支持显式配置,locale builder 支持命名 workspace,不再只固定扫描历史 web / wechatMp 目录。
- Connector 与跨端工具补齐 SSE / mini-program 路径:支持 connector-backed SSE endpoint、小程序 SSE fetch、socket scope 透传和轻量 URL/fetch 兼容层。
Connector增加makeEndpointUrl(path),SimpleConnector下沉通用 fetch 适配;小程序端 URL 改用轻量实现,移除旧 bundledwhatwg-url。- validator 拆分为
utils/validate/*,补充身份证、手机号、国籍、护照等独立入口;内部工具从 lodash 切到es-toolkit/utils/toolkit。 - 修复 update expression、
unset带点字面量 key、继承索引冲突、继承 enum locale 合并、runtime action def clone、自定义检查器 i18n 诊断等问题。
主要 diff 文件:
src/compiler/entitySource.ts、src/compiler/entityDescEnum.ts、src/compiler/schemaBuilder.ts、src/compiler/dependencyBuilder.ts、src/compiler/localeBuilder.ts、src/compiler/routerBuilder.ts、src/types/OakPackage.ts、src/entities/LocalizedContent.ts、src/utils/localizedContent.ts、src/utils/decimal.ts、src/utils/fetch/*、src/utils/url/lightweight.ts、test/*6.0.0(tag:6.0.0,区间:5.1.36..6.0.0)
- schema 编译支持多继承与 inherited metadata,继承来的动作、状态、索引、locale 和 style 会进入生成结果。
- dependency / feature 初始化输出重构,依赖包的初始化 metadata 下沉到发布包语义,不再依赖前端模式下的临时 init 文件。
- locale 编译支持依赖包发现和英文 locale 输出,为后续系统翻译能力打基础。
- tscBuilder 增加 alias emit / watch 支持,routerBuilder 增加 cache mode。
- 新增一批
customChecks,并补充 dependency feature 初始化说明文档。
主要 diff 文件:
src/compiler/dependencyBuilder.ts、src/compiler/schemaBuilder.ts、src/compiler/routerBuilder.ts、src/compiler/localeBuilder.ts、src/compiler/tscBuilder.ts、src/compiler/customChecks/*、docs/dependency-feature-init-metadata.md升级注意
发布包要求:发布 Oak 模块时不要发布
src 来补编译器能力。应保证 es/entities 中同时有实体声明和值产物,并把声明依赖到的类型文件一起发布。覆盖实体:如果模块覆盖默认实体,必须保持旧实体兼容,尤其是动作、状态、关系、
ActionDef、entityDesc.locales 和 style。Decimal 语义:decimal / price 字段现在按字符串保精度处理。业务代码不要再把这类字段当普通 number 做四则运算,过滤、更新和表达式更新都应使用字符串或 decimal helper。
包元数据:新包和升级后的共享包应迁移到
oak.business.* 与 oak.compiler.transform。旧字段仍兼容,但不要继续把通用业务包硬编码到 app 的 extraOakModules 或编译器分支里。