`fromJsonSchemaDocument`: import the `not` keyword

未关闭
#10,044 0 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

维护者通常 1 天内回复

@effect-bot 已经在做这个了。

开始于 2026年10月28日。

  • #10077 来自 @effect-bot —— 未关闭

评估

这个 Issue 还没有评估数据。

描述

What is the problem this feature would solve?

On 4.0.7, importing a schema that uses not fails:

SchemaRepresentation.fromJsonSchemaDocument(JsonSchema.fromSchemaDraft07({
  type: "object",
  properties: { a: { type: "string" } },
  not: { required: ["b"] }
}))
// Cannot import JSON Schema keyword "not": Effect has no equivalent constraint.

github-workflow.json uses not 9 times and dependabot-2.0.json once, mostly to forbid combinations such as branches together with branches-ignore.

Context: validating .github/dependabot.yaml and GitHub workflow files with SchemaRepresentation.fromJsonSchemaDocument against the SchemaStore documents dependabot-2.0.json and github-workflow.json, to replace ajv. Since #7410 the importer rejects keywords it cannot represent, which is the right failure, but it means both real-world documents cannot be imported at all. This is one of five gaps found in those two documents; each is filed separately.

What is the feature you are proposing to solve the problem?

Import not as a check that fails when the value decodes against the negated schema. Exporting it back to JSON Schema as not would keep round-trips lossless.

What alternatives have you considered?
  • Stripping not with onEnter: imports, but silently accepts the invalid combinations the keyword exists to reject, which is what #7410 set out to prevent.
  • Keeping ajv for these documents: what we do today.
主要语言
TypeScript
星标
16.7k
派生
808
平均合并
10 小时 15 分钟
30 天内合并 PR
845

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

Effect-TS/effect 的其他 Issue

查看 Effect-TS/effect 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。