mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-09-09 02:28:18 +00:00
feat( iam ): integrate IAM for auth — register, login, lazy provisioning
This commit is contained in:
@@ -35,9 +35,10 @@
|
|||||||
"@nestjs/schedule": "^6.1.3",
|
"@nestjs/schedule": "^6.1.3",
|
||||||
"@nestjs/swagger": "^7.4.0",
|
"@nestjs/swagger": "^7.4.0",
|
||||||
"@nestjs/typeorm": "^11.0.1",
|
"@nestjs/typeorm": "^11.0.1",
|
||||||
|
"@prisma/client": "^6.19.3",
|
||||||
"@sendgrid/mail": "^8.1.0",
|
"@sendgrid/mail": "^8.1.0",
|
||||||
"@tria-plc/api-common": "1.2.3",
|
"@tria-plc/api-common": "1.2.3",
|
||||||
"@tria-plc/iamapi-common": "^0.4.1",
|
"@tria-plc/iamapi-common": "^0.4.2",
|
||||||
"amqp-connection-manager": "^5.0.0",
|
"amqp-connection-manager": "^5.0.0",
|
||||||
"amqplib": "^2.0.1",
|
"amqplib": "^2.0.1",
|
||||||
"axios": "^1.7.7",
|
"axios": "^1.7.7",
|
||||||
@@ -54,7 +55,6 @@
|
|||||||
"rxjs": "^7.8.1",
|
"rxjs": "^7.8.1",
|
||||||
"swagger-ui-express": "^5.0.0",
|
"swagger-ui-express": "^5.0.0",
|
||||||
"tsconfig-paths": "^4.2.0",
|
"tsconfig-paths": "^4.2.0",
|
||||||
"@prisma/client": "^6.19.3",
|
|
||||||
"typeorm": "^0.3.30"
|
"typeorm": "^0.3.30"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
-- AddColumn: iamUserId to Passenger (cross-schema reference to iam.users — no FK enforced)
|
||||||
|
ALTER TABLE "passenger"."Passenger" ADD COLUMN "iamUserId" TEXT;
|
||||||
|
|
||||||
|
-- Unique constraint: one IAM user maps to exactly one Passenger
|
||||||
|
ALTER TABLE "passenger"."Passenger" ADD CONSTRAINT "Passenger_iamUserId_key" UNIQUE ("iamUserId");
|
||||||
|
|
||||||
|
-- Index for fast lookup by iamUserId on every protected request
|
||||||
|
CREATE INDEX "Passenger_iamUserId_idx" ON "passenger"."Passenger"("iamUserId");
|
||||||
|
|
||||||
|
-- AddColumn: iamUserId to FaydaVerificationSession (no FK — cross-schema reference to iam.users)
|
||||||
|
ALTER TABLE "passenger"."FaydaVerificationSession" ADD COLUMN "iamUserId" TEXT;
|
||||||
|
|
||||||
|
-- Index for Fayda callback to resolve IAM user
|
||||||
|
CREATE INDEX "FaydaVerificationSession_iamUserId_idx" ON "passenger"."FaydaVerificationSession"("iamUserId");
|
||||||
@@ -259,6 +259,7 @@ model Session {
|
|||||||
model Passenger {
|
model Passenger {
|
||||||
id String @id @default(uuid())
|
id String @id @default(uuid())
|
||||||
userId String @unique
|
userId String @unique
|
||||||
|
iamUserId String? @unique
|
||||||
defaultTravelerProfileId String?
|
defaultTravelerProfileId String?
|
||||||
preferredLanguage String?
|
preferredLanguage String?
|
||||||
createdAt DateTime @default(now())
|
createdAt DateTime @default(now())
|
||||||
@@ -270,6 +271,7 @@ model Passenger {
|
|||||||
travelerProfiles TravelerProfile[]
|
travelerProfiles TravelerProfile[]
|
||||||
savedRoutes SavedRoute[]
|
savedRoutes SavedRoute[]
|
||||||
@@index([userId])
|
@@index([userId])
|
||||||
|
@@index([iamUserId])
|
||||||
|
|
||||||
@@schema("passenger")
|
@@schema("passenger")
|
||||||
}
|
}
|
||||||
@@ -1285,11 +1287,13 @@ model FaydaVerificationSession {
|
|||||||
completedAt DateTime?
|
completedAt DateTime?
|
||||||
|
|
||||||
userId String?
|
userId String?
|
||||||
|
iamUserId String?
|
||||||
bookingId String?
|
bookingId String?
|
||||||
|
|
||||||
user User? @relation(fields: [userId], references: [id], onDelete: Cascade)
|
user User? @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||||
|
|
||||||
@@index([userId])
|
@@index([userId])
|
||||||
|
@@index([iamUserId])
|
||||||
@@index([bookingId])
|
@@index([bookingId])
|
||||||
@@index([state])
|
@@index([state])
|
||||||
@@index([expiresAt])
|
@@index([expiresAt])
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ import { FraudModule } from './modules/fraud/fraud.module';
|
|||||||
import { SeatClassesModule } from './modules/seat-classes/seat-classes.module';
|
import { SeatClassesModule } from './modules/seat-classes/seat-classes.module';
|
||||||
import { FareEngineModule } from './modules/fare-engine/fare-engine.module';
|
import { FareEngineModule } from './modules/fare-engine/fare-engine.module';
|
||||||
import { VerifaydaModule } from './modules/verifayda/verifayda.module';
|
import { VerifaydaModule } from './modules/verifayda/verifayda.module';
|
||||||
|
import {AuthModule} from "@/modules/auth/auth.module";
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -74,6 +75,7 @@ import { VerifaydaModule } from './modules/verifayda/verifayda.module';
|
|||||||
TriaIamModule.forRoot(),
|
TriaIamModule.forRoot(),
|
||||||
PrismaModule,
|
PrismaModule,
|
||||||
I18nModule,
|
I18nModule,
|
||||||
|
AuthModule,
|
||||||
StationsModule,
|
StationsModule,
|
||||||
FleetModule,
|
FleetModule,
|
||||||
SchedulesModule,
|
SchedulesModule,
|
||||||
@@ -107,7 +109,11 @@ export class AppModule implements OnApplicationBootstrap {
|
|||||||
) { }
|
) { }
|
||||||
|
|
||||||
async onApplicationBootstrap() {
|
async onApplicationBootstrap() {
|
||||||
await this.seeder.run();
|
try {
|
||||||
|
await this.seeder.run();
|
||||||
|
} catch (err) {
|
||||||
|
console.error('[DataSeeder] Seed failed (non-fatal during IAM migration phase):', (err as Error).message);
|
||||||
|
}
|
||||||
// await this.edrOrgSeeder.run();
|
// await this.edrOrgSeeder.run();
|
||||||
// await this.demoUsersSeeder.run();
|
// await this.demoUsersSeeder.run();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ export class SessionActivityInterceptor implements NestInterceptor {
|
|||||||
const response = context.switchToHttp().getResponse();
|
const response = context.switchToHttp().getResponse();
|
||||||
const user = request.user;
|
const user = request.user;
|
||||||
|
|
||||||
if (user?.userId) {
|
if (user?.id) {
|
||||||
const session = await this.prisma.session.findFirst({
|
const session = await this.prisma.session.findFirst({
|
||||||
where: { userId: user.userId },
|
where: { userId: user.id },
|
||||||
orderBy: { lastActivityAt: 'desc' },
|
orderBy: { lastActivityAt: 'desc' },
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,82 +1,62 @@
|
|||||||
import { Body, Controller, Post, HttpCode, HttpStatus, UseGuards, Get, Request, UnauthorizedException } from '@nestjs/common';
|
import { Body, Controller, Post, HttpCode, HttpStatus, UseGuards, Get, Request, UnauthorizedException } from '@nestjs/common';
|
||||||
import { ApiTags, ApiOperation, ApiResponse, ApiBody, ApiBearerAuth } from '@nestjs/swagger';
|
import { ApiTags, ApiOperation, ApiResponse, ApiBody, ApiBearerAuth } from '@nestjs/swagger';
|
||||||
import { AuthService } from './auth.service';
|
import { AuthService } from './auth.service';
|
||||||
|
import { PassengerAuthService } from './passenger-auth.service';
|
||||||
import { RegisterDto, LoginDto, RequestOtpDto, VerifyOtpDto, RequestPasswordResetDto, ResetPasswordDto } from './auth.dto';
|
import { RegisterDto, LoginDto, RequestOtpDto, VerifyOtpDto, RequestPasswordResetDto, ResetPasswordDto } from './auth.dto';
|
||||||
import { JwtGuard } from '../../common/jwt.guard';
|
import { JwtGuard } from '../../common/jwt.guard';
|
||||||
|
|
||||||
@ApiTags('Auth')
|
@ApiTags('Auth')
|
||||||
@Controller('auth')
|
@Controller('auth')
|
||||||
export class AuthController {
|
export class AuthController {
|
||||||
constructor(private service: AuthService) {}
|
constructor(
|
||||||
|
private service: AuthService,
|
||||||
|
private passengerAuthService: PassengerAuthService,
|
||||||
|
) {}
|
||||||
|
|
||||||
@Post('register')
|
@Post('register')
|
||||||
@ApiOperation({
|
@ApiOperation({ summary: 'Register new passenger account' })
|
||||||
summary: 'Register new passenger account',
|
@ApiResponse({ status: 201, description: 'Account created. Returns token + user.' })
|
||||||
description: 'Create a new passenger account with email, phone, and password. Returns user details and JWT token for immediate login.'
|
|
||||||
})
|
|
||||||
@ApiResponse({ status: 201, description: 'Account created successfully. Returns user object and JWT token.' })
|
|
||||||
@ApiResponse({ status: 400, description: 'Validation error (invalid email, weak password, etc.)' })
|
|
||||||
@ApiResponse({ status: 409, description: 'Email or phone already registered' })
|
@ApiResponse({ status: 409, description: 'Email or phone already registered' })
|
||||||
@ApiBody({ type: RegisterDto })
|
@ApiBody({ type: RegisterDto })
|
||||||
register(@Body() dto: RegisterDto) { return this.service.register(dto); }
|
register(@Request() req: any, @Body() dto: RegisterDto) {
|
||||||
|
return this.passengerAuthService.register(dto, req);
|
||||||
|
}
|
||||||
|
|
||||||
@Post('login')
|
@Post('login')
|
||||||
@HttpCode(HttpStatus.OK)
|
@HttpCode(HttpStatus.OK)
|
||||||
@ApiOperation({
|
@ApiOperation({ summary: 'Login with email and password' })
|
||||||
summary: 'Login with email and password',
|
@ApiResponse({ status: 200, description: 'Login successful. Returns token + passengerId.' })
|
||||||
description: 'Authenticate user and receive JWT token. Token expires in 7 days by default. Failed login attempts are tracked and account may be locked after 5 consecutive failures.'
|
@ApiResponse({ status: 401, description: 'Invalid credentials' })
|
||||||
})
|
|
||||||
@ApiResponse({ status: 200, description: 'Login successful. Returns JWT token and user details.' })
|
|
||||||
@ApiResponse({ status: 401, description: 'Invalid credentials or account locked' })
|
|
||||||
@ApiResponse({ status: 403, description: 'Account temporarily blocked due to fraud detection' })
|
|
||||||
@ApiBody({ type: LoginDto })
|
@ApiBody({ type: LoginDto })
|
||||||
login(@Body() dto: LoginDto) { return this.service.login(dto); }
|
login(@Request() req: any, @Body() dto: LoginDto) {
|
||||||
|
return this.passengerAuthService.login(dto, req);
|
||||||
|
}
|
||||||
|
|
||||||
@Post('otp/request')
|
@Post('otp/request')
|
||||||
@HttpCode(HttpStatus.OK)
|
@HttpCode(HttpStatus.OK)
|
||||||
@ApiOperation({
|
@ApiOperation({ summary: 'Request OTP verification code' })
|
||||||
summary: 'Request OTP verification code',
|
@ApiResponse({ status: 200, description: 'OTP sent successfully' })
|
||||||
description: 'Send a 6-digit OTP code to user email. Code expires in 10 minutes. Used for registration verification, password reset, or two-factor authentication.'
|
|
||||||
})
|
|
||||||
@ApiResponse({ status: 200, description: 'OTP sent successfully to email' })
|
|
||||||
@ApiResponse({ status: 404, description: 'Email not found (for PASSWORD_RESET purpose)' })
|
|
||||||
@ApiResponse({ status: 429, description: 'Too many OTP requests. Please wait before requesting again.' })
|
|
||||||
@ApiBody({ type: RequestOtpDto })
|
@ApiBody({ type: RequestOtpDto })
|
||||||
requestOtp(@Body() dto: RequestOtpDto) { return this.service.requestOtp(dto); }
|
requestOtp(@Body() dto: RequestOtpDto) { return this.service.requestOtp(dto); }
|
||||||
|
|
||||||
@Post('otp/verify')
|
@Post('otp/verify')
|
||||||
@HttpCode(HttpStatus.OK)
|
@HttpCode(HttpStatus.OK)
|
||||||
@ApiOperation({
|
@ApiOperation({ summary: 'Verify OTP code' })
|
||||||
summary: 'Verify OTP code',
|
|
||||||
description: 'Validate the 6-digit OTP code sent to user email. Code must match and not be expired.'
|
|
||||||
})
|
|
||||||
@ApiResponse({ status: 200, description: 'OTP verified successfully' })
|
@ApiResponse({ status: 200, description: 'OTP verified successfully' })
|
||||||
@ApiResponse({ status: 400, description: 'Invalid or expired OTP code' })
|
|
||||||
@ApiResponse({ status: 404, description: 'No OTP found for this email and purpose' })
|
|
||||||
@ApiBody({ type: VerifyOtpDto })
|
@ApiBody({ type: VerifyOtpDto })
|
||||||
verifyOtp(@Body() dto: VerifyOtpDto) { return this.service.verifyOtp(dto); }
|
verifyOtp(@Body() dto: VerifyOtpDto) { return this.service.verifyOtp(dto); }
|
||||||
|
|
||||||
@Post('password/reset-request')
|
@Post('password/reset-request')
|
||||||
@HttpCode(HttpStatus.OK)
|
@HttpCode(HttpStatus.OK)
|
||||||
@ApiOperation({
|
@ApiOperation({ summary: 'Request password reset link' })
|
||||||
summary: 'Request password reset link',
|
@ApiResponse({ status: 200, description: 'Password reset email sent' })
|
||||||
description: 'Send password reset link to user email. Link contains a secure token valid for 1 hour.'
|
|
||||||
})
|
|
||||||
@ApiResponse({ status: 200, description: 'Password reset email sent successfully' })
|
|
||||||
@ApiResponse({ status: 404, description: 'Email not found' })
|
|
||||||
@ApiResponse({ status: 429, description: 'Too many reset requests. Please wait before trying again.' })
|
|
||||||
@ApiBody({ type: RequestPasswordResetDto })
|
@ApiBody({ type: RequestPasswordResetDto })
|
||||||
requestPasswordReset(@Body() dto: RequestPasswordResetDto) { return this.service.requestPasswordReset(dto); }
|
requestPasswordReset(@Body() dto: RequestPasswordResetDto) { return this.service.requestPasswordReset(dto); }
|
||||||
|
|
||||||
@Post('password/reset')
|
@Post('password/reset')
|
||||||
@HttpCode(HttpStatus.OK)
|
@HttpCode(HttpStatus.OK)
|
||||||
@ApiOperation({
|
@ApiOperation({ summary: 'Reset password with token' })
|
||||||
summary: 'Reset password with token',
|
|
||||||
description: 'Reset user password using the token received via email. Token is single-use and expires after 1 hour.'
|
|
||||||
})
|
|
||||||
@ApiResponse({ status: 200, description: 'Password reset successfully' })
|
@ApiResponse({ status: 200, description: 'Password reset successfully' })
|
||||||
@ApiResponse({ status: 400, description: 'Invalid, expired, or already used token' })
|
|
||||||
@ApiResponse({ status: 404, description: 'User not found' })
|
|
||||||
@ApiBody({ type: ResetPasswordDto })
|
@ApiBody({ type: ResetPasswordDto })
|
||||||
resetPassword(@Body() dto: ResetPasswordDto) { return this.service.resetPassword(dto); }
|
resetPassword(@Body() dto: ResetPasswordDto) { return this.service.resetPassword(dto); }
|
||||||
|
|
||||||
@@ -84,137 +64,34 @@ export class AuthController {
|
|||||||
@HttpCode(HttpStatus.OK)
|
@HttpCode(HttpStatus.OK)
|
||||||
@UseGuards(JwtGuard)
|
@UseGuards(JwtGuard)
|
||||||
@ApiBearerAuth('JWT-auth')
|
@ApiBearerAuth('JWT-auth')
|
||||||
@ApiOperation({
|
@ApiOperation({ summary: 'Logout current user' })
|
||||||
summary: 'Logout current user',
|
@ApiResponse({ status: 200, description: 'Logout successful' })
|
||||||
description: `Logout the authenticated user and invalidate their session.
|
@ApiResponse({ status: 401, description: 'Unauthorized' })
|
||||||
|
|
||||||
### What happens:
|
|
||||||
- Invalidates the current session token
|
|
||||||
- Records logout in audit log
|
|
||||||
- Frontend should clear stored token and redirect to home
|
|
||||||
|
|
||||||
### Authentication:
|
|
||||||
- **Required**: JWT Bearer Token
|
|
||||||
- Token will be invalidated after successful logout`
|
|
||||||
})
|
|
||||||
@ApiResponse({
|
|
||||||
status: 200,
|
|
||||||
description: 'Logout successful',
|
|
||||||
schema: {
|
|
||||||
example: {
|
|
||||||
success: true,
|
|
||||||
message: 'Logged out successfully'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
@ApiResponse({ status: 401, description: 'Unauthorized - Invalid or missing token' })
|
|
||||||
logout(@Request() req: any) {
|
logout(@Request() req: any) {
|
||||||
if (!req.user || !req.user.userId) {
|
const userId = req.user?.id ?? req.user?.userId;
|
||||||
throw new UnauthorizedException('User not authenticated');
|
if (!userId) throw new UnauthorizedException('User not authenticated');
|
||||||
}
|
return this.service.logout(userId);
|
||||||
return this.service.logout(req.user.userId);
|
}
|
||||||
|
|
||||||
|
@Get('me')
|
||||||
|
@UseGuards(JwtGuard)
|
||||||
|
@ApiBearerAuth('JWT-auth')
|
||||||
|
@ApiOperation({ summary: '[DEV] Inspect raw JWT payload — shows full req.user from JwtGuard' })
|
||||||
|
@ApiResponse({ status: 200, description: 'Returns the full req.user object set by JwtGuard' })
|
||||||
|
@ApiResponse({ status: 401, description: 'Unauthorized' })
|
||||||
|
getMe(@Request() req: any) {
|
||||||
|
return { user: req.user };
|
||||||
}
|
}
|
||||||
|
|
||||||
@Get('profile')
|
@Get('profile')
|
||||||
@UseGuards(JwtGuard)
|
@UseGuards(JwtGuard)
|
||||||
@ApiBearerAuth('JWT-auth')
|
@ApiBearerAuth('JWT-auth')
|
||||||
@ApiOperation({
|
@ApiOperation({ summary: 'Get current user profile' })
|
||||||
summary: 'Get current user profile',
|
@ApiResponse({ status: 200, description: 'User profile retrieved successfully' })
|
||||||
description: `**Returns complete user profile with all connected data**
|
@ApiResponse({ status: 401, description: 'Unauthorized' })
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Response Includes
|
|
||||||
|
|
||||||
#### User Information
|
|
||||||
- Basic details (id, email, phone, fullName, role)
|
|
||||||
- Nationality and document information
|
|
||||||
- Fayda verification status
|
|
||||||
- Account timestamps (created, last login)
|
|
||||||
|
|
||||||
#### Passenger Data (if role=PASSENGER)
|
|
||||||
- Passenger ID and preferences
|
|
||||||
- **Loyalty Account**: Tier, points balance, lifetime points
|
|
||||||
- **Wallet Account**: Balance (minor units), currency
|
|
||||||
|
|
||||||
#### User Preferences
|
|
||||||
- Language, notification settings, etc.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Use Cases
|
|
||||||
|
|
||||||
1. **App Initialization**: Fetch on app load to get user context
|
|
||||||
|
|
||||||
2. **Profile Pre-fill**: Use data to auto-fill booking forms
|
|
||||||
|
|
||||||
3. **Verification Check**: Check \`faydaVerified\` before registration
|
|
||||||
|
|
||||||
4. **Loyalty Display**: Show tier and points in UI
|
|
||||||
|
|
||||||
5. **Wallet Balance**: Display available balance
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Authentication
|
|
||||||
- **Required**: JWT Bearer Token
|
|
||||||
- Token must be valid and not expired
|
|
||||||
- Returns profile for authenticated user only`,
|
|
||||||
})
|
|
||||||
@ApiResponse({
|
|
||||||
status: 200,
|
|
||||||
description: 'User profile retrieved successfully',
|
|
||||||
schema: {
|
|
||||||
example: {
|
|
||||||
id: 'user-uuid-123',
|
|
||||||
email: 'kelemu@email.com',
|
|
||||||
phone: '+251911234567',
|
|
||||||
fullName: 'Kelemu Abebe',
|
|
||||||
role: 'PASSENGER',
|
|
||||||
nationality: 'Ethiopian',
|
|
||||||
nationalityCode: 'ET',
|
|
||||||
nationalId: null,
|
|
||||||
passportNumber: null,
|
|
||||||
faydaVerified: true,
|
|
||||||
faydaVerifiedAt: '2024-01-15T10:30:00.000Z',
|
|
||||||
lastLoginAt: '2024-01-20T14:22:00.000Z',
|
|
||||||
createdAt: '2023-12-01T08:00:00.000Z',
|
|
||||||
passenger: {
|
|
||||||
id: 'passenger-uuid-456',
|
|
||||||
preferredLanguage: 'am',
|
|
||||||
loyalty: {
|
|
||||||
tier: 'SILVER',
|
|
||||||
pointsBalance: 1500,
|
|
||||||
lifetimePoints: 3000
|
|
||||||
},
|
|
||||||
wallet: {
|
|
||||||
balanceMinor: 50000,
|
|
||||||
currency: 'ETB'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
preferences: {
|
|
||||||
emailNotifications: true,
|
|
||||||
smsNotifications: true,
|
|
||||||
language: 'am'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
@ApiResponse({
|
|
||||||
status: 401,
|
|
||||||
description: 'Unauthorized - Invalid or missing JWT token',
|
|
||||||
schema: {
|
|
||||||
example: {
|
|
||||||
statusCode: 401,
|
|
||||||
message: 'Unauthorized'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
getProfile(@Request() req: any) {
|
getProfile(@Request() req: any) {
|
||||||
console.log('Profile request - User from JWT:', req.user);
|
const userId = req.user?.id ?? req.user?.userId;
|
||||||
if (!req.user || !req.user.userId) {
|
if (!userId) throw new UnauthorizedException('User not authenticated');
|
||||||
throw new UnauthorizedException('User not authenticated');
|
return this.service.getProfile(userId);
|
||||||
}
|
|
||||||
return this.service.getProfile(req.user.userId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,6 +37,15 @@ export class RegisterDto {
|
|||||||
@MinLength(8)
|
@MinLength(8)
|
||||||
password: string;
|
password: string;
|
||||||
|
|
||||||
|
@ApiPropertyOptional({
|
||||||
|
description: 'Confirm password (must match password)',
|
||||||
|
example: 'SecurePass123',
|
||||||
|
format: 'password'
|
||||||
|
})
|
||||||
|
@IsOptional()
|
||||||
|
@IsString()
|
||||||
|
confirmPassword?: string;
|
||||||
|
|
||||||
@ApiPropertyOptional({
|
@ApiPropertyOptional({
|
||||||
description: 'Nationality of the passenger',
|
description: 'Nationality of the passenger',
|
||||||
example: 'Ethiopian'
|
example: 'Ethiopian'
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { PassportModule } from '@nestjs/passport';
|
|||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import { AuthController } from './auth.controller';
|
import { AuthController } from './auth.controller';
|
||||||
import { AuthService } from './auth.service';
|
import { AuthService } from './auth.service';
|
||||||
|
import { PassengerAuthService } from './passenger-auth.service';
|
||||||
import { JwtStrategy } from '../../common/jwt.strategy';
|
import { JwtStrategy } from '../../common/jwt.strategy';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
@@ -18,7 +19,7 @@ import { JwtStrategy } from '../../common/jwt.strategy';
|
|||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
controllers: [AuthController],
|
controllers: [AuthController],
|
||||||
providers: [AuthService, JwtStrategy],
|
providers: [AuthService, PassengerAuthService, JwtStrategy],
|
||||||
exports: [JwtModule],
|
exports: [JwtModule],
|
||||||
})
|
})
|
||||||
export class AuthModule {}
|
export class AuthModule {}
|
||||||
|
|||||||
@@ -0,0 +1,217 @@
|
|||||||
|
import {
|
||||||
|
Injectable,
|
||||||
|
ConflictException,
|
||||||
|
InternalServerErrorException,
|
||||||
|
UnauthorizedException,
|
||||||
|
} from '@nestjs/common';
|
||||||
|
import { ModuleRef, ContextIdFactory } from '@nestjs/core';
|
||||||
|
import { InjectDataSource } from '@nestjs/typeorm';
|
||||||
|
import { DataSource } from 'typeorm';
|
||||||
|
import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||||
|
import { AuthService as IamAuthService } from '@tria-plc/iamapi-common/module/auth/services/auth.service';
|
||||||
|
import { EUserType } from '@tria-plc/api-common/utils/enums/user.enum';
|
||||||
|
import { PrismaService } from '../../common/prisma.service';
|
||||||
|
import { RegisterDto, LoginDto } from './auth.dto';
|
||||||
|
|
||||||
|
type IamUserRow = { id: string; name: { en: string; am: string } | null; phone_number: string | null };
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class PassengerAuthService {
|
||||||
|
constructor(
|
||||||
|
private readonly prisma: PrismaService,
|
||||||
|
@InjectDataSource() private readonly dataSource: DataSource,
|
||||||
|
private readonly moduleRef: ModuleRef,
|
||||||
|
private readonly eventEmitter: EventEmitter2,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
private async resolveIamAuthService(req: any): Promise<IamAuthService> {
|
||||||
|
const contextId = ContextIdFactory.getByRequest(req);
|
||||||
|
this.moduleRef.registerRequestByContextId(req, contextId);
|
||||||
|
return this.moduleRef.resolve(IamAuthService, contextId, { strict: false });
|
||||||
|
}
|
||||||
|
|
||||||
|
async register(dto: RegisterDto, req: any) {
|
||||||
|
const existing = await this.prisma.user.findFirst({
|
||||||
|
where: { OR: [{ email: dto.email }, { phone: dto.phone }] },
|
||||||
|
});
|
||||||
|
if (existing) throw new ConflictException('Email or phone already registered');
|
||||||
|
|
||||||
|
const iamAuthService = await this.resolveIamAuthService(req);
|
||||||
|
|
||||||
|
const { token, refreshToken } = await iamAuthService.signupWithPassword({
|
||||||
|
email: dto.email,
|
||||||
|
username: dto.email,
|
||||||
|
phoneNumber: dto.phone,
|
||||||
|
userType: EUserType.INDIVIDUAL,
|
||||||
|
name: { en: dto.fullName, am: dto.fullName },
|
||||||
|
password: dto.password,
|
||||||
|
confirmPassword: dto.confirmPassword ?? dto.password,
|
||||||
|
});
|
||||||
|
|
||||||
|
const iamRows = await this.dataSource.query<IamUserRow[]>(
|
||||||
|
`SELECT id, name, phone_number FROM iam.users WHERE email = $1 LIMIT 1`,
|
||||||
|
[dto.email],
|
||||||
|
);
|
||||||
|
if (!iamRows.length) {
|
||||||
|
await this.compensateIamSignup(dto.email);
|
||||||
|
throw new InternalServerErrorException('Account creation failed. Please try again.');
|
||||||
|
}
|
||||||
|
const iamUserId = iamRows[0].id;
|
||||||
|
|
||||||
|
let passengerId: string;
|
||||||
|
try {
|
||||||
|
const result = await this.provisionPassengerSatellite({
|
||||||
|
iamUserId,
|
||||||
|
email: dto.email,
|
||||||
|
fullName: dto.fullName,
|
||||||
|
phone: dto.phone,
|
||||||
|
nationality: dto.nationality,
|
||||||
|
nationalId: dto.nationalId,
|
||||||
|
passportNumber: dto.passportNumber,
|
||||||
|
auditAction: 'USER_REGISTERED',
|
||||||
|
});
|
||||||
|
passengerId = result.passengerId;
|
||||||
|
} catch {
|
||||||
|
await this.compensateIamSignup(dto.email);
|
||||||
|
throw new InternalServerErrorException('Account creation failed. Please try again.');
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
token,
|
||||||
|
refreshToken,
|
||||||
|
user: { id: iamUserId, iamUserId, email: dto.email, fullName: dto.fullName, passengerId },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
async login(dto: LoginDto, req: any) {
|
||||||
|
const iamAuthService = await this.resolveIamAuthService(req);
|
||||||
|
|
||||||
|
let iamResult: { token: string; refreshToken: string } | { mfaRequired: boolean };
|
||||||
|
try {
|
||||||
|
iamResult = await iamAuthService.login({ email: dto.email, password: dto.password });
|
||||||
|
} catch {
|
||||||
|
this.eventEmitter.emit('auth.login.failed', { email: dto.email });
|
||||||
|
throw new UnauthorizedException('Invalid credentials');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('mfaRequired' in iamResult && iamResult.mfaRequired) {
|
||||||
|
return iamResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { token, refreshToken } = iamResult as { token: string; refreshToken: string };
|
||||||
|
|
||||||
|
const iamRows = await this.dataSource.query<IamUserRow[]>(
|
||||||
|
`SELECT id, name, phone_number FROM iam.users WHERE email = $1 LIMIT 1`,
|
||||||
|
[dto.email],
|
||||||
|
);
|
||||||
|
const iamUser = iamRows[0];
|
||||||
|
if (!iamUser) {
|
||||||
|
throw new InternalServerErrorException('IAM user not found after successful authentication');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find existing Passenger record or lazy-provision one on first login
|
||||||
|
let passenger = await this.prisma.passenger.findUnique({
|
||||||
|
where: { iamUserId: iamUser.id },
|
||||||
|
select: { id: true },
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!passenger) {
|
||||||
|
const fullName = iamUser.name?.en ?? iamUser.name?.am ?? dto.email;
|
||||||
|
const result = await this.provisionPassengerSatellite({
|
||||||
|
iamUserId: iamUser.id,
|
||||||
|
email: dto.email,
|
||||||
|
fullName,
|
||||||
|
phone: iamUser.phone_number ?? '',
|
||||||
|
auditAction: 'USER_AUTO_PROVISIONED',
|
||||||
|
});
|
||||||
|
passenger = { id: result.passengerId };
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
token,
|
||||||
|
refreshToken,
|
||||||
|
user: { id: iamUser.id, iamUserId: iamUser.id, email: dto.email, passengerId: passenger.id },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private async provisionPassengerSatellite(data: {
|
||||||
|
iamUserId: string;
|
||||||
|
email: string;
|
||||||
|
fullName: string;
|
||||||
|
phone: string;
|
||||||
|
nationality?: string;
|
||||||
|
nationalId?: string;
|
||||||
|
passportNumber?: string;
|
||||||
|
auditAction: string;
|
||||||
|
}): Promise<{ passengerId: string }> {
|
||||||
|
return this.prisma.$transaction(async (tx) => {
|
||||||
|
// Check if a local User already exists (pre-IAM registration)
|
||||||
|
const existingUser = await tx.user.findFirst({
|
||||||
|
where: { OR: [{ email: data.email }, { phone: data.phone }] },
|
||||||
|
select: { id: true },
|
||||||
|
});
|
||||||
|
|
||||||
|
if (existingUser) {
|
||||||
|
// User already exists — find their Passenger and stamp iamUserId
|
||||||
|
const existingPassenger = await tx.passenger.findFirst({
|
||||||
|
where: { userId: existingUser.id },
|
||||||
|
select: { id: true },
|
||||||
|
});
|
||||||
|
|
||||||
|
if (existingPassenger) {
|
||||||
|
await tx.passenger.update({
|
||||||
|
where: { id: existingPassenger.id },
|
||||||
|
data: { iamUserId: data.iamUserId },
|
||||||
|
});
|
||||||
|
return { passengerId: existingPassenger.id };
|
||||||
|
}
|
||||||
|
|
||||||
|
// User exists but no Passenger yet — create just the Passenger + sub-records
|
||||||
|
const passenger = await tx.passenger.create({
|
||||||
|
data: { userId: existingUser.id, iamUserId: data.iamUserId },
|
||||||
|
});
|
||||||
|
await tx.loyaltyAccount.create({ data: { passengerId: passenger.id } });
|
||||||
|
await tx.walletAccount.create({ data: { passengerId: passenger.id } });
|
||||||
|
return { passengerId: passenger.id };
|
||||||
|
}
|
||||||
|
|
||||||
|
// Brand new user — create the full satellite set
|
||||||
|
const user = await tx.user.create({
|
||||||
|
data: {
|
||||||
|
email: data.email,
|
||||||
|
phone: data.phone,
|
||||||
|
fullName: data.fullName,
|
||||||
|
passwordHash: 'IAM_MANAGED',
|
||||||
|
nationality: data.nationality,
|
||||||
|
nationalId: data.nationalId,
|
||||||
|
passportNumber: data.passportNumber,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const passenger = await tx.passenger.create({
|
||||||
|
data: { userId: user.id, iamUserId: data.iamUserId },
|
||||||
|
});
|
||||||
|
await tx.loyaltyAccount.create({ data: { passengerId: passenger.id } });
|
||||||
|
await tx.walletAccount.create({ data: { passengerId: passenger.id } });
|
||||||
|
await tx.userPreferences.create({ data: { userId: user.id } });
|
||||||
|
await tx.auditLog.create({
|
||||||
|
data: {
|
||||||
|
userId: user.id,
|
||||||
|
action: data.auditAction,
|
||||||
|
entityType: 'User',
|
||||||
|
entityId: user.id,
|
||||||
|
newData: { email: data.email, iamUserId: data.iamUserId },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return { passengerId: passenger.id };
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private async compensateIamSignup(email: string): Promise<void> {
|
||||||
|
try {
|
||||||
|
await this.dataSource.query(`DELETE FROM iam.sessions WHERE email = $1`, [email]);
|
||||||
|
await this.dataSource.query(`DELETE FROM iam.users WHERE email = $1`, [email]);
|
||||||
|
} catch (err) {
|
||||||
|
console.error('[PassengerAuthService] IAM compensating cleanup failed for', email, (err as Error).message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
594
pnpm-lock.yaml
generated
594
pnpm-lock.yaml
generated
@@ -10,7 +10,7 @@ importers:
|
|||||||
devDependencies:
|
devDependencies:
|
||||||
'@commitlint/cli':
|
'@commitlint/cli':
|
||||||
specifier: ^19.5.0
|
specifier: ^19.5.0
|
||||||
version: 19.8.1(@types/node@24.12.4)(typescript@5.9.3)
|
version: 19.8.1(@types/node@25.9.1)(typescript@5.9.3)
|
||||||
'@commitlint/config-conventional':
|
'@commitlint/config-conventional':
|
||||||
specifier: ^19.5.0
|
specifier: ^19.5.0
|
||||||
version: 19.8.1
|
version: 19.8.1
|
||||||
@@ -30,6 +30,109 @@ importers:
|
|||||||
specifier: ^5.5.4
|
specifier: ^5.5.4
|
||||||
version: 5.9.3
|
version: 5.9.3
|
||||||
|
|
||||||
|
apps/edr-freight-api:
|
||||||
|
dependencies:
|
||||||
|
'@edr/api-common':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../packages/api-common
|
||||||
|
'@edr/types':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../packages/types
|
||||||
|
'@nestjs/common':
|
||||||
|
specifier: ^11.0.0
|
||||||
|
version: 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/config':
|
||||||
|
specifier: ^4.0.0
|
||||||
|
version: 4.0.4(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(rxjs@7.8.2)
|
||||||
|
'@nestjs/core':
|
||||||
|
specifier: ^11.0.0
|
||||||
|
version: 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/microservices':
|
||||||
|
specifier: ^11.0.0
|
||||||
|
version: 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(amqp-connection-manager@5.0.0(amqplib@2.0.1))(amqplib@2.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/platform-express':
|
||||||
|
specifier: ^11.0.0
|
||||||
|
version: 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)
|
||||||
|
'@nestjs/swagger':
|
||||||
|
specifier: ^11.4.2
|
||||||
|
version: 11.4.4(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)
|
||||||
|
'@nestjs/typeorm':
|
||||||
|
specifier: ^11.0.1
|
||||||
|
version: 11.0.1(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))
|
||||||
|
'@tria-plc/api-common':
|
||||||
|
specifier: ^0.1.0
|
||||||
|
version: 0.1.4(117ec8ab2e46133742e6b9e4ae304059)
|
||||||
|
'@tria-plc/iamapi-common':
|
||||||
|
specifier: ^0.1.0
|
||||||
|
version: 0.1.6(d02ea0b424ed983863ad8209ac09ab52)
|
||||||
|
class-transformer:
|
||||||
|
specifier: ^0.5.1
|
||||||
|
version: 0.5.1
|
||||||
|
class-validator:
|
||||||
|
specifier: ^0.14.1
|
||||||
|
version: 0.14.4
|
||||||
|
pg:
|
||||||
|
specifier: ^8.13.0
|
||||||
|
version: 8.21.0
|
||||||
|
reflect-metadata:
|
||||||
|
specifier: ^0.2.2
|
||||||
|
version: 0.2.2
|
||||||
|
rxjs:
|
||||||
|
specifier: ^7.8.1
|
||||||
|
version: 7.8.2
|
||||||
|
typeorm:
|
||||||
|
specifier: ^0.3.20
|
||||||
|
version: 0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3))
|
||||||
|
devDependencies:
|
||||||
|
'@edr/eslint-config':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../packages/config/eslint-config
|
||||||
|
'@edr/tsconfig':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../packages/config/tsconfig
|
||||||
|
'@nestjs/cli':
|
||||||
|
specifier: ^11.0.0
|
||||||
|
version: 11.0.21(@types/node@20.19.41)(prettier@3.8.3)
|
||||||
|
'@nestjs/schematics':
|
||||||
|
specifier: ^11.0.0
|
||||||
|
version: 11.1.0(chokidar@4.0.3)(prettier@3.8.3)(typescript@5.9.3)
|
||||||
|
'@nestjs/testing':
|
||||||
|
specifier: ^11.0.0
|
||||||
|
version: 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)
|
||||||
|
'@types/express':
|
||||||
|
specifier: ^5.0.0
|
||||||
|
version: 5.0.6
|
||||||
|
'@types/jest':
|
||||||
|
specifier: ^29.5.13
|
||||||
|
version: 29.5.14
|
||||||
|
'@types/node':
|
||||||
|
specifier: ^20.14.0
|
||||||
|
version: 20.19.41
|
||||||
|
'@types/supertest':
|
||||||
|
specifier: ^6.0.2
|
||||||
|
version: 6.0.3
|
||||||
|
jest:
|
||||||
|
specifier: ^29.7.0
|
||||||
|
version: 29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3))
|
||||||
|
supertest:
|
||||||
|
specifier: ^7.0.0
|
||||||
|
version: 7.2.2
|
||||||
|
ts-jest:
|
||||||
|
specifier: ^29.2.5
|
||||||
|
version: 29.4.11(@babel/core@7.29.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.41)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))(typescript@5.9.3)
|
||||||
|
ts-loader:
|
||||||
|
specifier: ^9.5.1
|
||||||
|
version: 9.6.0(typescript@5.9.3)(webpack@5.106.0)
|
||||||
|
ts-node:
|
||||||
|
specifier: ^10.9.2
|
||||||
|
version: 10.9.2(@types/node@20.19.41)(typescript@5.9.3)
|
||||||
|
tsconfig-paths:
|
||||||
|
specifier: ^4.2.0
|
||||||
|
version: 4.2.0
|
||||||
|
typescript:
|
||||||
|
specifier: ^5.5.4
|
||||||
|
version: 5.9.3
|
||||||
|
|
||||||
apps/edr-passenger-api:
|
apps/edr-passenger-api:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/axios':
|
'@nestjs/axios':
|
||||||
@@ -65,15 +168,18 @@ importers:
|
|||||||
'@nestjs/typeorm':
|
'@nestjs/typeorm':
|
||||||
specifier: ^11.0.1
|
specifier: ^11.0.1
|
||||||
version: 11.0.1(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))
|
version: 11.0.1(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))
|
||||||
|
'@prisma/client':
|
||||||
|
specifier: ^6.19.3
|
||||||
|
version: 6.19.3(prisma@6.19.3(typescript@5.9.3))(typescript@5.9.3)
|
||||||
'@sendgrid/mail':
|
'@sendgrid/mail':
|
||||||
specifier: ^8.1.0
|
specifier: ^8.1.0
|
||||||
version: 8.1.6
|
version: 8.1.6
|
||||||
'@tria-plc/api-common':
|
'@tria-plc/api-common':
|
||||||
specifier: 1.2.3
|
specifier: 1.2.3
|
||||||
version: 1.2.3(82de1fa22df14d2f8c974e73e7d5a000)
|
version: 1.2.3(38550619d911b1103993bd09ae683e00)
|
||||||
'@tria-plc/iamapi-common':
|
'@tria-plc/iamapi-common':
|
||||||
specifier: ^0.4.1
|
specifier: ^0.4.2
|
||||||
version: 0.4.1(c31a38bece4d321b4fae6a2e7e5e96b1)
|
version: 0.4.2(c31a38bece4d321b4fae6a2e7e5e96b1)
|
||||||
amqp-connection-manager:
|
amqp-connection-manager:
|
||||||
specifier: ^5.0.0
|
specifier: ^5.0.0
|
||||||
version: 5.0.0(amqplib@2.0.1)
|
version: 5.0.0(amqplib@2.0.1)
|
||||||
@@ -141,9 +247,6 @@ importers:
|
|||||||
'@nestjs/testing':
|
'@nestjs/testing':
|
||||||
specifier: ^11.1.19
|
specifier: ^11.1.19
|
||||||
version: 11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.23)
|
version: 11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.23)
|
||||||
'@prisma/client':
|
|
||||||
specifier: ^6.19.3
|
|
||||||
version: 6.19.3(prisma@6.19.3(typescript@5.9.3))(typescript@5.9.3)
|
|
||||||
'@types/bcrypt':
|
'@types/bcrypt':
|
||||||
specifier: ^5.0.2
|
specifier: ^5.0.2
|
||||||
version: 5.0.2
|
version: 5.0.2
|
||||||
@@ -341,7 +444,7 @@ importers:
|
|||||||
version: 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
version: 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
'@nestjs/core':
|
'@nestjs/core':
|
||||||
specifier: ^11.0.0
|
specifier: ^11.0.0
|
||||||
version: 11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.23)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
version: 11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: ^20.14.0
|
specifier: ^20.14.0
|
||||||
version: 20.19.41
|
version: 20.19.41
|
||||||
@@ -1014,6 +1117,9 @@ packages:
|
|||||||
'@microsoft/tsdoc@0.15.1':
|
'@microsoft/tsdoc@0.15.1':
|
||||||
resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==}
|
resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==}
|
||||||
|
|
||||||
|
'@microsoft/tsdoc@0.16.0':
|
||||||
|
resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==}
|
||||||
|
|
||||||
'@napi-rs/wasm-runtime@1.1.4':
|
'@napi-rs/wasm-runtime@1.1.4':
|
||||||
resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==}
|
resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -1053,6 +1159,19 @@ packages:
|
|||||||
class-validator:
|
class-validator:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@nestjs/common@11.1.24':
|
||||||
|
resolution: {integrity: sha512-9zHxaDDM+oXW9As6UsP5yYB+UqczBmpeSCIFWdPEtEukMnZhxODG1BBjaUcdBB8Sc1uzojSJSJlp3yFp853t1g==}
|
||||||
|
peerDependencies:
|
||||||
|
class-transformer: '>=0.4.1'
|
||||||
|
class-validator: '>=0.13.2'
|
||||||
|
reflect-metadata: ^0.1.12 || ^0.2.0
|
||||||
|
rxjs: ^7.1.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
class-transformer:
|
||||||
|
optional: true
|
||||||
|
class-validator:
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@nestjs/config@4.0.4':
|
'@nestjs/config@4.0.4':
|
||||||
resolution: {integrity: sha512-CJPjNitr0bAufSEnRe2N+JbnVmMmDoo6hvKCPzXgZoGwJSmp/dZPk9f/RMbuD/+Q1ZJPjwsRpq0vxna++Knwow==}
|
resolution: {integrity: sha512-CJPjNitr0bAufSEnRe2N+JbnVmMmDoo6hvKCPzXgZoGwJSmp/dZPk9f/RMbuD/+Q1ZJPjwsRpq0vxna++Knwow==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -1077,6 +1196,24 @@ packages:
|
|||||||
'@nestjs/websockets':
|
'@nestjs/websockets':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@nestjs/core@11.1.24':
|
||||||
|
resolution: {integrity: sha512-K4bzT+lEdd0Hhcsw3jtk56QAW6s6skK3ViN7hIROSN0kUf4ROwWEAKopJID6yhPQxB45kDtP2wEcjzE8171J3g==}
|
||||||
|
engines: {node: '>= 20'}
|
||||||
|
peerDependencies:
|
||||||
|
'@nestjs/common': ^11.0.0
|
||||||
|
'@nestjs/microservices': ^11.0.0
|
||||||
|
'@nestjs/platform-express': ^11.0.0
|
||||||
|
'@nestjs/websockets': ^11.0.0
|
||||||
|
reflect-metadata: ^0.1.12 || ^0.2.0
|
||||||
|
rxjs: ^7.1.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@nestjs/microservices':
|
||||||
|
optional: true
|
||||||
|
'@nestjs/platform-express':
|
||||||
|
optional: true
|
||||||
|
'@nestjs/websockets':
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@nestjs/event-emitter@2.1.1':
|
'@nestjs/event-emitter@2.1.1':
|
||||||
resolution: {integrity: sha512-6L6fBOZTyfFlL7Ih/JDdqlCzZeCW0RjCX28wnzGyg/ncv5F/EOeT1dfopQr1loBRQ3LTgu8OWM7n4zLN4xigsg==}
|
resolution: {integrity: sha512-6L6fBOZTyfFlL7Ih/JDdqlCzZeCW0RjCX28wnzGyg/ncv5F/EOeT1dfopQr1loBRQ3LTgu8OWM7n4zLN4xigsg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -1101,6 +1238,19 @@ packages:
|
|||||||
class-validator:
|
class-validator:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@nestjs/mapped-types@2.1.1':
|
||||||
|
resolution: {integrity: sha512-SCCoMEJ6jdeI5h/N+KCVF1+pmg/hmEkNA5nHTS8Gvww7T/LCl4o1gFLinw2iQ60w7slFkszHcGLKGdazVI4F8A==}
|
||||||
|
peerDependencies:
|
||||||
|
'@nestjs/common': ^10.0.0 || ^11.0.0
|
||||||
|
class-transformer: ^0.4.0 || ^0.5.0
|
||||||
|
class-validator: ^0.13.0 || ^0.14.0 || ^0.15.0
|
||||||
|
reflect-metadata: ^0.1.12 || ^0.2.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
class-transformer:
|
||||||
|
optional: true
|
||||||
|
class-validator:
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@nestjs/microservices@11.1.24':
|
'@nestjs/microservices@11.1.24':
|
||||||
resolution: {integrity: sha512-ALu/7qk3obFlw7KVSPRz+BjuyWPLmv9isknhLG8UYXkjx3aPhJGp52i3qiTqucM1jKtoBgPa3+SK4e9fVvglGA==}
|
resolution: {integrity: sha512-ALu/7qk3obFlw7KVSPRz+BjuyWPLmv9isknhLG8UYXkjx3aPhJGp52i3qiTqucM1jKtoBgPa3+SK4e9fVvglGA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -1149,6 +1299,12 @@ packages:
|
|||||||
'@nestjs/common': ^11.0.0
|
'@nestjs/common': ^11.0.0
|
||||||
'@nestjs/core': ^11.0.0
|
'@nestjs/core': ^11.0.0
|
||||||
|
|
||||||
|
'@nestjs/platform-express@11.1.24':
|
||||||
|
resolution: {integrity: sha512-CeMKbRBm05aOBiWhIHWO2xDeHbxynBF9ySQv3gRjObz2N5+uJnYriAYkHvVqvC4JIydmMPmT5VdICFNlNz3qyA==}
|
||||||
|
peerDependencies:
|
||||||
|
'@nestjs/common': ^11.0.0
|
||||||
|
'@nestjs/core': ^11.0.0
|
||||||
|
|
||||||
'@nestjs/schedule@6.1.3':
|
'@nestjs/schedule@6.1.3':
|
||||||
resolution: {integrity: sha512-RflMFOpR16Dwd1jAUbeB4mfGTCh65fvEdL4mSjQPJChpkRGRjIXjb+6YQcK2faQrVT60c9DmLmoVR7/ONCtuYQ==}
|
resolution: {integrity: sha512-RflMFOpR16Dwd1jAUbeB4mfGTCh65fvEdL4mSjQPJChpkRGRjIXjb+6YQcK2faQrVT60c9DmLmoVR7/ONCtuYQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -1164,6 +1320,23 @@ packages:
|
|||||||
prettier:
|
prettier:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@nestjs/swagger@11.4.4':
|
||||||
|
resolution: {integrity: sha512-VaIo1ruV2G7b+f2zPzkBSUNy9a/WQ9sg8TLKhWlrTfg4O6U10M/PA7Xi6XMXadOVhwOqoesijba8jH3i/3adrA==}
|
||||||
|
peerDependencies:
|
||||||
|
'@fastify/static': ^8.0.0 || ^9.0.0
|
||||||
|
'@nestjs/common': ^11.0.1
|
||||||
|
'@nestjs/core': ^11.0.1
|
||||||
|
class-transformer: '*'
|
||||||
|
class-validator: '*'
|
||||||
|
reflect-metadata: ^0.1.12 || ^0.2.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@fastify/static':
|
||||||
|
optional: true
|
||||||
|
class-transformer:
|
||||||
|
optional: true
|
||||||
|
class-validator:
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@nestjs/swagger@7.4.2':
|
'@nestjs/swagger@7.4.2':
|
||||||
resolution: {integrity: sha512-Mu6TEn1M/owIvAx2B4DUQObQXqo2028R2s9rSZ/hJEgBK95+doTwS0DjmVA2wTeZTyVtXOoN7CsoM5pONBzvKQ==}
|
resolution: {integrity: sha512-Mu6TEn1M/owIvAx2B4DUQObQXqo2028R2s9rSZ/hJEgBK95+doTwS0DjmVA2wTeZTyVtXOoN7CsoM5pONBzvKQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -1194,6 +1367,19 @@ packages:
|
|||||||
'@nestjs/platform-express':
|
'@nestjs/platform-express':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@nestjs/testing@11.1.24':
|
||||||
|
resolution: {integrity: sha512-+4M4UAnhtprBQN0J2uI6IP0wDqhy9aH8XCMu5SO8oCi0oB04YXA4a4PAEkxmsPn7gHW4dj1u4GFteNQOWgvTJw==}
|
||||||
|
peerDependencies:
|
||||||
|
'@nestjs/common': ^11.0.0
|
||||||
|
'@nestjs/core': ^11.0.0
|
||||||
|
'@nestjs/microservices': ^11.0.0
|
||||||
|
'@nestjs/platform-express': ^11.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@nestjs/microservices':
|
||||||
|
optional: true
|
||||||
|
'@nestjs/platform-express':
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@nestjs/throttler@6.5.0':
|
'@nestjs/throttler@6.5.0':
|
||||||
resolution: {integrity: sha512-9j0ZRfH0QE1qyrj9JjIRDz5gQLPqq9yVC2nHsrosDVAfI5HHw08/aUAWx9DZLSdQf4HDkmhTTEGLrRFHENvchQ==}
|
resolution: {integrity: sha512-9j0ZRfH0QE1qyrj9JjIRDz5gQLPqq9yVC2nHsrosDVAfI5HHw08/aUAWx9DZLSdQf4HDkmhTTEGLrRFHENvchQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -1397,6 +1583,22 @@ packages:
|
|||||||
'@tokenizer/token@0.3.0':
|
'@tokenizer/token@0.3.0':
|
||||||
resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
|
resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
|
||||||
|
|
||||||
|
'@tria-plc/api-common@0.1.4':
|
||||||
|
resolution: {integrity: sha512-lm9esp5PDxUyggqxYXbx2CQhZKwtcAaAcGFuuUURw3u5DlzGUNwMOFkQkDLM/fbgN+33+s1RKC7UynnG9NZFww==, tarball: https://npm.pkg.github.com/download/@tria-plc/api-common/0.1.4/de160e4bb61a882efd9c877b4614028f1ffd7cb8}
|
||||||
|
peerDependencies:
|
||||||
|
'@nestjs/common': ^11.0.0
|
||||||
|
'@nestjs/core': ^11.0.0
|
||||||
|
'@nestjs/jwt': ^11.0.0
|
||||||
|
'@nestjs/microservices': ^11.0.0
|
||||||
|
'@nestjs/passport': ^11.0.0
|
||||||
|
'@nestjs/swagger': ^11.0.0
|
||||||
|
'@nestjs/throttler': ^6.0.0
|
||||||
|
'@nestjs/typeorm': ^11.0.0
|
||||||
|
'@tria-plc/iamapi-common': '*'
|
||||||
|
reflect-metadata: ^0.2.0
|
||||||
|
rxjs: ^7.8.0
|
||||||
|
typeorm: ^0.3.0
|
||||||
|
|
||||||
'@tria-plc/api-common@1.2.3':
|
'@tria-plc/api-common@1.2.3':
|
||||||
resolution: {integrity: sha512-J30YmV/IAZjoQAB8o0yvisUwhclOWDdkqmLfVpvRc142Cv4nFnpynms+rO6IXSWwqI8bXRJg4qa+XauUrwzu5A==, tarball: https://npm.pkg.github.com/download/@tria-plc/api-common/1.2.3/7910a45187963d4a40ac0f7a6ab802fc974b708e}
|
resolution: {integrity: sha512-J30YmV/IAZjoQAB8o0yvisUwhclOWDdkqmLfVpvRc142Cv4nFnpynms+rO6IXSWwqI8bXRJg4qa+XauUrwzu5A==, tarball: https://npm.pkg.github.com/download/@tria-plc/api-common/1.2.3/7910a45187963d4a40ac0f7a6ab802fc974b708e}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -1413,8 +1615,29 @@ packages:
|
|||||||
rxjs: ^7.8.0
|
rxjs: ^7.8.0
|
||||||
typeorm: ^0.3.0
|
typeorm: ^0.3.0
|
||||||
|
|
||||||
'@tria-plc/iamapi-common@0.4.1':
|
'@tria-plc/iamapi-common@0.1.6':
|
||||||
resolution: {integrity: sha512-DnO9bCBGpo6wRt39zXzWuJG99qZ9yCy1x1DQOAs48G5Z9wwv/EYILXpb5dkoq/oV+c4If0UYSlKMnWQCv9RhVA==, tarball: https://npm.pkg.github.com/download/@tria-plc/iamapi-common/0.4.1/78c88f7322f9cb84a38941d94d1494b5ce6e2ddf}
|
resolution: {integrity: sha512-qaCLZ1TgbcQ5XciRuA/aZjRCM/GmGYgcmsyDDIlhiMNw3FL3DCiR/QiFuQpERvV4FqgQNBJg66+S/jXO3I2jbw==, tarball: https://npm.pkg.github.com/download/@tria-plc/iamapi-common/0.1.6/e2a8f3357b650bb9477facae4aaa7044382acebf}
|
||||||
|
engines: {node: '>=20'}
|
||||||
|
peerDependencies:
|
||||||
|
'@nestjs/axios': ^4.0.0
|
||||||
|
'@nestjs/common': ^11.0.0
|
||||||
|
'@nestjs/core': ^11.0.0
|
||||||
|
'@nestjs/jwt': ^11.0.0
|
||||||
|
'@nestjs/microservices': ^11.0.0
|
||||||
|
'@nestjs/passport': ^11.0.0
|
||||||
|
'@nestjs/swagger': ^11.0.0
|
||||||
|
'@nestjs/throttler': ^6.0.0
|
||||||
|
'@nestjs/typeorm': ^11.0.0
|
||||||
|
'@tria-plc/api-common': ^0.1.0
|
||||||
|
axios: ^1.9.0
|
||||||
|
class-transformer: ^0.5.1
|
||||||
|
class-validator: ^0.14.1
|
||||||
|
reflect-metadata: ^0.2.0
|
||||||
|
rxjs: ^7.8.0
|
||||||
|
typeorm: ^0.3.0
|
||||||
|
|
||||||
|
'@tria-plc/iamapi-common@0.4.2':
|
||||||
|
resolution: {integrity: sha512-Y82qhg15eQiz+HSyGaY26Mg7s6kB87Q4FVNTrfRVQCW9KK9+2feMxWE/5xtm1OhAYkktHA6MXe0lnd48dgByvQ==, tarball: https://npm.pkg.github.com/download/@tria-plc/iamapi-common/0.4.2/704812e7397917c78e67118d41db2235d7250095}
|
||||||
engines: {node: '>=20'}
|
engines: {node: '>=20'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@nestjs/axios': ^4.0.0
|
'@nestjs/axios': ^4.0.0
|
||||||
@@ -1593,8 +1816,8 @@ packages:
|
|||||||
'@types/node@20.19.41':
|
'@types/node@20.19.41':
|
||||||
resolution: {integrity: sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==}
|
resolution: {integrity: sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==}
|
||||||
|
|
||||||
'@types/node@24.12.4':
|
'@types/node@25.9.1':
|
||||||
resolution: {integrity: sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==}
|
resolution: {integrity: sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==}
|
||||||
|
|
||||||
'@types/passport-jwt@4.0.1':
|
'@types/passport-jwt@4.0.1':
|
||||||
resolution: {integrity: sha512-Y0Ykz6nWP4jpxgEUYq8NoVZeCQPo1ZndJLfapI249g1jHChvRfZRO/LS3tqu26YgAS/laI1qx98sYGz0IalRXQ==}
|
resolution: {integrity: sha512-Y0Ykz6nWP4jpxgEUYq8NoVZeCQPo1ZndJLfapI249g1jHChvRfZRO/LS3tqu26YgAS/laI1qx98sYGz0IalRXQ==}
|
||||||
@@ -2285,6 +2508,9 @@ packages:
|
|||||||
axios@1.16.1:
|
axios@1.16.1:
|
||||||
resolution: {integrity: sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==}
|
resolution: {integrity: sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==}
|
||||||
|
|
||||||
|
axios@1.17.0:
|
||||||
|
resolution: {integrity: sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==}
|
||||||
|
|
||||||
axobject-query@4.1.0:
|
axobject-query@4.1.0:
|
||||||
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
|
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
@@ -3071,6 +3297,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==}
|
resolution: {integrity: sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==}
|
||||||
engines: {node: '>=10.13.0'}
|
engines: {node: '>=10.13.0'}
|
||||||
|
|
||||||
|
enhanced-resolve@5.22.2:
|
||||||
|
resolution: {integrity: sha512-0rxICaFZ7NQho/sHely2bvOPRP0Eu2B0NZ9zM54YvRvWMn7jfz3DmnOZDR9LlXDdDcqntAVc6Hfy4gr/tdH/Ag==}
|
||||||
|
engines: {node: '>=10.13.0'}
|
||||||
|
|
||||||
ent@2.2.2:
|
ent@2.2.2:
|
||||||
resolution: {integrity: sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==}
|
resolution: {integrity: sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
@@ -4305,6 +4535,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
|
resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
js-yaml@4.2.0:
|
||||||
|
resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
jsesc@3.1.0:
|
jsesc@3.1.0:
|
||||||
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
|
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -4426,6 +4660,9 @@ packages:
|
|||||||
libphonenumber-js@1.13.3:
|
libphonenumber-js@1.13.3:
|
||||||
resolution: {integrity: sha512-xMkdAMqcyG7iN2WZZmGIfWbYxW4orRkny+0/AXIbwL0xll2zkDX0Vzo/BXFa6+7mh2UvJl9MbcTtHk0YXkFtBA==}
|
resolution: {integrity: sha512-xMkdAMqcyG7iN2WZZmGIfWbYxW4orRkny+0/AXIbwL0xll2zkDX0Vzo/BXFa6+7mh2UvJl9MbcTtHk0YXkFtBA==}
|
||||||
|
|
||||||
|
libphonenumber-js@1.13.5:
|
||||||
|
resolution: {integrity: sha512-7/kRezHmQlMfO6pmvt34orO/g3j1C47k8FCBXFgj/mklTLwQdBca1LkhDK6RM8UyM6JqHFAIikMdkKkyfQy39A==}
|
||||||
|
|
||||||
libreoffice-convert@1.8.1:
|
libreoffice-convert@1.8.1:
|
||||||
resolution: {integrity: sha512-iZ1DD/EMTlPvol8G++QQ/0w4pVecSwRuhMLXRm7nRim/gcaSscSXuTO9Tgbkieyw5UdJg7UXD+lkFT8SCi51Dw==}
|
resolution: {integrity: sha512-iZ1DD/EMTlPvol8G++QQ/0w4pVecSwRuhMLXRm7nRim/gcaSscSXuTO9Tgbkieyw5UdJg7UXD+lkFT8SCi51Dw==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -5593,6 +5830,11 @@ packages:
|
|||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
semver@7.8.2:
|
||||||
|
resolution: {integrity: sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
send@1.2.1:
|
send@1.2.1:
|
||||||
resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==}
|
resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==}
|
||||||
engines: {node: '>= 18'}
|
engines: {node: '>= 18'}
|
||||||
@@ -5730,6 +5972,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
|
resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
|
|
||||||
|
source-map@0.7.6:
|
||||||
|
resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
|
||||||
|
engines: {node: '>= 12'}
|
||||||
|
|
||||||
split-on-first@1.1.0:
|
split-on-first@1.1.0:
|
||||||
resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
|
resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -6123,6 +6369,17 @@ packages:
|
|||||||
jest-util:
|
jest-util:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
ts-loader@9.6.0:
|
||||||
|
resolution: {integrity: sha512-dsJO0S+T7grTDWTc4a0nTygXGjKncVUpx8Y+af8EvI/D5WgTJby5UEk5eoMCB9EcLQmnvitqh99MqtjtHgAwFQ==}
|
||||||
|
engines: {node: '>=12.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
loader-utils: '*'
|
||||||
|
typescript: '*'
|
||||||
|
webpack: ^4.0.0 || ^5.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
loader-utils:
|
||||||
|
optional: true
|
||||||
|
|
||||||
ts-node@10.9.2:
|
ts-node@10.9.2:
|
||||||
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
|
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -6294,8 +6551,8 @@ packages:
|
|||||||
undici-types@6.21.0:
|
undici-types@6.21.0:
|
||||||
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
|
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
|
||||||
|
|
||||||
undici-types@7.16.0:
|
undici-types@7.24.6:
|
||||||
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
|
resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==}
|
||||||
|
|
||||||
unicorn-magic@0.1.0:
|
unicorn-magic@0.1.0:
|
||||||
resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==}
|
resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==}
|
||||||
@@ -6835,11 +7092,11 @@ snapshots:
|
|||||||
'@colors/colors@1.5.0':
|
'@colors/colors@1.5.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@commitlint/cli@19.8.1(@types/node@24.12.4)(typescript@5.9.3)':
|
'@commitlint/cli@19.8.1(@types/node@25.9.1)(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@commitlint/format': 19.8.1
|
'@commitlint/format': 19.8.1
|
||||||
'@commitlint/lint': 19.8.1
|
'@commitlint/lint': 19.8.1
|
||||||
'@commitlint/load': 19.8.1(@types/node@24.12.4)(typescript@5.9.3)
|
'@commitlint/load': 19.8.1(@types/node@25.9.1)(typescript@5.9.3)
|
||||||
'@commitlint/read': 19.8.1
|
'@commitlint/read': 19.8.1
|
||||||
'@commitlint/types': 19.8.1
|
'@commitlint/types': 19.8.1
|
||||||
tinyexec: 1.1.2
|
tinyexec: 1.1.2
|
||||||
@@ -6886,7 +7143,7 @@ snapshots:
|
|||||||
'@commitlint/rules': 19.8.1
|
'@commitlint/rules': 19.8.1
|
||||||
'@commitlint/types': 19.8.1
|
'@commitlint/types': 19.8.1
|
||||||
|
|
||||||
'@commitlint/load@19.8.1(@types/node@24.12.4)(typescript@5.9.3)':
|
'@commitlint/load@19.8.1(@types/node@25.9.1)(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@commitlint/config-validator': 19.8.1
|
'@commitlint/config-validator': 19.8.1
|
||||||
'@commitlint/execute-rule': 19.8.1
|
'@commitlint/execute-rule': 19.8.1
|
||||||
@@ -6894,7 +7151,7 @@ snapshots:
|
|||||||
'@commitlint/types': 19.8.1
|
'@commitlint/types': 19.8.1
|
||||||
chalk: 5.6.2
|
chalk: 5.6.2
|
||||||
cosmiconfig: 9.0.1(typescript@5.9.3)
|
cosmiconfig: 9.0.1(typescript@5.9.3)
|
||||||
cosmiconfig-typescript-loader: 6.3.0(@types/node@24.12.4)(cosmiconfig@9.0.1(typescript@5.9.3))(typescript@5.9.3)
|
cosmiconfig-typescript-loader: 6.3.0(@types/node@25.9.1)(cosmiconfig@9.0.1(typescript@5.9.3))(typescript@5.9.3)
|
||||||
lodash.isplainobject: 4.0.6
|
lodash.isplainobject: 4.0.6
|
||||||
lodash.merge: 4.6.2
|
lodash.merge: 4.6.2
|
||||||
lodash.uniq: 4.5.0
|
lodash.uniq: 4.5.0
|
||||||
@@ -7394,6 +7651,8 @@ snapshots:
|
|||||||
|
|
||||||
'@microsoft/tsdoc@0.15.1': {}
|
'@microsoft/tsdoc@0.15.1': {}
|
||||||
|
|
||||||
|
'@microsoft/tsdoc@0.16.0': {}
|
||||||
|
|
||||||
'@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
|
'@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@emnapi/core': 1.10.0
|
'@emnapi/core': 1.10.0
|
||||||
@@ -7407,6 +7666,12 @@ snapshots:
|
|||||||
axios: 1.16.1
|
axios: 1.16.1
|
||||||
rxjs: 7.8.2
|
rxjs: 7.8.2
|
||||||
|
|
||||||
|
'@nestjs/axios@4.0.1(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(axios@1.17.0)(rxjs@7.8.2)':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
axios: 1.17.0
|
||||||
|
rxjs: 7.8.2
|
||||||
|
|
||||||
'@nestjs/cli@11.0.21(@types/node@20.19.41)(prettier@3.8.3)':
|
'@nestjs/cli@11.0.21(@types/node@20.19.41)(prettier@3.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@angular-devkit/core': 19.2.24(chokidar@4.0.3)
|
'@angular-devkit/core': 19.2.24(chokidar@4.0.3)
|
||||||
@@ -7458,6 +7723,21 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)':
|
||||||
|
dependencies:
|
||||||
|
file-type: 21.3.4
|
||||||
|
iterare: 1.2.1
|
||||||
|
load-esm: 1.0.3
|
||||||
|
reflect-metadata: 0.2.2
|
||||||
|
rxjs: 7.8.2
|
||||||
|
tslib: 2.8.1
|
||||||
|
uid: 2.0.2
|
||||||
|
optionalDependencies:
|
||||||
|
class-transformer: 0.5.1
|
||||||
|
class-validator: 0.14.4
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@nestjs/config@4.0.4(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(rxjs@7.8.2)':
|
'@nestjs/config@4.0.4(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(rxjs@7.8.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
@@ -7466,6 +7746,14 @@ snapshots:
|
|||||||
lodash: 4.18.1
|
lodash: 4.18.1
|
||||||
rxjs: 7.8.2
|
rxjs: 7.8.2
|
||||||
|
|
||||||
|
'@nestjs/config@4.0.4(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(rxjs@7.8.2)':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
dotenv: 17.4.1
|
||||||
|
dotenv-expand: 12.0.3
|
||||||
|
lodash: 4.18.1
|
||||||
|
rxjs: 7.8.2
|
||||||
|
|
||||||
'@nestjs/core@11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.23)(reflect-metadata@0.2.2)(rxjs@7.8.2)':
|
'@nestjs/core@11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.23)(reflect-metadata@0.2.2)(rxjs@7.8.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
@@ -7481,6 +7769,36 @@ snapshots:
|
|||||||
'@nestjs/microservices': 11.1.24(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(amqp-connection-manager@5.0.0(amqplib@2.0.1))(amqplib@2.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/microservices': 11.1.24(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(amqp-connection-manager@5.0.0(amqplib@2.0.1))(amqplib@2.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
'@nestjs/platform-express': 11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)
|
'@nestjs/platform-express': 11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)
|
||||||
|
|
||||||
|
'@nestjs/core@11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nuxt/opencollective': 0.4.1
|
||||||
|
fast-safe-stringify: 2.1.1
|
||||||
|
iterare: 1.2.1
|
||||||
|
path-to-regexp: 8.4.2
|
||||||
|
reflect-metadata: 0.2.2
|
||||||
|
rxjs: 7.8.2
|
||||||
|
tslib: 2.8.1
|
||||||
|
uid: 2.0.2
|
||||||
|
optionalDependencies:
|
||||||
|
'@nestjs/microservices': 11.1.24(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(amqp-connection-manager@5.0.0(amqplib@2.0.1))(amqplib@2.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/platform-express': 11.1.24(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)
|
||||||
|
|
||||||
|
'@nestjs/core@11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nuxt/opencollective': 0.4.1
|
||||||
|
fast-safe-stringify: 2.1.1
|
||||||
|
iterare: 1.2.1
|
||||||
|
path-to-regexp: 8.4.2
|
||||||
|
reflect-metadata: 0.2.2
|
||||||
|
rxjs: 7.8.2
|
||||||
|
tslib: 2.8.1
|
||||||
|
uid: 2.0.2
|
||||||
|
optionalDependencies:
|
||||||
|
'@nestjs/microservices': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(amqp-connection-manager@5.0.0(amqplib@2.0.1))(amqplib@2.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/platform-express': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)
|
||||||
|
|
||||||
'@nestjs/event-emitter@2.1.1(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)':
|
'@nestjs/event-emitter@2.1.1(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
@@ -7493,6 +7811,12 @@ snapshots:
|
|||||||
'@types/jsonwebtoken': 9.0.5
|
'@types/jsonwebtoken': 9.0.5
|
||||||
jsonwebtoken: 9.0.2
|
jsonwebtoken: 9.0.2
|
||||||
|
|
||||||
|
'@nestjs/jwt@10.2.0(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@types/jsonwebtoken': 9.0.5
|
||||||
|
jsonwebtoken: 9.0.2
|
||||||
|
|
||||||
'@nestjs/mapped-types@2.0.5(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)':
|
'@nestjs/mapped-types@2.0.5(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
@@ -7501,6 +7825,14 @@ snapshots:
|
|||||||
class-transformer: 0.5.1
|
class-transformer: 0.5.1
|
||||||
class-validator: 0.14.4
|
class-validator: 0.14.4
|
||||||
|
|
||||||
|
'@nestjs/mapped-types@2.1.1(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
reflect-metadata: 0.2.2
|
||||||
|
optionalDependencies:
|
||||||
|
class-transformer: 0.5.1
|
||||||
|
class-validator: 0.14.4
|
||||||
|
|
||||||
'@nestjs/microservices@11.1.24(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(amqp-connection-manager@5.0.0(amqplib@2.0.1))(amqplib@2.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)':
|
'@nestjs/microservices@11.1.24(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(amqp-connection-manager@5.0.0(amqplib@2.0.1))(amqplib@2.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
@@ -7513,11 +7845,28 @@ snapshots:
|
|||||||
amqp-connection-manager: 5.0.0(amqplib@2.0.1)
|
amqp-connection-manager: 5.0.0(amqplib@2.0.1)
|
||||||
amqplib: 2.0.1
|
amqplib: 2.0.1
|
||||||
|
|
||||||
|
'@nestjs/microservices@11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(amqp-connection-manager@5.0.0(amqplib@2.0.1))(amqplib@2.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/core': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
iterare: 1.2.1
|
||||||
|
reflect-metadata: 0.2.2
|
||||||
|
rxjs: 7.8.2
|
||||||
|
tslib: 2.8.1
|
||||||
|
optionalDependencies:
|
||||||
|
amqp-connection-manager: 5.0.0(amqplib@2.0.1)
|
||||||
|
amqplib: 2.0.1
|
||||||
|
|
||||||
'@nestjs/passport@10.0.3(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(passport@0.7.0)':
|
'@nestjs/passport@10.0.3(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(passport@0.7.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
passport: 0.7.0
|
passport: 0.7.0
|
||||||
|
|
||||||
|
'@nestjs/passport@10.0.3(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(passport@0.7.0)':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
passport: 0.7.0
|
||||||
|
|
||||||
'@nestjs/platform-express@11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)':
|
'@nestjs/platform-express@11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
@@ -7530,6 +7879,31 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@nestjs/platform-express@11.1.24(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/core': 11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
cors: 2.8.6
|
||||||
|
express: 5.2.1
|
||||||
|
multer: 2.1.1
|
||||||
|
path-to-regexp: 8.4.2
|
||||||
|
tslib: 2.8.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@nestjs/platform-express@11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/core': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
cors: 2.8.6
|
||||||
|
express: 5.2.1
|
||||||
|
multer: 2.1.1
|
||||||
|
path-to-regexp: 8.4.2
|
||||||
|
tslib: 2.8.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@nestjs/schedule@6.1.3(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)':
|
'@nestjs/schedule@6.1.3(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
@@ -7549,6 +7923,21 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- chokidar
|
- chokidar
|
||||||
|
|
||||||
|
'@nestjs/swagger@11.4.4(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)':
|
||||||
|
dependencies:
|
||||||
|
'@microsoft/tsdoc': 0.16.0
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/core': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/mapped-types': 2.1.1(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)
|
||||||
|
js-yaml: 4.1.1
|
||||||
|
lodash: 4.18.1
|
||||||
|
path-to-regexp: 8.4.2
|
||||||
|
reflect-metadata: 0.2.2
|
||||||
|
swagger-ui-dist: 5.32.6
|
||||||
|
optionalDependencies:
|
||||||
|
class-transformer: 0.5.1
|
||||||
|
class-validator: 0.14.4
|
||||||
|
|
||||||
'@nestjs/swagger@7.4.2(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)':
|
'@nestjs/swagger@7.4.2(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@microsoft/tsdoc': 0.15.1
|
'@microsoft/tsdoc': 0.15.1
|
||||||
@@ -7573,12 +7962,27 @@ snapshots:
|
|||||||
'@nestjs/microservices': 11.1.24(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(amqp-connection-manager@5.0.0(amqplib@2.0.1))(amqplib@2.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/microservices': 11.1.24(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(amqp-connection-manager@5.0.0(amqplib@2.0.1))(amqplib@2.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
'@nestjs/platform-express': 11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)
|
'@nestjs/platform-express': 11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)
|
||||||
|
|
||||||
|
'@nestjs/testing@11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/core': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
tslib: 2.8.1
|
||||||
|
optionalDependencies:
|
||||||
|
'@nestjs/microservices': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(amqp-connection-manager@5.0.0(amqplib@2.0.1))(amqplib@2.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/platform-express': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)
|
||||||
|
|
||||||
'@nestjs/throttler@6.5.0(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(reflect-metadata@0.2.2)':
|
'@nestjs/throttler@6.5.0(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(reflect-metadata@0.2.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
'@nestjs/core': 11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.23)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/core': 11.1.23(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.23)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
reflect-metadata: 0.2.2
|
reflect-metadata: 0.2.2
|
||||||
|
|
||||||
|
'@nestjs/throttler@6.5.0(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(reflect-metadata@0.2.2)':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/core': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
reflect-metadata: 0.2.2
|
||||||
|
|
||||||
'@nestjs/typeorm@11.0.1(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))':
|
'@nestjs/typeorm@11.0.1(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
@@ -7587,6 +7991,14 @@ snapshots:
|
|||||||
rxjs: 7.8.2
|
rxjs: 7.8.2
|
||||||
typeorm: 0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3))
|
typeorm: 0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3))
|
||||||
|
|
||||||
|
'@nestjs/typeorm@11.0.1(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/core': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
reflect-metadata: 0.2.2
|
||||||
|
rxjs: 7.8.2
|
||||||
|
typeorm: 0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3))
|
||||||
|
|
||||||
'@next/env@14.2.35': {}
|
'@next/env@14.2.35': {}
|
||||||
|
|
||||||
'@next/eslint-plugin-next@14.2.35':
|
'@next/eslint-plugin-next@14.2.35':
|
||||||
@@ -7747,7 +8159,51 @@ snapshots:
|
|||||||
|
|
||||||
'@tokenizer/token@0.3.0': {}
|
'@tokenizer/token@0.3.0': {}
|
||||||
|
|
||||||
'@tria-plc/api-common@1.2.3(82de1fa22df14d2f8c974e73e7d5a000)':
|
'@tria-plc/api-common@0.1.4(117ec8ab2e46133742e6b9e4ae304059)':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/axios': 4.0.1(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(axios@1.17.0)(rxjs@7.8.2)
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/core': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/jwt': 10.2.0(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))
|
||||||
|
'@nestjs/microservices': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(amqp-connection-manager@5.0.0(amqplib@2.0.1))(amqplib@2.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/passport': 10.0.3(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(passport@0.7.0)
|
||||||
|
'@nestjs/swagger': 11.4.4(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)
|
||||||
|
'@nestjs/throttler': 6.5.0(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(reflect-metadata@0.2.2)
|
||||||
|
'@nestjs/typeorm': 11.0.1(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))
|
||||||
|
'@tria-plc/iamapi-common': 0.1.6(d02ea0b424ed983863ad8209ac09ab52)
|
||||||
|
argon2: 0.43.1
|
||||||
|
axios: 1.17.0
|
||||||
|
change-case: 5.4.4
|
||||||
|
class-transformer: 0.5.1
|
||||||
|
class-validator: 0.14.4
|
||||||
|
dotenv: 16.6.1
|
||||||
|
ethiopian-calendar-date-converter: 2.1.6
|
||||||
|
ethiopian-date: 0.0.6
|
||||||
|
exceljs: 4.4.0
|
||||||
|
file-type: 21.3.4
|
||||||
|
handlebars: 4.7.9
|
||||||
|
handlebars-helpers: 0.10.0
|
||||||
|
jmespath: 0.16.0
|
||||||
|
jose: 5.10.0
|
||||||
|
jsonwebtoken: 9.0.3
|
||||||
|
libphonenumber-js: 1.13.5
|
||||||
|
libreoffice-convert: 1.8.1
|
||||||
|
nestjs-minio-client: 2.2.0(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)
|
||||||
|
passport-jwt: 4.0.1
|
||||||
|
qrcode: 1.5.4
|
||||||
|
reflect-metadata: 0.2.2
|
||||||
|
rxjs: 7.8.2
|
||||||
|
style-object-to-css-string: 1.1.3
|
||||||
|
typeorm: 0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3))
|
||||||
|
typeorm-extension: 3.9.0(@faker-js/faker@10.4.0)(typeorm@0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))
|
||||||
|
uuid: 11.1.1
|
||||||
|
xlsx: 0.18.5
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@faker-js/faker'
|
||||||
|
- debug
|
||||||
|
- supports-color
|
||||||
|
|
||||||
|
'@tria-plc/api-common@1.2.3(38550619d911b1103993bd09ae683e00)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/axios': 4.0.1(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(axios@1.16.1)(rxjs@7.8.2)
|
'@nestjs/axios': 4.0.1(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(axios@1.16.1)(rxjs@7.8.2)
|
||||||
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
@@ -7758,7 +8214,7 @@ snapshots:
|
|||||||
'@nestjs/swagger': 7.4.2(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)
|
'@nestjs/swagger': 7.4.2(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)
|
||||||
'@nestjs/throttler': 6.5.0(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(reflect-metadata@0.2.2)
|
'@nestjs/throttler': 6.5.0(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(reflect-metadata@0.2.2)
|
||||||
'@nestjs/typeorm': 11.0.1(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))
|
'@nestjs/typeorm': 11.0.1(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))
|
||||||
'@tria-plc/iamapi-common': 0.4.1(c31a38bece4d321b4fae6a2e7e5e96b1)
|
'@tria-plc/iamapi-common': 0.4.2(c31a38bece4d321b4fae6a2e7e5e96b1)
|
||||||
argon2: 0.43.1
|
argon2: 0.43.1
|
||||||
axios: 1.16.1
|
axios: 1.16.1
|
||||||
change-case: 5.4.4
|
change-case: 5.4.4
|
||||||
@@ -7791,7 +8247,40 @@ snapshots:
|
|||||||
- debug
|
- debug
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@tria-plc/iamapi-common@0.4.1(c31a38bece4d321b4fae6a2e7e5e96b1)':
|
'@tria-plc/iamapi-common@0.1.6(d02ea0b424ed983863ad8209ac09ab52)':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/axios': 4.0.1(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(axios@1.17.0)(rxjs@7.8.2)
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/core': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/jwt': 10.2.0(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))
|
||||||
|
'@nestjs/microservices': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(amqp-connection-manager@5.0.0(amqplib@2.0.1))(amqplib@2.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/passport': 10.0.3(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(passport@0.7.0)
|
||||||
|
'@nestjs/swagger': 11.4.4(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)
|
||||||
|
'@nestjs/throttler': 6.5.0(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(reflect-metadata@0.2.2)
|
||||||
|
'@nestjs/typeorm': 11.0.1(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))
|
||||||
|
'@tria-plc/api-common': 0.1.4(117ec8ab2e46133742e6b9e4ae304059)
|
||||||
|
argon2: 0.43.1
|
||||||
|
axios: 1.17.0
|
||||||
|
class-transformer: 0.5.1
|
||||||
|
class-validator: 0.14.4
|
||||||
|
ethiopian-date: 0.0.6
|
||||||
|
file-type: 21.3.4
|
||||||
|
jose: 5.10.0
|
||||||
|
jsonwebtoken: 9.0.3
|
||||||
|
libphonenumber-js: 1.13.5
|
||||||
|
nestjs-minio-client: 2.2.0(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24)
|
||||||
|
passport-jwt: 4.0.1
|
||||||
|
qrcode: 1.5.4
|
||||||
|
reflect-metadata: 0.2.2
|
||||||
|
rxjs: 7.8.2
|
||||||
|
typeorm: 0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3))
|
||||||
|
typeorm-extension: 3.9.0(@faker-js/faker@10.4.0)(typeorm@0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))
|
||||||
|
uuid: 11.1.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@faker-js/faker'
|
||||||
|
- supports-color
|
||||||
|
|
||||||
|
'@tria-plc/iamapi-common@0.4.2(c31a38bece4d321b4fae6a2e7e5e96b1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/axios': 4.0.1(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(axios@1.16.1)(rxjs@7.8.2)
|
'@nestjs/axios': 4.0.1(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(axios@1.16.1)(rxjs@7.8.2)
|
||||||
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
'@nestjs/common': 11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
@@ -7802,7 +8291,7 @@ snapshots:
|
|||||||
'@nestjs/swagger': 7.4.2(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)
|
'@nestjs/swagger': 7.4.2(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)
|
||||||
'@nestjs/throttler': 6.5.0(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(reflect-metadata@0.2.2)
|
'@nestjs/throttler': 6.5.0(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(reflect-metadata@0.2.2)
|
||||||
'@nestjs/typeorm': 11.0.1(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))
|
'@nestjs/typeorm': 11.0.1(@nestjs/common@11.1.23(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.23)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.30(pg@8.21.0)(ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3)))
|
||||||
'@tria-plc/api-common': 1.2.3(82de1fa22df14d2f8c974e73e7d5a000)
|
'@tria-plc/api-common': 1.2.3(38550619d911b1103993bd09ae683e00)
|
||||||
api-common: 1.2.2
|
api-common: 1.2.2
|
||||||
argon2: 0.43.1
|
argon2: 0.43.1
|
||||||
axios: 1.16.1
|
axios: 1.16.1
|
||||||
@@ -7892,7 +8381,7 @@ snapshots:
|
|||||||
|
|
||||||
'@types/conventional-commits-parser@5.0.2':
|
'@types/conventional-commits-parser@5.0.2':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.19.41
|
'@types/node': 25.9.1
|
||||||
|
|
||||||
'@types/cookiejar@2.1.5': {}
|
'@types/cookiejar@2.1.5': {}
|
||||||
|
|
||||||
@@ -7991,9 +8480,9 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
undici-types: 6.21.0
|
undici-types: 6.21.0
|
||||||
|
|
||||||
'@types/node@24.12.4':
|
'@types/node@25.9.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types: 7.16.0
|
undici-types: 7.24.6
|
||||||
|
|
||||||
'@types/passport-jwt@4.0.1':
|
'@types/passport-jwt@4.0.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -8761,6 +9250,16 @@ snapshots:
|
|||||||
- debug
|
- debug
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
axios@1.17.0:
|
||||||
|
dependencies:
|
||||||
|
follow-redirects: 1.16.0
|
||||||
|
form-data: 4.0.5
|
||||||
|
https-proxy-agent: 5.0.1
|
||||||
|
proxy-from-env: 2.1.0
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- debug
|
||||||
|
- supports-color
|
||||||
|
|
||||||
axobject-query@4.1.0: {}
|
axobject-query@4.1.0: {}
|
||||||
|
|
||||||
babel-jest@29.7.0(@babel/core@7.29.0):
|
babel-jest@29.7.0(@babel/core@7.29.0):
|
||||||
@@ -9232,9 +9731,9 @@ snapshots:
|
|||||||
object-assign: 4.1.1
|
object-assign: 4.1.1
|
||||||
vary: 1.1.2
|
vary: 1.1.2
|
||||||
|
|
||||||
cosmiconfig-typescript-loader@6.3.0(@types/node@24.12.4)(cosmiconfig@9.0.1(typescript@5.9.3))(typescript@5.9.3):
|
cosmiconfig-typescript-loader@6.3.0(@types/node@25.9.1)(cosmiconfig@9.0.1(typescript@5.9.3))(typescript@5.9.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 24.12.4
|
'@types/node': 25.9.1
|
||||||
cosmiconfig: 9.0.1(typescript@5.9.3)
|
cosmiconfig: 9.0.1(typescript@5.9.3)
|
||||||
jiti: 2.6.1
|
jiti: 2.6.1
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
@@ -9242,7 +9741,7 @@ snapshots:
|
|||||||
cosmiconfig@8.3.6(typescript@5.9.3):
|
cosmiconfig@8.3.6(typescript@5.9.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
import-fresh: 3.3.1
|
import-fresh: 3.3.1
|
||||||
js-yaml: 4.1.1
|
js-yaml: 4.2.0
|
||||||
parse-json: 5.2.0
|
parse-json: 5.2.0
|
||||||
path-type: 4.0.0
|
path-type: 4.0.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@@ -9252,7 +9751,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
env-paths: 2.2.1
|
env-paths: 2.2.1
|
||||||
import-fresh: 3.3.1
|
import-fresh: 3.3.1
|
||||||
js-yaml: 4.1.1
|
js-yaml: 4.2.0
|
||||||
parse-json: 5.2.0
|
parse-json: 5.2.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
@@ -9546,6 +10045,11 @@ snapshots:
|
|||||||
graceful-fs: 4.2.11
|
graceful-fs: 4.2.11
|
||||||
tapable: 2.3.3
|
tapable: 2.3.3
|
||||||
|
|
||||||
|
enhanced-resolve@5.22.2:
|
||||||
|
dependencies:
|
||||||
|
graceful-fs: 4.2.11
|
||||||
|
tapable: 2.3.3
|
||||||
|
|
||||||
ent@2.2.2:
|
ent@2.2.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bound: 1.0.4
|
call-bound: 1.0.4
|
||||||
@@ -11208,6 +11712,10 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
argparse: 2.0.1
|
argparse: 2.0.1
|
||||||
|
|
||||||
|
js-yaml@4.2.0:
|
||||||
|
dependencies:
|
||||||
|
argparse: 2.0.1
|
||||||
|
|
||||||
jsesc@3.1.0: {}
|
jsesc@3.1.0: {}
|
||||||
|
|
||||||
json-buffer@3.0.1: {}
|
json-buffer@3.0.1: {}
|
||||||
@@ -11343,6 +11851,8 @@ snapshots:
|
|||||||
|
|
||||||
libphonenumber-js@1.13.3: {}
|
libphonenumber-js@1.13.3: {}
|
||||||
|
|
||||||
|
libphonenumber-js@1.13.5: {}
|
||||||
|
|
||||||
libreoffice-convert@1.8.1:
|
libreoffice-convert@1.8.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
async: 3.2.6
|
async: 3.2.6
|
||||||
@@ -11539,7 +12049,7 @@ snapshots:
|
|||||||
|
|
||||||
make-dir@4.0.0:
|
make-dir@4.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
semver: 7.8.1
|
semver: 7.8.2
|
||||||
|
|
||||||
make-error@1.3.6: {}
|
make-error@1.3.6: {}
|
||||||
|
|
||||||
@@ -11736,6 +12246,14 @@ snapshots:
|
|||||||
reflect-metadata: 0.1.14
|
reflect-metadata: 0.1.14
|
||||||
rxjs: 7.8.2
|
rxjs: 7.8.2
|
||||||
|
|
||||||
|
nestjs-minio-client@2.2.0(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.24):
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
'@nestjs/core': 11.1.24(@nestjs/common@11.1.24(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/microservices@11.1.24)(@nestjs/platform-express@11.1.24)(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
||||||
|
minio: 7.1.3
|
||||||
|
reflect-metadata: 0.1.14
|
||||||
|
rxjs: 7.8.2
|
||||||
|
|
||||||
next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@next/env': 14.2.35
|
'@next/env': 14.2.35
|
||||||
@@ -12500,6 +13018,8 @@ snapshots:
|
|||||||
|
|
||||||
semver@7.8.1: {}
|
semver@7.8.1: {}
|
||||||
|
|
||||||
|
semver@7.8.2: {}
|
||||||
|
|
||||||
send@1.2.1:
|
send@1.2.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
@@ -12677,6 +13197,8 @@ snapshots:
|
|||||||
|
|
||||||
source-map@0.7.4: {}
|
source-map@0.7.4: {}
|
||||||
|
|
||||||
|
source-map@0.7.6: {}
|
||||||
|
|
||||||
split-on-first@1.1.0: {}
|
split-on-first@1.1.0: {}
|
||||||
|
|
||||||
split-string@3.1.0:
|
split-string@3.1.0:
|
||||||
@@ -13064,6 +13586,16 @@ snapshots:
|
|||||||
babel-jest: 29.7.0(@babel/core@7.29.0)
|
babel-jest: 29.7.0(@babel/core@7.29.0)
|
||||||
jest-util: 29.7.0
|
jest-util: 29.7.0
|
||||||
|
|
||||||
|
ts-loader@9.6.0(typescript@5.9.3)(webpack@5.106.0):
|
||||||
|
dependencies:
|
||||||
|
chalk: 4.1.2
|
||||||
|
enhanced-resolve: 5.22.2
|
||||||
|
micromatch: 4.0.8
|
||||||
|
semver: 7.8.2
|
||||||
|
source-map: 0.7.6
|
||||||
|
typescript: 5.9.3
|
||||||
|
webpack: 5.106.0
|
||||||
|
|
||||||
ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3):
|
ts-node@10.9.2(@types/node@20.19.41)(typescript@5.9.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@cspotcode/source-map-support': 0.8.1
|
'@cspotcode/source-map-support': 0.8.1
|
||||||
@@ -13232,7 +13764,7 @@ snapshots:
|
|||||||
|
|
||||||
undici-types@6.21.0: {}
|
undici-types@6.21.0: {}
|
||||||
|
|
||||||
undici-types@7.16.0: {}
|
undici-types@7.24.6: {}
|
||||||
|
|
||||||
unicorn-magic@0.1.0: {}
|
unicorn-magic@0.1.0: {}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user