ajv icon indicating copy to clipboard operation
ajv copied to clipboard

compileAsync causes infinite chain of requests when metaschema is specified

Open yesennes opened this issue 3 years ago • 2 comments

What version of Ajv are you using? 8.8 Does the issue happen if you use the latest version? yes

Ajv options object

{
  loadSchema: async (url) => {
    if (url.startsWith("http://")) {
      url = "https://" + url.substring(7)
    }
    const ans = await (await fetch(url)).json()
    console.log(ans)
    return ans;
  }
}

JSON Schema

{ "$ref": "http://json-schema.org/draft-04/schema#", "$schema": "http://json-schema.org/draft-04/schema#" }

Sample data

The schema never finishes compiling

Your code

const ajv = new Ajv(options)

async function compile() {
  await ajv.compileAsync(schema)
  console.log("Done compiling")
}


Here's a sandbox replicating the problem: https://runkit.com/yesennes/619429f6e904c40008bcc644

Validation result, data AFTER validation, error messages

The schema never finish compiling.

What results did you expect? The schema to finish compiling. Are you going to resolve the issue? I can take a stab at it.

yesennes avatar Nov 16 '21 21:11 yesennes