Skip to content

refactor: split GenUI schema runtime modules - #108

Merged
wang-kaopu merged 1 commit into
omdsh-dev:mainfrom
wang-kaopu:refactor/genui-schema-modules
Sep 6, 2026
Merged

refactor: split GenUI schema runtime modules#108
wang-kaopu merged 1 commit into
omdsh-dev:mainfrom
wang-kaopu:refactor/genui-schema-modules

Conversation

@wang-kaopu

Copy link
Copy Markdown
Collaborator

改动

  • 将原 src/client/component-schema.ts 拆分为:
    • src/client/genui-runtime/schema.ts
    • src/client/genui-runtime/normalize.ts
    • src/client/genui-runtime/diagnostics.ts
  • 删除 component-schema.ts,不保留兼容 facade
  • guard.ts 改为直接依赖对应 runtime 模块,不再 re-export schema / normalize / diagnostics 符号
  • tests/genui-schema.spec.ts 改为直接从职责所属模块导入

模块边界

schema.ts
  ↑      ↑
normalize.ts   diagnostics.ts
      \        /
        guard.ts
  • schema.ts 不依赖 normalize / diagnostics / guard
  • normalize.ts 运行时仅依赖 schema.ts,diagnostic 类型使用 import type
  • diagnostics.ts 运行时仅依赖 schema.ts
  • guard.ts 消费三个模块,不再作为它们的 facade

范围

这是一次纯结构重构,不修改:

  • component schema 内容
  • alias / normalize 行为
  • unknown-field diagnostics 的 path / message / 顺序
  • custom component opaque 语义
  • repair / validation / process 行为
  • package 公开 API

源码内部的模块路径会随职责拆分发生变化,但不影响当前 package exports。

验证

重构过程中使用旧 component-schema.ts 与拆分后的新模块进行 differential characterization tests:

  • COMPONENT_SCHEMAS / GENUI_SPEC_SCHEMA deepEqual
  • GENUI_NATIVE_TYPES 内容与顺序一致
  • alias、canonical-wins、tabs、accordion、custom node、bare root 等输入的 normalize 输出与 warnings deepEqual
  • root / nested unknown-field diagnostics deepEqual

临时 legacy 文件和 differential test 未进入最终提交。

同时已通过:

  • tests/genui-schema.spec.ts
  • 完整 pnpm run check
  • 最终模块边界与残留引用检查

本 PR 基于已合并的 #107,当前只有 1 个 commit。

@wang-kaopu
wang-kaopu merged commit 2510f97 into omdsh-dev:main Sep 6, 2026
4 checks passed
@wang-kaopu
wang-kaopu deleted the refactor/genui-schema-modules branch September 6, 2026 02:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant