Package Exports
- relative-to-absolute-iri
- relative-to-absolute-iri/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (relative-to-absolute-iri) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Relative to Absolute IRI
Resolve relative IRIs to absolute IRIs given a base IRI, conforming to RFC3986.
Installation
$ yarn install relative-to-absolute-iri
This package also works out-of-the-box in browsers via tools such as webpack and browserify.
Require
import {resolve} from "relative-to-absolute-iri";
or
const resolve = require("relative-to-absolute-iri").resolve;
Usage
Parameters
This library exposes a single resolve
function
that must be called with a relative IRI (string) as first argument,
and an optional base IRI (string) as second argument.
It will output an absolute IRI (string).
resolve('relative', 'http://base.org/'); // Outputs 'http://base.org/relative'
Relative IRIs
IRIs that are already relative will remain relative:
resolve('http://example.org/'); // Outputs 'http://example.org/'
resolve('http://example.org/', 'http://base.org/'); // Outputs 'http://example.org/'
Hashes
Fragments/hashes in relative IRIs are also taken into account.
resolve('#abc', 'http://base.org/'); // Outputs 'http://base.org/#abc'
Invalid base IRI
Invalid base IRIs cause an error to be thrown.
resolve('abc', 'def'); // Error
Relative to scheme
When a relative IRI starts with a //
, then the scheme of the base IRI will be used.
resolve('//abc', 'http://base.org/'); // Outputs 'http://abc'
Absolute relative IRIs
Relative IRIs that starts with a /
erase the path of the base IRI.
resolve('/abc/def/', 'http://base.org/123/456/'); // Outputs 'http://base.org/abc/def/'
Collapsing of dots
Relative IRIs that point to the current directory (.
)
or parent directory (..
) are collapsed.
resolve('xyz', 'http://aa/parent/parent/../../a'); // Outputs 'http://aa/xyz'
resolve('xyz', 'http://aa/././a'); // Outputs 'http://aa/xyz'
License
This software is written by Ruben Taelman.
This code is released under the MIT license.