Merge pull request #24608 from aomarks/whatwg-url

Add types for whatwg-url
This commit is contained in:
Nathan Shively-Sanders
2018-03-29 06:23:12 -07:00
committed by GitHub
4 changed files with 174 additions and 0 deletions
+105
View File
@@ -0,0 +1,105 @@
// Type definitions for whatwg-url 6.4
// Project: https://github.com/jsdom/whatwg-url#readme
// Definitions by: Alexander Marks <https://github.com/aomarks>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node"/>
/** https://url.spec.whatwg.org/#url-representation */
export interface URLRecord {
scheme: string;
username: string;
password: string;
host: string|number|IPv6Address|null;
port: number|null;
path: string[];
query: string|null;
fragment: string|null;
cannotBeABaseURL?: boolean;
}
/** https://url.spec.whatwg.org/#concept-ipv6 */
export type IPv6Address =
[number, number, number, number, number, number, number, number];
/** https://url.spec.whatwg.org/#url-class */
export class URL {
constructor(url: string, base?: string);
href: string;
readonly origin: string;
protocol: string;
username: string;
password: string;
host: string;
hostname: string;
port: string;
pathname: string;
search: string;
readonly searchParams: URLSearchParams;
hash: string;
toJSON(): string;
}
/** https://url.spec.whatwg.org/#interface-urlsearchparams */
export class URLSearchParams {
constructor(init: (Array<[string, string]>|Iterable<[string, string]>|
{[name: string]: string}|string));
append(name: string, value: string): void;
delete(name: string): void;
get(name: string): string|null;
getAll(name: string): string[];
has(name: string): boolean;
set(name: string, value: string): void;
sort(): void;
[Symbol.iterator](): IterableIterator<[string, string]>;
}
/** https://url.spec.whatwg.org/#concept-url-parser */
export function parseURL(
input: string,
options?: {baseURL?: string, encodingOverride?: string}): URLRecord|null;
/** https://url.spec.whatwg.org/#concept-basic-url-parser */
export function basicURLParse(input: string, options?: {
baseURL?: string,
encodingOverride?: string,
url?: URLRecord,
stateOverride?: StateOverride
}): URLRecord|null;
/** https://url.spec.whatwg.org/#scheme-start-state */
export type StateOverride =
'scheme start'|'scheme'|'no scheme'|'special relative or authority'|
'path or authority'|'relative'|'relative slash'|'special authority slashes'|
'special authority ignore slashes'|'authority'|'host'|'hostname'|'port'|
'file'|'file slash'|'file host'|'path start'|'path'|
'cannot-be-a-base-URL path'|'query'|'fragment';
/** https://url.spec.whatwg.org/#concept-url-serializer */
export function serializeURL(
urlRecord: URLRecord, excludeFragment?: boolean): string;
/** https://url.spec.whatwg.org/#concept-host-serializer */
export function serializeHost(host: string|number|IPv6Address): string;
/** https://url.spec.whatwg.org/#serialize-an-integer */
export function serializeInteger(number: number): string;
/** https://html.spec.whatwg.org#ascii-serialisation-of-an-origin */
export function serializeURLOrigin(urlRecord: URLRecord): string;
/** https://url.spec.whatwg.org/#set-the-username */
export function setTheUsername(urlRecord: URLRecord, username: string): void;
/** https://url.spec.whatwg.org/#set-the-password */
export function setThePassword(urlRecord: URLRecord, password: string): void;
/** https://url.spec.whatwg.org/#cannot-have-a-username-password-port */
export function cannotHaveAUsernamePasswordPort(urlRecord: URLRecord): boolean;
/** https://url.spec.whatwg.org/#percent-decode */
export function percentDecode(buffer: Buffer): Buffer;
+23
View File
@@ -0,0 +1,23 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"whatwg-url-tests.ts"
]
}
+1
View File
@@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }
+45
View File
@@ -0,0 +1,45 @@
import * as whatwgUrl from 'whatwg-url';
// $ExpectType URL
new whatwgUrl.URL('http://example.com');
// $ExpectType URL
new whatwgUrl.URL('foo', 'http://example.com');
// $ExpectType URLRecord | null
const urlRecord = whatwgUrl.parseURL('http://example.com');
if (urlRecord !== null) {
// $ExpectType URLRecord | null
whatwgUrl.basicURLParse('http://example.com', {url: urlRecord});
// $ExpectType string
whatwgUrl.serializeURL(urlRecord);
//
// $ExpectType string
whatwgUrl.serializeURLOrigin(urlRecord);
//
// $ExpectType void
whatwgUrl.setTheUsername(urlRecord, 'user');
//
// $ExpectType void
whatwgUrl.setThePassword(urlRecord, 'secret');
//
// $ExpectType boolean
whatwgUrl.cannotHaveAUsernamePasswordPort(urlRecord);
}
// $ExpectType string
whatwgUrl.serializeHost('http://example.com');
// $ExpectType string
whatwgUrl.serializeHost(42);
// $ExpectType string
whatwgUrl.serializeHost([0, 0, 0, 0, 0, 0, 0, 0]);
// $ExpectType string
whatwgUrl.serializeInteger(42);
// $ExpectType Buffer
whatwgUrl.percentDecode(Buffer.from('foo'));