Merge pull request #410 from cheplv/eslint-migration

Eslint migration
This commit is contained in:
Maxime GRIS
2019-11-19 15:21:05 +01:00
committed by GitHub
16 changed files with 69 additions and 119 deletions

View File

@@ -50,7 +50,7 @@
} }
] ]
}, },
"dev-web": { "web": {
"optimization": false, "optimization": false,
"outputHashing": "all", "outputHashing": "all",
"sourceMap": true, "sourceMap": true,
@@ -95,8 +95,8 @@
"dev": { "dev": {
"browserTarget": "angular-electron:build:dev" "browserTarget": "angular-electron:build:dev"
}, },
"dev-web": { "web": {
"browserTarget": "angular-electron:build:dev-web" "browserTarget": "angular-electron:build:web"
}, },
"production": { "production": {
"browserTarget": "angular-electron:build:production" "browserTarget": "angular-electron:build:production"
@@ -135,8 +135,9 @@
} }
}, },
"lint": { "lint": {
"builder": "@angular-devkit/build-angular:tslint", "builder": "@angular-eslint/builder:lint",
"options": { "options": {
"eslintConfig": "src/eslintrc.config.json",
"tsConfig": [ "tsConfig": [
"src/tsconfig.app.json", "src/tsconfig.app.json",
"src/tsconfig.spec.json" "src/tsconfig.spec.json"
@@ -153,8 +154,9 @@
"projectType": "application", "projectType": "application",
"architect": { "architect": {
"lint": { "lint": {
"builder": "@angular-devkit/build-angular:tslint", "builder": "@angular-eslint/builder:lint",
"options": { "options": {
"eslintConfig": "e2e/eslintrc.e2e.json",
"tsConfig": [ "tsConfig": [
"e2e/tsconfig.e2e.json" "e2e/tsconfig.e2e.json"
], ],

View File

@@ -1,8 +1,11 @@
/* eslint "@typescript-eslint/no-var-requires": 0 */
const Application = require('spectron').Application; const Application = require('spectron').Application;
/* eslint "@typescript-eslint/no-var-requires": 0 */
const electronPath = require('electron'); // Require Electron from the binaries included in node_modules. const electronPath = require('electron'); // Require Electron from the binaries included in node_modules.
/* eslint "@typescript-eslint/no-var-requires": 0 */
const path = require('path'); const path = require('path');
export default function setup() { export default function setup(): void {
beforeEach(async function () { beforeEach(async function () {
this.app = new Application({ this.app = new Application({
// Your electron path can be any binary // Your electron path can be any binary

6
e2e/eslintrc.e2e.json Normal file
View File

@@ -0,0 +1,6 @@
{
"extends": "../eslintrc.json",
"parserOptions": {
"project": ["e2e/tsconfig.e2e.json"]
}
}

View File

@@ -1,4 +1,4 @@
import {expect, assert} from 'chai'; import {expect} from 'chai';
import {SpectronClient} from 'spectron'; import {SpectronClient} from 'spectron';
import commonSetup from './common-setup'; import commonSetup from './common-setup';
@@ -6,11 +6,13 @@ import commonSetup from './common-setup';
describe('angular-electron App', function () { describe('angular-electron App', function () {
commonSetup.apply(this); commonSetup.apply(this);
/* eslint "@typescript-eslint/no-explicit-any": 0 */
let browser: any; let browser: any;
let client: SpectronClient; let client: SpectronClient;
beforeEach(function () { beforeEach(function () {
client = this.app.client; client = this.app.client;
/* eslint "@typescript-eslint/no-explicit-any": 0 */
browser = client as any; browser = client as any;
}); });

19
eslintrc.json Normal file
View File

@@ -0,0 +1,19 @@
{
"env": {
"browser": true,
"node": true,
"es6": true,
"es2017": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"tsconfigRootDir": "."
},
"plugins": ["@typescript-eslint"]
}

11
main.ts
View File

@@ -2,11 +2,11 @@ import { app, BrowserWindow, screen } from 'electron';
import * as path from 'path'; import * as path from 'path';
import * as url from 'url'; import * as url from 'url';
let win, serve; let win: BrowserWindow = null;
const args = process.argv.slice(1); const args = process.argv.slice(1),
serve = args.some(val => val === '--serve'); serve = args.some(val => val === '--serve');
function createWindow() { function createWindow(): BrowserWindow {
const electronScreen = screen; const electronScreen = screen;
const size = electronScreen.getPrimaryDisplay().workAreaSize; const size = electronScreen.getPrimaryDisplay().workAreaSize;
@@ -19,10 +19,12 @@ function createWindow() {
height: size.height, height: size.height,
webPreferences: { webPreferences: {
nodeIntegration: true, nodeIntegration: true,
allowRunningInsecureContent: (serve) ? true : false,
}, },
}); });
if (serve) { if (serve) {
/* eslint "@typescript-eslint/no-var-requires": 0 */
require('electron-reload')(__dirname, { require('electron-reload')(__dirname, {
electron: require(`${__dirname}/node_modules/electron`) electron: require(`${__dirname}/node_modules/electron`)
}); });
@@ -47,6 +49,7 @@ function createWindow() {
win = null; win = null;
}); });
return win;
} }
try { try {

View File

@@ -24,7 +24,7 @@
"build:dev": "npm run build -- -c dev", "build:dev": "npm run build -- -c dev",
"build:prod": "npm run build -- -c production", "build:prod": "npm run build -- -c production",
"ng:serve": "ng serve", "ng:serve": "ng serve",
"ng:serve:web": "ng serve -c dev-web -o", "ng:serve:web": "ng serve -c web -o",
"electron:serve-tsc": "tsc -p tsconfig-serve.json", "electron:serve-tsc": "tsc -p tsconfig-serve.json",
"electron:serve": "wait-on http-get://localhost:4200/ && npm run electron:serve-tsc && electron . --serve", "electron:serve": "wait-on http-get://localhost:4200/ && npm run electron:serve-tsc && electron . --serve",
"electron:local": "npm run build:prod && electron .", "electron:local": "npm run build:prod && electron .",
@@ -39,6 +39,7 @@
"devDependencies": { "devDependencies": {
"@angular-builders/custom-webpack": "8.2.0", "@angular-builders/custom-webpack": "8.2.0",
"@angular-devkit/build-angular": "0.803.6", "@angular-devkit/build-angular": "0.803.6",
"@angular-eslint/builder": "0.0.1-alpha.17",
"@angular/cli": "8.3.6", "@angular/cli": "8.3.6",
"@angular/common": "8.2.12", "@angular/common": "8.2.12",
"@angular/compiler": "8.2.12", "@angular/compiler": "8.2.12",
@@ -55,13 +56,17 @@
"@types/jasminewd2": "2.0.6", "@types/jasminewd2": "2.0.6",
"@types/mocha": "5.2.7", "@types/mocha": "5.2.7",
"@types/node": "12.6.8", "@types/node": "12.6.8",
"@typescript-eslint/eslint-plugin": "^2.7.0",
"@typescript-eslint/parser": "^2.7.0",
"chai": "4.2.0", "chai": "4.2.0",
"codelyzer": "5.1.0", "codelyzer": "5.1.0",
"conventional-changelog-cli": "2.0.25", "conventional-changelog-cli": "2.0.25",
"core-js": "3.1.4", "core-js": "3.1.4",
"electron": "7.0.0", "electron": "7.1.1",
"electron-builder": "21.2.0", "electron-builder": "21.2.0",
"electron-reload": "1.5.0", "electron-reload": "1.5.0",
"eslint": "^6.6.0",
"eslint-plugin-import": "^2.18.2",
"jasmine-core": "3.4.0", "jasmine-core": "3.4.0",
"jasmine-spec-reporter": "4.2.1", "jasmine-spec-reporter": "4.2.1",
"karma": "4.2.0", "karma": "4.2.0",
@@ -74,7 +79,6 @@
"rxjs": "6.5.3", "rxjs": "6.5.3",
"spectron": "9.0.0", "spectron": "9.0.0",
"ts-node": "8.3.0", "ts-node": "8.3.0",
"tslint": "5.20.0",
"typescript": "3.5.3", "typescript": "3.5.3",
"wait-on": "3.3.0", "wait-on": "3.3.0",
"webdriver-manager": "12.1.5", "webdriver-manager": "12.1.5",

View File

@@ -19,7 +19,3 @@ describe('AppComponent', () => {
expect(app).toBeTruthy(); expect(app).toBeTruthy();
})); }));
}); });
class TranslateServiceStub {
setDefaultLang(lang: string): void {}
}

View File

@@ -19,7 +19,7 @@ import { HomeModule } from './home/home.module';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
// AoT requires an exported function for factories // AoT requires an exported function for factories
export function HttpLoaderFactory(http: HttpClient) { export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader {
return new TranslateHttpLoader(http, './assets/i18n/', '.json'); return new TranslateHttpLoader(http, './assets/i18n/', '.json');
} }

View File

@@ -16,7 +16,7 @@ export class ElectronService {
childProcess: typeof childProcess; childProcess: typeof childProcess;
fs: typeof fs; fs: typeof fs;
get isElectron() { get isElectron(): boolean {
return window && window.process && window.process.type; return window && window.process && window.process.type;
} }

View File

@@ -7,9 +7,10 @@ import { Component, OnInit } from '@angular/core';
}) })
export class HomeComponent implements OnInit { export class HomeComponent implements OnInit {
/* eslint "no-empty-function":0, "@typescript-eslint/no-empty-function": 0 */
constructor() { } constructor() { }
ngOnInit() { /* eslint "no-empty-function":0, "@typescript-eslint/no-empty-function": 0 */
} ngOnInit(): void { }
} }

View File

@@ -6,7 +6,9 @@ import { Component, OnInit } from '@angular/core';
styleUrls: ['./page-not-found.component.scss'] styleUrls: ['./page-not-found.component.scss']
}) })
export class PageNotFoundComponent implements OnInit { export class PageNotFoundComponent implements OnInit {
/* eslint "no-empty-function":0, "@typescript-eslint/no-empty-function": 0 */
constructor() {} constructor() {}
ngOnInit() {} /* eslint "no-empty-function":0, "@typescript-eslint/no-empty-function": 0 */
ngOnInit(): void {}
} }

View File

@@ -4,5 +4,6 @@ import { Directive } from '@angular/core';
selector: '[webview]' selector: '[webview]'
}) })
export class WebviewDirective { export class WebviewDirective {
/* eslint "no-empty-function":0, "@typescript-eslint/no-empty-function": 0 */
constructor() {} constructor() {}
} }

6
src/eslintrc.config.json Normal file
View File

@@ -0,0 +1,6 @@
{
"extends": "../eslintrc.json",
"parserOptions": {
"project": ["src/tsconfig.app.json", "src/tsconfig.spec.json"]
}
}

View File

@@ -7,6 +7,7 @@ import {
platformBrowserDynamicTesting platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing'; } from '@angular/platform-browser-dynamic/testing';
/* eslint "@typescript-eslint/no-explicit-any":0 */
declare const require: any; declare const require: any;
// First, initialize the Angular testing environment. // First, initialize the Angular testing environment.

View File

@@ -1,96 +0,0 @@
{
"rulesDirectory": ["node_modules/codelyzer"],
"rules": {
"arrow-return-shorthand": true,
"callable-types": true,
"class-name": true,
"comment-format": [true, "check-space"],
"component-class-suffix": true,
"component-selector": [true, "element", "app", "kebab-case"],
"curly": true,
"deprecation": { "severity": "warn" },
"directive-class-suffix": true,
"eofline": true,
"forin": true,
"import-blacklist": [true, "rxjs/Rx"],
"import-spacing": true,
"indent": [true, "spaces"],
"interface-over-type-literal": true,
"label-position": true,
"max-line-length": [true, 140],
"member-access": false,
"member-ordering": [
true,
{
"order": [
"static-field",
"instance-field",
"static-method",
"instance-method"
]
}
],
"no-arg": true,
"no-bitwise": true,
"no-console": [true, "debug", "info", "time", "timeEnd", "trace"],
"no-construct": true,
"no-debugger": true,
"no-duplicate-super": true,
"no-empty": false,
"no-empty-interface": true,
"no-eval": true,
"no-host-metadata-property": true,
"no-inferrable-types": [true, "ignore-params"],
"no-input-rename": true,
"no-inputs-metadata-property": true,
"no-misused-new": true,
"no-non-null-assertion": true,
"no-output-on-prefix": true,
"no-output-rename": true,
"no-outputs-metadata-property": true,
"no-shadowed-variable": true,
"no-string-literal": false,
"no-string-throw": true,
"no-switch-case-fall-through": true,
"no-trailing-whitespace": true,
"no-unnecessary-initializer": true,
"no-unused-expression": true,
"no-var-keyword": true,
"object-literal-sort-keys": false,
"one-line": [
true,
"check-open-brace",
"check-catch",
"check-else",
"check-whitespace"
],
"prefer-const": true,
"quotemark": [true, "single"],
"radix": true,
"semicolon": [true, "always"],
"triple-equals": [true, "allow-null-check"],
"typedef-whitespace": [
true,
{
"call-signature": "nospace",
"index-signature": "nospace",
"parameter": "nospace",
"property-declaration": "nospace",
"variable-declaration": "nospace"
}
],
"unified-signatures": true,
"use-life-cycle-interface": true,
"use-lifecycle-interface": true,
"use-pipe-transform-interface": true,
"variable-name": false,
"whitespace": [
true,
"check-branch",
"check-decl",
"check-operator",
"check-separator",
"check-type"
]
}
}