Open
Description
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.
- Make port check optional by passing an
options
object to the constructor:
const uri = new urijs('https://github.com:{port}', { ensureValidPort: false });
- 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()
oruri.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
- There might be also other valid options.
Would such change be considered for this library?
Metadata
Metadata
Assignees
Labels
No labels