From 9c3d5d82edc77c58ef2326243ad4360687c9ff28 Mon Sep 17 00:00:00 2001 From: Nato Boram Date: Thu, 10 Mar 2022 21:44:37 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Add=20ESLint=20rules?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.json | 10 +++++++--- .vscode/settings.json | 15 +++++++++++++++ src/app/app.component.ts | 5 +++-- src/app/app.module.ts | 10 ++++------ src/app/pages/pages.component.ts | 5 +++-- src/polyfills.ts | 2 +- src/styles.scss | 2 +- src/styles/ipfs-palettes.scss | 2 +- src/styles/ipfs-themes.scss | 2 +- src/test.ts | 4 ++-- tsconfig.json | 14 ++++++++++++++ 11 files changed, 52 insertions(+), 19 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index b036bf6..57299d8 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -16,7 +16,7 @@ "createDefaultProgram": true }, "extends": [ - "plugin:@angular-eslint/recommended", + "plugin:@angular-eslint/all", "plugin:@angular-eslint/template/process-inline-templates" ], "rules": { @@ -36,6 +36,7 @@ "style": "kebab-case" } ] + // Custom rules } }, { @@ -43,9 +44,12 @@ "*.html" ], "extends": [ - "plugin:@angular-eslint/template/recommended" + "plugin:@angular-eslint/template/all" ], - "rules": {} + "rules": { + // Custom rules + "@angular-eslint/template/i18n": "off" + } } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index ccd0737..88497e6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,12 +1,27 @@ { "editor.codeActionsOnSave": { "source.fixAll": true, + "source.fixAll.eslint": true, "source.organizeImports": true }, "editor.formatOnSave": true, "editor.rulers": [ 140 ], + "eslint.options": { + "extensions": [ + ".ts", + ".html" + ] + }, + "eslint.packageManager": "yarn", + "eslint.validate": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "html" + ], "files.associations": { ".ipfs-npmrc": "json" }, diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 89751d8..3e25a2e 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; import { ThemeService } from './services/theme.service'; @Component({ selector: 'app-root', templateUrl: './app.component.html', - styleUrls: ['./app.component.scss'] + styleUrls: ['./app.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, }) export class AppComponent { constructor( diff --git a/src/app/app.module.ts b/src/app/app.module.ts index b18577a..a566949 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -15,14 +15,12 @@ import { AppComponent } from './app.component'; AppComponent ], imports: [ - CommonModule, - BrowserModule, - BrowserAnimationsModule, - HttpClientModule, AppRoutingModule, - - // Material + BrowserAnimationsModule, + BrowserModule, + CommonModule, FlexLayoutModule, + HttpClientModule, MatButtonModule, MatIconModule, MatToolbarModule, diff --git a/src/app/pages/pages.component.ts b/src/app/pages/pages.component.ts index b691c60..4e0ac00 100644 --- a/src/app/pages/pages.component.ts +++ b/src/app/pages/pages.component.ts @@ -1,5 +1,5 @@ import { HttpErrorResponse } from '@angular/common/http'; -import { Component, EventEmitter, OnDestroy, OnInit, ViewChild } from '@angular/core'; +import { ChangeDetectionStrategy, Component, EventEmitter, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { ThemePalette } from '@angular/material/core'; import { MatTable, MatTableDataSource } from '@angular/material/table'; import { Subscription } from 'rxjs'; @@ -13,7 +13,8 @@ import { ThemeService } from '../services/theme.service'; @Component({ selector: 'app-pages', templateUrl: './pages.component.html', - styleUrls: ['./pages.component.scss'] + styleUrls: ['./pages.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, }) export class PagesComponent implements OnInit, OnDestroy { diff --git a/src/polyfills.ts b/src/polyfills.ts index 813c824..13e0ea4 100644 --- a/src/polyfills.ts +++ b/src/polyfills.ts @@ -45,7 +45,7 @@ /*************************************************************************************************** * Zone JS is required by default for Angular itself. */ -import 'zone.js'; // Included with Angular CLI. +import 'zone.js'; // Included with Angular CLI. /*************************************************************************************************** diff --git a/src/styles.scss b/src/styles.scss index 691a5e2..f7be942 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -1,5 +1,5 @@ // Custom Theming for Angular Material -@use '@angular/material' as mat; +@use '@angular/material'as mat; // For more information: https://material.angular.io/guide/theming // Plus imports for other components in your app. diff --git a/src/styles/ipfs-palettes.scss b/src/styles/ipfs-palettes.scss index 51b22b4..211e1ec 100644 --- a/src/styles/ipfs-palettes.scss +++ b/src/styles/ipfs-palettes.scss @@ -1,4 +1,4 @@ -@use '@angular/material' as mat; +@use '@angular/material'as mat; @import 'ipfs-colours.scss'; $ipfs-primary: mat.define-palette($ipfs-colour-navy, 'default', 'lighter', 'darker'); diff --git a/src/styles/ipfs-themes.scss b/src/styles/ipfs-themes.scss index a2d7e35..ea64470 100644 --- a/src/styles/ipfs-themes.scss +++ b/src/styles/ipfs-themes.scss @@ -1,4 +1,4 @@ -@use '@angular/material' as mat; +@use '@angular/material'as mat; @import 'ipfs-palettes.scss'; $ipfs-light-theme: mat.define-light-theme($ipfs-primary, $ipfs-accent, $ipfs-warn); diff --git a/src/test.ts b/src/test.ts index 6b03dbe..dcf80e7 100644 --- a/src/test.ts +++ b/src/test.ts @@ -1,11 +1,11 @@ // This file is required by karma.conf.js and loads recursively all the .spec and framework files -import 'zone.js/testing'; import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; +import 'zone.js/testing'; declare const require: any; @@ -13,7 +13,7 @@ declare const require: any; getTestBed().initTestEnvironment( BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: { destroyAfterEach: false } + teardown: { destroyAfterEach: false } } ); // Then we find all the tests. diff --git a/tsconfig.json b/tsconfig.json index cf71f65..d4bf2a1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,8 +6,22 @@ "outDir": "./dist/out-tsc", "forceConsistentCasingInFileNames": true, "strict": true, + "noImplicitAny": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "strictBindCallApply": true, + "strictPropertyInitialization": true, + "noImplicitThis": true, + "useUnknownInCatchVariables": true, + "alwaysStrict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "exactOptionalPropertyTypes": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, + "noUncheckedIndexedAccess": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, "sourceMap": true, "declaration": false, "downlevelIteration": true,