Skip to content

integration/connector.zod.ts 的 20 个裸名别名仍是 z.infer,与 #4963 确立的 X / XParsed house convention 相反(作者写的是 ConnectorInput) #5551

Description

@os-zhuang

#5515 拆出。#5515 的第四条诊断(syncConfig.schedule 的裸 cron 字符串编译不过)在那张单里是按"改示例注解"解的(PR 把 SYNC_ARCHITECTURE.md 的 L3 示例改成 const sapConnector: ConnectorInput = …),根因没有动 —— 这里记的就是根因。

事实

packages/spec/src/integration/connector.zod.ts:742/744:

export type Connector = z.infer< typeof ConnectorSchema >;
/** Authoring input for {@link Connector} — defaulted fields are optional. */
export type ConnectorInput = z.input< typeof ConnectorSchema >;

裸名 = parsed 形状,作者形状挂在 XInput 上。这是仓库里的第三种命名:

文件 裸名 作者形状 出处
shared/retry-policy.zod.ts 及绝大多数兄弟 z.input(作者写的) 裸名 house convention
automation/etl.zod.ts z.input 裸名,parse 结果是 XParsed #4963 / PR #5514 翻过来的
integration/connector.zod.ts z.infer ConnectorInput 本单

后果和 #4963 一模一样:const c: Connector = { … } 这条唯一的裸注解authoring 门编译不过,因为 enabled / status / connectionTimeoutMs / syncConfig.strategy / syncConfig.direction / syncConfig.batchSize / syncConfig.deleteMode / syncConfig.realtimeSync / syncConfig.conflictResolution / 字段映射的 required / syncMode / webhook 的 method / timeoutMs / isActive / signatureAlgorithmz.infer 下全是必填,且 syncConfig.scheduleCronExpressionInputSchematransform 输出({ dialect, source } 信封),裸 cron 字符串被拒。文档示例照抄进去就是这个后果,#5515 的红证据是逐字量出来的四条诊断之一。

#4963 的差别:迁移面不为空

etl.zod.ts 当时可以直接翻,因为 objectstack / objectui / cloud 里都没有 parse 站点。本文件不是:

  • 该文件有 20 个 z.infer 裸名别名(Connector / ConnectorFieldMapping / DataSyncConfig / WebhookConfig / SyncStrategy / ConnectorConflictResolution / …)。
  • ConnectorSchemalive parse path:defineConnector() 就在同文件 748 行 return ConnectorSchema.parse(config),返回类型标的是裸 Connector;DeclarativeConnectorEntrySchemastack.zod.ts
  • 枚举类别名(SyncStrategy 等)z.inputz.infer 同构,翻不翻都一样;真正有形状差的是对象类。

所以这是一次真实的 breaking rename,需要按 #4963 的路数单独裁定后再做,不能顺手带过。

建议的处置

#4963 的结论迁移:裸名改为 z.input(作者形状),parse 结果改名 XParsed,ConnectorInput 作为过渡别名保留一版还是直接删,连同 defineConnector 的返回类型一起在同一个 PR 里定。需要先确认 20 个别名里哪些真有形状差(枚举可豁免),以及 objectstack / objectui / cloud 三仓的 importer 面。

现状不是无人看守

#5515 的 PR 加了 packages/spec/src/integration/connector-author-shape.test.ts,里面有一组探针把"同一份字面量在 ConnectorInput 下绿、在 Connector 下红"钉死了。真做这次翻转时,那组探针会直接变红,是迁移的第一处落点。


Blocked-by: #5515

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions