diff --git a/src/Squidex/app/components/internal/app/settings/languages-page.component.ts b/src/Squidex/app/components/internal/app/settings/languages-page.component.ts index a73e520c6..f472813e2 100644 --- a/src/Squidex/app/components/internal/app/settings/languages-page.component.ts +++ b/src/Squidex/app/components/internal/app/settings/languages-page.component.ts @@ -14,7 +14,7 @@ import { AppLanguagesService, AppsStoreService, ArrayHelper, - LanguageDto, + LanguageDto, LanguageService, NotificationService, UpdateAppLanguageDto, diff --git a/src/Squidex/app/components/internal/apps/apps-page.component.ts b/src/Squidex/app/components/internal/apps/apps-page.component.ts index 2d7ac8e9b..fe62e8f1a 100644 --- a/src/Squidex/app/components/internal/apps/apps-page.component.ts +++ b/src/Squidex/app/components/internal/apps/apps-page.component.ts @@ -27,7 +27,7 @@ export class AppsPageComponent implements Ng2.OnInit { constructor( private readonly title: TitleService, - private readonly appsStore: AppsStoreService, + private readonly appsStore: AppsStoreService ) { } diff --git a/src/Squidex/app/components/internal/internal-area.component.ts b/src/Squidex/app/components/internal/internal-area.component.ts index 446a39705..de03d794c 100644 --- a/src/Squidex/app/components/internal/internal-area.component.ts +++ b/src/Squidex/app/components/internal/internal-area.component.ts @@ -9,8 +9,8 @@ import * as Ng2 from '@angular/core'; import { fadeAnimation, - Notification, - NotificationService + Notification, + NotificationService } from 'shared'; @Ng2.Component({ @@ -32,7 +32,7 @@ export class InternalAreaComponent implements Ng2.OnInit, Ng2.OnDestroy { } public ngOnInit() { - this.notificationsSubscription = + this.notificationsSubscription = this.notificationService.notifications.subscribe(notification => { this.notifications.push(notification); diff --git a/src/Squidex/app/components/layout/module.ts b/src/Squidex/app/components/layout/module.ts index a7c9cf488..5a4c835b4 100644 --- a/src/Squidex/app/components/layout/module.ts +++ b/src/Squidex/app/components/layout/module.ts @@ -24,13 +24,13 @@ import { AppFormComponent, AppsMenuComponent, ProfileMenuComponent, - SearchFormComponent, + SearchFormComponent ], exports: [ AppFormComponent, AppsMenuComponent, ProfileMenuComponent, - SearchFormComponent, + SearchFormComponent ] }) export class SqxLayoutModule { } \ No newline at end of file diff --git a/src/Squidex/app/components/public/home-page.component.ts b/src/Squidex/app/components/public/home-page.component.ts index f1de1ed4b..4f0d73e63 100644 --- a/src/Squidex/app/components/public/home-page.component.ts +++ b/src/Squidex/app/components/public/home-page.component.ts @@ -21,7 +21,7 @@ export class HomePageComponent implements Ng2.OnInit { constructor( private readonly auth: AuthService, private readonly title: TitleService, - private readonly router: Ng2Router.Router, + private readonly router: Ng2Router.Router ) { } diff --git a/src/Squidex/app/framework/angular/action.ts b/src/Squidex/app/framework/angular/action.ts index d32580017..11e1b2bf3 100644 --- a/src/Squidex/app/framework/angular/action.ts +++ b/src/Squidex/app/framework/angular/action.ts @@ -5,10 +5,11 @@ * Copyright (c) Sebastian Stehle. All rights reserved */ -const EMPTY_FUNC = () => { }; - +/* tslint:disable:no-empty */ /* tslint:disable:only-arrow-functions */ +const EMPTY_FUNC = () => {}; + export function Action() { return function (target: any, key: string) { let observable: any; diff --git a/src/Squidex/app/framework/angular/autocomplete.component.ts b/src/Squidex/app/framework/angular/autocomplete.component.ts index b32e86071..9fbcc8a84 100644 --- a/src/Squidex/app/framework/angular/autocomplete.component.ts +++ b/src/Squidex/app/framework/angular/autocomplete.component.ts @@ -28,6 +28,8 @@ const KEY_ENTER = 13; const KEY_UP = 38; const KEY_DOWN = 40; +/* tslint:disable:no-empty */ + const NOOP = () => { }; export const SQX_AUTOCOMPLETE_CONTROL_VALUE_ACCESSOR: any = { diff --git a/src/Squidex/app/framework/angular/copy.directive.ts b/src/Squidex/app/framework/angular/copy.directive.ts index 648dc16a7..8f417802f 100644 --- a/src/Squidex/app/framework/angular/copy.directive.ts +++ b/src/Squidex/app/framework/angular/copy.directive.ts @@ -29,7 +29,7 @@ export class CopyDirective { element.focus(); element.setSelectionRange(0, element.value.length); - + try { document.execCommand('copy'); } catch (e) { @@ -39,7 +39,7 @@ export class CopyDirective { if (currentFocus && typeof currentFocus.focus === 'function') { currentFocus.focus(); } - + element.setSelectionRange(prevSelectionStart, prevSelectionEnd); } } \ No newline at end of file diff --git a/src/Squidex/app/framework/angular/image-drop.directive.ts b/src/Squidex/app/framework/angular/image-drop.directive.ts index f4db1ba65..e69873d74 100644 --- a/src/Squidex/app/framework/angular/image-drop.directive.ts +++ b/src/Squidex/app/framework/angular/image-drop.directive.ts @@ -95,6 +95,7 @@ export class ImageDropDirective { private findImage(event: DragDropEvent): File | null { let image: File | null = null; + /* tslint:disable:prefer-for-of */ for (let i = 0; i < event.dataTransfer.files.length; i++) { const file = event.dataTransfer.files[i]; diff --git a/src/Squidex/app/framework/module.ts b/src/Squidex/app/framework/module.ts index 96220271b..9f8fa7abf 100644 --- a/src/Squidex/app/framework/module.ts +++ b/src/Squidex/app/framework/module.ts @@ -66,7 +66,7 @@ import { SliderComponent, SpinnerComponent, TitleComponent, - UserReportComponent, + UserReportComponent ], exports: [ AutocompleteComponent, diff --git a/src/Squidex/app/framework/services/notification.service.spec.ts b/src/Squidex/app/framework/services/notification.service.spec.ts index c768d81d7..05d480f2f 100644 --- a/src/Squidex/app/framework/services/notification.service.spec.ts +++ b/src/Squidex/app/framework/services/notification.service.spec.ts @@ -5,10 +5,10 @@ * Copyright (c) Sebastian Stehle. All rights reserved */ -import { +import { Notification, NotificationService, - NotificationServiceFactory + NotificationServiceFactory } from './../'; describe('NotificationService', () => { diff --git a/src/Squidex/app/framework/utils/immutable-object.ts b/src/Squidex/app/framework/utils/immutable-object.ts index 41fbf3587..eb16636d4 100644 --- a/src/Squidex/app/framework/utils/immutable-object.ts +++ b/src/Squidex/app/framework/utils/immutable-object.ts @@ -5,6 +5,8 @@ * Copyright (c) Sebastian Stehle. All rights reserved */ +/* tslint:disable:no-empty */ + export abstract class ImmutableObject { public abstract clone(): ImmutableObject; diff --git a/src/Squidex/app/shared/guards/app-must-exist.guard.spec.ts b/src/Squidex/app/shared/guards/app-must-exist.guard.spec.ts index 973a88663..f11098b39 100644 --- a/src/Squidex/app/shared/guards/app-must-exist.guard.spec.ts +++ b/src/Squidex/app/shared/guards/app-must-exist.guard.spec.ts @@ -21,7 +21,7 @@ describe('AppMustExistGuard', () => { it('should navigate to 404 page if app is not found', (done) => { appsStore.setup(x => x.selectApp('my-app')) .returns(() => Promise.resolve(false)); - + const router = new RouterMockup(); const guard = new AppMustExistGuard(appsStore.object, router); @@ -37,7 +37,7 @@ describe('AppMustExistGuard', () => { it('should navigate to 404 page if app loading fails', (done) => { appsStore.setup(x => x.selectApp('my-app')) .returns(() => Promise.reject('error')); - + const router = new RouterMockup(); const guard = new AppMustExistGuard(appsStore.object, router); @@ -53,7 +53,7 @@ describe('AppMustExistGuard', () => { it('should return true if app is found', (done) => { appsStore.setup(x => x.selectApp('my-app')) .returns(() => Promise.resolve(true)); - + const router = new RouterMockup(); const guard = new AppMustExistGuard(appsStore.object, router); diff --git a/src/Squidex/app/shared/guards/must-be-authenticated.guard.spec.ts b/src/Squidex/app/shared/guards/must-be-authenticated.guard.spec.ts index 27bded17f..5b719b8ea 100644 --- a/src/Squidex/app/shared/guards/must-be-authenticated.guard.spec.ts +++ b/src/Squidex/app/shared/guards/must-be-authenticated.guard.spec.ts @@ -21,10 +21,10 @@ describe('MustBeAuthenticatedGuard', () => { it('should navigate to default page if not authenticated', (done) => { authService.setup(x => x.checkLogin()) .returns(() => Promise.resolve(false)); - + const router = new RouterMockup(); const guard = new MustBeAuthenticatedGuard(authService.object, router); - + guard.canActivate(null, null) .then(result => { expect(result).toBeFalsy(); @@ -37,10 +37,10 @@ describe('MustBeAuthenticatedGuard', () => { it('should return true if authenticated', (done) => { authService.setup(x => x.checkLogin()) .returns(() => Promise.resolve(true)); - + const router = new RouterMockup(); const guard = new MustBeAuthenticatedGuard(authService.object, router); - + guard.canActivate(null, null) .then(result => { expect(result).toBeTruthy(); diff --git a/src/Squidex/app/shared/guards/must-be-not-authenticated.guard.spec.ts b/src/Squidex/app/shared/guards/must-be-not-authenticated.guard.spec.ts index 3325567e5..ffd30ea13 100644 --- a/src/Squidex/app/shared/guards/must-be-not-authenticated.guard.spec.ts +++ b/src/Squidex/app/shared/guards/must-be-not-authenticated.guard.spec.ts @@ -21,10 +21,10 @@ describe('MustBeNotAuthenticatedGuard', () => { it('should navigate to app page if authenticated', (done) => { authService.setup(x => x.checkLogin()) .returns(() => Promise.resolve(true)); - + const router = new RouterMockup(); const guard = new MustBeNotAuthenticatedGuard(authService.object, router); - + guard.canActivate(null, null) .then(result => { expect(result).toBeFalsy(); @@ -37,10 +37,10 @@ describe('MustBeNotAuthenticatedGuard', () => { it('should return true if not authenticated', (done) => { authService.setup(x => x.checkLogin()) .returns(() => Promise.resolve(false)); - + const router = new RouterMockup(); const guard = new MustBeNotAuthenticatedGuard(authService.object, router); - + guard.canActivate(null, null) .then(result => { expect(result).toBeTruthy(); diff --git a/src/Squidex/app/shared/services/app-clients.service.spec.ts b/src/Squidex/app/shared/services/app-clients.service.spec.ts index fb612f604..656459950 100644 --- a/src/Squidex/app/shared/services/app-clients.service.spec.ts +++ b/src/Squidex/app/shared/services/app-clients.service.spec.ts @@ -51,7 +51,7 @@ describe('AppClientsService', () => { .verifiable(TypeMoq.Times.once()); let clients: AppClientDto[] = null; - + appClientsService.getClients('my-app').subscribe(result => { clients = result; }).unsubscribe(); @@ -82,7 +82,7 @@ describe('AppClientsService', () => { ) )) .verifiable(TypeMoq.Times.once()); - + let client: AppClientDto = null; appClientsService.postClient('my-app', dto).subscribe(result => { diff --git a/src/Squidex/app/shared/services/app-contributors.service.spec.ts b/src/Squidex/app/shared/services/app-contributors.service.spec.ts index ff6b03d4e..b12acf28c 100644 --- a/src/Squidex/app/shared/services/app-contributors.service.spec.ts +++ b/src/Squidex/app/shared/services/app-contributors.service.spec.ts @@ -44,7 +44,7 @@ describe('AppContributorsService', () => { .verifiable(TypeMoq.Times.once()); let contributors: AppContributorDto[] = null; - + appContributorsService.getContributors('my-app').subscribe(result => { contributors = result; }).unsubscribe(); diff --git a/src/Squidex/app/shared/services/app-languages.service.spec.ts b/src/Squidex/app/shared/services/app-languages.service.spec.ts index 38cab59f8..59b96c2e0 100644 --- a/src/Squidex/app/shared/services/app-languages.service.spec.ts +++ b/src/Squidex/app/shared/services/app-languages.service.spec.ts @@ -47,7 +47,7 @@ describe('AppLanguagesService', () => { .verifiable(TypeMoq.Times.once()); let languages: AppLanguageDto[] = null; - + appLanguagesService.getLanguages('my-app').subscribe(result => { languages = result; }).unsubscribe(); diff --git a/src/Squidex/app/shared/services/app-languages.service.ts b/src/Squidex/app/shared/services/app-languages.service.ts index bffed28c2..c424f1baa 100644 --- a/src/Squidex/app/shared/services/app-languages.service.ts +++ b/src/Squidex/app/shared/services/app-languages.service.ts @@ -25,7 +25,7 @@ export class AppLanguageDto { export class AddAppLanguageDto { constructor( - public readonly name: string, + public readonly name: string ) { } } @@ -50,12 +50,12 @@ export class AppLanguagesService { return this.authService.authGet(url) .map(response => response.json()) - .map(response => { + .map(response => { const items: any[] = response; return items.map(item => { return new AppLanguageDto( - item.iso2Code, + item.iso2Code, item.englishName, item.isMasterLanguage === true); }); @@ -68,9 +68,9 @@ export class AppLanguagesService { return this.authService.authPost(url, dto) .map(response => response.json()) - .map(response => { + .map(response => { return new AppLanguageDto( - response.iso2Code, + response.iso2Code, response.englishName, response.isMasterLanguage === true); }) @@ -82,7 +82,7 @@ export class AppLanguagesService { return this.authService.authPut(url, dto) .catch(response => handleError('Failed to change language. Please reload.', response)); - } + } public deleteLanguage(appName: string, languageCode: string): Observable { const url = this.apiUrl.buildUrl(`api/apps/${appName}/languages/${languageCode}`); diff --git a/src/Squidex/app/shared/services/apps.service.spec.ts b/src/Squidex/app/shared/services/apps.service.spec.ts index f149f9ea5..c90f28548 100644 --- a/src/Squidex/app/shared/services/apps.service.spec.ts +++ b/src/Squidex/app/shared/services/apps.service.spec.ts @@ -53,7 +53,7 @@ describe('AppsService', () => { .verifiable(TypeMoq.Times.once()); let apps: AppDto[] = null; - + appsService.getApps().subscribe(result => { apps = result; }).unsubscribe(); @@ -80,7 +80,7 @@ describe('AppsService', () => { ) )) .verifiable(TypeMoq.Times.once()); - + let newCreated: EntityCreatedDto = null; appsService.postApp(createApp).subscribe(result => { diff --git a/src/Squidex/app/shared/services/auth.service.ts b/src/Squidex/app/shared/services/auth.service.ts index 480aafa55..720a7738b 100644 --- a/src/Squidex/app/shared/services/auth.service.ts +++ b/src/Squidex/app/shared/services/auth.service.ts @@ -61,7 +61,7 @@ export class AuthService { constructor(apiUrl: ApiUrlConfig, private readonly http: Ng2Http.Http, - private readonly router: Ng2Router.Router, + private readonly router: Ng2Router.Router ) { if (!apiUrl) { return; diff --git a/src/Squidex/app/shared/services/languages.service.spec.ts b/src/Squidex/app/shared/services/languages.service.spec.ts index 89a9bda8b..2b717e014 100644 --- a/src/Squidex/app/shared/services/languages.service.spec.ts +++ b/src/Squidex/app/shared/services/languages.service.spec.ts @@ -44,7 +44,7 @@ describe('LanguageService', () => { .verifiable(TypeMoq.Times.once()); let languages: LanguageDto[] = null; - + languageService.getLanguages().subscribe(result => { languages = result; }).unsubscribe(); diff --git a/src/Squidex/app/shared/services/languages.service.ts b/src/Squidex/app/shared/services/languages.service.ts index 5dec52376..85ca3b085 100644 --- a/src/Squidex/app/shared/services/languages.service.ts +++ b/src/Squidex/app/shared/services/languages.service.ts @@ -35,12 +35,12 @@ export class LanguageService { return this.authService.authGet(url) .map(response => response.json()) - .map(response => { + .map(response => { const items: any[] = response; return items.map(item => { return new LanguageDto( - item.iso2Code, + item.iso2Code, item.englishName); }); }) diff --git a/src/Squidex/app/shared/services/schemas.service.ts b/src/Squidex/app/shared/services/schemas.service.ts index 0be074b00..d13b67f45 100644 --- a/src/Squidex/app/shared/services/schemas.service.ts +++ b/src/Squidex/app/shared/services/schemas.service.ts @@ -118,12 +118,12 @@ export class SchemasService { return this.authService.authGet(url) .map(response => response.json()) - .map(response => { + .map(response => { const items: any[] = response; return items.map(item => { return new SchemaDto( - item.id, + item.id, item.name, DateTime.parseISO_UTC(item.created), DateTime.parseISO_UTC(item.lastModified)); @@ -155,7 +155,7 @@ export class SchemasService { properties.patternMessage, properties.minLength, properties.maxLength, - properties.allowedValues); + properties.allowedValues); } else { propertiesDto = new NumberFieldPropertiesDto( properties.label, @@ -165,7 +165,7 @@ export class SchemasService { properties.defaultValue, properties.minValue, properties.maxValue, - properties.allowedValues); + properties.allowedValues); } return new FieldDto( @@ -174,12 +174,12 @@ export class SchemasService { item.isDisabled, propertiesDto); }); - + return new SchemaDetailsDto( - response.id, + response.id, response.name, DateTime.parseISO_UTC(response.created), - DateTime.parseISO_UTC(response.lastModified), + DateTime.parseISO_UTC(response.lastModified), fields); }) .catch(response => handleError('Failed to load schema. Please reload.', response)); diff --git a/src/Squidex/app/shared/services/users-provider.service.spec.ts b/src/Squidex/app/shared/services/users-provider.service.spec.ts index 328496faa..748ea80b8 100644 --- a/src/Squidex/app/shared/services/users-provider.service.spec.ts +++ b/src/Squidex/app/shared/services/users-provider.service.spec.ts @@ -34,7 +34,7 @@ describe('UsersProviderService', () => { usersService.setup(x => x.getUser('123')) .returns(() => Observable.of(user)) .verifiable(TypeMoq.Times.once()); - + let resultingUser: UserDto = null; usersProviderService.getUser('123').subscribe(result => { @@ -52,9 +52,9 @@ describe('UsersProviderService', () => { usersService.setup(x => x.getUser('123')) .returns(() => Observable.of(user)) .verifiable(TypeMoq.Times.once()); - + usersProviderService.getUser('123'); - + let resultingUser: UserDto = null; usersProviderService.getUser('123').subscribe(result => { @@ -75,7 +75,7 @@ describe('UsersProviderService', () => { usersService.setup(x => x.getUser('123')) .returns(() => Observable.of(user)) .verifiable(TypeMoq.Times.once()); - + let resultingUser: UserDto = null; usersProviderService.getUser('123').subscribe(result => { diff --git a/src/Squidex/app/shared/services/users-provider.service.ts b/src/Squidex/app/shared/services/users-provider.service.ts index db3b50f76..9431fc039 100644 --- a/src/Squidex/app/shared/services/users-provider.service.ts +++ b/src/Squidex/app/shared/services/users-provider.service.ts @@ -7,7 +7,7 @@ import * as Ng2 from '@angular/core'; -import { Observable, } from 'rxjs'; +import { Observable } from 'rxjs'; import { UserDto, UsersService } from './users.service'; @@ -19,7 +19,7 @@ export class UsersProviderService { constructor( private readonly usersService: UsersService, - private readonly authService: AuthService, + private readonly authService: AuthService ) { } diff --git a/src/Squidex/app/shared/services/users.service.spec.ts b/src/Squidex/app/shared/services/users.service.spec.ts index b890d18bf..426a6c519 100644 --- a/src/Squidex/app/shared/services/users.service.spec.ts +++ b/src/Squidex/app/shared/services/users.service.spec.ts @@ -48,7 +48,7 @@ describe('UsersService', () => { .verifiable(TypeMoq.Times.once()); let user: UserDto[] = null; - + usersService.getUsers().subscribe(result => { user = result; }).unsubscribe(); @@ -84,7 +84,7 @@ describe('UsersService', () => { .verifiable(TypeMoq.Times.once()); let user: UserDto[] = null; - + usersService.getUsers('my-query').subscribe(result => { user = result; }).unsubscribe(); @@ -115,7 +115,7 @@ describe('UsersService', () => { .verifiable(TypeMoq.Times.once()); let user: UserDto = null; - + usersService.getUser('123').subscribe(result => { user = result; }).unsubscribe(); diff --git a/src/Squidex/app/shared/services/users.service.ts b/src/Squidex/app/shared/services/users.service.ts index 2b495cbde..337776128 100644 --- a/src/Squidex/app/shared/services/users.service.ts +++ b/src/Squidex/app/shared/services/users.service.ts @@ -35,7 +35,7 @@ export class UsersService { return this.authService.authGet(url) .map(response => response.json()) - .map(response => { + .map(response => { const items: any[] = response; return items.map(item => { @@ -50,10 +50,10 @@ export class UsersService { public getUser(id: string): Observable { const url = this.apiUrl.buildUrl(`api/users/${id}`); - + return this.authService.authGet(url) .map(response => response.json()) - .map(response => { + .map(response => { return new UserDto( response.id, response.email, diff --git a/src/Squidex/tslint.json b/src/Squidex/tslint.json index 98bf52f8e..ca635ae6f 100644 --- a/src/Squidex/tslint.json +++ b/src/Squidex/tslint.json @@ -38,7 +38,7 @@ "no-construct": true, "no-debugger": true, "no-duplicate-variable": true, - "no-empty": false, + "no-empty": true, "no-eval": true, "no-inferrable-types": [ true, @@ -48,6 +48,7 @@ "no-string-literal": false, "no-switch-case-fall-through": true, "no-trailing-whitespace": true, + "no-unused-expression": true, "no-unused-variable": true, "no-use-before-declare": true, @@ -61,11 +62,13 @@ "check-whitespace" ], "only-arrow-functions": [ - true, - "allow-declarations"], + true, + "allow-declarations" + ], "ordered-imports": [ true ], + "prefer-for-of": true, "quotemark": [ true, "single" @@ -74,6 +77,13 @@ "semicolon": [ "always" ], + "trailing-comma": [ + true, + { + "multiline": "never", + "singleline": "never" + } + ], "triple-equals": [ true, "allow-null-check"