Skip to content

Make invalid port check optional to support url templates #417

Open
@roguib

Description

@roguib

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions