#6613·zod

在转换大型多个模式文档时,对某些模式的 format/length/integer-bound 约束已删除 (4.5.4 → 4.6.5)

作者: BigGillyStyle创建于 2026年9月17日更新于 2026年9月17日

QQ 版本数

  • 4.5.4'-4.6.5'(将终点分开;没有将个人`4.6.x'补丁分开)引入某个地方的倒退。
  • 通过Orpc/[email protected]'的ZodToJsonSchemaConverter'(取自Openapc/openapi''的OpenAPIGenerator')使用,不直接打电话

页:1

当“ZodToJsonSchema Converter”的“ZodToJsonSchema Converter”将一个大型路由器(~100+程序,几百个Zod schemas)转换成一个OpenAPI文件时,许多不相关的计划会失去“格式”(uid'/email'/uri')、minLength'和所排放的JSON Schema中从“4.5.4”到“4.6.5”的整数界限,尽管运行时间相同。 我无法用单个或以小批量'z.registry ()' (2 schemas) 转换的相同的图案来复制这个图案,而只能按照我们实际应用的文件的规模。 我提交这个文件时没有做一个小的重写, 因为我花了一段时间试图缩小它, 但没有成功—— 如果有用的话,我很乐意帮助缩小它的范围, 或者如果这看起来是 与'orpc/zod'相反, 让我知道, 我会移动它。

我们所看到的

三个例子直接取自我们的diff(`[email protected]' 输出与'[email protected]'输出,相同的chemas,相同的'orpc/[email protected]'):

** 整数列(细雨-佐德的'z.int (.gte (min.lte (max))'图案):** {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? "id":{{.

  • "最大":2147483647,
  • "最少": - 2147483648, (中文(简体) ). -"类型":"整"
  • "类型":"数量" {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

**A UUID/电子邮件字符串字段:**
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
"id":{{.
- "格式":"uuid",("格式")
"类型":"弦"
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
. . . . . . . .
"提交By":{
- "格式": "电子邮件"
"类型":"弦"
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

** " 明伦斯 " 限制:** {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? "AoName": {{

  • "明伦斯": 2, "类型":"弦" {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

在每一种情况下,运行时间计划都保持不变(同为`.int()'/`.gte()'/`.lte()',同为`.min()'的.uid()`/`.email()')——只有JSON Schema在具体全文件转换方面的产出才失去限制。 并非每个特定模式的发生都会受到影响;例如,同一文件中的一些`uid'格式化字段保留其`格式',而另一些则不这样,这就是我指向某种规模/再利用相关的东西,而不是直接的每学分回归。

我试图做的,没有复制它

孤立地呼唤`z.toJSONSchema()'在`4.5.4'和`4.6.5'的同一计划构造上,都产生了我所尝试的每个案例的相同(正确的)产出:


从“ z ” 导入{ z } ;

// int32 列图案( 细雨- 佐德)
z.toJSONSchema(z.int (.gte (2147483648).lte (2147483647)); ;  .
//两种版本相同: {类型:"整数",最小:-2147483648,最大:2147483647}}

// 对象包裹它, 包括一个无效的变体
z.to JSONSchema(z.object) ({)
id:z.int (. gte (2147483648).lte (2147483647), (英语).
homeRegionId: z.int (.gte (2147483648).lte (2147483647). nullable (,), (), (原始内容存档于2018-11-11).
·)
// 两个版本相同

// 一个登记册,有两个共享结构相同字段的计划
const registry () = z. registry ();
注册(schemaA,{ id: "SchemaA"});
注册.add(schemaB,{
. . . . . . .