Url
Constructors
fromString
Parses a URL string into a URL object, returning an Either type for safe
error handling.
Details
This function converts a string into a URL object, enabling safe URL
parsing with built-in error handling. If the string is invalid or fails to
parse, this function does not throw an error; instead, it wraps the error in
a IllegalArgumentException and returns it as the Left value of an
Either. The Right value contains the successfully parsed URL.
An optional base parameter can be provided to resolve relative URLs. If
specified, the function interprets the input url as relative to this
base. This is especially useful when dealing with URLs that might not be
fully qualified.
Signature
declare const fromString: (url: string, base?: string | URL) => Either<URL, IllegalArgumentException>Example
import { Url } from "@effect/platform"import { Either } from "effect"
// Parse an absolute URL//// ┌─── Either<URL, IllegalArgumentException>// ▼const parsed = Url.fromString("https://example.com/path")
if (Either.isRight(parsed)) { console.log("Parsed URL:", parsed.right.toString())} else { console.log("Error:", parsed.left.message)}// Output: Parsed URL: https://example.com/path
// Parse a relative URL with a baseconst relativeParsed = Url.fromString("/relative-path", "https://example.com")
if (Either.isRight(relativeParsed)) { console.log("Parsed relative URL:", relativeParsed.right.toString())} else { console.log("Error:", relativeParsed.left.message)}// Output: Parsed relative URL: https://example.com/relative-pathGetters
Retrieves the query parameters from a URL.
Details
This function extracts the query parameters from a URL object and returns
them as UrlParams. The resulting structure can be easily manipulated or
inspected.
Signature
declare function urlParams(url: URL): UrlParamsExample
import { Url } from "@effect/platform"
const myUrl = new URL("https://example.com?foo=bar")
// Read parametersconst params = Url.urlParams(myUrl)
console.log(params)// Output: [ [ 'foo', 'bar' ] ]Modifiers
modifyUrlParams
Reads, modifies, and updates the query parameters of a URL.
Details
This function provides a functional way to interact with query parameters by
reading the current parameters, applying a transformation function, and then
writing the updated parameters back to the URL. It returns a new URL object
with the modified parameters, ensuring immutability.
Signature
declare const modifyUrlParams: { (f: (urlParams: UrlParams) => UrlParams): (url: URL) => URL; (url: URL, f: (urlParams: UrlParams) => UrlParams): URL;}Example
import { Url, UrlParams } from "@effect/platform"
const myUrl = new URL("https://example.com?foo=bar")
const changedUrl = Url.modifyUrlParams(myUrl, UrlParams.append("key", "value"))
console.log(changedUrl.toString())// Output: https://example.com/?foo=bar&key=valueThis function clones the original URL object and applies a callback to the
clone, allowing multiple updates at once.
Signature
declare const mutate: { (f: (url: URL) => void): (self: URL) => URL; (self: URL, f: (url: URL) => void): URL;}Example
import { Url } from "@effect/platform"
const myUrl = new URL("https://example.com")
const mutatedUrl = Url.mutate(myUrl, (url) => { url.username = "user" url.password = "pass"})
console.log("Mutated:", mutatedUrl.toString())// Output: Mutated: https://user:pass@example.com/Setters
Updates the hash fragment of the URL.
Signature
declare const setHash: { (hash: string): (url: URL) => URL; (url: URL, hash: string): URL;}Updates the host (domain and port) of the URL.
Signature
declare const setHost: { (host: string): (url: URL) => URL; (url: URL, host: string): URL;}setHostname
Updates the domain of the URL without modifying the port.
Signature
declare const setHostname: { (hostname: string): (url: URL) => URL; (url: URL, hostname: string): URL;}Replaces the entire URL string.
Signature
declare const setHref: { (href: string): (url: URL) => URL; (url: URL, href: string): URL;}setPassword
Updates the password used for authentication.
Signature
declare const setPassword: { (password: string | Redacted<string>): (url: URL) => URL; (url: URL, password: string | Redacted<string>): URL;}setPathname
Updates the path of the URL.
Signature
declare const setPathname: { (pathname: string): (url: URL) => URL; (url: URL, pathname: string): URL;}Updates the port of the URL.
Signature
declare const setPort: { (port: string | number): (url: URL) => URL; (url: URL, port: string | number): URL;}setProtocol
Updates the protocol (e.g., http, https).
Signature
declare const setProtocol: { (protocol: string): (url: URL) => URL; (url: URL, protocol: string): URL;}Updates the query string of the URL.
Signature
declare const setSearch: { (search: string): (url: URL) => URL; (url: URL, search: string): URL;}setUrlParams
Updates the query parameters of a URL.
Details
This function allows you to set or replace the query parameters of a URL
object using the provided UrlParams. It creates a new URL object with the
updated parameters, leaving the original object unchanged.
Signature
declare const setUrlParams: { (urlParams: UrlParams): (url: URL) => URL; (url: URL, urlParams: UrlParams): URL;}Example
import { Url, UrlParams } from "@effect/platform"
const myUrl = new URL("https://example.com?foo=bar")
// Write parametersconst updatedUrl = Url.setUrlParams( myUrl, UrlParams.fromInput([["key", "value"]]))
console.log(updatedUrl.toString())// Output: https://example.com/?key=valuesetUsername
Updates the username used for authentication.
Signature
declare const setUsername: { (username: string): (url: URL) => URL; (url: URL, username: string): URL;}