josdejong/svelte-jsoneditor

Resolve JSON Schema `$ref` uri's

Open

#547 ouverte le 20 mai 2025

Voir sur GitHub
 (0 commentaires) (1 réaction) (0 assignés)TypeScript (149 forks)github user discovery
enhancementhelp wanted

Métriques du dépôt

Stars
 (1 237 stars)
Métriques de merge PR
 (Métriques PR en attente)

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)

Guide contributeur