Merge pull request #31631 from BendingBender/psl

[psl] Add types
This commit is contained in:
Wesley Wigham
2018-12-24 21:23:30 -08:00
committed by GitHub
4 changed files with 89 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
// Type definitions for psl 1.1
// Project: https://github.com/wrangr/psl#readme
// Definitions by: BendingBender <https://github.com/BendingBender>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.1
export as namespace psl;
export function parse(domain: string): ParsedDomain | ParseError;
export function get(domain: null | undefined): null;
export function get(domain: string): string | null;
export function isValid(domain: string): boolean;
export interface ParsedDomain {
tld: string | null;
sld: string | null;
domain: string | null;
subdomain: string | null;
listed: boolean;
input: string;
error: undefined;
}
export interface ParseError {
input: string;
error: {
code:
| 'DOMAIN_TOO_SHORT'
| 'DOMAIN_TOO_LONG'
| 'LABEL_STARTS_WITH_DASH'
| 'LABEL_ENDS_WITH_DASH'
| 'LABEL_TOO_LONG'
| 'LABEL_TOO_SHORT'
| 'LABEL_INVALID_CHARS';
message: string;
};
}
+26
View File
@@ -0,0 +1,26 @@
import * as psl from 'psl';
const parsed = psl.parse('google.com');
if (parsed.error != null) {
const parseError = parsed as psl.ParseError; // tslint:disable-line:no-unnecessary-type-assertion
// $ExpectType "DOMAIN_TOO_SHORT" | "DOMAIN_TOO_LONG" | "LABEL_STARTS_WITH_DASH" | "LABEL_ENDS_WITH_DASH" | "LABEL_TOO_LONG" | "LABEL_TOO_SHORT" | "LABEL_INVALID_CHARS"
parseError.error.code;
parseError.error.message; // $ExpectType string
} else {
const parsedDomain = parsed as psl.ParsedDomain; // tslint:disable-line:no-unnecessary-type-assertion
parsedDomain.sld; // $ExpectType string | null
parsedDomain.tld; // $ExpectType string | null
parsedDomain.domain; // $ExpectType string | null
parsedDomain.subdomain; // $ExpectType string | null
parsedDomain.listed; // $ExpectType boolean
parsedDomain.input; // $ExpectType string
}
psl.get(null); // $ExpectType null
psl.get(undefined); // $ExpectType null
psl.get('example.COM'); // $ExpectType string | null
psl.isValid('COM'); // $ExpectType boolean
+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",
"psl-tests.ts"
]
}
+1
View File
@@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }