Skip to content

feat: OpenAPI 3.0.3 与运行时、SDK 合约一致性验证 - #219

Merged
yourtion merged 3 commits into
mainfrom
feat/openapi3-contract-consistency
Oct 27, 2026
Merged

yourtion merged 3 commits into
mainfrom
feat/openapi3-contract-consistency

Conversation

@yourtion

@yourtion yourtion commented Oct 22, 2026 •

Copy link
Copy Markdown
Owner

新增独立的 OpenAPI 3.0.3 生成器,并验证同一套 GET/POST/PUT/PATCH/DELETE 定义经 schema、三框架运行时、完整生成的 Axios SDK 和文档保持一致。已在 #218、#195、#196、#197 依序合入后,变基到 main(a9bc7e3)。

  • 新增 docs.openapi 与 api.buildOpenAPI(),支持 servers、components、requestBody/content、union/nullable、递归和复用 schema;保留 Swagger 2 输出。
  • Swagger 补齐 PUT/PATCH body、数组/嵌套结构;Markdown 展示数组和 union;Axios DELETE 使用 query,写请求支持独立 body/query 和重复键数组序列化。
  • OpenAPI 路径模板和 parameters 共用路径提取规则。未声明或部分声明 params schema 时补入字符串路径参数,排除不在模板中的字段,path parameter 始终 required;由独立 Swagger Parser 校验。
  • SDK 的路径参数、body/query 对象绑定和额外 query 形参统一避撞,覆盖 /:query 无 params/body schema、路径与 query/body 同名、保留字及需要别名的对象键。旧实现已实际复现为重复绑定 SyntaxError。
  • 修复省略 info.basePath 时生成 URL 含 undefined 的问题;由完整生成 ESM 的真实请求覆盖。保留 feat(docs): Markdown 展示路由源码位置 (issue #5) #196 的 sourceFile.relative 隔离和 feat(docs): Markdown 展示路由中间件 (issue #4) #197 的中间件展示,以及 fix(mutation): 校验语义输入并复用根版本变更基线 #220 的语义基线包装器/缓存规则。
  • 五个公开包统一 3.3.0;无新增生产依赖。更新迁移指南、示例和五包打包消费检查。

本地 Node 24 验证:

  • lint/格式、核心及四个子包构建、git diff --check 通过。
  • 源码覆盖率和构建产物测试各 774 项通过;包括 126 个跨框架合约用例、原有 14 个 OpenAPI 专项,以及新增 5 个路径一致性、8 个形参/实际传输回归。语句/函数覆盖率 99.61%,分支 95.30%。
  • 13 个示例测试、19 个发布工具测试;两个示例脚本的 OpenAPI 文件由独立解析器校验;94 个本地文档链接/锚点通过。
  • 五个 workspace-aware tarball 打包并在干净项目安装成功;四个 ESM 入口、OpenAPI、未改写的生成 SDK 的真实 HTTP 请求、codegen CLI 输出通过。
  • 核心/Express 消费声明以 skipLibCheck:false 严格检查通过。三个适配器的 API 推导检查通过;全图声明检查遇上游 @types/koa/content-disposition 不兼容,使用 skipLibCheck:true,且显式安装 @types/debug;不宣称完整第三方声明图通过。

本次推送到面向 main 的 PR,触发正式 Node 20/22/24、CodeQL、Mutation CI;远端结果以此 head 为准。全部通过后合并,核验最终 main CI/基线保存,再通过既有 tag/OIDC 流程统一发布 3.3.0。已确认五包该版本均未占用;尚未推送发布 tag 或发布 npm。

文档边界仍适用:自定义函数规则、非 JSON 类型、OAS 3.0 不支持的关键字、自定义状态码/信封和宿主 query parser 行为不能完整自动表达,详见使用指南。

@yourtion
yourtion changed the base branch from docs/reorganize-project-guides to main October 27, 2026 03:14
@yourtion
yourtion force-pushed the feat/openapi3-contract-consistency branch from f44e5ac to 7e3bf3b Compare October 27, 2026 03:14
@codecov

codecov Bot commented Oct 27, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.83080% with 10 lines in your changes missing coverage. Please review.
✅ Project coverage is 99.61%. Comparing base (a9bc7e3) to head (7e3bf3b).

Files with missing lines Patch % Lines
src/lib/plugin/generate_openapi/index.ts 96.95% 5 Missing ⚠️
src/lib/plugin/zod-meta.ts 96.40% 5 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #219      +/-   ##
==========================================
- Coverage   99.86%   99.61%   -0.25%     
==========================================
  Files          28       29       +1     
  Lines        2982     3149     +167     
  Branches      924     1025     +101     
==========================================
+ Hits         2978     3137     +159     
- Misses          4       12       +8     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@yourtion
yourtion merged commit 33997d4 into main Oct 27, 2026
7 of 9 checks passed
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