Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

@object-ui/types 从 @objectstack/spec/ui re-export 的 HttpMethod 即将失效(framework#4691,spec v17 breaking) #3234

Closed as duplicate

Description

@os-zhuang

未指派 —— 仅记录发现,等 framework 侧定案后再动手。

现状

packages/types/src/objectql.ts:35:

/**
 * HTTP Method for API requests
 * Canonical definition from @objectstack/spec/ui.
 */
export type { HttpMethod } from '@objectstack/spec/ui';

packages/types/package.json 依赖 "@objectstack/spec": "^17.0.0-rc.1" —— caret 范围,所以下一个 17.x RC 一发布,pnpm install 就会解析到它,本仓 typecheck 立即红,不是「等哪天主动 bump 才踩到」。

上游要做什么

framework 的 objectstack-ai/objectstack#4691(#4535 双源清账 C14)要把 HttpMethod 这个名字从 @objectstack/spec/ui 移除。原因是它在 spec 里指向两个不同的类型:

入口 取值
@objectstack/spec/shared、/api 7 值 —— GET POST PUT DELETE PATCH HEAD OPTIONS
@objectstack/spec/ui(本次移除) 5 值 —— GET POST PUT PATCH DELETE(UI/View 数据源子集)

⚠️ 不要用「把 import 路径换成 @objectstack/spec/shared、名字保留 HttpMethod」来修。 那里的 HttpMethod 是 7 值那个,会把本仓的类型悄悄放宽两个值,而 HttpRequestSchema.method 运行时只收 5 值 —— method: 'HEAD' 会通过编译、在 .parse() 抛错。

影响面(本仓已实测,很小)

  • packages/types/src/objectql.ts:35 —— 唯一的 import 侧引用。
  • packages/types/src/index.ts:329 把它并入 @object-ui/types 的公开 surface;packages/core/src/adapters/ApiDataSource.ts:166 用 method?: HttpMethod。这两处都从 @object-ui/types 拿,只要 objectql.ts 那一行改对,它们零改动、本仓对外的 HttpMethod 名字也不变。
  • apps/console/src/pages/developer/hooks/useApiDiscovery.ts:13 有一个同名但本地自己声明的 HttpMethod('GET' | 'POST' | 'PATCH' | 'DELETE' | 'PUT'),与 spec 无关,不受影响。
  • HttpMethodSchema(packages/types/src/zod/objectql.zod.ts:26、index.zod.ts:244、__tests__/spec-subschema-parity.test.ts)是 const,./ui 仍在导出,本次不受影响 —— 但见下面「取决于上游定案」。

取决于上游定案 —— 所以先不要动手

framework#4691 目前有一个未决问题:5 值那一对到底叫什么。

两个方案的本仓改动量不同,所以等 framework#4691 定案后再开工,避免返工。

关联:objectstack-ai/objectstack#4691、objectstack-ai/objectstack#4535

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions