refactor: expose tbank-sync public api and guard its boundary (WealthLedger/backend#118) #143

Merged
codex-bot merged 1 commits from refactor/118-expose-tbank-sync-api into develop 2026-10-28 16:40:02 +03:00
6 changed files with 25 additions and 4 deletions
+20
View File
@@ -212,4 +212,24 @@ export default defineConfig(
'@typescript-eslint/no-unsafe-enum-comparison': 'error', '@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.',
}],
}],
},
},
); );
@@ -11,7 +11,7 @@ import {
import { investmentResourceMeta } from '../investment-resource.mapper'; import { investmentResourceMeta } from '../investment-resource.mapper';
import { sumMoneyByCurrency } from '../portfolio/domain/portfolio-totals'; import { sumMoneyByCurrency } from '../portfolio/domain/portfolio-totals';
import { PortfolioPositionDto, PortfolioService } from '../portfolio/portfolio.api'; 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 { import {
BrokerageAccountDto, BrokerageAccountDto,
BrokerageAccountsResourceDto, BrokerageAccountsResourceDto,
@@ -20,7 +20,7 @@ import {
import { import {
hourlyAttempt, hourlyAttempt,
TbankSyncRepository, TbankSyncRepository,
} from '../../tbank-sync/tbank-sync.repository'; } from '../../tbank-sync/tbank-sync.api';
import { OperationErrorCode } from '../domain/operation-error-code'; import { OperationErrorCode } from '../domain/operation-error-code';
import { import {
confirmedOperationRanges, confirmedOperationRanges,
@@ -20,7 +20,7 @@ import { investmentResourceMeta } from '../../investment-resource.mapper';
import { import {
hourlyAttempt, hourlyAttempt,
TbankSyncRepository, TbankSyncRepository,
} from '../../tbank-sync/tbank-sync.repository'; } from '../../tbank-sync/tbank-sync.api';
import { portfolioStructure } from '../domain/portfolio-structure'; import { portfolioStructure } from '../domain/portfolio-structure';
import { sumMoneyByCurrency } from '../domain/portfolio-totals'; import { sumMoneyByCurrency } from '../domain/portfolio-totals';
import { import {
@@ -0,0 +1 @@
export { hourlyAttempt, TbankSyncRepository } from './tbank-sync.repository';
@@ -24,7 +24,7 @@ import {
import { import {
hourlyAttempt, hourlyAttempt,
TbankSyncRepository, TbankSyncRepository,
} from '../tbank-sync/tbank-sync.repository'; } from '../tbank-sync/tbank-sync.api';
import { bondEvent, dividendEvent } from './upcoming-event.mapper'; import { bondEvent, dividendEvent } from './upcoming-event.mapper';
import { import {
UpcomingEventDto, UpcomingEventDto,