From c723eb35e44a7f18487ebbb9a8a81469d5fa5c57 Mon Sep 17 00:00:00 2001 From: Boris Ryabov Date: Mon, 19 Nov 2018 03:50:08 +0300 Subject: [PATCH] Add koa-useragent type definitions (#30563) * Add koa-useragent type definitions * fix export interface --- types/koa-useragent/index.d.ts | 74 ++++++++++++++++++++++ types/koa-useragent/koa-useragent-tests.ts | 65 +++++++++++++++++++ types/koa-useragent/tsconfig.json | 23 +++++++ types/koa-useragent/tslint.json | 3 + 4 files changed, 165 insertions(+) create mode 100644 types/koa-useragent/index.d.ts create mode 100644 types/koa-useragent/koa-useragent-tests.ts create mode 100644 types/koa-useragent/tsconfig.json create mode 100644 types/koa-useragent/tslint.json diff --git a/types/koa-useragent/index.d.ts b/types/koa-useragent/index.d.ts new file mode 100644 index 0000000000..85431f7843 --- /dev/null +++ b/types/koa-useragent/index.d.ts @@ -0,0 +1,74 @@ +// Type definitions for koa-useragent 1.2 +// Project: https://github.com/rvboris/koa-useragent +// Definitions by: Boris Ryabov +// 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; diff --git a/types/koa-useragent/koa-useragent-tests.ts b/types/koa-useragent/koa-useragent-tests.ts new file mode 100644 index 0000000000..579983786c --- /dev/null +++ b/types/koa-useragent/koa-useragent-tests.ts @@ -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); diff --git a/types/koa-useragent/tsconfig.json b/types/koa-useragent/tsconfig.json new file mode 100644 index 0000000000..99b7757751 --- /dev/null +++ b/types/koa-useragent/tsconfig.json @@ -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" + ] +} diff --git a/types/koa-useragent/tslint.json b/types/koa-useragent/tslint.json new file mode 100644 index 0000000000..f93cf8562a --- /dev/null +++ b/types/koa-useragent/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +}