Add koa-useragent type definitions (#30563)

* Add koa-useragent type definitions

* fix export interface
This commit is contained in:
Boris Ryabov
2018-11-18 16:50:08 -08:00
committed by Pranav Senthilnathan
parent 4557b7b925
commit c723eb35e4
4 changed files with 165 additions and 0 deletions
+74
View File
@@ -0,0 +1,74 @@
// Type definitions for koa-useragent 1.2
// Project: https://github.com/rvboris/koa-useragent
// Definitions by: Boris Ryabov <https://github.com/rvboris>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.3
import Koa = require("koa");
declare namespace UserAgent {
interface UserAgent {
isAuthoritative: boolean;
isMobile: boolean;
isTablet: boolean;
isiPad: boolean;
isiPod: boolean;
isiPhone: boolean;
isAndroid: boolean;
isBlackberry: boolean;
isOpera: boolean;
isIE: boolean;
isEdge: boolean;
isIECompatibilityMode: boolean;
isSafari: boolean;
isFirefox: boolean;
isWebkit: boolean;
isChrome: boolean;
isKonqueror: boolean;
isOmniWeb: boolean;
isSeaMonkey: boolean;
isFlock: boolean;
isAmaya: boolean;
isPhantomJS: boolean;
isEpiphany: boolean;
isDesktop: boolean;
isWindows: boolean;
isLinux: boolean;
isLinux64: boolean;
isMac: boolean;
isChromeOS: boolean;
isBada: boolean;
isSamsung: boolean;
isRaspberry: boolean;
isBot: boolean;
isCurl: boolean;
isAndroidTablet: boolean;
isWinJs: boolean;
isKindleFire: boolean;
isSilk: boolean;
isCaptive: boolean;
isSmartTV: boolean;
isUC: boolean;
isElectron: boolean;
isFacebook: boolean;
isAlamoFire: boolean;
silkAccelerated: boolean;
browser: string;
version: string;
os: string;
platform: string;
geoIp: object;
electronVersion: string;
source: string;
}
const UserAgent: Koa.Middleware;
}
declare module "koa" {
interface Context {
userAgent: UserAgent.UserAgent;
}
}
export = UserAgent.UserAgent;
@@ -0,0 +1,65 @@
import Koa = require('koa');
import userAgent = require('koa-useragent');
const app = new Koa();
app.use(userAgent);
app.use((ctx, next) => {
ctx.userAgent.isAuthoritative; // $ExpectType boolean
ctx.userAgent.isMobile; // $ExpectType boolean
ctx.userAgent.isTablet; // $ExpectType boolean
ctx.userAgent.isiPad; // $ExpectType boolean
ctx.userAgent.isiPod; // $ExpectType boolean
ctx.userAgent.isiPhone; // $ExpectType boolean
ctx.userAgent.isAndroid; // $ExpectType boolean
ctx.userAgent.isBlackberry; // $ExpectType boolean
ctx.userAgent.isOpera; // $ExpectType boolean
ctx.userAgent.isIE; // $ExpectType boolean
ctx.userAgent.isEdge; // $ExpectType boolean
ctx.userAgent.isIECompatibilityMode; // $ExpectType boolean
ctx.userAgent.isSafari; // $ExpectType boolean
ctx.userAgent.isFirefox; // $ExpectType boolean
ctx.userAgent.isWebkit; // $ExpectType boolean
ctx.userAgent.isChrome; // $ExpectType boolean
ctx.userAgent.isKonqueror; // $ExpectType boolean
ctx.userAgent.isOmniWeb; // $ExpectType boolean
ctx.userAgent.isSeaMonkey; // $ExpectType boolean
ctx.userAgent.isFlock; // $ExpectType boolean
ctx.userAgent.isAmaya; // $ExpectType boolean
ctx.userAgent.isPhantomJS; // $ExpectType boolean
ctx.userAgent.isEpiphany; // $ExpectType boolean
ctx.userAgent.isDesktop; // $ExpectType boolean
ctx.userAgent.isWindows; // $ExpectType boolean
ctx.userAgent.isLinux; // $ExpectType boolean
ctx.userAgent.isLinux64; // $ExpectType boolean
ctx.userAgent.isMac; // $ExpectType boolean
ctx.userAgent.isChromeOS; // $ExpectType boolean
ctx.userAgent.isBada; // $ExpectType boolean
ctx.userAgent.isSamsung; // $ExpectType boolean
ctx.userAgent.isRaspberry; // $ExpectType boolean
ctx.userAgent.isBot; // $ExpectType boolean
ctx.userAgent.isCurl; // $ExpectType boolean
ctx.userAgent.isAndroidTablet; // $ExpectType boolean
ctx.userAgent.isWinJs; // $ExpectType boolean
ctx.userAgent.isKindleFire; // $ExpectType boolean
ctx.userAgent.isSilk; // $ExpectType boolean
ctx.userAgent.isCaptive; // $ExpectType boolean
ctx.userAgent.isSmartTV; // $ExpectType boolean
ctx.userAgent.isUC; // $ExpectType boolean
ctx.userAgent.isElectron; // $ExpectType boolean
ctx.userAgent.isFacebook; // $ExpectType boolean
ctx.userAgent.isAlamoFire; // $ExpectType boolean
ctx.userAgent.silkAccelerated; // $ExpectType boolean
ctx.userAgent.browser; // $ExpectType string
ctx.userAgent.version; // $ExpectType string
ctx.userAgent.os; // $ExpectType string
ctx.userAgent.platform; // $ExpectType string
ctx.userAgent.geoIp; // $ExpectType object
ctx.userAgent.electronVersion; // $ExpectType string
ctx.userAgent.source; // $ExpectType string
return next();
});
app.listen(3000);
+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",
"koa-useragent-tests.ts"
]
}
+3
View File
@@ -0,0 +1,3 @@
{
"extends": "dtslint/dt.json"
}