metal-uri

Class for parsing and formatting URIs.

Usage no npm install needed!

<script type="module">
  import metalUri from 'https://cdn.skypack.dev/metal-uri';
</script>

README

metal-uri

Build Status

Build Status

Class for parsing and formatting URIs.

Use

After passing a URI as a string to the constructor, the individual components of the URI can be accessed and updated with the provided setters and getters.

Simple use case

import Uri from 'metal-uri';

const uri = new Uri('http://foo:8080');

uri.getHostname(); // 'foo'
uri.getPort(); // '8080'
uri.getProtocol(); // 'http:'

Updating values

const uri = new Uri('http://foo:8080/path');

uri.setPathname('login');
uri.setProtocol('https:');
uri.setHostname('bar');
uri.setPort('81');

uri.toString(); // 'https://bar:81/login'

Handling query parameters

const uri = new Uri('http://hostname?a=1&b=2');

uri.getParameterValue('a'); // '1'
uri.getParameterValue('b'); // '2'

uri.removeParameter('a');
uri.setParameterValue('b', 'x');
uri.addParameterValue('c', 'y');

uri.toString(); // 'http://hostname/?b=x&c=y'
uri.getSearch(); // '?b=x&c=y'

You can also set multiple values for one parameter.

const uri = new Uri('http://hostname?a=1');

uri.addParameterValues('b', ['x', 'y']);

uri.toString(); // 'http://hostname/?a=1&b=x&b=y'

Non-standard protocols

A default protocol is added automatically when none is provided. This default value will either be http: or https: depending if you are on a secure connection or not.

In order to use other protocols, you must instruct Uri to not add a default protocol by passing false as the second argument.

const uri = new Uri('tel:555-555-5555', false);

uri.setPathname('1-555-555-5555');

uri.toString(); // tel:/1-555-555-5555

Setup

  1. Install a recent release of NodeJS if you don't have it yet.

  2. Install local dependencies:

npm install
  1. Run the tests:
npm test

Contributing

Check out the contributing guidelines for more information.