Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make invalid port check optional to support url templates #417

Open
roguib opened this issue Aug 1, 2022 · 0 comments
Open

Make invalid port check optional to support url templates #417

roguib opened this issue Aug 1, 2022 · 0 comments

Comments

@roguib
Copy link

roguib commented Aug 1, 2022

After version 1.18.11 of urijs, an invalid port exception is thrown if the uri is constructed with a port that isn't valid. This check is useful to avoid having an invalid value as a port, increasing the correctness of the generated URI, but makes impossible to use the library when working with url templates.

Before 1.18.11, the following code snippet was possible:

const uri = new urijs('https://github.com:{port}');

After 1.18.11, the same code snippet throws the invalid port exception.

There're several possible solutions to this problem, in case there's the desire to support URI templates.

  1. Make port check optional by passing an options object to the constructor:
const uri = new urijs('https://github.com:{port}', { ensureValidPort: false });
  1. The second idea that comes to my mind is to throw the exception not when the URI is created but when it's converted to a string. My hypothesis here is that uri.toString() or uri.valueOf() might be the last calls to the urijs library before the constructed URI is used.
const uri = new urijs('https://github.com:{port}'); // valid, no exception is thrown
// do stuff here
const resp = await fetch(uri.toString()); // here an exception will be thrown if the port is still invalid
  1. There might be also other valid options.

Would such change be considered for this library?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant