240 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			240 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C)2014-2020 Haxe Foundation
 | |
|  *
 | |
|  * Permission is hereby granted, free of charge, to any person obtaining a
 | |
|  * copy of this software and associated documentation files (the "Software"),
 | |
|  * to deal in the Software without restriction, including without limitation
 | |
|  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | |
|  * and/or sell copies of the Software, and to permit persons to whom the
 | |
|  * Software is furnished to do so, subject to the following conditions:
 | |
|  *
 | |
|  * The above copyright notice and this permission notice shall be included in
 | |
|  * all copies or substantial portions of the Software.
 | |
|  *
 | |
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | |
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | |
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | |
|  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | |
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | |
|  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | |
|  * DEALINGS IN THE SOFTWARE.
 | |
|  */
 | |
| 
 | |
| package js.node;
 | |
| 
 | |
| import js.node.url.URL;
 | |
| 
 | |
| /**
 | |
| 	The `url` module provides utilities for URL resolution and parsing.
 | |
| **/
 | |
| @:jsRequire("url")
 | |
| extern class Url {
 | |
| 	/**
 | |
| 		Returns the Punycode ASCII serialization of the `domain`. If `domain` is an invalid domain, the empty string is returned.
 | |
| 
 | |
| 		It performs the inverse operation to `url.domainToUnicode()`.
 | |
| 	**/
 | |
| 	static function domainToASCII(domain:String):String;
 | |
| 
 | |
| 	/**
 | |
| 		Returns the Unicode serialization of the `domain`. If `domain` is an invalid domain, the empty string is returned.
 | |
| 
 | |
| 		It performs the inverse operation to `url.dmainToASCII()`.
 | |
| 	**/
 | |
| 	static function domainToUnicode(domain:String):String;
 | |
| 
 | |
| 	/**
 | |
| 		This function ensures the correct decodings of percent-encoded characters as well as ensuring a cross-platform valid absolute path string.
 | |
| 	**/
 | |
| 	@:overload(function(url:String):String {})
 | |
| 	static function fileURLToPath(url:URL):String;
 | |
| 
 | |
| 	/**
 | |
| 		Returns a customizable serialization of a URL `String` representation of a [WHATWG URL](https://nodejs.org/api/url.html#url_the_whatwg_url_api) object.
 | |
| 
 | |
| 		The URL object has both a `toString()` method and href property that return string serializations of the URL.
 | |
| 		These are not, however, customizable in any way.
 | |
| 		The `url.format(URL[, options])` method allows for basic customization of the output.
 | |
| 
 | |
| 		`format(urlObject:UrlObject)` and `format(urlObject:String)` are deprecated.
 | |
| 	**/
 | |
| 	@:overload(function(urlObject:UrlObject):String {})
 | |
| 	@:overload(function(urlObject:String):String {})
 | |
| 	static function format(url:URL, ?options:UrlFormatOptions):String;
 | |
| 
 | |
| 	/**
 | |
| 		This function ensures that `path` is resolved absolutely,
 | |
| 		and that the URL control characters are correctly encoded when converting into a File URL.
 | |
| 	**/
 | |
| 	static function pathToFileURL(path:String):URL;
 | |
| 
 | |
| 	/**
 | |
| 		Takes a URL string, parses it, and returns a URL object.
 | |
| 
 | |
| 		If `parseQueryString` is true, the `query` property will always be set to an object returned by the `Querystring.parse` method.
 | |
| 		If false, the `query` property on the returned URL object will be an unparsed, undecoded string.
 | |
| 		Defaults to false.
 | |
| 
 | |
| 		If `slashesDenoteHost` is true, the first token after the literal string `//` and preceding the next `/` will be interpreted as the host.
 | |
| 		For instance, given `//foo/bar`, the result would be `{host: 'foo', pathname: '/bar'}` rather than `{pathname: '//foo/bar'}`.
 | |
| 		Defaults to false.
 | |
| 	**/
 | |
| 	@:deprecated
 | |
| 	static function parse(urlString:String, ?parseQueryString:Bool, ?slashesDenoteHost:Bool):UrlObject;
 | |
| 
 | |
| 	/**
 | |
| 		Resolves a target URL relative to a base URL in a manner similar to that of a Web browser resolving an anchor tag HREF.
 | |
| 
 | |
| 		Examples:
 | |
| 
 | |
| 		```haxe
 | |
| 		resolve('/one/two/three', 'four')         // '/one/two/four'
 | |
| 		resolve('http://example.com/', '/one')    // 'http://example.com/one'
 | |
| 		resolve('http://example.com/one', '/two') // 'http://example.com/two'
 | |
| 		```
 | |
| 	**/
 | |
| 	@:deprecated
 | |
| 	static function resolve(from:String, to:String):String;
 | |
| }
 | |
| 
 | |
| typedef UrlFormatOptions = {
 | |
| 	/**
 | |
| 		`true` if the serialized URL string should include the username and password, `false` otherwise.
 | |
| 
 | |
| 		Default: `true`.
 | |
| 	**/
 | |
| 	@:optional var auth:Bool;
 | |
| 
 | |
| 	/**
 | |
| 		`true` if the serialized URL string should include the fragment, `false` otherwise.
 | |
| 
 | |
| 		Default: `true`.
 | |
| 	**/
 | |
| 	@:optional var fragment:Bool;
 | |
| 
 | |
| 	/**
 | |
| 		`true` if the serialized URL string should include the search query, `false` otherwise.
 | |
| 
 | |
| 		Default: `true`.
 | |
| 	**/
 | |
| 	@:optional var search:Bool;
 | |
| 
 | |
| 	/**
 | |
| 		`true` if Unicode characters appearing in the host component of the URL string should be encoded directly as opposed to being Punycode encoded.
 | |
| 
 | |
| 		Default: `false`.
 | |
| 	**/
 | |
| 	@:optional var unicode:Bool;
 | |
| }
 | |
| 
 | |
| /**
 | |
| 	Parsed URL objects have some or all of the following fields, depending on whether or not they exist in the URL string.
 | |
| 	Any parts that are not in the URL string will not be in the parsed object.
 | |
| **/
 | |
| @:deprecated
 | |
| typedef UrlObject = {
 | |
| 	/**
 | |
| 		The full URL string that was parsed with both the `protocol` and `host` components converted to lower-case.
 | |
| 
 | |
| 		For example: 'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
 | |
| 	**/
 | |
| 	@:optional var href:String;
 | |
| 
 | |
| 	/**
 | |
| 		The URL's lower-cased protocol scheme.
 | |
| 
 | |
| 		For example: 'http:'
 | |
| 	**/
 | |
| 	@:optional var protocol:String;
 | |
| 
 | |
| 	/**
 | |
| 		True if two ASCII forward-slash characters (`/`) are required following the colon in the `protocol`.
 | |
| 	**/
 | |
| 	@:optional var slashes:Bool;
 | |
| 
 | |
| 	/**
 | |
| 		The full lower-cased host portion of the URL, including the `port` if specified.
 | |
| 
 | |
| 		For example: 'host.com:8080'
 | |
| 	**/
 | |
| 	@:optional var host:String;
 | |
| 
 | |
| 	/**
 | |
| 		The username and password portion of the URL, also referred to as "userinfo".
 | |
| 		This string subset follows the `protocol` and double slashes (if present) and precedes the `host` component,
 | |
| 		delimited by an ASCII "at sign" (`@`).
 | |
| 
 | |
| 		The format of the string is `{username}[:{password}]`, with the `[:{password}]` portion being optional.
 | |
| 
 | |
| 		For example: 'user:pass'
 | |
| 	**/
 | |
| 	@:optional var auth:String;
 | |
| 
 | |
| 	/**
 | |
| 		The lower-cased host name portion of the `host` component without the `port` included.
 | |
| 
 | |
| 		For example: 'host.com'
 | |
| 	**/
 | |
| 	@:optional var hostname:String;
 | |
| 
 | |
| 	/**
 | |
| 		The numeric port portion of the `host` component.
 | |
| 
 | |
| 		For example: '8080'
 | |
| 	**/
 | |
| 	@:optional var port:String;
 | |
| 
 | |
| 	/**
 | |
| 		The entire path section of the URL. This is everything following the `host` (including the `port`) and
 | |
| 		before the start of the `query` or `hash` components, delimited by either the ASCII question mark (`?`) or
 | |
| 		hash (`#`) characters.
 | |
| 
 | |
| 		For example '/p/a/t/h'
 | |
| 
 | |
| 		No decoding of the path string is performed.
 | |
| 	**/
 | |
| 	@:optional var pathname:String;
 | |
| 
 | |
| 	/**
 | |
| 		The entire "query string" portion of the URL, including the leading ASCII question mark (`?`) character.
 | |
| 
 | |
| 		For example: '?query=string'
 | |
| 
 | |
| 		No decoding of the query string is performed.
 | |
| 	**/
 | |
| 	@:optional var search:String;
 | |
| 
 | |
| 	/**
 | |
| 		Concatenation of the `pathname` and `search` components.
 | |
| 
 | |
| 		For example: '/p/a/t/h?query=string'
 | |
| 
 | |
| 		No decoding of the path is performed.
 | |
| 	**/
 | |
| 	@:optional var path:String;
 | |
| 
 | |
| 	/**
 | |
| 		Either the query string without the leading ASCII question mark (`?`),
 | |
| 		or an object returned by the `Querystring.parse` method.
 | |
| 
 | |
| 		Whether the `query` property is a string or object is determined by the `parseQueryString` argument passed to `Url.parse`.
 | |
| 
 | |
| 		For example: 'query=string' or {'query': 'string'}
 | |
| 
 | |
| 		If returned as a string, no decoding of the query string is performed.
 | |
| 		If returned as an object, both keys and values are decoded.
 | |
| 
 | |
| 		The type of this field can be implicitly converted to `String` or `DynamicAccess<String>`,
 | |
| 		where either one is expected, so if you know the actual type, just assign it
 | |
| 		to properly typed variable (e.g. var s:String = url.query)
 | |
| 	**/
 | |
| 	@:optional var query:haxe.extern.EitherType<String, haxe.DynamicAccess<String>>;
 | |
| 
 | |
| 	/**
 | |
| 		The "fragment" portion of the URL including the leading ASCII hash (`#`) character.
 | |
| 
 | |
| 		For example: '#hash'
 | |
| 	**/
 | |
| 	@:optional var hash:String;
 | |
| }
 |