From 5f87eed9d7b380f2291cdf0e9497fd6c41f746ce Mon Sep 17 00:00:00 2001 From: Jack Franklin Date: Tue, 14 Apr 2020 16:18:08 +0100 Subject: [PATCH] chore(typescript): migrate src/Dialog This PR changes `src/Dialog.js` to `src/Dialog.ts` and rewrites accordingly. Most of the changes are straight forward; the only interesting one from a TS point of view is the `DialogType` enum. I expose it again as `Dialog.Type` to avoid a breaking change. This PR also exposed some bugs with our ESLint TypeScript settings and applying the overrides, so I fixed those too. --- .eslintrc.js | 10 ++++-- src/{Dialog.js => Dialog.ts} | 59 +++++++++++++++--------------------- 2 files changed, 33 insertions(+), 36 deletions(-) rename src/{Dialog.js => Dialog.ts} (66%) diff --git a/.eslintrc.js b/.eslintrc.js index a0bf98660eb0e..7ac5f215cf656 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -103,11 +103,17 @@ module.exports = { "overrides": [ { // apply TypeScript linting to the TS files in src/ - "files": ["src/*.ts"], + "files": ["*.ts"], "extends": [ 'plugin:@typescript-eslint/eslint-recommended', 'plugin:@typescript-eslint/recommended', - ] + ], + "rules": { + "no-unused-vars": 0, + "@typescript-eslint/no-unused-vars": 2, + "semi": 0, + "@typescript-eslint/semi": 2 + } } ] }; diff --git a/src/Dialog.js b/src/Dialog.ts similarity index 66% rename from src/Dialog.js rename to src/Dialog.ts index cbdc271916937..8e0e0c0be45db 100644 --- a/src/Dialog.js +++ b/src/Dialog.ts @@ -14,48 +14,46 @@ * limitations under the License. */ -const {assert} = require('./helper'); +import helpers = require('./helper'); + +const {assert} = helpers; + +enum DialogType { + Alert = 'alert', + BeforeUnload = 'beforeunload', + Confirm = 'confirm', + Prompt = 'prompt' +} class Dialog { - /** - * @param {!Puppeteer.CDPSession} client - * @param {string} type - * @param {string} message - * @param {(string|undefined)} defaultValue - */ - constructor(client, type, message, defaultValue = '') { + static Type = DialogType; + + private _client: Puppeteer.CDPSession; + private _type: DialogType; + private _message: string; + private _defaultValue: string; + private _handled = false; + + constructor(client: Puppeteer.CDPSession, type: DialogType, message: string, defaultValue = '') { this._client = client; this._type = type; this._message = message; - this._handled = false; this._defaultValue = defaultValue; } - /** - * @return {string} - */ - type() { + type(): DialogType { return this._type; } - /** - * @return {string} - */ - message() { + message(): string { return this._message; } - /** - * @return {string} - */ - defaultValue() { + defaultValue(): string { return this._defaultValue; } - /** - * @param {string=} promptText - */ - async accept(promptText) { + async accept(promptText?: string): Promise { assert(!this._handled, 'Cannot accept dialog which is already handled!'); this._handled = true; await this._client.send('Page.handleJavaScriptDialog', { @@ -64,7 +62,7 @@ class Dialog { }); } - async dismiss() { + async dismiss(): Promise { assert(!this._handled, 'Cannot dismiss dialog which is already handled!'); this._handled = true; await this._client.send('Page.handleJavaScriptDialog', { @@ -73,11 +71,4 @@ class Dialog { } } -Dialog.Type = { - Alert: 'alert', - BeforeUnload: 'beforeunload', - Confirm: 'confirm', - Prompt: 'prompt' -}; - -module.exports = {Dialog}; +export = {Dialog};