@slint-zod/图利
共享AST公用事业
eslint-plugin-zodeslint-plugin-zod-minieslint-plugin-zod-core
[注] 此软件包是以前列出的所有软件包的依赖性,所以不需要直接安装.
API 密码
每个导出都带有用法注释的JSDoc——参考链接的源文件(或您编辑中徘徊)来进行完整描述并举出例子. 此 README 只列出可用的内容 .
根出口 - @eslint-zod/utils
AST 解析,导入跟踪, transversal, 和固定器助手.
规则的撰写
createRuleCreator(getRuleURL)——建设规则工厂;每个规则都获得其文件URL,以及create接收用户选项合并defaultOptions类型RuleCreator(工厂)和RuleDefinition他们被写作反对的种类@eslint-zod/utils/rule-typescreatePluginMeta(packageJSONURL)— 一个插件name, (中文(简体) ),version, (中文(简体) ),getRuleURL财务报告和审定财务报表createRule,从中读取package.json; 规则文件预计在docs/rules/<rule-name>.md下级repository.directory类型PluginMeta
导入跟踪范围( S)
ZodImportScope定义插件考虑的导入源的类别;scope.createTracker({ kind })规则如何获得每个文件的导入跟踪器;kind要求,以及sourceCode使下方的能见度解析器zodImportScope, (中文(简体) ),zodMiniImportScope, (中文(简体) ),zodCoreImportScope- 预建ZodImportScope实例scope.createTracker({ kind, sourceCode? })——返回的追踪器曝光createSchemaVisitor, (中文(简体) ),detectZodSchemaRootNode, (中文(简体) ),isZodSchemaOfType, (中文(简体) ),collectZodChainMethods, (中文(简体) ),collectZodSchemaConstraints, (中文(简体) ),findZodChainedMethod,以及导入的帮助.getZodImportBindings()返回所有与它来自的声明相绑定的内容resolveZodImport(node)编号 :resolveZodExport(node)解开它的 zod 导入的词典范畴的节点, 所以阴影化z决定:null- 用他们过来isZodNamespace在一条规则中,它的修补者会写出一个导入.createTracker({ kind })选择哪些规格是记录的,哪些是要求的'value'跳过import type { … }财务报告和审定财务报表{ type … }, (中文(简体) ),'type'只有这些,'all'两者兼而有之,也是阅读类型位置的规则需要的,因为两种形式都达到一种。 Schema 检测可以达到 仅限 通过跟踪器——原始表单需要跟踪器的私人导入地图tracker.resolveZodSchema(node)- 那个ZodSchemaMeta一个表达式评估、跟踪const绑定 :const base = z.string(), (中文(简体) ),base.optional()给methods: ['string', 'optional']。与检测不同,调用不一定是最外向的.null除非每个步骤都是可以证明的图谋——非分解导入,解析结果,帮助者调用或被解结构绑定不是. 需要一个用sourceCodetracker.createSchemaVisitor({ schemaType?, localSchemas?, onSchema })- 建设{ ImportDeclaration, CallExpression }访问者返回一个规则,带有检测和schemaType过滤器已应用 . 规则的标准形状; 扩展后添加更多访问者密钥.localSchemas: true还访问根植于本地的链条const计划( s)base.isOptional()),与meta说明整个计划;node仍然只有本地电话, 所以在选择进入前先检查规则的固定器。 需要一个用sourceCodetracker.findZodChainedMethod(node, meta, methodName)——将一个被链条绑入一个计划(一个名称,或数个中的第一个被链条绑起)的方法定位,用于标出被折断的被链条绑起的呼叫的规则.null表示没有链; 匹配member: null指被锁在链上,行尸无法命名(z['number']().finite()),所以报告没有固定- 类型
ZodSchemaImportTracker, (中文(简体) ),ZodChainItem, (中文(简体) ),ZodChainMember, (中文(简体) ),ZodChainedMethodMatch, (中文(简体) ),ZodImportBinding, (中文(简体) ),ZodImportKind, (中文(简体) ),ZodSchemaVisitorOptions, (中文(简体) ),ZodTrackerOptions
Schema 检测和导航
findParentSchemaMatchingCondition(node, options)- 搜索AST,寻找对应的祖先计划getZodChainedMethodNames(meta)——方法被连锁 打开 一个计划,工厂被拆除.ZodSchemaMeta.methods包括命名空间计划工厂(z.number().safe()→['number', 'safe']),但不针对一个已命名的导入(number().safe()→['safe']如此一丝不挂methods.includes(name)匹配异名导入的工厂。 用这个来问"这个"计划链方法X"吗getZodSchemaBaseType(schemaType)——将一个 schema 厂名映射到其基础类型;返回ZodSchemaBaseType | null, (中文(简体) ),null工厂规则不应该有- 类型
ZodSchemaMeta追踪器是什么detectZodSchemaRootNode返回(或null(中文(简体) ) - 类型
ZodSchemaConstraint, (中文(简体) ),ZodChainedConstraint, (中文(简体) ),ZodCheckArgumentConstraint——由追踪器产生的正常化制约collectZodSchemaConstraints
修补器助手
buildZodChainRemoveMethodFix(opts)——从链中去除一种方法hasCommentInRange(sourceCode, range)——一个注释是否位于一个修饰者将要去掉或重写的范围内hasParenthesizedReceiver(member)——成员表达式的对象是否被括号所包裹((z.string()).min(1)),其中在对象端切入的固定器会留下收尾括号后buildZodChainReplacementFix(opts)- 替换一系列方法buildZodConstraintsRemoveFix(opts)- 删除一组ZodSchemaConstraints (链条或检查参数)buildZodWrapperUnwrapFix(opts)——用其论据取代单一论据的收尾电话
Zod 词汇表
ZOD_IMMUTABLE_SCHEMA_TYPES——已解析出已不可更改的工厂名称ZOD_MUTATING_CHECK_NAMES—— Zod 检查更改已验证值的名称ZOD_NON_SCHEMA_PRODUCING_METHODS—— Zod 方法名称不返回方案ZOD_NON_SCHEMA_HELPER_NAMES编号 :isZodNonSchemaHelperCall(meta)——上层z(b) 其呼唤产生的是计划以外的产品z.toJSONSchema, (中文(简体) ),z.registry, (中文(简体) ),z.parse); 不同于isZodSchemaFactoryCall单靠独立支票ZOD_SCHEMA_FACTORY_NAMES编号 :isZodSchemaFactoryName(name)——每个顶级的Zod导出,其调用评价为schema;使用上游而非每个规则的工厂列表isZodSchemaFactoryCall(meta)- 是否为detectZodSchemaRootNode结果构建一个方案;解决iso编号 :coerce取名空间,并拒绝只使用计数的助手z.toJSONSchema, (中文(简体) ),z.prettifyError(中文(简体) )ZOD_STRING_FORMAT_METHODS- 贬值z.string().<format>()方法和顶级工厂替换每个; 类型ZodStringFormatMethodNameZOD_STRING_FORMAT_NAMES高级字符串格式的厂名,全部解析为stringZOD_TYPE_CHANGING_METHODS——用链式方法围绕另一种类型重建计划(array, (中文(简体) ),or, (中文(简体) ),pipe; ; 链条较早的检查不会带过; 类型ZodTypeChangingMethod
检查词汇
由 API 两种风格共享的冠名, 因此规则逻辑比较 zod是因为 .min(2) 与 zod/mini是因为 z.minLength(2) 是一个制约因素.
canonicalizeZodConstraintName(constraint, baseType)– 将约束的拼写减少至其克名getZodCheckDescriptor(canonicalName)- 检查意味着什么:哪一种基础类型接受它,它的范围是什么- 类型
ZodCheckDescriptor, (中文(简体) ),ZodCheckBound, (中文(简体) ),ZodCheckDomain
规则类型 - @eslint-zod/utils/rule-types
林特规则API的片段 帮助者阅读。 类型是结构的,所以ESLint和打字-eslint自己的对象可以被指定给他们,而无需安装linter:包唯一的打字-slint依赖是 @typescript-eslint/types,为AST.
RuleContext, (中文(简体) ),RuleListener, (中文(简体) ),RuleModule, (中文(简体) ),RuleMeta- 规则本身JSONSchema4类型meta.schema,从打字机上出售,所以RuleTester接受规则模块RuleFix, (中文(简体) ),RuleFixer, (中文(简体) ),ReportDescriptor, (中文(简体) ),ReportFixFunction, (中文(简体) ),ReportSuggestionArray, (中文(简体) ),SuggestionReportDescriptor- 报告和修正SourceCode, (中文(简体) ),TokenSearchOptions, (中文(简体) ),Scope, (中文(简体) ),ScopeVariable, (中文(简体) ),ScopeDefinition, (中文(简体) ),ScopeReference来源和范围
共同的规则制定者—— @eslint-zod/utils/rule-builders/<rule-name>
每项规则在 eslint-plugin-zod 财务报告和审定财务报表 eslint-plugin-zod-mini (还有) eslint-plugin-zod-core揭露其 create(...) 工厂从一个专用的子道。 插件保持规则元数据局部并重用运行时逻辑.
buildConsistentImportCreate(scope)出口ConsistentImportOptions;其可选类型参数缩小syntax选择buildConsistentImportSourceCreate(scope)出口ConsistentImportSourceOptionsbuildConsistentObjectSchemaTypeCreate(scope)出口ConsistentObjectSchemaTypeOptions财务报告和审定财务报表ZOD_OBJECT_METHODSbuildConsistentSchemaOutputTypeStyleCreate(scope)出口ConsistentSchemaOutputTypeStyleOptions财务报告和审定财务报表ZOD_SCHEMA_TYPE_STYLESbuildConsistentSchemaVarNameCreate(scope)出口ConsistentSchemaVarNameOptionsbuildNoAnySchemaCreate(scope)buildNoCoerceBooleanCreate(scope)buildNoConflictingChecksCreate(scope)- 还出口NoConflictingChecksOptions财务报告和审定财务报表NoConflictingChecksMessageIds合同buildNoDuplicateSchemaMethodsCreate(scope, excludedMethods)- 一个as const列表中命名一个类型更改方法是一个类型错误,因为规则从未到达它; 也导出NoDuplicateSchemaMethodsExclusionsbuildNoDynamicSchemaValueCreate(scope)buildNoEmptyCustomSchemaCreate(scope)buildNoFunctionScopedSchemaCreate(scope)buildNoNativeEnumCreate(scope)buildNoPromiseSchemaCreate(scope)buildNoThrowInRefineCreate(scope)buildNoTransformInRecordKeyCreate(scope, transformNames)—— 说transformNames与关键化工厂及其限制相匹配,所以一个列表既包括API风格buildNoUnknownSchemaCreate(scope)buildNoUnnecessaryReadonlyCreate(scope)buildPreferEnumOverLiteralUnionCreate(scope)buildPreferNullishCreate(scope)buildPreferTupleOverArrayLengthCreate(scope)buildPreferValidateCreate(scope, api)仅能说明成功的建议;api是一个ZodValidateApiStyle(单位:千美元)schema-method或者说standalone(中文(简体) )buildRequireBrandTypeParameterCreate(scope)buildRequireErrorMessageCreate(scope)buildSchemaErrorPropertyStyleCreate(scope)出口SchemaErrorPropertyStyleOptions
这个 consistent-import 增购再出口 IMPORT_SYNTAXES 财务报告和审定财务报表 ImportSyntax:每个语法建设者可以执行.
每个插件都声明它自己规则计划中提供的子集.
规则模式—— @eslint-zod/utils/rule-patterns/<pattern-name>
规则形状在多个规则中反复出现,以它们不同的名称为参数. 与规则构建者不同的是,这些没有绑在一个规则名上,单个插件可能使用一次.
buildDeprecatedSchemaPropertyCreate(options)- 在给定的图案上标出已贬值的财产进入schemaType(单位:千美元)z.number().isInt出口DeprecatedSchemaPropertyOptionsbuildDeprecatedSchemaMethodCreate(options)标出一个在计划链中任何地方被贬值的方法(.isOptional()出口DeprecatedSchemaMethodOptionsbuildCollapseEqualBoundsCreate(options)——将等同的下/上绑对倒入同一域的精确形式检查中(z.string().min(3).max(3)→z.string().length(3)出口CollapseEqualBoundsOptions财务报告和审定财务报表CollapsibleBoundDomainbuildPreferDedicatedFactoryCreate(options)- 偏好专门工厂,而不是普通工厂,而倾向于加连锁改造器(z.looseObject()结束z.object().passthrough()出口PreferDedicatedFactoryOptionsbuildPreferTopLevelFactoryCreate(options)- 更喜欢顶级工厂,而不是一般工厂上连锁的腐烂方法(z.uuid()结束z.string().uuid()出口PreferTopLevelFactoryOptions财务报告和审定财务报表TopLevelFactoryReplacement