Skip to content

Commit

Permalink
chore: update eslint & eslint plugins
Browse files Browse the repository at this point in the history
Updates ESLint, the TypeScript ESLint plugins, and updates code where
the rules have changed.
  • Loading branch information
jackfranklin committed Oct 12, 2020
1 parent 4846b87 commit 726c90f
Show file tree
Hide file tree
Showing 19 changed files with 245 additions and 204 deletions.
300 changes: 171 additions & 129 deletions .eslintrc.js
@@ -1,141 +1,183 @@
module.exports = {
"root": true,
"env": {
"node": true,
"es6": true
},

"parser": "@typescript-eslint/parser",
root: true,
env: {
node: true,
es6: true,
},

"plugins": [
"mocha",
"@typescript-eslint",
"unicorn",
"import"
],
parser: '@typescript-eslint/parser',

"extends": [
"plugin:prettier/recommended"
],
plugins: ['mocha', '@typescript-eslint', 'unicorn', 'import'],

"rules": {
// Error if files are not formatted with Prettier correctly.
"prettier/prettier": 2,
// syntax preferences
"quotes": [2, "single", {
"avoidEscape": true,
"allowTemplateLiterals": true
}],
"spaced-comment": [2, "always", {
"markers": ["*"]
}],
"eqeqeq": [2],
"accessor-pairs": [2, {
"getWithoutSet": false,
"setWithoutGet": false
}],
"new-parens": 2,
"func-call-spacing": 2,
"prefer-const": 2,
extends: ['plugin:prettier/recommended'],

"max-len": [2, {
/* this setting doesn't impact things as we use Prettier to format
* our code and hence dictate the line length.
* Prettier aims for 80 but sometimes makes the decision to go just
* over 80 chars as it decides that's better than wrapping. ESLint's
* rule defaults to 80 but therefore conflicts with Prettier. So we
* set it to something far higher than Prettier would allow to avoid
* it causing issues and conflicting with Prettier.
*/
"code": 200,
"comments": 90,
"ignoreTemplateLiterals": true,
"ignoreUrls": true,
"ignoreStrings": true,
"ignoreRegExpLiterals": true
}],
// anti-patterns
"no-var": 2,
"no-with": 2,
"no-multi-str": 2,
"no-caller": 2,
"no-implied-eval": 2,
"no-labels": 2,
"no-new-object": 2,
"no-octal-escape": 2,
"no-self-compare": 2,
"no-shadow-restricted-names": 2,
"no-cond-assign": 2,
"no-debugger": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-empty-character-class": 2,
"no-unreachable": 2,
"no-unsafe-negation": 2,
"radix": 2,
"valid-typeof": 2,
"no-unused-vars": [2, { "args": "none", "vars": "local", "varsIgnorePattern": "([fx]?describe|[fx]?it|beforeAll|beforeEach|afterAll|afterEach)" }],
"no-implicit-globals": [2],
rules: {
// Error if files are not formatted with Prettier correctly.
'prettier/prettier': 2,
// syntax preferences
quotes: [
2,
'single',
{
avoidEscape: true,
allowTemplateLiterals: true,
},
],
'spaced-comment': [
2,
'always',
{
markers: ['*'],
},
],
eqeqeq: [2],
'accessor-pairs': [
2,
{
getWithoutSet: false,
setWithoutGet: false,
},
],
'new-parens': 2,
'func-call-spacing': 2,
'prefer-const': 2,

// es2015 features
"require-yield": 2,
"template-curly-spacing": [2, "never"],
'max-len': [
2,
{
/* this setting doesn't impact things as we use Prettier to format
* our code and hence dictate the line length.
* Prettier aims for 80 but sometimes makes the decision to go just
* over 80 chars as it decides that's better than wrapping. ESLint's
* rule defaults to 80 but therefore conflicts with Prettier. So we
* set it to something far higher than Prettier would allow to avoid
* it causing issues and conflicting with Prettier.
*/
code: 200,
comments: 90,
ignoreTemplateLiterals: true,
ignoreUrls: true,
ignoreStrings: true,
ignoreRegExpLiterals: true,
},
],
// anti-patterns
'no-var': 2,
'no-with': 2,
'no-multi-str': 2,
'no-caller': 2,
'no-implied-eval': 2,
'no-labels': 2,
'no-new-object': 2,
'no-octal-escape': 2,
'no-self-compare': 2,
'no-shadow-restricted-names': 2,
'no-cond-assign': 2,
'no-debugger': 2,
'no-dupe-keys': 2,
'no-duplicate-case': 2,
'no-empty-character-class': 2,
'no-unreachable': 2,
'no-unsafe-negation': 2,
radix: 2,
'valid-typeof': 2,
'no-unused-vars': [
2,
{
args: 'none',
vars: 'local',
varsIgnorePattern:
'([fx]?describe|[fx]?it|beforeAll|beforeEach|afterAll|afterEach)',
},
],
'no-implicit-globals': [2],

// ensure we don't have any it.only or describe.only in prod
"mocha/no-exclusive-tests": "error",
// es2015 features
'require-yield': 2,
'template-curly-spacing': [2, 'never'],

// enforce the variable in a catch block is named error
"unicorn/catch-error-name": "error",
// ensure we don't have any it.only or describe.only in prod
'mocha/no-exclusive-tests': 'error',

// enforce the variable in a catch block is named error
'unicorn/catch-error-name': 'error',

"no-restricted-imports": ["error", {
patterns: ["*Events"],
paths: [{
name: "mitt",
message:
"Import Mitt from the vendored location: vendor/mitt/src/index.js",
}],
}],
"import/extensions": ["error", "ignorePackages"]
},
"overrides": [
{
"files": ["*.ts"],
"extends": [
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
],
"rules": {
"no-unused-vars": 0,
"@typescript-eslint/no-unused-vars": 2,
"func-call-spacing": 0,
"@typescript-eslint/func-call-spacing": 2,
"semi": 0,
"@typescript-eslint/semi": 2,
"@typescript-eslint/no-empty-function": 0,
"@typescript-eslint/no-use-before-define": 0,
// We have to use any on some types so the warning isn't valuable.
"@typescript-eslint/no-explicit-any": 0,
// We don't require explicit return types on basic functions or
// dummy functions in tests, for example
"@typescript-eslint/explicit-function-return-type": 0,
// We know it's bad and use it very sparingly but it's needed :(
"@typescript-eslint/ban-ts-ignore": 0,
"@typescript-eslint/array-type": [2, {
"default": "array-simple"
}]
}
},
{
"files": ["test-browser/**/*.js"],
"parserOptions": {
"sourceType": "module"
'no-restricted-imports': [
'error',
{
patterns: ['*Events'],
paths: [
{
name: 'mitt',
message:
'Import Mitt from the vendored location: vendor/mitt/src/index.js',
},
],
},
],
'import/extensions': ['error', 'ignorePackages'],
},
overrides: [
{
files: ['*.ts'],
extends: [
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
],
rules: {
'no-unused-vars': 0,
'@typescript-eslint/no-unused-vars': 2,
'func-call-spacing': 0,
'@typescript-eslint/func-call-spacing': 2,
semi: 0,
'@typescript-eslint/semi': 2,
'@typescript-eslint/no-empty-function': 0,
'@typescript-eslint/no-use-before-define': 0,
// We have to use any on some types so the warning isn't valuable.
'@typescript-eslint/no-explicit-any': 0,
// We don't require explicit return types on basic functions or
// dummy functions in tests, for example
'@typescript-eslint/explicit-function-return-type': 0,
// We know it's bad and use it very sparingly but it's needed :(
'@typescript-eslint/ban-ts-ignore': 0,
/**
* This is the default options (as per
* https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/ban-types.md),
*
* Unfortunately there's no way to
*/
'@typescript-eslint/ban-types': [
'error',
{
extendDefaults: true,
types: {
/*
* Puppeteer's API accepts generic functions in many places so it's
* not a useful linting rule to ban the `Function` type. This turns off
* the banning of the `Function` type which is a default rule.
*/
Function: false,
},
"env": {
"es6": true,
"browser": true,
"es2020": true
},
}
]
},
],
'@typescript-eslint/array-type': [
2,
{
default: 'array-simple',
},
],
},
},
{
files: ['test-browser/**/*.js'],
parserOptions: {
sourceType: 'module',
},
env: {
es6: true,
browser: true,
es2020: true,
},
},
],
};
4 changes: 2 additions & 2 deletions new-docs/puppeteer.frame.waitfor.md
Expand Up @@ -12,15 +12,15 @@
<b>Signature:</b>

```typescript
waitFor(selectorOrFunctionOrTimeout: string | number | Function, options?: {}, ...args: SerializableOrJSHandle[]): Promise<JSHandle | null>;
waitFor(selectorOrFunctionOrTimeout: string | number | Function, options?: Record<string, unknown>, ...args: SerializableOrJSHandle[]): Promise<JSHandle | null>;
```

## Parameters

| Parameter | Type | Description |
| --- | --- | --- |
| selectorOrFunctionOrTimeout | string \| number \| Function | a selector, predicate or timeout to wait for. |
| options | {} | optional waiting parameters. |
| options | Record&lt;string, unknown&gt; | optional waiting parameters. |
| args | [SerializableOrJSHandle](./puppeteer.serializableorjshandle.md)<!-- -->\[\] | arguments to pass to <code>pageFunction</code>. |

<b>Returns:</b>
Expand Down
4 changes: 2 additions & 2 deletions new-docs/puppeteer.jshandle.jsonvalue.md
Expand Up @@ -9,11 +9,11 @@ Returns a JSON representation of the object.
<b>Signature:</b>

```typescript
jsonValue(): Promise<{}>;
jsonValue(): Promise<Record<string, unknown>>;
```
<b>Returns:</b>

Promise&lt;{}&gt;
Promise&lt;Record&lt;string, unknown&gt;&gt;

## Remarks

Expand Down
4 changes: 2 additions & 2 deletions new-docs/puppeteer.puppeteer.launch.md
Expand Up @@ -11,15 +11,15 @@ Launches puppeteer and launches a browser instance with given arguments and opti
```typescript
launch(options?: LaunchOptions & ChromeArgOptions & BrowserOptions & {
product?: string;
extraPrefsFirefox?: {};
extraPrefsFirefox?: Record<string, unknown>;
}): Promise<Browser>;
```

## Parameters

| Parameter | Type | Description |
| --- | --- | --- |
| options | [LaunchOptions](./puppeteer.launchoptions.md) &amp; [ChromeArgOptions](./puppeteer.chromeargoptions.md) &amp; [BrowserOptions](./puppeteer.browseroptions.md) &amp; { product?: string; extraPrefsFirefox?: {}; } | Set of configurable options to set on the browser. |
| options | [LaunchOptions](./puppeteer.launchoptions.md) &amp; [ChromeArgOptions](./puppeteer.chromeargoptions.md) &amp; [BrowserOptions](./puppeteer.browseroptions.md) &amp; { product?: string; extraPrefsFirefox?: Record&lt;string, unknown&gt;; } | Set of configurable options to set on the browser. |

<b>Returns:</b>

Expand Down
16 changes: 8 additions & 8 deletions package.json
Expand Up @@ -73,18 +73,18 @@
"@types/sinon": "^9.0.4",
"@types/tar-fs": "^1.16.2",
"@types/ws": "^7.2.4",
"@typescript-eslint/eslint-plugin": "^2.28.0",
"@typescript-eslint/parser": "^2.28.0",
"@typescript-eslint/eslint-plugin": "^4.4.0",
"@typescript-eslint/parser": "^4.4.0",
"@web/test-runner": "^0.8.4",
"commonmark": "^0.28.1",
"cross-env": "^7.0.2",
"dependency-cruiser": "^9.7.0",
"eslint": "^6.8.0",
"eslint-config-prettier": "^6.11.0",
"eslint": "^7.10.0",
"eslint-config-prettier": "^6.12.0",
"eslint-plugin-import": "^2.22.0",
"eslint-plugin-mocha": "^6.3.0",
"eslint-plugin-prettier": "^3.1.3",
"eslint-plugin-unicorn": "^19.0.1",
"eslint-plugin-mocha": "^8.0.0",
"eslint-plugin-prettier": "^3.1.4",
"eslint-plugin-unicorn": "^22.0.0",
"esprima": "^4.0.0",
"expect": "^25.2.7",
"husky": "^4.3.0",
Expand All @@ -95,7 +95,7 @@
"ncp": "^2.0.0",
"pixelmatch": "^4.0.2",
"pngjs": "^5.0.0",
"prettier": "^2.0.5",
"prettier": "^2.1.2",
"sinon": "^9.0.2",
"text-diff": "^1.0.1",
"ts-node": "^9.0.0",
Expand Down

0 comments on commit 726c90f

Please sign in to comment.