URLs, file paths and ids are text with rules. Splitting them by hand with split("/") gets the edge cases wrong - a query with a / in it, a path ending in ... Each has a builtin type that parses its text once and gets it right.
Url.parse takes an absolute URL apart into its scheme, user, host, port, path, query and fragment, with the scheme and host in lower case. query() decodes the query into a map. resolve follows a link the way a browser does, and withQuery sets a parameter, escaping it. Url.encode and Url.decode escape a single part. To fetch a URL, see Sending HTTP Requests.
A Path is a list of segments. A backslash counts as a /, so Windows paths read the same. It's only text: nothing asks the file system, so a path doesn't have to exist. &fs takes a Path anywhere it takes a path's text - &fs.readText(folder.join("notes.txt")). normalize folds .. away, and relativeTo works out the way from one folder to another.
A Uuid is a 128-bit id written as 32 hex digits. Uuid.v4() is random. Uuid.v7() starts with the time it was made, so v7 ids sort by age, which keeps database indexes in order. Both read the context - &random, and for v7 &clock - so a test that injects a SeededRandom and a FixedClock gets the same ids on every run.
A Version is a semantic version - major.minor.patch, then a -pre-release label and +build metadata if any - ordered the way semver.org orders them. satisfies checks one against the ranges npm writes: ^1.2, ~1.2.3, >=1.0.0 <2.0.0, 1.x, 1.2 - 1.4, alternatives joined by ||. A pre-release only satisfies a range that names a pre-release of the same version, so ^1.2 never picks up 1.3.0-beta by surprise.