From 7df5782ce573d74fe78fd393e594783cef43da4b Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Wed, 28 Oct 2026 12:28:12 +0300 Subject: [PATCH] refactor: expose tbank-sync public api and guard its boundary (WealthLedger/backend#118) --- eslint.config.mjs | 20 +++++++++++++++++++ .../brokerage-accounts.service.ts | 2 +- .../brokerage-operations.service.ts | 2 +- .../application/portfolio.service.ts | 2 +- .../investments/tbank-sync/tbank-sync.api.ts | 1 + .../upcoming-events.service.ts | 2 +- 6 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 src/modules/investments/tbank-sync/tbank-sync.api.ts diff --git a/eslint.config.mjs b/eslint.config.mjs index 5f33b10..d5a9e23 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -212,4 +212,24 @@ export default defineConfig( '@typescript-eslint/no-unsafe-enum-comparison': 'error', }, }, + { + files: ['src/**/*.ts'], + ignores: [...tests, 'src/modules/investments/tbank-sync/**'], + rules: { + // Separate rule so it does not replace layer-specific no-restricted-imports configs. + 'import-x/no-restricted-paths': ['error', { + zones: [{ + target: './src', + from: './src/modules/investments/tbank-sync', + except: [ + './tbank-sync.api.ts', + './tbank-sync.dto.ts', + './tbank-sync.module.ts', + './tbank-sync-repository.module.ts', + ], + message: 'Use tbank-sync.api for cross-module access.', + }], + }], + }, + }, ); diff --git a/src/modules/investments/brokerage-accounts/brokerage-accounts.service.ts b/src/modules/investments/brokerage-accounts/brokerage-accounts.service.ts index 96845cc..1e7e5c0 100644 --- a/src/modules/investments/brokerage-accounts/brokerage-accounts.service.ts +++ b/src/modules/investments/brokerage-accounts/brokerage-accounts.service.ts @@ -11,7 +11,7 @@ import { import { investmentResourceMeta } from '../investment-resource.mapper'; import { sumMoneyByCurrency } from '../portfolio/domain/portfolio-totals'; import { PortfolioPositionDto, PortfolioService } from '../portfolio/portfolio.api'; -import { hourlyAttempt, TbankSyncRepository } from '../tbank-sync/tbank-sync.repository'; +import { hourlyAttempt, TbankSyncRepository } from '../tbank-sync/tbank-sync.api'; import { BrokerageAccountDto, BrokerageAccountsResourceDto, diff --git a/src/modules/investments/operations/application/brokerage-operations.service.ts b/src/modules/investments/operations/application/brokerage-operations.service.ts index 2a1ef46..28959e3 100644 --- a/src/modules/investments/operations/application/brokerage-operations.service.ts +++ b/src/modules/investments/operations/application/brokerage-operations.service.ts @@ -20,7 +20,7 @@ import { import { hourlyAttempt, TbankSyncRepository, -} from '../../tbank-sync/tbank-sync.repository'; +} from '../../tbank-sync/tbank-sync.api'; import { OperationErrorCode } from '../domain/operation-error-code'; import { confirmedOperationRanges, diff --git a/src/modules/investments/portfolio/application/portfolio.service.ts b/src/modules/investments/portfolio/application/portfolio.service.ts index 61852ff..6afa24a 100644 --- a/src/modules/investments/portfolio/application/portfolio.service.ts +++ b/src/modules/investments/portfolio/application/portfolio.service.ts @@ -20,7 +20,7 @@ import { investmentResourceMeta } from '../../investment-resource.mapper'; import { hourlyAttempt, TbankSyncRepository, -} from '../../tbank-sync/tbank-sync.repository'; +} from '../../tbank-sync/tbank-sync.api'; import { portfolioStructure } from '../domain/portfolio-structure'; import { sumMoneyByCurrency } from '../domain/portfolio-totals'; import { diff --git a/src/modules/investments/tbank-sync/tbank-sync.api.ts b/src/modules/investments/tbank-sync/tbank-sync.api.ts new file mode 100644 index 0000000..3350ac5 --- /dev/null +++ b/src/modules/investments/tbank-sync/tbank-sync.api.ts @@ -0,0 +1 @@ +export { hourlyAttempt, TbankSyncRepository } from './tbank-sync.repository'; diff --git a/src/modules/investments/upcoming-events/upcoming-events.service.ts b/src/modules/investments/upcoming-events/upcoming-events.service.ts index a3f905b..caefc95 100644 --- a/src/modules/investments/upcoming-events/upcoming-events.service.ts +++ b/src/modules/investments/upcoming-events/upcoming-events.service.ts @@ -24,7 +24,7 @@ import { import { hourlyAttempt, TbankSyncRepository, -} from '../tbank-sync/tbank-sync.repository'; +} from '../tbank-sync/tbank-sync.api'; import { bondEvent, dividendEvent } from './upcoming-event.mapper'; import { UpcomingEventDto, -- 2.54.0