Url.ts overview
Since v1.0.0
Exports Grouped by Category
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.
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 base
const 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-path
Signature
declare const fromString: (
url: string,
base?: string | URL | undefined
) => Either.Either<URL, Cause.IllegalArgumentException>
Since v1.0.0
Getters
urlParams
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.
Example
import { Url } from "@effect/platform"
const myUrl = new URL("https://example.com?foo=bar")
// Read parameters
const params = Url.urlParams(myUrl)
console.log(params)
// Output: [ [ 'foo', 'bar' ] ]
Signature
declare const urlParams: (url: URL) => UrlParams.UrlParams
Since v1.0.0
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.
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=value
Signature
declare const modifyUrlParams: {
(f: (urlParams: UrlParams.UrlParams) => UrlParams.UrlParams): (url: URL) => URL
(url: URL, f: (urlParams: UrlParams.UrlParams) => UrlParams.UrlParams): URL
}
Since v1.0.0
mutate
This function clones the original URL object and applies a callback to the clone, allowing multiple updates at once.
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/
Signature
declare const mutate: { (f: (url: URL) => void): (self: URL) => URL; (self: URL, f: (url: URL) => void): URL }
Since v1.0.0
Setters
setHash
Updates the hash fragment of the URL.
Signature
declare const setHash: { (hash: string): (url: URL) => URL; (url: URL, hash: string): URL }
Since v1.0.0
setHost
Updates the host (domain and port) of the URL.
Signature
declare const setHost: { (host: string): (url: URL) => URL; (url: URL, host: string): URL }
Since v1.0.0
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 }
Since v1.0.0
setHref
Replaces the entire URL string.
Signature
declare const setHref: { (href: string): (url: URL) => URL; (url: URL, href: string): URL }
Since v1.0.0
setPassword
Updates the password used for authentication.
Signature
declare const setPassword: {
(password: string | Redacted.Redacted): (url: URL) => URL
(url: URL, password: string | Redacted.Redacted): URL
}
Since v1.0.0
setPathname
Updates the path of the URL.
Signature
declare const setPathname: { (pathname: string): (url: URL) => URL; (url: URL, pathname: string): URL }
Since v1.0.0
setPort
Updates the port of the URL.
Signature
declare const setPort: { (port: string | number): (url: URL) => URL; (url: URL, port: string | number): URL }
Since v1.0.0
setProtocol
Updates the protocol (e.g., http, https).
Signature
declare const setProtocol: { (protocol: string): (url: URL) => URL; (url: URL, protocol: string): URL }
Since v1.0.0
setSearch
Updates the query string of the URL.
Signature
declare const setSearch: { (search: string): (url: URL) => URL; (url: URL, search: string): URL }
Since v1.0.0
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.
Example
import { Url, UrlParams } from "@effect/platform"
const myUrl = new URL("https://example.com?foo=bar")
// Write parameters
const updatedUrl = Url.setUrlParams(myUrl, UrlParams.fromInput([["key", "value"]]))
console.log(updatedUrl.toString())
// Output: https://example.com/?key=value
Signature
declare const setUrlParams: {
(urlParams: UrlParams.UrlParams): (url: URL) => URL
(url: URL, urlParams: UrlParams.UrlParams): URL
}
Since v1.0.0
setUsername
Updates the username used for authentication.
Signature
declare const setUsername: { (username: string): (url: URL) => URL; (url: URL, username: string): URL }
Since v1.0.0