# 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.