diff --git a/apps/client/src/app/components/access-table/access-table.component.ts b/apps/client/src/app/components/access-table/access-table.component.ts index fe2c81199..76548c45d 100644 --- a/apps/client/src/app/components/access-table/access-table.component.ts +++ b/apps/client/src/app/components/access-table/access-table.component.ts @@ -4,7 +4,6 @@ import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { NotificationService } from '@ghostfolio/ui/notifications'; import { Clipboard, ClipboardModule } from '@angular/cdk/clipboard'; -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -36,7 +35,6 @@ import ms from 'ms'; changeDetection: ChangeDetectionStrategy.OnPush, imports: [ ClipboardModule, - CommonModule, IonIcon, MatButtonModule, MatMenuModule, diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index 57ee57f19..abea236b8 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -29,7 +29,6 @@ import { GfSymbolAutocompleteComponent } from '@ghostfolio/ui/symbol-autocomplet import { GfValueComponent } from '@ghostfolio/ui/value'; import { TextFieldModule } from '@angular/cdk/text-field'; -import { CommonModule } from '@angular/common'; import { HttpErrorResponse } from '@angular/common/http'; import { ChangeDetectionStrategy, @@ -95,7 +94,6 @@ import { AssetProfileDialogParams } from './interfaces/interfaces'; changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'd-flex flex-column h-100' }, imports: [ - CommonModule, FormsModule, GfCurrencySelectorComponent, GfEntityLogoComponent, diff --git a/apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.ts b/apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.ts index 51a984660..32e2cc29a 100644 --- a/apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.ts +++ b/apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.ts @@ -1,7 +1,6 @@ import { resolveFearAndGreedIndex } from '@ghostfolio/common/helper'; import { translate } from '@ghostfolio/ui/i18n'; -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -12,7 +11,7 @@ import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule, NgxSkeletonLoaderModule], + imports: [NgxSkeletonLoaderModule], selector: 'gf-fear-and-greed-index', styleUrls: ['./fear-and-greed-index.component.scss'], templateUrl: './fear-and-greed-index.component.html' diff --git a/apps/client/src/app/components/footer/footer.component.ts b/apps/client/src/app/components/footer/footer.component.ts index a5820832e..48f010565 100644 --- a/apps/client/src/app/components/footer/footer.component.ts +++ b/apps/client/src/app/components/footer/footer.component.ts @@ -3,7 +3,6 @@ import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { GfLogoComponent } from '@ghostfolio/ui/logo'; -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -18,7 +17,7 @@ import { openOutline } from 'ionicons/icons'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule, GfLogoComponent, IonIcon, RouterModule], + imports: [GfLogoComponent, IonIcon, RouterModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-footer', styleUrls: ['./footer.component.scss'], diff --git a/apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.component.ts b/apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.component.ts index 0e297bc29..d79c7a675 100644 --- a/apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.component.ts +++ b/apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.component.ts @@ -4,7 +4,6 @@ import { } from '@ghostfolio/client/services/settings-storage.service'; import { GfDialogHeaderComponent } from '@ghostfolio/ui/dialog-header'; -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; @@ -28,7 +27,6 @@ import { LoginWithAccessTokenDialogParams } from './interfaces/interfaces'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, imports: [ - CommonModule, GfDialogHeaderComponent, IonIcon, MatButtonModule, diff --git a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts index 7a17ec32d..0d616b92e 100644 --- a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts +++ b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts @@ -2,7 +2,6 @@ import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { GfMembershipCardComponent } from '@ghostfolio/ui/membership-card'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, ChangeDetectorRef, @@ -31,7 +30,6 @@ import { SubscriptionInterstitialDialogParams } from './interfaces/interfaces'; changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'd-flex flex-column flex-grow-1 h-100' }, imports: [ - CommonModule, GfMembershipCardComponent, GfPremiumIndicatorComponent, IonIcon, diff --git a/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts b/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts index 57ccf0f18..248fd48f3 100644 --- a/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts +++ b/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts @@ -4,7 +4,6 @@ import { GfDialogFooterComponent } from '@ghostfolio/ui/dialog-footer'; import { GfDialogHeaderComponent } from '@ghostfolio/ui/dialog-header'; import { GfValueComponent } from '@ghostfolio/ui/value'; -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, ChangeDetectorRef, @@ -26,7 +25,6 @@ import { UserDetailDialogParams } from './interfaces/interfaces'; changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'd-flex flex-column h-100' }, imports: [ - CommonModule, GfDialogFooterComponent, GfDialogHeaderComponent, GfValueComponent, diff --git a/apps/client/src/app/pages/blog/blog-page.component.ts b/apps/client/src/app/pages/blog/blog-page.component.ts index 7599a3358..9977e6df4 100644 --- a/apps/client/src/app/pages/blog/blog-page.component.ts +++ b/apps/client/src/app/pages/blog/blog-page.component.ts @@ -1,7 +1,6 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; -import { CommonModule } from '@angular/common'; import { Component, CUSTOM_ELEMENTS_SCHEMA, OnDestroy } from '@angular/core'; import { MatCardModule } from '@angular/material/card'; import { RouterModule } from '@angular/router'; @@ -12,7 +11,7 @@ import { Subject } from 'rxjs'; @Component({ host: { class: 'page' }, - imports: [CommonModule, IonIcon, MatCardModule, RouterModule], + imports: [IonIcon, MatCardModule, RouterModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-blog-page', styleUrls: ['./blog-page.scss'], diff --git a/apps/client/src/app/pages/markets/markets-page.component.ts b/apps/client/src/app/pages/markets/markets-page.component.ts index 11d4ebbde..1ab97c3e0 100644 --- a/apps/client/src/app/pages/markets/markets-page.component.ts +++ b/apps/client/src/app/pages/markets/markets-page.component.ts @@ -1,12 +1,11 @@ import { GfHomeMarketComponent } from '@ghostfolio/client/components/home-market/home-market.component'; -import { CommonModule } from '@angular/common'; import { Component, OnDestroy } from '@angular/core'; import { Subject } from 'rxjs'; @Component({ host: { class: 'page' }, - imports: [CommonModule, GfHomeMarketComponent], + imports: [GfHomeMarketComponent], selector: 'gf-markets-page', styleUrls: ['./markets-page.scss'], templateUrl: './markets-page.html' diff --git a/apps/client/src/app/pages/open/open-page.component.ts b/apps/client/src/app/pages/open/open-page.component.ts index 6521951da..773025769 100644 --- a/apps/client/src/app/pages/open/open-page.component.ts +++ b/apps/client/src/app/pages/open/open-page.component.ts @@ -3,7 +3,6 @@ import { UserService } from '@ghostfolio/client/services/user/user.service'; import { Statistics, User } from '@ghostfolio/common/interfaces'; import { GfValueComponent } from '@ghostfolio/ui/value'; -import { CommonModule } from '@angular/common'; import { ChangeDetectorRef, Component, @@ -16,7 +15,7 @@ import { Subject, takeUntil } from 'rxjs'; @Component({ host: { class: 'page' }, - imports: [CommonModule, GfValueComponent, MatCardModule], + imports: [GfValueComponent, MatCardModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-open-page', styleUrls: ['./open-page.scss'], diff --git a/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts b/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts index dfa8145dc..36e1ce710 100644 --- a/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts +++ b/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts @@ -3,7 +3,6 @@ import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { ClipboardModule } from '@angular/cdk/clipboard'; import { TextFieldModule } from '@angular/cdk/text-field'; -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, ChangeDetectorRef, @@ -36,7 +35,6 @@ import { UserAccountRegistrationDialogParams } from './interfaces/interfaces'; changeDetection: ChangeDetectionStrategy.OnPush, imports: [ ClipboardModule, - CommonModule, FormsModule, IonIcon, MatButtonModule, diff --git a/apps/client/src/app/pages/zen/zen-page.component.ts b/apps/client/src/app/pages/zen/zen-page.component.ts index 5ed9fe09c..280f33c25 100644 --- a/apps/client/src/app/pages/zen/zen-page.component.ts +++ b/apps/client/src/app/pages/zen/zen-page.component.ts @@ -2,7 +2,6 @@ import { UserService } from '@ghostfolio/client/services/user/user.service'; import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; -import { CommonModule } from '@angular/common'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { MatTabsModule } from '@angular/material/tabs'; import { RouterModule } from '@angular/router'; @@ -15,7 +14,7 @@ import { takeUntil } from 'rxjs/operators'; @Component({ host: { class: 'page has-tabs' }, - imports: [CommonModule, IonIcon, MatTabsModule, RouterModule], + imports: [IonIcon, MatTabsModule, RouterModule], selector: 'gf-zen-page', styleUrls: ['./zen-page.scss'], templateUrl: './zen-page.html' diff --git a/apps/client/src/main.ts b/apps/client/src/main.ts index d562fc439..7fb79a78a 100644 --- a/apps/client/src/main.ts +++ b/apps/client/src/main.ts @@ -7,7 +7,11 @@ import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; -import { enableProdMode, importProvidersFrom } from '@angular/core'; +import { + enableProdMode, + importProvidersFrom, + provideZoneChangeDetection +} from '@angular/core'; import { DateAdapter, MAT_DATE_FORMATS, @@ -83,6 +87,7 @@ import { environment } from './environments/environment'; provideIonicAngular(), provideMarkdown(), provideNgxSkeletonLoader(), + provideZoneChangeDetection(), { deps: [LanguageService, MAT_DATE_LOCALE, Platform], provide: DateAdapter, diff --git a/apps/client/src/test-setup.ts b/apps/client/src/test-setup.ts index 1100b3e8a..58c511e08 100644 --- a/apps/client/src/test-setup.ts +++ b/apps/client/src/test-setup.ts @@ -1 +1,3 @@ -import 'jest-preset-angular/setup-jest'; +import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; + +setupZoneTestEnv(); diff --git a/apps/client/tsconfig.json b/apps/client/tsconfig.json index 1dd30aad1..48be8f223 100644 --- a/apps/client/tsconfig.json +++ b/apps/client/tsconfig.json @@ -15,11 +15,13 @@ ], "angularCompilerOptions": { "strictInjectionParameters": true, - // TODO: Enable stricter rules for this project "strictInputAccessModifiers": false, "strictTemplates": false }, "compilerOptions": { + "lib": ["dom", "es2022"], + "module": "preserve", + "moduleResolution": "bundler", "target": "es2020" } } diff --git a/apps/client/tsconfig.spec.json b/apps/client/tsconfig.spec.json index e7d525ae4..c703976bf 100644 --- a/apps/client/tsconfig.spec.json +++ b/apps/client/tsconfig.spec.json @@ -2,7 +2,9 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "module": "commonjs", + "module": "preserve", + "moduleResolution": "bundler", + "isolatedModules": true, "types": ["jest", "node"], "target": "es2016" }, diff --git a/libs/common/tsconfig.json b/libs/common/tsconfig.json index 62ebbd946..54feb703a 100644 --- a/libs/common/tsconfig.json +++ b/libs/common/tsconfig.json @@ -9,5 +9,10 @@ { "path": "./tsconfig.spec.json" } - ] + ], + "compilerOptions": { + "module": "preserve", + "moduleResolution": "bundler", + "lib": ["dom", "es2022"] + } } diff --git a/libs/common/tsconfig.spec.json b/libs/common/tsconfig.spec.json index 46f9467f3..41f2c6cda 100644 --- a/libs/common/tsconfig.spec.json +++ b/libs/common/tsconfig.spec.json @@ -2,7 +2,9 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "module": "commonjs", + "module": "preserve", + "moduleResolution": "bundler", + "isolatedModules": true, "types": ["jest", "node"] }, "include": [ diff --git a/libs/ui/src/lib/logo-carousel/logo-carousel.component.ts b/libs/ui/src/lib/logo-carousel/logo-carousel.component.ts index 9c1a90809..8748bac11 100644 --- a/libs/ui/src/lib/logo-carousel/logo-carousel.component.ts +++ b/libs/ui/src/lib/logo-carousel/logo-carousel.component.ts @@ -1,11 +1,10 @@ -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component } from '@angular/core'; import { LogoItem } from './interfaces/interfaces'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule], + imports: [], selector: 'gf-logo-carousel', styleUrls: ['./logo-carousel.component.scss'], templateUrl: './logo-carousel.component.html' diff --git a/libs/ui/src/test-setup.ts b/libs/ui/src/test-setup.ts index 1100b3e8a..58c511e08 100644 --- a/libs/ui/src/test-setup.ts +++ b/libs/ui/src/test-setup.ts @@ -1 +1,3 @@ -import 'jest-preset-angular/setup-jest'; +import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; + +setupZoneTestEnv(); diff --git a/libs/ui/tsconfig.json b/libs/ui/tsconfig.json index 0fb38eaa3..6afa366b0 100644 --- a/libs/ui/tsconfig.json +++ b/libs/ui/tsconfig.json @@ -14,6 +14,8 @@ } ], "compilerOptions": { + "lib": ["dom", "es2022"], + "module": "preserve", "moduleResolution": "bundler", "target": "es2020", // TODO: Remove once solved in tsconfig.base.json diff --git a/libs/ui/tsconfig.lib.json b/libs/ui/tsconfig.lib.json index 4e6eb88b9..6fbed6f1c 100644 --- a/libs/ui/tsconfig.lib.json +++ b/libs/ui/tsconfig.lib.json @@ -7,7 +7,7 @@ "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2022"] }, "exclude": [ "src/test-setup.ts", diff --git a/libs/ui/tsconfig.spec.json b/libs/ui/tsconfig.spec.json index e7d525ae4..c703976bf 100644 --- a/libs/ui/tsconfig.spec.json +++ b/libs/ui/tsconfig.spec.json @@ -2,7 +2,9 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "module": "commonjs", + "module": "preserve", + "moduleResolution": "bundler", + "isolatedModules": true, "types": ["jest", "node"], "target": "es2016" },