From 8c8ed66d51c35bb3b7fd10495d5cb0fd9dbda537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20B=C5=82a=C5=BCejewicz=20=28Peter=20Blazejewicz=29?= Date: Thu, 12 Mar 2020 20:52:28 +0100 Subject: [PATCH] feat(obsolete-web): new package definition (#42983) - definition files - tests for global/CommonJS usage https://github.com/ElemeFE/obsolete-webpack-plugin/tree/master/packages/obsolete-web Thanks! --- types/obsolete-web/index.d.ts | 44 +++++++++++++++++++ .../test/obsolete-web-commonjs.tests.ts | 16 +++++++ .../test/obsolete-web-global.tests.ts | 13 ++++++ types/obsolete-web/tsconfig.json | 24 ++++++++++ types/obsolete-web/tslint.json | 1 + 5 files changed, 98 insertions(+) create mode 100644 types/obsolete-web/index.d.ts create mode 100644 types/obsolete-web/test/obsolete-web-commonjs.tests.ts create mode 100644 types/obsolete-web/test/obsolete-web-global.tests.ts create mode 100644 types/obsolete-web/tsconfig.json create mode 100644 types/obsolete-web/tslint.json diff --git a/types/obsolete-web/index.d.ts b/types/obsolete-web/index.d.ts new file mode 100644 index 0000000000..956be7dd2c --- /dev/null +++ b/types/obsolete-web/index.d.ts @@ -0,0 +1,44 @@ +// Type definitions for obsolete-web 0.5 +// Project: https://github.elenet.me/fe/obsolete-webpack-plugin +// Definitions by: Piotr Błażejewicz (Peter Blazejewicz) +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare class Obsolete { + constructor(options?: Options); + static defaultOptions: Readonly>; + /** + * Test browser compatibility. + */ + test(browsers: string[], done?: () => void): boolean; +} + +interface Options { + /** + * The prompt html template injected to the bottom of body. The default value is: + * ```html + *
Your browser is not supported.
+ * ``` + */ + template?: string; + /** + * If set 'afterbegin', the template will be injected into the start of body. + * If set 'beforeend', the template will be injected into the end of body + * @default 'afterbegin' + */ + position?: 'afterbeing' | 'beforened'; + /** + * If the current browser useragent doesn't match one of the target browsers, it's considered as unsupported. + * Thus, the prompt will be shown. + * @default false + */ + promptOnNonTargetBrowser?: boolean; + /** + * If the current browser useragent is unknown, the prompt will be shown + * @default true + */ + promptOnUnknownBrowser?: boolean; +} + +export as namespace Obsolete; + +export = Obsolete; diff --git a/types/obsolete-web/test/obsolete-web-commonjs.tests.ts b/types/obsolete-web/test/obsolete-web-commonjs.tests.ts new file mode 100644 index 0000000000..45a45b09a0 --- /dev/null +++ b/types/obsolete-web/test/obsolete-web-commonjs.tests.ts @@ -0,0 +1,16 @@ +/// +import Obsolete = require('obsolete-web'); + +const { + template, // $ExpectType string + position, // $ExpedtType string + promptOnNonTargetBrowser, // $ExpectType boolean + promptOnUnknownBrowser, // $ExpectType boolean +} = Obsolete.defaultOptions; + +new Obsolete(); +new Obsolete(Obsolete.defaultOptions); +new Obsolete().test(['ie 10', 'chrome 23']); +new Obsolete().test(['ie 10', 'chrome 23'], () => { + console.log('done'); +}); diff --git a/types/obsolete-web/test/obsolete-web-global.tests.ts b/types/obsolete-web/test/obsolete-web-global.tests.ts new file mode 100644 index 0000000000..5ede080452 --- /dev/null +++ b/types/obsolete-web/test/obsolete-web-global.tests.ts @@ -0,0 +1,13 @@ +const { + template, // $ExpectType string + position, // $ExpedtType string + promptOnNonTargetBrowser, // $ExpectType boolean + promptOnUnknownBrowser, // $ExpectType boolean +} = Obsolete.defaultOptions; + +new Obsolete(); +new Obsolete(Obsolete.defaultOptions); +new Obsolete().test(['ie 10', 'chrome 23']); +new Obsolete().test(['ie 10', 'chrome 23'], () => { + console.log('done'); +}); diff --git a/types/obsolete-web/tsconfig.json b/types/obsolete-web/tsconfig.json new file mode 100644 index 0000000000..7bad184de9 --- /dev/null +++ b/types/obsolete-web/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "test/obsolete-web-commonjs.tests.ts", + "test/obsolete-web-global.tests.ts" + ] +} diff --git a/types/obsolete-web/tslint.json b/types/obsolete-web/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/obsolete-web/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }