refactor: replace deep imports with native node aliases (WealthLedger/backend#165) (#193)
Backend verify / commits (push) Skipped
Backend verify / security (push) Successful in 1m6s
Backend verify / verify (push) Failing after 6m44s

This commit was merged in pull request #193.
This commit is contained in:
2026-11-04 23:22:46 +03:00
parent e3ecb8c15e
commit 07cfd08df9
103 changed files with 322 additions and 230 deletions
@@ -1,8 +1,9 @@
import { Injectable } from '@nestjs/common';
import { add, decimalFromString, formatDecimal } from '#src/common/decimal';
import type { InvestmentResourceMetaDto } from '../../investment-resource.dto';
import { add, decimalFromString, formatDecimal } from '../../../../common/decimal';
import { investmentResourceMeta } from '../../investment-resource.mapper';
import {
ForecastRepository,
@@ -1,5 +1,5 @@
import assert from 'node:assert/strict';
jest.mock('../../../../prisma/prisma.service', () => ({
jest.mock('#src/prisma/prisma.service', () => ({
PrismaService: class {},
}));
import { PortfolioDto } from '../presentation/portfolio.dto';
@@ -4,10 +4,10 @@ import {
} from '@nestjs/common';
import { randomUUID } from 'node:crypto';
import type { Prisma } from '../../../../../generated/prisma/client';
import type { Prisma } from '#generated/prisma/client';
import { StructuredLogger } from '../../../../common/logging/structured-logger.service';
import { isTbankErrorCode, TbankErrorCode } from '../../../../integrations/tbank/tbank-error-code';
import { StructuredLogger } from '#src/common/logging/structured-logger.service';
import { isTbankErrorCode, TbankErrorCode } from '#src/integrations/tbank/tbank-error-code';
import {
InstrumentMetadataService,
metadataKey,
@@ -17,7 +17,8 @@ import {
type TbankMoney,
type TbankPortfolio,
tbankSourceTtlMs,
} from '../../../../integrations/tbank/tbank.api';
} from '#src/integrations/tbank/tbank.api';
import { investmentResourceMeta } from '../../investment-resource.mapper';
import {
hourlyAttempt,
@@ -1,8 +1,9 @@
import { NotFoundException } from '@nestjs/common';
jest.mock('../../../../prisma/prisma.service', () => ({ PrismaService: class {} }));
import { TbankErrorCode } from '../../../../integrations/tbank/tbank-error-code';
import { InstrumentIdType } from '../../../../integrations/tbank/tbank-protocol';
jest.mock('#src/prisma/prisma.service', () => ({ PrismaService: class {} }));
import { TbankErrorCode } from '#src/integrations/tbank/tbank-error-code';
import { InstrumentIdType } from '#src/integrations/tbank/tbank-protocol';
import { PositionClassificationService } from './position-classification.service';
describe('PositionClassificationService', () => {
@@ -1,12 +1,13 @@
import { Injectable, NotFoundException } from '@nestjs/common';
import { isZero } from '../../../../common/decimal';
import { StructuredLogger } from '../../../../common/logging/structured-logger.service';
import { MILLISECONDS_PER_DAY } from '../../../../common/time';
import { decimal } from '../../../../integrations/tbank/decimal';
import { isTbankErrorCode, TbankErrorCode } from '../../../../integrations/tbank/tbank-error-code';
import { InstrumentIdType } from '../../../../integrations/tbank/tbank-protocol';
import { metadataKey, TbankClient, type TbankPortfolio } from '../../../../integrations/tbank/tbank.api';
import { isZero } from '#src/common/decimal';
import { StructuredLogger } from '#src/common/logging/structured-logger.service';
import { MILLISECONDS_PER_DAY } from '#src/common/time';
import { decimal } from '#src/integrations/tbank/decimal';
import { isTbankErrorCode, TbankErrorCode } from '#src/integrations/tbank/tbank-error-code';
import { InstrumentIdType } from '#src/integrations/tbank/tbank-protocol';
import { metadataKey, TbankClient, type TbankPortfolio } from '#src/integrations/tbank/tbank.api';
import { PositionClassificationRepository } from '../infrastructure/position-classification.repository';
export type Classification = { issuer: null | { id: string; name: string }; sector: null | string };
@@ -1,11 +1,11 @@
import type { Money } from '../../../../common/money.types';
import type { Money } from '#src/common/money.types';
import {
add,
DECIMAL_RADIX,
decimalFromString,
formatDecimal,
} from '../../../../common/decimal';
} from '#src/common/decimal';
const ZERO_AMOUNT = 0n;
const INITIAL_UNVALUED_COUNT = 0;
@@ -1,10 +1,10 @@
import type { Money } from '../../../../common/money.types';
import type { Money } from '#src/common/money.types';
import {
add,
decimalFromString,
formatDecimal,
} from '../../../../common/decimal';
} from '#src/common/decimal';
export function sumMoneyByCurrency(amounts: Money[]): Money[] {
const totals = new Map<string, ReturnType<typeof decimalFromString>>();
@@ -1,10 +1,10 @@
import { Injectable } from '@nestjs/common';
import { isDeepStrictEqual } from 'node:util';
import type { Prisma } from '../../../../../generated/prisma/client';
import type { Prisma } from '#generated/prisma/client';
import { PrismaService } from '../../../../prisma/prisma.service';
import { toJson } from '../../../../prisma/to-json';
import { PrismaService } from '#src/prisma/prisma.service';
import { toJson } from '#src/prisma/to-json';
const FIRST_BATCH_OFFSET = 0;
@@ -1,14 +1,15 @@
import { Injectable } from '@nestjs/common';
import { randomUUID } from 'node:crypto';
import type { Prisma } from '../../../../../generated/prisma/client';
import type { PortfolioDto } from '../presentation/portfolio.dto';
import type { Prisma } from '#generated/prisma/client';
import { TbankErrorCode } from '../../../../integrations/tbank/tbank-error-code';
import { lockConnectionGeneration } from '../../../../integrations/tbank/tbank-sync-claim';
import { isJoinableRunningAttempt, tbankSourceNeedsRefresh, tbankSourceTtlMs } from '../../../../integrations/tbank/tbank.api';
import { PrismaService } from '../../../../prisma/prisma.service';
import { toJson } from '../../../../prisma/to-json';
import { TbankErrorCode } from '#src/integrations/tbank/tbank-error-code';
import { lockConnectionGeneration } from '#src/integrations/tbank/tbank-sync-claim';
import { isJoinableRunningAttempt, tbankSourceNeedsRefresh, tbankSourceTtlMs } from '#src/integrations/tbank/tbank.api';
import { PrismaService } from '#src/prisma/prisma.service';
import { toJson } from '#src/prisma/to-json';
import type { PortfolioDto } from '../presentation/portfolio.dto';
const EXPECTED_UPDATED_ACCOUNTS = 1;
@@ -1,6 +1,6 @@
import { Injectable } from '@nestjs/common';
import { PrismaService } from '../../../../prisma/prisma.service';
import { PrismaService } from '#src/prisma/prisma.service';
@Injectable()
export class PositionClassificationRepository {
@@ -1,6 +1,4 @@
import type { Money } from '../../../../common/money.types';
import type { Classification } from '../application/position-classification.service';
import type { PortfolioDto, PortfolioPositionDto } from '../presentation/portfolio.dto';
import type { Money } from '#src/common/money.types';
import {
add,
@@ -9,15 +7,19 @@ import {
isZero,
multiply,
subtract,
} from '../../../../common/decimal';
import { decimal } from '../../../../integrations/tbank/decimal';
} from '#src/common/decimal';
import { decimal } from '#src/integrations/tbank/decimal';
import {
metadataKey,
type TbankInstrument,
type TbankMoney,
TbankPortfolio,
TbankPositions,
} from '../../../../integrations/tbank/tbank.api';
} from '#src/integrations/tbank/tbank.api';
import type { Classification } from '../application/position-classification.service';
import type { PortfolioDto, PortfolioPositionDto } from '../presentation/portfolio.dto';
import { portfolioStructure } from '../domain/portfolio-structure';
const types: Record<string, string> = {
@@ -1,6 +1,7 @@
import { Module } from '@nestjs/common';
import { TbankModule } from '../../../integrations/tbank/tbank.module';
import { TbankModule } from '#src/integrations/tbank/tbank.module';
import { AuthModule } from '../../auth/auth.module';
import { TbankSyncRepositoryModule } from '../tbank-sync/tbank-sync-repository.module';
import { ForecastService } from './application/forecast.service';
@@ -3,8 +3,9 @@ import type { Request } from 'express';
import { Controller, Get, Param, Req, UseGuards } from '@nestjs/common';
import { ApiBearerAuth, ApiOkResponse, ApiTags } from '@nestjs/swagger';
import { ApiProblemResponses } from '../../../../common/decorators/api-safe-error-response.decorator';
import { AccessPayload, JwtAuthGuard } from '../../../auth/auth.api';
import { ApiProblemResponses } from '#src/common/decorators/api-safe-error-response.decorator';
import { AccessPayload, JwtAuthGuard } from '#src/modules/auth/auth.api';
import { PortfolioService } from '../application/portfolio.service';
import { PortfolioResourceDto } from './portfolio.dto';
@@ -1,6 +1,7 @@
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { MoneyDto } from '../../../../common/money.dto';
import { MoneyDto } from '#src/common/money.dto';
import { AccountReferenceDto } from '../../account-reference.dto';
import { InvestmentResourceMetaDto } from '../../investment-resource.dto';