Skip to content

fromJsonSchemaDocument: import if / then / else #10045

Open

Description

@filipfalcon

What is the problem this feature would solve?

On 4.0.7, importing a schema that uses if/then/else fails:

SchemaRepresentation.fromJsonSchemaDocument(JsonSchema.fromSchemaDraft07({
  type: "object",
  properties: { kind: { type: "string" }, size: { type: "number" } },
  if: { properties: { kind: { const: "box" } } },
  then: { required: ["size"] }
}))
// Cannot import JSON Schema keyword "if": Effect has no equivalent constraint.

dependabot-2.0.json uses if 5 times, for rules that depend on package-ecosystem, and github-workflow.json 8 times.

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 if/then/else as a check: when the value decodes against if, it must also satisfy then, otherwise else. Missing then or else means no constraint on that side, as in the specification.

What alternatives have you considered?

  • Stripping the keywords with onEnter: imports, but drops the conditional rules, so invalid files pass.
  • Keeping ajv for these documents: what we do today.

Activity

  1. self-assigned this
    on Oct 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions