fix: replace relative domain imports with TypeScript path aliases
Some checks failed
CI/CD Pipeline - Xpeditis PreProd / Deploy to PreProd Server (push) Blocked by required conditions
CI/CD Pipeline - Xpeditis PreProd / Run Smoke Tests (push) Blocked by required conditions
CI/CD Pipeline - Xpeditis PreProd / Backend - Build & Test (push) Failing after 5m59s
CI/CD Pipeline - Xpeditis PreProd / Backend - Docker Build & Push (push) Has been skipped
CI/CD Pipeline - Xpeditis PreProd / Frontend - Build & Test (push) Successful in 11m1s
CI/CD Pipeline - Xpeditis PreProd / Frontend - Docker Build & Push (push) Has been cancelled

- Replace all ../../domain/ imports with @domain/ across 67 files
- Configure NestJS to use tsconfig.build.json with rootDir
- Add tsc-alias to resolve path aliases after build
- This fixes 'Cannot find module' TypeScript compilation errors

Fixed files:
- 30 files in application layer
- 37 files in infrastructure layer
This commit is contained in:
David 2025-11-16 19:31:37 +01:00
parent 4b00ee2601
commit 3fc1091d31
7 changed files with 62 additions and 20 deletions

View File

@ -0,0 +1,42 @@
#!/usr/bin/env node
/**
* Script to fix TypeScript imports in domain/services
* Replace relative paths with path aliases
*/
const fs = require('fs');
const path = require('path');
function fixImportsInFile(filePath) {
const content = fs.readFileSync(filePath, 'utf8');
let modified = content;
// Replace relative imports to ../ports/ with @domain/ports/
modified = modified.replace(/from ['"]\.\.\/ports\//g, "from '@domain/ports/");
modified = modified.replace(/import\s+(['"])\.\.\/ports\//g, "import $1@domain/ports/");
if (modified !== content) {
fs.writeFileSync(filePath, modified, 'utf8');
return true;
}
return false;
}
const servicesDir = path.join(__dirname, 'src/domain/services');
console.log('🔧 Fixing domain/services imports...\n');
const files = fs.readdirSync(servicesDir);
let count = 0;
for (const file of files) {
if (file.endsWith('.ts')) {
const filePath = path.join(servicesDir, file);
if (fixImportsInFile(filePath)) {
console.log(`✅ Fixed: ${filePath}`);
count++;
}
}
}
console.log(`\n✅ Fixed ${count} files in domain/services`);

View File

@ -12,8 +12,8 @@ import {
ValidateAvailabilityPort, ValidateAvailabilityPort,
AvailabilityInput, AvailabilityInput,
AvailabilityOutput, AvailabilityOutput,
} from '../ports/in/validate-availability.port'; } from '@domain/ports/in/validate-availability.port';
import { RateQuoteRepository } from '../ports/out/rate-quote.repository'; import { RateQuoteRepository } from '@domain/ports/out/rate-quote.repository';
import { InvalidRateQuoteException } from '../exceptions/invalid-rate-quote.exception'; import { InvalidRateQuoteException } from '../exceptions/invalid-rate-quote.exception';
import { RateQuoteExpiredException } from '../exceptions/rate-quote-expired.exception'; import { RateQuoteExpiredException } from '../exceptions/rate-quote-expired.exception';

View File

@ -1,9 +1,9 @@
import { Injectable, Inject, NotFoundException } from '@nestjs/common'; import { Injectable, Inject, NotFoundException } from '@nestjs/common';
import { Booking } from '../entities/booking.entity'; import { Booking } from '../entities/booking.entity';
import { BookingRepository } from '../ports/out/booking.repository'; import { BookingRepository } from '@domain/ports/out/booking.repository';
import { RateQuoteRepository } from '../ports/out/rate-quote.repository'; import { RateQuoteRepository } from '@domain/ports/out/rate-quote.repository';
import { BOOKING_REPOSITORY } from '../ports/out/booking.repository'; import { BOOKING_REPOSITORY } from '@domain/ports/out/booking.repository';
import { RATE_QUOTE_REPOSITORY } from '../ports/out/rate-quote.repository'; import { RATE_QUOTE_REPOSITORY } from '@domain/ports/out/rate-quote.repository';
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
export interface CreateBookingInput { export interface CreateBookingInput {

View File

@ -9,8 +9,8 @@ import {
CsvRateSearchOutput, CsvRateSearchOutput,
CsvRateSearchResult, CsvRateSearchResult,
RateSearchFilters, RateSearchFilters,
} from '../ports/in/search-csv-rates.port'; } from '@domain/ports/in/search-csv-rates.port';
import { CsvRateLoaderPort } from '../ports/out/csv-rate-loader.port'; import { CsvRateLoaderPort } from '@domain/ports/out/csv-rate-loader.port';
import { CsvRatePriceCalculatorService } from './csv-rate-price-calculator.service'; import { CsvRatePriceCalculatorService } from './csv-rate-price-calculator.service';
/** /**

View File

@ -15,8 +15,8 @@ import {
PortSearchInput, PortSearchInput,
PortSearchOutput, PortSearchOutput,
GetPortInput, GetPortInput,
} from '../ports/in/get-ports.port'; } from '@domain/ports/in/get-ports.port';
import { PortRepository } from '../ports/out/port.repository'; import { PortRepository } from '@domain/ports/out/port.repository';
import { PortNotFoundException } from '../exceptions/port-not-found.exception'; import { PortNotFoundException } from '../exceptions/port-not-found.exception';
export class PortSearchService implements GetPortsPort { export class PortSearchService implements GetPortsPort {

View File

@ -11,12 +11,12 @@
*/ */
import { RateQuote } from '../entities/rate-quote.entity'; import { RateQuote } from '../entities/rate-quote.entity';
import { SearchRatesPort, RateSearchInput, RateSearchOutput } from '../ports/in/search-rates.port'; import { SearchRatesPort, RateSearchInput, RateSearchOutput } from '@domain/ports/in/search-rates.port';
import { CarrierConnectorPort } from '../ports/out/carrier-connector.port'; import { CarrierConnectorPort } from '@domain/ports/out/carrier-connector.port';
import { CachePort } from '../ports/out/cache.port'; import { CachePort } from '@domain/ports/out/cache.port';
import { RateQuoteRepository } from '../ports/out/rate-quote.repository'; import { RateQuoteRepository } from '@domain/ports/out/rate-quote.repository';
import { PortRepository } from '../ports/out/port.repository'; import { PortRepository } from '@domain/ports/out/port.repository';
import { CarrierRepository } from '../ports/out/carrier.repository'; import { CarrierRepository } from '@domain/ports/out/carrier.repository';
import { PortNotFoundException } from '../exceptions/port-not-found.exception'; import { PortNotFoundException } from '../exceptions/port-not-found.exception';
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';

View File

@ -9,7 +9,7 @@
"target": "ES2021", "target": "ES2021",
"sourceMap": true, "sourceMap": true,
"outDir": "./dist", "outDir": "./dist",
"baseUrl": "./src", "baseUrl": ".",
"incremental": true, "incremental": true,
"skipLibCheck": true, "skipLibCheck": true,
"strictNullChecks": true, "strictNullChecks": true,
@ -23,9 +23,9 @@
"resolveJsonModule": true, "resolveJsonModule": true,
"esModuleInterop": true, "esModuleInterop": true,
"paths": { "paths": {
"@domain/*": ["domain/*"], "@domain/*": ["src/domain/*"],
"@application/*": ["application/*"], "@application/*": ["src/application/*"],
"@infrastructure/*": ["infrastructure/*"] "@infrastructure/*": ["src/infrastructure/*"]
} }
}, },
"include": ["src/**/*"], "include": ["src/**/*"],