123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- /**
- * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.
- * This class is a simple parser which creates the basic component parts
- * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation
- * and encoding.
- *
- * ```txt
- * foo://example.com:8042/over/there?name=ferret#nose
- * \_/ \______________/\_________/ \_________/ \__/
- * | | | | |
- * scheme authority path query fragment
- * | _____________________|__
- * / \ / \
- * urn:example:animal:ferret:nose
- * ```
- */
- export declare class URI implements UriComponents {
- static isUri(thing: any): thing is URI;
- /**
- * scheme is the 'http' part of 'http://www.msft.com/some/path?query#fragment'.
- * The part before the first colon.
- */
- readonly scheme: string;
- /**
- * authority is the 'www.msft.com' part of 'http://www.msft.com/some/path?query#fragment'.
- * The part between the first double slashes and the next slash.
- */
- readonly authority: string;
- /**
- * path is the '/some/path' part of 'http://www.msft.com/some/path?query#fragment'.
- */
- readonly path: string;
- /**
- * query is the 'query' part of 'http://www.msft.com/some/path?query#fragment'.
- */
- readonly query: string;
- /**
- * fragment is the 'fragment' part of 'http://www.msft.com/some/path?query#fragment'.
- */
- readonly fragment: string;
- /**
- * @internal
- */
- protected constructor(scheme: string, authority?: string, path?: string, query?: string, fragment?: string, _strict?: boolean);
- /**
- * @internal
- */
- protected constructor(components: UriComponents);
- /**
- * Returns a string representing the corresponding file system path of this URI.
- * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the
- * platform specific path separator.
- *
- * * Will *not* validate the path for invalid characters and semantics.
- * * Will *not* look at the scheme of this URI.
- * * The result shall *not* be used for display purposes but for accessing a file on disk.
- *
- *
- * The *difference* to `URI#path` is the use of the platform specific separator and the handling
- * of UNC paths. See the below sample of a file-uri with an authority (UNC path).
- *
- * ```ts
- 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'
- ```
- *
- * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path,
- * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working
- * with URIs that represent files on disk (`file` scheme).
- */
- get fsPath(): string;
- with(change: {
- scheme?: string;
- authority?: string | null;
- path?: string | null;
- query?: string | null;
- fragment?: string | null;
- }): URI;
- /**
- * Creates a new URI from a string, e.g. `http://www.msft.com/some/path`,
- * `file:///usr/home`, or `scheme:with/path`.
- *
- * @param value A string which represents an URI (see `URI#toString`).
- */
- static parse(value: string, _strict?: boolean): URI;
- /**
- * Creates a new URI from a file system path, e.g. `c:\my\files`,
- * `/usr/home`, or `\\server\share\some\path`.
- *
- * 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:
- * ```ts
- 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';
- ```
- *
- * @param path A file system path (see `URI#fsPath`)
- */
- static file(path: string): URI;
- static from(components: {
- scheme: string;
- authority?: string;
- path?: string;
- query?: string;
- fragment?: string;
- }): URI;
- /**
- * Creates a string representation for this URI. It's guaranteed that calling
- * `URI.parse` with the result of this function creates an URI which is equal
- * to this URI.
- *
- * * The result shall *not* be used for display purposes but for externalization or transport.
- * * The result will be encoded using the percentage encoding and encoding happens mostly
- * ignore the scheme-specific encoding rules.
- *
- * @param skipEncoding Do not encode the result, default is `false`
- */
- toString(skipEncoding?: boolean): string;
- toJSON(): UriComponents;
- static revive(data: UriComponents | URI): URI;
- static revive(data: UriComponents | URI | undefined): URI | undefined;
- static revive(data: UriComponents | URI | null): URI | null;
- static revive(data: UriComponents | URI | undefined | null): URI | undefined | null;
- }
- export interface UriComponents {
- scheme: string;
- authority: string;
- path: string;
- query: string;
- fragment: string;
- }
- /**
- * Compute `fsPath` for the given uri
- */
- export declare function uriToFsPath(uri: URI, keepDriveLetterCasing: boolean): string;
|