An open API service indexing awesome lists of open source software.

https://github.com/awwright/node-iri

IRI parsing and IRI-URI conversion utilities, aimed at Node.js
https://github.com/awwright/node-iri

Last synced: about 1 year ago
JSON representation

IRI parsing and IRI-URI conversion utilities, aimed at Node.js

Awesome Lists containing this project

README

          

# IRI: A utility for converting and parsing URIs and IRIs

Utilities for using RFC 3987 and
RFC 3986

IRIs are unicode URIs, URIs by definition being 7-bit characters.

## Construction of the URI

From RFC 3986:

foo://example.com:8042/over/there?name=ferret#nose
\_/ \______________/\_________/ \_________/ \__/
| | | | |
scheme authority path query fragment
| _____________________|__
/ \ / \
urn:example:animal:ferret:nose

The authority exists in a URI/IRI and is marked by a leading `//`. It can be broken down into a number of other components:

root:hunter2@[::1]:8080
\__________/ \___/ \__/
| | |
userinfo host port

## Usage of `IRI`

The constructor takes a single argument, a URI or IRI string:

var iri = require('iri');
var path = new iri.IRI(str).resolveReference('/');

### toString()

Returns UTF-16 IRI

### defrag()

Returns the IRI without the fragment component. Useful for dereferencing URLs on a network.

new IRI().defrag() === 'http://example.com/resource'

### isAbsolute()

IRIs with a fragment are not absolute.

### toAbsolute()

Resolves the IRI against itself, having the effect of stripping the fragment and checking that the supplied IRI is valid (absolute).

### authority()

Returns the authority component of the IRI, such as "user:password@example.com:8080"

### fragment()

Returns the fragment component of the IRI.

### hierpart()

Returns the hier-part of the IRI, the hierarchial component: Everything between the scheme and query, including leading `//` for the host, if it exists.

### host()

Returns the host component of the URI, either a domain name or string-formatted IP address. Excludes port number and username/password.

### path()

Returns the path component of the hier-part. Does not include the authority/host, query, or fragment.

### port()

Returns the port component of the authority as a string, or null if there is no port.

### query()

Returns the query component of the IRI including leading "?", or `null` if there is no query component.

### resolveReference(ref)

Resolve the provided URI/IRI reference against this IRI.

### scheme()

Returns the scheme of the IRI, e.g. "https", "file", or "urn".

### userinfo()

Returns the username/password component of the IRI.

### toURIString()

Returns a URI formatted string with only 7-bit characters.

### toIRIString()

Decodes URI-encoded UTF-8 characters and returns a unicode string (Strings in ECMAScript/JavaScript are UTF-16).

### toIRI()

Returns a new IRI object with URI-encoded UTF-8 characters decoded.

## Function Usage

### iri.fromURI(uri)

Returns an iri.IRI object with UTF-8 escaped characterd decoded.

### iri.toIRIString(uri)

Returns an IRI string decoded from the given URI.

## Tests

Tests are available as a Vows test suite. Run `vows` in the package directory to execute.