Skip to content

Commit

Permalink
chore(typescript): migrate src/Dialog
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
jackfranklin committed Apr 15, 2020
1 parent df81250 commit 5f87eed
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 36 deletions.
10 changes: 8 additions & 2 deletions .eslintrc.js
Expand Up @@ -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
}
}
]
};
59 changes: 25 additions & 34 deletions src/Dialog.js → src/Dialog.ts
Expand Up @@ -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<void> {
assert(!this._handled, 'Cannot accept dialog which is already handled!');
this._handled = true;
await this._client.send('Page.handleJavaScriptDialog', {
Expand All @@ -64,7 +62,7 @@ class Dialog {
});
}

async dismiss() {
async dismiss(): Promise<void> {
assert(!this._handled, 'Cannot dismiss dialog which is already handled!');
this._handled = true;
await this._client.send('Page.handleJavaScriptDialog', {
Expand All @@ -73,11 +71,4 @@ class Dialog {
}
}

Dialog.Type = {
Alert: 'alert',
BeforeUnload: 'beforeunload',
Confirm: 'confirm',
Prompt: 'prompt'
};

module.exports = {Dialog};
export = {Dialog};

0 comments on commit 5f87eed

Please sign in to comment.