Manuscript Documentation
v0.1.0

@std/url.ms#

Import each required symbol with import Name from "@std/url.ms".

QueryEntry Record#

One decoded key and value in a URL query string.

Manuscript
type QueryEntry:
    key: String
    value: String

QueryEntry.key#

Decoded query key; duplicate keys retain separate entries in input order.

Manuscript
key: String

QueryEntry.value#

Decoded query value; a bare key has an empty value and plus decodes as a space.

Manuscript
value: String

Url Record#

Parsed URL components. A missing port is represented by none.

Manuscript
type Url:
    scheme: String
    host: String
    port: Optional[Int]
    path: String
    query: String
    fragment: String

Url.fragment#

Decoded fragment contents without the leading hash mark.

Manuscript
fragment: String

Url.host#

Lowercased hostname, excluding the port and IPv6 brackets; user information is rejected.

Manuscript
host: String

Url.path#

Escaped path text, retaining escaped separators; format validates its percent escapes and UTF-8.

Manuscript
path: String

Url.port#

Explicit numeric port in 0..65535, or none when the input has no port.

Manuscript
port: Optional[Int]

Url.query#

Encoded query contents without the leading question mark; parse_query decodes individual entries.

Manuscript
query: String

Url.scheme#

URL scheme, lowercased during parsing; native parse rejects missing schemes and opaque URLs.

Manuscript
scheme: String

UrlError Alternative#

Errors returned for malformed URL text, components, or query limits.

Manuscript
type UrlError:
    case InvalidInput
    case InvalidData
    case LimitExceeded
Manuscript
impl Error for UrlError:
    fn message() -> String:

UrlError.InvalidData#

URL text, escaped bytes, port syntax or a relative reference is invalid or unsupported.

Manuscript
case InvalidData

UrlError.InvalidInput#

Constructed URL components or a supplied query-entry budget are invalid.

Manuscript
case InvalidInput

UrlError.LimitExceeded#

The decoded query has more entries than its supplied budget permits.

Manuscript
case LimitExceeded

UrlError.Error.message#

Returns a URL-prefixed diagnostic without echoing addresses, query values or credentials.

Manuscript
fn message() -> String:

decode_component Function#

Decodes one percent-encoded URL component. + is not treated as a space.

Manuscript
fn decode_component(text: String) -> Result[String, UrlError]:

encode_component Function#

Percent-encodes one URL component using UTF-8 bytes.

Manuscript
fn encode_component(text: String) -> String:

format Function#

Formats URL components as an absolute or relative URL.

Manuscript
fn format(value: Url) -> Result[String, UrlError]:

format_query Function#

Encodes query entries as a query string.

Manuscript
fn format_query(entries: List[QueryEntry]) -> String:

parse Function#

Parses an absolute URL into its components.

Manuscript
fn parse(text: String) -> Result[Url, UrlError]:

parse_query Function#

Parses a query string, preserving duplicate keys and their input order.

Manuscript
fn parse_query(text: String, max_entries: Optional[Int] = none) -> Result[List[QueryEntry], UrlError]:

resolve Function#

Resolves a relative reference against a base URL.

Manuscript
fn resolve(base: Url, reference: String) -> Result[Url, UrlError]: