From f8a7c78b6f132f5136a53873aa5c6c0f24e5b6b5 Mon Sep 17 00:00:00 2001 From: KenTandrian Date: Fri, 17 Jul 2026 10:02:19 +0700 Subject: [PATCH 1/5] feat(ts): enable no implicit override --- tsconfig.base.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsconfig.base.json b/tsconfig.base.json index 909e1757a..bce6d9670 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -30,7 +30,7 @@ "noImplicitReturns": false, "noImplicitAny": false, "noImplicitThis": false, - "noImplicitOverride": false, + "noImplicitOverride": true, "noPropertyAccessFromIndexSignature": false, "noUnusedLocals": true, "noUnusedParameters": true, From 3d090e272d26c66779fadd3c89d1a886720e52e7 Mon Sep 17 00:00:00 2001 From: KenTandrian Date: Fri, 17 Jul 2026 10:02:37 +0700 Subject: [PATCH 2/5] fix(api): resolve type errors --- apps/api/src/guards/custom-throttler.guard.ts | 4 +++- .../models/rules/account-cluster-risk/current-investment.ts | 2 +- .../src/models/rules/account-cluster-risk/single-account.ts | 2 +- apps/api/src/models/rules/asset-class-cluster-risk/equity.ts | 2 +- .../src/models/rules/asset-class-cluster-risk/fixed-income.ts | 2 +- .../currency-cluster-risk/base-currency-current-investment.ts | 2 +- .../models/rules/currency-cluster-risk/current-investment.ts | 2 +- .../rules/economic-market-cluster-risk/developed-markets.ts | 2 +- .../rules/economic-market-cluster-risk/emerging-markets.ts | 2 +- .../src/models/rules/emergency-fund/emergency-fund-setup.ts | 2 +- .../models/rules/fees/fee-ratio-total-investment-volume.ts | 2 +- apps/api/src/models/rules/liquidity/buying-power.ts | 2 +- .../models/rules/regional-market-cluster-risk/asia-pacific.ts | 2 +- .../rules/regional-market-cluster-risk/emerging-markets.ts | 2 +- .../src/models/rules/regional-market-cluster-risk/europe.ts | 2 +- .../src/models/rules/regional-market-cluster-risk/japan.ts | 2 +- .../rules/regional-market-cluster-risk/north-america.ts | 2 +- 17 files changed, 19 insertions(+), 17 deletions(-) diff --git a/apps/api/src/guards/custom-throttler.guard.ts b/apps/api/src/guards/custom-throttler.guard.ts index c4f0e806d..00a2ba087 100644 --- a/apps/api/src/guards/custom-throttler.guard.ts +++ b/apps/api/src/guards/custom-throttler.guard.ts @@ -5,7 +5,9 @@ import { ThrottlerException, ThrottlerGuard } from '@nestjs/throttler'; export class CustomThrottlerGuard extends ThrottlerGuard { private readonly logger = new Logger(CustomThrottlerGuard.name); - public async canActivate(context: ExecutionContext): Promise { + public override async canActivate( + context: ExecutionContext + ): Promise { try { return await super.canActivate(context); } catch (error) { diff --git a/apps/api/src/models/rules/account-cluster-risk/current-investment.ts b/apps/api/src/models/rules/account-cluster-risk/current-investment.ts index 400a2506f..11727e118 100644 --- a/apps/api/src/models/rules/account-cluster-risk/current-investment.ts +++ b/apps/api/src/models/rules/account-cluster-risk/current-investment.ts @@ -13,7 +13,7 @@ export class AccountClusterRiskCurrentInvestment extends Rule { private accounts: PortfolioDetails['accounts']; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, languageCode: string, accounts: PortfolioDetails['accounts'] diff --git a/apps/api/src/models/rules/account-cluster-risk/single-account.ts b/apps/api/src/models/rules/account-cluster-risk/single-account.ts index e4ee99064..75f050316 100644 --- a/apps/api/src/models/rules/account-cluster-risk/single-account.ts +++ b/apps/api/src/models/rules/account-cluster-risk/single-account.ts @@ -11,7 +11,7 @@ export class AccountClusterRiskSingleAccount extends Rule { private accounts: PortfolioDetails['accounts']; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, languageCode: string, accounts: PortfolioDetails['accounts'] diff --git a/apps/api/src/models/rules/asset-class-cluster-risk/equity.ts b/apps/api/src/models/rules/asset-class-cluster-risk/equity.ts index 12303fd92..ad5c82047 100644 --- a/apps/api/src/models/rules/asset-class-cluster-risk/equity.ts +++ b/apps/api/src/models/rules/asset-class-cluster-risk/equity.ts @@ -11,7 +11,7 @@ export class AssetClassClusterRiskEquity extends Rule { private holdings: PortfolioPosition[]; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, languageCode: string, holdings: PortfolioPosition[] diff --git a/apps/api/src/models/rules/asset-class-cluster-risk/fixed-income.ts b/apps/api/src/models/rules/asset-class-cluster-risk/fixed-income.ts index fd7c00f11..3bc8984db 100644 --- a/apps/api/src/models/rules/asset-class-cluster-risk/fixed-income.ts +++ b/apps/api/src/models/rules/asset-class-cluster-risk/fixed-income.ts @@ -11,7 +11,7 @@ export class AssetClassClusterRiskFixedIncome extends Rule { private holdings: PortfolioPosition[]; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, languageCode: string, holdings: PortfolioPosition[] diff --git a/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts b/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts index 6890fecd6..96819e4d5 100644 --- a/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts +++ b/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts @@ -11,7 +11,7 @@ export class CurrencyClusterRiskBaseCurrencyCurrentInvestment extends Rule { private holdings: PortfolioPosition[]; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, holdings: PortfolioPosition[], languageCode: string diff --git a/apps/api/src/models/rules/economic-market-cluster-risk/developed-markets.ts b/apps/api/src/models/rules/economic-market-cluster-risk/developed-markets.ts index 70f09f58c..ffab8c4c6 100644 --- a/apps/api/src/models/rules/economic-market-cluster-risk/developed-markets.ts +++ b/apps/api/src/models/rules/economic-market-cluster-risk/developed-markets.ts @@ -8,7 +8,7 @@ export class EconomicMarketClusterRiskDevelopedMarkets extends Rule { private developedMarketsValueInBaseCurrency: number; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, currentValueInBaseCurrency: number, developedMarketsValueInBaseCurrency: number, diff --git a/apps/api/src/models/rules/economic-market-cluster-risk/emerging-markets.ts b/apps/api/src/models/rules/economic-market-cluster-risk/emerging-markets.ts index 120c3f6a2..6b834b52a 100644 --- a/apps/api/src/models/rules/economic-market-cluster-risk/emerging-markets.ts +++ b/apps/api/src/models/rules/economic-market-cluster-risk/emerging-markets.ts @@ -8,7 +8,7 @@ export class EconomicMarketClusterRiskEmergingMarkets extends Rule { private emergingMarketsValueInBaseCurrency: number; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, currentValueInBaseCurrency: number, emergingMarketsValueInBaseCurrency: number, diff --git a/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts b/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts index fcbd99d54..fc1d8b0c0 100644 --- a/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts +++ b/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts @@ -7,7 +7,7 @@ export class EmergencyFundSetup extends Rule { private emergencyFund: number; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, languageCode: string, emergencyFund: number diff --git a/apps/api/src/models/rules/fees/fee-ratio-total-investment-volume.ts b/apps/api/src/models/rules/fees/fee-ratio-total-investment-volume.ts index 23f9076e8..8be31e6d4 100644 --- a/apps/api/src/models/rules/fees/fee-ratio-total-investment-volume.ts +++ b/apps/api/src/models/rules/fees/fee-ratio-total-investment-volume.ts @@ -8,7 +8,7 @@ export class FeeRatioTotalInvestmentVolume extends Rule { private totalInvestmentVolumeInBaseCurrency: number; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, languageCode: string, totalInvestmentVolumeInBaseCurrency: number, diff --git a/apps/api/src/models/rules/liquidity/buying-power.ts b/apps/api/src/models/rules/liquidity/buying-power.ts index 7e8b96143..83493aabf 100644 --- a/apps/api/src/models/rules/liquidity/buying-power.ts +++ b/apps/api/src/models/rules/liquidity/buying-power.ts @@ -7,7 +7,7 @@ export class BuyingPower extends Rule { private buyingPower: number; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, buyingPower: number, languageCode: string diff --git a/apps/api/src/models/rules/regional-market-cluster-risk/asia-pacific.ts b/apps/api/src/models/rules/regional-market-cluster-risk/asia-pacific.ts index 4723389b0..bf19fc734 100644 --- a/apps/api/src/models/rules/regional-market-cluster-risk/asia-pacific.ts +++ b/apps/api/src/models/rules/regional-market-cluster-risk/asia-pacific.ts @@ -10,7 +10,7 @@ export class RegionalMarketClusterRiskAsiaPacific extends Rule { private currentValueInBaseCurrency: number; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, languageCode: string, currentValueInBaseCurrency: number, diff --git a/apps/api/src/models/rules/regional-market-cluster-risk/emerging-markets.ts b/apps/api/src/models/rules/regional-market-cluster-risk/emerging-markets.ts index d4695406a..7f37abecd 100644 --- a/apps/api/src/models/rules/regional-market-cluster-risk/emerging-markets.ts +++ b/apps/api/src/models/rules/regional-market-cluster-risk/emerging-markets.ts @@ -10,7 +10,7 @@ export class RegionalMarketClusterRiskEmergingMarkets extends Rule { private emergingMarketsValueInBaseCurrency: number; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, languageCode: string, currentValueInBaseCurrency: number, diff --git a/apps/api/src/models/rules/regional-market-cluster-risk/europe.ts b/apps/api/src/models/rules/regional-market-cluster-risk/europe.ts index c5cb4d134..1e10c29bf 100644 --- a/apps/api/src/models/rules/regional-market-cluster-risk/europe.ts +++ b/apps/api/src/models/rules/regional-market-cluster-risk/europe.ts @@ -10,7 +10,7 @@ export class RegionalMarketClusterRiskEurope extends Rule { private europeValueInBaseCurrency: number; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, languageCode: string, currentValueInBaseCurrency: number, diff --git a/apps/api/src/models/rules/regional-market-cluster-risk/japan.ts b/apps/api/src/models/rules/regional-market-cluster-risk/japan.ts index fc9ab92ee..22d616445 100644 --- a/apps/api/src/models/rules/regional-market-cluster-risk/japan.ts +++ b/apps/api/src/models/rules/regional-market-cluster-risk/japan.ts @@ -10,7 +10,7 @@ export class RegionalMarketClusterRiskJapan extends Rule { private japanValueInBaseCurrency: number; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, languageCode: string, currentValueInBaseCurrency: number, diff --git a/apps/api/src/models/rules/regional-market-cluster-risk/north-america.ts b/apps/api/src/models/rules/regional-market-cluster-risk/north-america.ts index 8bd3fb0cf..aa88dac7b 100644 --- a/apps/api/src/models/rules/regional-market-cluster-risk/north-america.ts +++ b/apps/api/src/models/rules/regional-market-cluster-risk/north-america.ts @@ -10,7 +10,7 @@ export class RegionalMarketClusterRiskNorthAmerica extends Rule { private northAmericaValueInBaseCurrency: number; public constructor( - protected exchangeRateDataService: ExchangeRateDataService, + exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, languageCode: string, currentValueInBaseCurrency: number, From 939e4ec9f88e32904cc935d32c76e9e2791b1eee Mon Sep 17 00:00:00 2001 From: KenTandrian Date: Fri, 17 Jul 2026 10:02:46 +0700 Subject: [PATCH 3/5] fix(client): resolve type errors --- apps/client/src/app/adapter/custom-date-adapter.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/client/src/app/adapter/custom-date-adapter.ts b/apps/client/src/app/adapter/custom-date-adapter.ts index a1326b823..5a7790b92 100644 --- a/apps/client/src/app/adapter/custom-date-adapter.ts +++ b/apps/client/src/app/adapter/custom-date-adapter.ts @@ -6,7 +6,7 @@ import { addYears, format, getYear, parse } from 'date-fns'; export class CustomDateAdapter extends NativeDateAdapter { public constructor( - @Inject(MAT_DATE_LOCALE) public locale: string, + @Inject(MAT_DATE_LOCALE) public override locale: string, @Inject(forwardRef(() => MAT_DATE_LOCALE)) matDateLocale: string ) { super(matDateLocale); @@ -15,21 +15,21 @@ export class CustomDateAdapter extends NativeDateAdapter { /** * Formats a date as a string */ - public format(aDate: Date): string { + public override format(aDate: Date): string { return format(aDate, getDateFormatString(this.locale)); } /** * Sets the first day of the week to Monday */ - public getFirstDayOfWeek(): number { + public override getFirstDayOfWeek(): number { return 1; } /** * Parses a date from a provided value */ - public parse(aValue: string): Date { + public override parse(aValue: string): Date { let date = parse(aValue, getDateFormatString(this.locale), new Date()); if (getYear(date) < 1900) { From 813efdc6cb5b2ec2d903c79f56b3f3341d173652 Mon Sep 17 00:00:00 2001 From: KenTandrian Date: Fri, 17 Jul 2026 10:02:55 +0700 Subject: [PATCH 4/5] fix(ui): resolve type errors --- .../currency-selector/currency-selector.component.ts | 12 ++++++------ .../symbol-autocomplete.component.ts | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/libs/ui/src/lib/currency-selector/currency-selector.component.ts b/libs/ui/src/lib/currency-selector/currency-selector.component.ts index 7b6236fbb..724e86712 100644 --- a/libs/ui/src/lib/currency-selector/currency-selector.component.ts +++ b/libs/ui/src/lib/currency-selector/currency-selector.component.ts @@ -75,22 +75,22 @@ export class GfCurrencySelectorComponent private readonly input = viewChild.required(MatInput); public constructor( - public readonly _elementRef: ElementRef, - public readonly _focusMonitor: FocusMonitor, + public override readonly _elementRef: ElementRef, + public override readonly _focusMonitor: FocusMonitor, public readonly changeDetectorRef: ChangeDetectorRef, private readonly formGroupDirective: FormGroupDirective, - public readonly ngControl: NgControl + public override readonly ngControl: NgControl ) { super(_elementRef, _focusMonitor, ngControl); this.controlType = 'currency-selector'; } - public get empty() { + public override get empty() { return this.input().empty; } - public set value(value: string | null) { + public override set value(value: string | null) { this.control.setValue(value); super.value = value; } @@ -138,7 +138,7 @@ export class GfCurrencySelectorComponent }); } - public ngDoCheck() { + public override ngDoCheck() { if (this.ngControl) { this.validateRequired(); this.errorState = !!(this.ngControl.invalid && this.ngControl.touched); diff --git a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts index 4b1898b8a..87d43d764 100644 --- a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts +++ b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts @@ -95,22 +95,22 @@ export class GfSymbolAutocompleteComponent private readonly input = viewChild.required(MatInput); public constructor( - public readonly _elementRef: ElementRef, - public readonly _focusMonitor: FocusMonitor, + public override readonly _elementRef: ElementRef, + public override readonly _focusMonitor: FocusMonitor, public readonly changeDetectorRef: ChangeDetectorRef, public readonly dataService: DataService, - public readonly ngControl: NgControl + public override readonly ngControl: NgControl ) { super(_elementRef, _focusMonitor, ngControl); this.controlType = 'symbol-autocomplete'; } - public get empty() { + public override get empty() { return this.input().empty; } - public set value(value: LookupItem) { + public override set value(value: LookupItem) { this.control.setValue(value); super.value = value; } @@ -188,7 +188,7 @@ export class GfSymbolAutocompleteComponent }); } - public ngDoCheck() { + public override ngDoCheck() { if (this.ngControl) { this.validateRequired(); this.errorState = !!(this.ngControl.invalid && this.ngControl.touched); From 6f58a9eb61246099b477fb631e6b271d8eb4b7c5 Mon Sep 17 00:00:00 2001 From: KenTandrian Date: Fri, 17 Jul 2026 10:03:08 +0700 Subject: [PATCH 5/5] fix(common): resolve type errors --- .../src/lib/dtos/create-asset-profile-with-market-data.dto.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/common/src/lib/dtos/create-asset-profile-with-market-data.dto.ts b/libs/common/src/lib/dtos/create-asset-profile-with-market-data.dto.ts index 51ee716d3..60afcb558 100644 --- a/libs/common/src/lib/dtos/create-asset-profile-with-market-data.dto.ts +++ b/libs/common/src/lib/dtos/create-asset-profile-with-market-data.dto.ts @@ -9,7 +9,7 @@ export class CreateAssetProfileWithMarketDataDto extends CreateAssetProfileDto { @IsIn([DataSource.MANUAL], { message: `dataSource must be '${DataSource.MANUAL}'` }) - dataSource: DataSource; + override dataSource: DataSource; @IsArray() @IsOptional()