josdejong/svelte-jsoneditor

Resolve JSON Schema `$ref` uri's

Open

#547 opened on May 20, 2025

View on GitHub
 (0 comments) (1 reaction) (0 assignees)TypeScript (149 forks)github user discovery
enhancementhelp wanted

Repository metrics

Stars
 (1,237 stars)
PR merge metrics
 (PR metrics pending)

Description

When a JSON Schema document contains a $ref referring to a separate JSON Schema document, the editor should load these documents into the AJV validator so the validation works.

I think this requires iterating over the JSON schema document to find all $ref occurrences, and then asynchronously loading the documents via a uri fetch, and then loading all schemas into the Ajv instance.

See https://ajv.js.org/guide/combining-schemas.html#combining-schemas-with-ref

const schema = {
  $id: "http://example.com/schemas/schema.json",
  type: "object",
  properties: {
    foo: {$ref: "defs.json#/definitions/int"},
    bar: {$ref: "defs.json#/definitions/str"},
  },
}

const defsSchema = {
  $id: "http://example.com/schemas/defs.json",
  definitions: {
    int: {type: "integer"},
    str: {type: "string"},
  },
}

const ajv = new Ajv({schemas: [schema, defsSchema]})
const validate = ajv.getSchema(schema.$id)

Contributor guide