fast-uri icon indicating copy to clipboard operation
fast-uri copied to clipboard

fast-uri still not compatible for AJV

Open jasoniangreen opened this issue 1 year ago • 6 comments

Prerequisites

  • [X] I have written a descriptive issue title
  • [X] I have searched existing issues to ensure the bug has not already been reported

Fastify version

2.4.0

Plugin version

No response

Node.js version

18.x

Operating system

macOS

Operating system version (i.e. 20.04, 11.3, 10)

14.5

Description

Hi there, I know you're all keen to get fast-uri compatible to be used as default in AJV. I setup the following test with the latest version and it still fails while uri-js passes.

const AJV = require('ajv');
const fastUri = require('fast-uri');
const ajv = new AJV({
  uriResolver: fastUri // comment this line to see it works with uri-js
});

const schema = {
  $ref: "#/definitions/Record%3Cstring%2CPerson%3E",
  definitions: {
    Person: {
      type: "object",
      properties: {
        firstName: {
          type: "string",
        },
      },
    },
    "Record<string,Person>": {
      type: "object",
      additionalProperties: {
        $ref: "#/definitions/Person",
      },
    },
  },
};

const data = {
  joe: {
    firstName: "Joe",
  },
};

const validate = ajv.compile(schema); // throws with fast-uri
console.log(validate(data));

Link to code that reproduces the bug

No response

Expected Behavior

Should log true with fast-uri just as it does with uri-js which can you see if you comment out the line that adds fast-uri.

jasoniangreen avatar Jun 13 '24 22:06 jasoniangreen

Somehow strange if i fix the #ref to be $ref: "#/definitions/Record<string,Person>", then it passes in runkit

Added the unit tests of uri-js #86 And if we really try to be compatible with uri-js, then we fail by 11 tests...

Uzlopak avatar Jun 13 '24 23:06 Uzlopak

Somehow strange if i fix the #ref to be $ref: "#/definitions/Record<string,Person>", then it passes in runkit

Added the unit tests of uri-js #86 And if we really try to be compatible with uri-js, then we fail by 11 tests...

Yeah, I mean, I am confused as to why uri-js even succeeds with the encoded ref but ultimately it does and now we have to continue supporting it.

jasoniangreen avatar Jun 15 '24 12:06 jasoniangreen

Hmm, I will try to resolve this for good this weekend but we might have to create 2 modes ultimately

@Uzlopak suggested a full rewrite would probably be faster to support url-js

gurgunday avatar Jun 21 '24 15:06 gurgunday

I have released 8.17.1 of AJV with fast-uri after the recent fixes for browser support and another issue we found. No guarantees there aren't any others but I will stay on top of issues and hopefully if anything else comes up it can be fixed forward.

jasoniangreen avatar Jul 12 '24 20:07 jasoniangreen

Awesome news @jasoniangreen!

mcollina avatar Jul 22 '24 11:07 mcollina

@jasoniangreen based on the timeline of this issue and no comment so far i assume we can close it. Can you confirm?

zekth avatar Oct 21 '24 19:10 zekth

@zekth I'd say this can be closed, looking at the most recent ajv release, fast-uri is still being used.

Fdawgs avatar Jan 03 '25 13:01 Fdawgs