Create an URI from a string, e.g. http://www.example.com/some/path
,
file:///usr/home
, or scheme:with/path
.
Note that for a while uris without a scheme
were accepted. That is not correct
as all uris should have a scheme. To avoid breakage of existing code the optional
strict
-argument has been added. We strongly advise to use it, e.g. Uri.parse('my:uri', true)
The string value of an Uri.
Throw an error when value
is empty or when no scheme
can be parsed.
A new Uri instance.
Create an URI from a file system path. The scheme
will be file
.
The difference between Uri.parse and Uri.file is that the latter treats the argument
as path, not as stringified-uri. E.g. Uri.file(path)
is not the same as
Uri.parse('file://' + path)
because the path might contain characters that are
interpreted (# and ?). See the following sample:
const good = URI.file('/coding/c#/project1');
good.scheme === 'file';
good.path === '/coding/c#/project1';
good.fragment === '';
const bad = URI.parse('file://' + '/coding/c#/project1');
bad.scheme === 'file';
bad.path === '/coding/c'; // path is now broken
bad.fragment === '/project1';
A file system or UNC path.
A new Uri instance.
Create a new uri which path is the result of joining the path of the base uri with the provided path segments.
joinPath
only affects the path component
and all other components (scheme, authority, query, and fragment) are
left as they are.The path segments are normalized in the following ways:
/
or \
) are replaced with a single separatorfile
-uris on windows, the backslash-character (\
) is considered a path-separator..
-segment denotes the parent segment, the .
denotes the current segmentjoinPath(Uri.file('file:///c:/root'), '../../other').fsPath === 'c:/other'
An uri. Must have a path.
One more more path fragments
A new uri which path is joined with the given fragments
Create an URI from its component parts
The component parts of an Uri.
The scheme of the uri
The authority of the uri
The path of the uri
The query string of the uri
The fragment identifier of the uri
A new Uri instance.
Derive a new Uri from this Uri.
let file = Uri.parse('before:some/file/path');
let other = file.with({ scheme: 'after' });
assert.ok(other.toString() === 'after:some/file/path');
An object that describes a change to this Uri. To unset components use null
or
the empty string.
The new scheme, defaults to this Uri's scheme.
The new authority, defaults to this Uri's authority.
The new path, defaults to this Uri's path.
The new query, defaults to this Uri's query.
The new fragment, defaults to this Uri's fragment.
A new Uri that reflects the given change. Will return this
Uri if the change
is not changing anything.
Returns a string representation of this Uri. The representation and normalization of a URI depends on the scheme.
Note that the implementation will encode aggressive which often leads to unexpected,
but not incorrect, results. For instance, colons are encoded to %3A
which might be unexpected
in file-uri. Also &
and =
will be encoded which might be unexpected for http-uris. For stability
reasons this cannot be changed anymore. If you suffer from too aggressive encoding you should use
the skipEncoding
-argument: uri.toString(true)
.
Do not percentage-encode the result, defaults to false
. Note that
the #
and ?
characters occurring in the path will always be encoded.
A string representation of this Uri.
Returns a JSON representation of this Uri.
An object.
Use the file
and parse
factory functions to create new Uri
objects.
Scheme is the http
part of http://www.example.com/some/path?query#fragment
.
The part before the first colon.
Authority is the www.example.com
part of http://www.example.com/some/path?query#fragment
.
The part between the first double slashes and the next slash.
Path is the /some/path
part of http://www.example.com/some/path?query#fragment
.
Query is the query
part of http://www.example.com/some/path?query#fragment
.
Fragment is the fragment
part of http://www.example.com/some/path?query#fragment
.
The string representing the corresponding file system path of this Uri.
Will handle UNC paths and normalize windows drive letters to lower-case. Also uses the platform specific path separator.
readFile
et al.The difference to the path
-property is the use of the platform specific
path separator and the handling of UNC paths. The sample below outlines the difference:
const u = URI.parse('file://server/c$/folder/file.txt')
u.authority === 'server'
u.path === '/shares/c$/file.txt'
u.fsPath === '\\server\c$\folder\file.txt'
A universal resource identifier representing either a file on disk or another resource, like untitled resources.