@frontmcp/lazy-zod (英语)
佐德四号 z和复合计划一样 z.object() 建造它们第一次被使用,而不是模块加载时. 一个过程定义了许多计划,但每跑很少使用它们,如CLI,无服务器功能或边工,开始得更快. 这是一个内部包: @frontmcp/sdk 全部重新导出, 因此在 FrontMCP 服务器导入中 z, (中文(简体) ), eagerZ 财务报告和审定财务报表 lazyZ 从 @frontmcp/sdk. 它不依赖于FrontMCP的其他部分,因此也可以自行使用.
安装
npm install @frontmcp/lazy-zod zod
zod ^4.0.0 是一个对等依赖: 包包您安装的 Zod 。 Zod 3没有支持。 它需要节点.js 24或后.
使用量
导入 z 从这里而不是从 zod数字 :
import { eagerZ, lazyZ, toJSONSchema, z } from '@frontmcp/lazy-zod';
const Ticket = z.object({
title: z.string().min(5),
customer: z.object({ email: z.string().email() }).optional(),
});
type Ticket = z.infer<typeof Ticket>;
const ticket: Ticket = Ticket.parse({ title: 'Cannot log in' });
const jsonSchema = toJSONSchema(Ticket);
const Built = eagerZ.object({ id: eagerZ.string() });
const Deferred = lazyZ(() => eagerZ.object({ id: eagerZ.string() }));
z.object(), (中文(简体) ), z.strictObject(), (中文(简体) ), z.looseObject(), (中文(简体) ), z.union(), (中文(简体) ), z.discriminatedUnion(), (中文(简体) ), z.intersection(), (中文(简体) ), z.record() 财务报告和审定财务报表 z.tuple() 返回一个待命。 真正的"Zod"计划是第一次使用站台时建造的,通过剖析或读取像"地"这样的地物 .shape,和方法你 链上,喜欢 .optional()临Τ return 在第一次分析之后, parse, (中文(简体) ), safeParse, (中文(简体) ), parseAsync 财务报告和审定财务报表 safeParseAsync 直接给Zod打电话 其他工厂一样 z.string() 财务报告和审定财务报表 z.enum()这是Zod的自已.
一个站着的行为就像它所代表的计划: 它把同样的, instanceof ZodObject 实值 true,以及 z.infer 给出相同的类型.
| 导出 | 这是什么 |
|---|---|
z (也是默认导出) | 佐德四号 z上面的工厂被推迟了. |
eagerZ | 佐德自己来的 z用它来做一个计划,只要它被定义,它就会读出来. |
lazyZ(build) | 一个叫 build() 第一次使用,只有那时. |
internalZ | FrontMCP的软件包是用什么打造他们的计划. 每个工厂,包括叶子, 返回站台,一个站台建起它的叶子。 佐德的循环检查没有附着在他们身上,所以一个递归式计划是用 z。它不是公共API的一部分,可以在任何发布中更改:使用 z。 。 。 . |
isLazy(schema) | true 一个站立,从 z 或从 lazyZ()。 。 。 . |
forceMaterialize(schema) | 真正的"Zod"计划 里面的每个站点都在里面. |
hasTransform(schema) | true 当计谋在树上转动的时候.transform(), (中文(简体) ), z.preprocess(), (中文(简体) ), .pipe(),一个编码器),所以它描述的可以与其输入的形状不同. |
toJSONSchema(schema) | Zod的 JSON Schema 转换器,运行在 forceMaterialize(schema)用它来代替Zod自己的 z.toJSONSchema(),该投出 TypeError: Cannot set properties of undefined (setting 'ref') 当计划中的物体或结合是 .optional() 或有一个 .default()。 。 。 . |
ZodObject, (中文(简体) ), ZodError,, , , , , , , , | 佐德的班级和类型(ZodTypeAny, (中文(简体) ), infer, (中文(简体) ), input, (中文(简体) ), output),所以您的代码不需要导入 zod。 。 。 . |
业绩
这个包的原型是在1,515个生成的计程器上测出,被捆绑成一个文件,在Node.js 24(30跑的medians)上:
| 度量衡 | Zod's (Zod's) (美国英语) z | 懒惰 z |
|---|---|---|
| 启动 | 387分钟 | 7.1毫秒(每秒) |
| 一个计划的第一个解析 | 0.45 分钟 | 1.47分钟 |
| 每个计划的第一个解析 | 235分钟 | 616分钟 |
| 每个方案第二段 | 31.0毫秒 | 31.0毫秒 |
| 套装大小 | 1.69 甲基溴 | 1.70 甲基溴 |
作品没有被删除,而是被移动了:每个计划在第一次解析时成本更高. 当一个过程经常开始时,懒惰的作案方法会有所回报,只使用其中的一些作案方法. 基准及其方法和全部结果为: apps/poc-lazy-zod。 。 。 .
文档
z, (中文(简体) ),eagerZ财务报告和审定财务报表lazyZ: FrontMCP 如何使用此软件包- Schemas是合同: 为工具编写输入方案
相关软件包
@frontmcp/sdk:再出口此软件包。 在FrontMCP服务器中使用.zod: 此套件的图案库 .
捐款
资料来源: libs/lazy-zod欢迎提出问题和拉动请求;见 捐款额。 。 。 .
许可证
阿帕奇2.0 (英语). 见 自由主义。 。 。 .