Skip to main content

URL

jstz's implementation of the URL API defines utilities for URL resolution and parsing according to the URL specification.

Quick Start​

There are two ways to create a URL: either as an absolute URL or a relative URL.

let url: URL = new URL(`jstz://${my_function.address}/entrypoint`);
let url2: URL = new URL("../entrypoint_2", url.href);

Each jstz smart function is assigned a unique address, akin to an IP address, starting with KT1 when the function is deployed. To decode these addresses, jstz employs its own URL scheme jstz://. An example URL for a jstz smart function would therefore be jstz://KT19mYzcaYk55KttezwP4TbMrGCDpVuPW3Jw/.

It's important to note that if the base URL or the resulting URL is not valid, the constructor will raise a TypeError exception. To check whether URLs can be parsed correctly, you can use the static method URL.canParse().

if (URL.canParse(relativePath, baseUrl)) {
let url = new URL(relativePath, baseUrl);
console.log(url.href);
} else {
// the URL cannot be parsed, take appropriate action.
console.error("Invalid URL");
}

You can also modify a URL by setting its properties.

let url = new URL("jstz://KT19mYzcaYk55KttezwP4TbMrGCDpVuPW3Jw/"); // not a valid address, we'll have to change it
url.hostname = Ledger.selfAddress;
url.pathname = "accounts";
url.hash = "#id";
console.log(url.href); // jstz://KT1../accounts#id

The URLSearchParams API may be used to build and manipulate search parameters. To get the search parameters from the URL, you can make use of the .searchParams instance property.

let url = new URL(`jstz://${address}/?first_name=Dave`);
switch (url.searchParams.get("first_name")) {
case "Jim":
url.searchParams.set("last_name", "Jones");
break;
case "Sarah":
url.searchParams.set("last_name", "Smith");
break;
case "Dave":
url.searchParams.set("last_name", "Davies");
break;
}

Constructor​

new URL(url: string, base?: string): URL​

Constructs a URL from a given URL string and an optional base URL. If base if present then url will be interpreted as a relative URL. If base is not present then url will be interpreted as an absolute URL. Raises a TypeError exception if the base URL or resulting URL aren't valid URLs.

Instance Properties​

URL.hash: string​

The fragment identifier of the URL.

URL.host: string​

The host, a string containing the hostname (see below), followed by a ':' and the port of the URL.

URL.hostname: string​

The hostname of the URL. In jstz this will usually be a KT1 address of a smart function.

URL.href: string​

A stringifier, returns the whole URL.

readonly URL.origin: string​

The origin of the URL, specifically the scheme, the domain and the port.

URL.password: string​

The password specified before the domain name.

URL.pathname: string​

The URL path. This will always begin with a '/' and contains the part of the URL up until the query string or fragment.

URL.port: string​

The port number of the URL. This has no special meaning within jstz and will not usually be present.

URL.protocol: string​

The protocol scheme of the URL. Within jstz this will usually be tezos:

URL.search: string​

The URL's search parameter string, This will include all the search parameters of the URL, each of which begins with a '?'.

readonly URL.searchParams: URLSearchParams​

The search parameter object. See URLSearchParams for more information.

URL.username: string​

The username specified before the domain name.

Static Methods​

URL.canParse(url: string, base?: string): boolean​

Returns true if the URL and base URL strings can be parsed into a valid URL.

Instance Methods​

URL.toString(): string​

An alias for href; returns the whole URL as a string.

URL.toJSON(): string​

An alias for href; returns the whole URL as a string.