From faa5934a17efda6da1df0c977358a9d761eb76f1 Mon Sep 17 00:00:00 2001 From: Carlos Santos <4a.santos@gmail.com> Date: Thu, 16 Oct 2025 17:33:55 +0200 Subject: [PATCH] backend: Exports internal config as a constant Refactors the internal configuration to be exported as a constant, improving code modularity and preventing accidental modifications. Updates all files that use the internal config to import the constant instead of the default export. --- meet-ce/backend/src/config/index.ts | 1 + meet-ce/backend/src/config/internal-config.ts | 4 +--- meet-ce/backend/src/controllers/auth.controller.ts | 2 +- .../backend/src/controllers/participant.controller.ts | 9 +++++++-- meet-ce/backend/src/controllers/recording.controller.ts | 2 +- meet-ce/backend/src/controllers/room.controller.ts | 2 +- meet-ce/backend/src/middlewares/auth.middleware.ts | 2 +- .../request-validators/room-validator.middleware.ts | 9 +++++++-- meet-ce/backend/src/server.ts | 2 +- meet-ce/backend/src/services/participant-name.service.ts | 2 +- meet-ce/backend/src/services/recording.service.ts | 7 ++----- meet-ce/backend/src/services/room.service.ts | 2 +- .../src/services/storage/providers/gcp/gcs.service.ts | 2 +- .../storage/providers/s3/s3-storage-key.builder.ts | 2 +- .../src/services/storage/providers/s3/s3.service.ts | 2 +- meet-ce/backend/src/services/task-scheduler.service.ts | 2 +- meet-ce/backend/src/services/token.service.ts | 2 +- meet-ce/backend/src/services/user.service.ts | 2 +- meet-ce/backend/src/utils/token.utils.ts | 2 +- 19 files changed, 32 insertions(+), 26 deletions(-) diff --git a/meet-ce/backend/src/config/index.ts b/meet-ce/backend/src/config/index.ts index 64430cb..9529098 100644 --- a/meet-ce/backend/src/config/index.ts +++ b/meet-ce/backend/src/config/index.ts @@ -1 +1,2 @@ export * from './dependency-injector.config.js'; +export * from './internal-config.js'; diff --git a/meet-ce/backend/src/config/internal-config.ts b/meet-ce/backend/src/config/internal-config.ts index f67652a..a128bb8 100644 --- a/meet-ce/backend/src/config/internal-config.ts +++ b/meet-ce/backend/src/config/internal-config.ts @@ -1,6 +1,6 @@ import { StringValue } from 'ms'; -const INTERNAL_CONFIG = { +export const INTERNAL_CONFIG = { // Base paths for the API API_BASE_PATH_V1: '/api/v1', INTERNAL_API_BASE_PATH_V1: '/internal-api/v1', @@ -63,5 +63,3 @@ const INTERNAL_CONFIG = { export const setInternalConfig = (overrides: Partial): void => { Object.assign(INTERNAL_CONFIG, overrides); }; - -export default INTERNAL_CONFIG; diff --git a/meet-ce/backend/src/controllers/auth.controller.ts b/meet-ce/backend/src/controllers/auth.controller.ts index c3d1246..0835e52 100644 --- a/meet-ce/backend/src/controllers/auth.controller.ts +++ b/meet-ce/backend/src/controllers/auth.controller.ts @@ -2,7 +2,7 @@ import { AuthTransportMode } from '@openvidu-meet/typings'; import { Request, Response } from 'express'; import { ClaimGrants } from 'livekit-server-sdk'; import { container } from '../config/index.js'; -import INTERNAL_CONFIG from '../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../config/internal-config.js'; import { errorInvalidCredentials, errorInvalidRefreshToken, diff --git a/meet-ce/backend/src/controllers/participant.controller.ts b/meet-ce/backend/src/controllers/participant.controller.ts index 4f6e03e..8ab97ee 100644 --- a/meet-ce/backend/src/controllers/participant.controller.ts +++ b/meet-ce/backend/src/controllers/participant.controller.ts @@ -1,7 +1,12 @@ -import { AuthTransportMode, OpenViduMeetPermissions, ParticipantOptions, ParticipantRole } from '@openvidu-meet/typings'; +import { + AuthTransportMode, + OpenViduMeetPermissions, + ParticipantOptions, + ParticipantRole +} from '@openvidu-meet/typings'; import { Request, Response } from 'express'; import { container } from '../config/index.js'; -import INTERNAL_CONFIG from '../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../config/internal-config.js'; import { errorInvalidParticipantToken, errorParticipantTokenNotPresent, diff --git a/meet-ce/backend/src/controllers/recording.controller.ts b/meet-ce/backend/src/controllers/recording.controller.ts index 963473c..a5c1ae3 100644 --- a/meet-ce/backend/src/controllers/recording.controller.ts +++ b/meet-ce/backend/src/controllers/recording.controller.ts @@ -2,7 +2,7 @@ import archiver from 'archiver'; import { Request, Response } from 'express'; import { Readable } from 'stream'; import { container } from '../config/index.js'; -import INTERNAL_CONFIG from '../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../config/internal-config.js'; import { RecordingHelper } from '../helpers/index.js'; import { errorRecordingNotFound, diff --git a/meet-ce/backend/src/controllers/room.controller.ts b/meet-ce/backend/src/controllers/room.controller.ts index 03abce8..0a638bb 100644 --- a/meet-ce/backend/src/controllers/room.controller.ts +++ b/meet-ce/backend/src/controllers/room.controller.ts @@ -10,7 +10,7 @@ import { } from '@openvidu-meet/typings'; import { Request, Response } from 'express'; import { container } from '../config/index.js'; -import INTERNAL_CONFIG from '../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../config/internal-config.js'; import { handleError } from '../models/error.model.js'; import { LoggerService, ParticipantService, RoomService } from '../services/index.js'; import { getAuthTransportMode, getBaseUrl, getCookieOptions } from '../utils/index.js'; diff --git a/meet-ce/backend/src/middlewares/auth.middleware.ts b/meet-ce/backend/src/middlewares/auth.middleware.ts index f3b18c6..efa0f8d 100644 --- a/meet-ce/backend/src/middlewares/auth.middleware.ts +++ b/meet-ce/backend/src/middlewares/auth.middleware.ts @@ -4,7 +4,7 @@ import rateLimit from 'express-rate-limit'; import { ClaimGrants } from 'livekit-server-sdk'; import ms from 'ms'; import { container } from '../config/index.js'; -import INTERNAL_CONFIG from '../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../config/internal-config.js'; import { errorInsufficientPermissions, errorInvalidApiKey, diff --git a/meet-ce/backend/src/middlewares/request-validators/room-validator.middleware.ts b/meet-ce/backend/src/middlewares/request-validators/room-validator.middleware.ts index 6d9975a..20c7cbc 100644 --- a/meet-ce/backend/src/middlewares/request-validators/room-validator.middleware.ts +++ b/meet-ce/backend/src/middlewares/request-validators/room-validator.middleware.ts @@ -17,7 +17,7 @@ import { import { NextFunction, Request, Response } from 'express'; import ms from 'ms'; import { z } from 'zod'; -import INTERNAL_CONFIG from '../../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../../config/internal-config.js'; import { rejectUnprocessableRequest } from '../../models/error.model.js'; /** @@ -92,7 +92,12 @@ const VirtualBackgroundConfigSchema: z.ZodType = z. const ThemeModeSchema: z.ZodType = z.enum([MeetRoomThemeMode.LIGHT, MeetRoomThemeMode.DARK]); -const hexColorSchema = z.string().regex(/^#([0-9A-Fa-f]{8}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{4}|[0-9A-Fa-f]{3})$/, 'Must be a valid hex color code (with or without alpha)'); +const hexColorSchema = z + .string() + .regex( + /^#([0-9A-Fa-f]{8}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{4}|[0-9A-Fa-f]{3})$/, + 'Must be a valid hex color code (with or without alpha)' + ); const RoomThemeSchema = z.object({ name: z diff --git a/meet-ce/backend/src/server.ts b/meet-ce/backend/src/server.ts index 63249f0..c4a720d 100644 --- a/meet-ce/backend/src/server.ts +++ b/meet-ce/backend/src/server.ts @@ -3,7 +3,7 @@ import cookieParser from 'cookie-parser'; import cors from 'cors'; import express, { Express, Request, Response } from 'express'; import { initializeEagerServices, registerDependencies } from './config/index.js'; -import INTERNAL_CONFIG from './config/internal-config.js'; +import { INTERNAL_CONFIG } from './config/internal-config.js'; import { SERVER_CORS_ORIGIN, SERVER_PORT, logEnvVars } from './environment.js'; import { httpContextMiddleware, jsonSyntaxErrorHandler } from './middlewares/index.js'; import { diff --git a/meet-ce/backend/src/services/participant-name.service.ts b/meet-ce/backend/src/services/participant-name.service.ts index da90ee3..ba534e6 100644 --- a/meet-ce/backend/src/services/participant-name.service.ts +++ b/meet-ce/backend/src/services/participant-name.service.ts @@ -2,7 +2,7 @@ import { inject, injectable } from 'inversify'; import { RedisKeyName } from '../models/redis.model.js'; import { LoggerService, RedisService } from './index.js'; import ms from 'ms'; -import INTERNAL_CONFIG from '../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../config/internal-config.js'; @injectable() export class ParticipantNameService { diff --git a/meet-ce/backend/src/services/recording.service.ts b/meet-ce/backend/src/services/recording.service.ts index 90a0086..94a8180 100644 --- a/meet-ce/backend/src/services/recording.service.ts +++ b/meet-ce/backend/src/services/recording.service.ts @@ -4,7 +4,7 @@ import { EgressInfo, EgressStatus, EncodedFileOutput, EncodedFileType, RoomCompo import ms from 'ms'; import { Readable } from 'stream'; import { uid } from 'uid'; -import INTERNAL_CONFIG from '../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../config/internal-config.js'; import { MEET_S3_SUBBUCKET } from '../environment.js'; import { MeetLock, RecordingHelper, UtilsHelper } from '../helpers/index.js'; import { @@ -322,10 +322,7 @@ export class RecordingService { await new Promise((resolve) => setTimeout(resolve, retryDelayMs * retryCount)); } - const { failed } = await this.bulkDeleteRecordingsAndAssociatedFiles( - remainingRecordings, - roomId - ); + const { failed } = await this.bulkDeleteRecordingsAndAssociatedFiles(remainingRecordings, roomId); if (failed.length === 0) { this.logger.info(`Successfully deleted all recordings for room '${roomId}'`); diff --git a/meet-ce/backend/src/services/room.service.ts b/meet-ce/backend/src/services/room.service.ts index 26316c7..2869daa 100644 --- a/meet-ce/backend/src/services/room.service.ts +++ b/meet-ce/backend/src/services/room.service.ts @@ -18,7 +18,7 @@ import { CreateOptions, Room } from 'livekit-server-sdk'; import ms from 'ms'; import { uid as secureUid } from 'uid/secure'; import { uid } from 'uid/single'; -import INTERNAL_CONFIG from '../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../config/internal-config.js'; import { MEET_NAME_ID } from '../environment.js'; import { MeetRoomHelper, UtilsHelper } from '../helpers/index.js'; import { validateRecordingTokenMetadata } from '../middlewares/index.js'; diff --git a/meet-ce/backend/src/services/storage/providers/gcp/gcs.service.ts b/meet-ce/backend/src/services/storage/providers/gcp/gcs.service.ts index ebf72e5..2394ad9 100644 --- a/meet-ce/backend/src/services/storage/providers/gcp/gcs.service.ts +++ b/meet-ce/backend/src/services/storage/providers/gcp/gcs.service.ts @@ -1,7 +1,7 @@ import { Bucket, File, GetFilesOptions, Storage } from '@google-cloud/storage'; import { inject, injectable } from 'inversify'; import { Readable } from 'stream'; -import INTERNAL_CONFIG from '../../../../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../../../../config/internal-config.js'; import { MEET_S3_BUCKET, MEET_S3_SUBBUCKET } from '../../../../environment.js'; import { errorS3NotAvailable, internalError } from '../../../../models/error.model.js'; import { LoggerService } from '../../../index.js'; diff --git a/meet-ce/backend/src/services/storage/providers/s3/s3-storage-key.builder.ts b/meet-ce/backend/src/services/storage/providers/s3/s3-storage-key.builder.ts index babf185..da68423 100644 --- a/meet-ce/backend/src/services/storage/providers/s3/s3-storage-key.builder.ts +++ b/meet-ce/backend/src/services/storage/providers/s3/s3-storage-key.builder.ts @@ -1,4 +1,4 @@ -import INTERNAL_CONFIG from '../../../../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../../../../config/internal-config.js'; import { RecordingHelper } from '../../../../helpers/recording.helper.js'; import { StorageKeyBuilder } from '../../storage.interface.js'; diff --git a/meet-ce/backend/src/services/storage/providers/s3/s3.service.ts b/meet-ce/backend/src/services/storage/providers/s3/s3.service.ts index d1acda3..e94b2b0 100644 --- a/meet-ce/backend/src/services/storage/providers/s3/s3.service.ts +++ b/meet-ce/backend/src/services/storage/providers/s3/s3.service.ts @@ -14,7 +14,7 @@ import { } from '@aws-sdk/client-s3'; import { inject, injectable } from 'inversify'; import { Readable } from 'stream'; -import INTERNAL_CONFIG from '../../../../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../../../../config/internal-config.js'; import { MEET_AWS_REGION, MEET_S3_ACCESS_KEY, diff --git a/meet-ce/backend/src/services/task-scheduler.service.ts b/meet-ce/backend/src/services/task-scheduler.service.ts index 2e76736..a050bb2 100644 --- a/meet-ce/backend/src/services/task-scheduler.service.ts +++ b/meet-ce/backend/src/services/task-scheduler.service.ts @@ -1,7 +1,7 @@ import { CronJob } from 'cron'; import { inject, injectable } from 'inversify'; import ms from 'ms'; -import INTERNAL_CONFIG from '../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../config/internal-config.js'; import { MeetLock } from '../helpers/index.js'; import { LoggerService, MutexService, DistributedEventService } from './index.js'; diff --git a/meet-ce/backend/src/services/token.service.ts b/meet-ce/backend/src/services/token.service.ts index bfcdbb8..bfb9182 100644 --- a/meet-ce/backend/src/services/token.service.ts +++ b/meet-ce/backend/src/services/token.service.ts @@ -10,7 +10,7 @@ import { import { inject, injectable } from 'inversify'; import { jwtDecode } from 'jwt-decode'; import { AccessToken, AccessTokenOptions, ClaimGrants, TokenVerifier, VideoGrant } from 'livekit-server-sdk'; -import INTERNAL_CONFIG from '../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../config/internal-config.js'; import { LIVEKIT_API_KEY, LIVEKIT_API_SECRET, LIVEKIT_URL } from '../environment.js'; import { LoggerService } from './index.js'; diff --git a/meet-ce/backend/src/services/user.service.ts b/meet-ce/backend/src/services/user.service.ts index d1a59fc..0f9e8f9 100644 --- a/meet-ce/backend/src/services/user.service.ts +++ b/meet-ce/backend/src/services/user.service.ts @@ -1,6 +1,6 @@ import { User, UserDTO, UserRole } from '@openvidu-meet/typings'; import { inject, injectable } from 'inversify'; -import INTERNAL_CONFIG from '../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../config/internal-config.js'; import { PasswordHelper } from '../helpers/password.helper.js'; import { errorInvalidPassword, internalError } from '../models/error.model.js'; import { MeetStorageService } from './index.js'; diff --git a/meet-ce/backend/src/utils/token.utils.ts b/meet-ce/backend/src/utils/token.utils.ts index ef8008a..27f5d6f 100644 --- a/meet-ce/backend/src/utils/token.utils.ts +++ b/meet-ce/backend/src/utils/token.utils.ts @@ -1,7 +1,7 @@ import { AuthTransportMode } from '@openvidu-meet/typings'; import { Request } from 'express'; import { container } from '../config/index.js'; -import INTERNAL_CONFIG from '../config/internal-config.js'; +import { INTERNAL_CONFIG } from '../config/internal-config.js'; import { LoggerService, MeetStorageService } from '../services/index.js'; /**