josdejong/svelte-jsoneditor

Resolve JSON Schema `$ref` uri's

Ouverte

#547 ouverte le 20 mai 2025

 (0 commentaire) (1 réaction) (0 personne assignée)TypeScript (147 forks)github user discovery
enhancementhelp wanted

Métriques du dépôt

Stars
 (1 260 étoiles)
Métriques de merge PR
 (Merge moyen 9h 26m) (5 PRs mergées en 30 j)

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