diff --git a/meet-ce/backend/src/controllers/recording.controller.ts b/meet-ce/backend/src/controllers/recording.controller.ts index e34fe71d..d6f89dd4 100644 --- a/meet-ce/backend/src/controllers/recording.controller.ts +++ b/meet-ce/backend/src/controllers/recording.controller.ts @@ -1,4 +1,4 @@ -import { MeetRecordingInfo } from '@openvidu-meet/typings'; +import { MeetRecordingField, MeetRecordingInfo } from '@openvidu-meet/typings'; import archiver from 'archiver'; import { Request, Response } from 'express'; import { Readable } from 'stream'; @@ -10,7 +10,6 @@ import { internalError, rejectRequestFromMeetError } from '../models/error.model.js'; -import { MeetRecordingField } from '../models/recording-request.js'; import { LoggerService } from '../services/logger.service.js'; import { RecordingService } from '../services/recording.service.js'; import { getBaseUrl } from '../utils/url.utils.js'; diff --git a/meet-ce/backend/src/controllers/room.controller.ts b/meet-ce/backend/src/controllers/room.controller.ts index 97ae2424..3001ecfb 100644 --- a/meet-ce/backend/src/controllers/room.controller.ts +++ b/meet-ce/backend/src/controllers/room.controller.ts @@ -2,6 +2,9 @@ import { MeetRoomDeletionPolicyWithMeeting, MeetRoomDeletionPolicyWithRecordings, MeetRoomDeletionSuccessCode, + MeetRoomExpandableProperties, + MeetRoomField, + MeetRoomFilters, MeetRoomOptions } from '@openvidu-meet/typings'; import { Request, Response } from 'express'; @@ -9,7 +12,6 @@ import { container } from '../config/dependency-injector.config.js'; import { INTERNAL_CONFIG } from '../config/internal-config.js'; import { MeetRoomHelper } from '../helpers/room.helper.js'; import { handleError } from '../models/error.model.js'; -import { MeetRoomExpandableProperties, MeetRoomField, MeetRoomFilters } from '../models/room-request.js'; import { LoggerService } from '../services/logger.service.js'; import { RoomService } from '../services/room.service.js'; import { getBaseUrl } from '../utils/url.utils.js'; diff --git a/meet-ce/backend/src/helpers/room.helper.ts b/meet-ce/backend/src/helpers/room.helper.ts index 06535d5c..2b5c865e 100644 --- a/meet-ce/backend/src/helpers/room.helper.ts +++ b/meet-ce/backend/src/helpers/room.helper.ts @@ -1,13 +1,15 @@ -import { MeetRoom, MeetRoomMemberPermissions, MeetRoomOptions } from '@openvidu-meet/typings'; -import { INTERNAL_CONFIG } from '../config/internal-config.js'; -import { MEET_ENV } from '../environment.js'; import { MEET_ROOM_EXPANDABLE_FIELDS, + MeetRoom, MeetRoomCollapsibleProperties, MeetRoomExpandableProperties, MeetRoomField, + MeetRoomMemberPermissions, + MeetRoomOptions, SENSITIVE_ROOM_FIELDS_ENTRIES -} from '../models/room-request.js'; +} from '@openvidu-meet/typings'; +import { INTERNAL_CONFIG } from '../config/internal-config.js'; +import { MEET_ENV } from '../environment.js'; export class MeetRoomHelper { private constructor() { @@ -234,7 +236,10 @@ export class MeetRoomHelper { let filteredRoom: MeetRoom | undefined; - for (const [permissionKey, fields] of SENSITIVE_ROOM_FIELDS_ENTRIES) { + for (const [permissionKey, fields] of SENSITIVE_ROOM_FIELDS_ENTRIES as [ + keyof MeetRoomMemberPermissions, + (keyof MeetRoom)[] + ][]) { if (!fields?.length) { continue; } diff --git a/meet-ce/backend/src/models/zod-schemas/recording.schema.ts b/meet-ce/backend/src/models/zod-schemas/recording.schema.ts index 84471ba0..6810c2f4 100644 --- a/meet-ce/backend/src/models/zod-schemas/recording.schema.ts +++ b/meet-ce/backend/src/models/zod-schemas/recording.schema.ts @@ -1,6 +1,10 @@ -import { MeetRecordingLayout, MeetRecordingStatus } from '@openvidu-meet/typings'; +import { + MEET_RECORDING_FIELDS, + MeetRecordingField, + MeetRecordingLayout, + MeetRecordingStatus +} from '@openvidu-meet/typings'; import { z } from 'zod'; -import { MEET_RECORDING_FIELDS, MeetRecordingField } from '../recording-request.js'; import { encodingValidator, nonEmptySanitizedRoomId } from './room.schema.js'; // Shared fields validation schema for Recording entity diff --git a/meet-ce/backend/src/models/zod-schemas/room.schema.ts b/meet-ce/backend/src/models/zod-schemas/room.schema.ts index 2c14e9d4..788c08de 100644 --- a/meet-ce/backend/src/models/zod-schemas/room.schema.ts +++ b/meet-ce/backend/src/models/zod-schemas/room.schema.ts @@ -1,4 +1,6 @@ import { + MEET_ROOM_EXPANDABLE_FIELDS, + MEET_ROOM_FIELDS, MeetAppearanceConfig, MeetChatConfig, MeetE2EEConfig, @@ -14,6 +16,8 @@ import { MeetRoomConfig, MeetRoomDeletionPolicyWithMeeting, MeetRoomDeletionPolicyWithRecordings, + MeetRoomExpandableProperties, + MeetRoomField, MeetRoomOptions, MeetRoomRolesConfig, MeetRoomStatus, @@ -25,12 +29,6 @@ import ms from 'ms'; import { z } from 'zod'; import { INTERNAL_CONFIG } from '../../config/internal-config.js'; import { MeetRoomHelper } from '../../helpers/room.helper.js'; -import { - MEET_ROOM_EXPANDABLE_FIELDS, - MEET_ROOM_FIELDS, - MeetRoomExpandableProperties, - MeetRoomField -} from '../room-request.js'; import { PartialMeetPermissionsSchema } from './room-member.schema.js'; export const nonEmptySanitizedRoomId = (fieldName: string) => diff --git a/meet-ce/backend/src/repositories/recording.repository.ts b/meet-ce/backend/src/repositories/recording.repository.ts index ced77a65..956c6320 100644 --- a/meet-ce/backend/src/repositories/recording.repository.ts +++ b/meet-ce/backend/src/repositories/recording.repository.ts @@ -1,8 +1,12 @@ -import { MeetRecordingInfo, MeetRecordingStatus } from '@openvidu-meet/typings'; +import { + MeetRecordingField, + MeetRecordingFilters, + MeetRecordingInfo, + MeetRecordingStatus +} from '@openvidu-meet/typings'; import { inject, injectable } from 'inversify'; import { uid as secureUid } from 'uid/secure'; import { MeetRecordingDocument, MeetRecordingModel } from '../models/mongoose-schemas/recording.schema.js'; -import { MeetRecordingField, MeetRecordingFilters } from '../models/recording-request.js'; import { LoggerService } from '../services/logger.service.js'; import { BaseRepository } from './base.repository.js'; diff --git a/meet-ce/backend/src/repositories/room.repository.ts b/meet-ce/backend/src/repositories/room.repository.ts index 5db9c987..f756147a 100644 --- a/meet-ce/backend/src/repositories/room.repository.ts +++ b/meet-ce/backend/src/repositories/room.repository.ts @@ -1,7 +1,6 @@ -import { MeetRoom, MeetRoomStatus } from '@openvidu-meet/typings'; +import { MeetRoom, MeetRoomField, MeetRoomFilters, MeetRoomStatus } from '@openvidu-meet/typings'; import { inject, injectable } from 'inversify'; import { MeetRoomDocument, MeetRoomModel } from '../models/mongoose-schemas/room.schema.js'; -import { MeetRoomField, MeetRoomFilters } from '../models/room-request.js'; import { LoggerService } from '../services/logger.service.js'; import { getBasePath } from '../utils/html-injection.utils.js'; import { getBaseUrl } from '../utils/url.utils.js'; diff --git a/meet-ce/backend/src/services/recording.service.ts b/meet-ce/backend/src/services/recording.service.ts index 4feec604..522681bf 100644 --- a/meet-ce/backend/src/services/recording.service.ts +++ b/meet-ce/backend/src/services/recording.service.ts @@ -1,6 +1,8 @@ import { MeetRecordingEncodingOptions, MeetRecordingEncodingPreset, + MeetRecordingField, + MeetRecordingFilters, MeetRecordingInfo, MeetRecordingLayout, MeetRecordingStatus, @@ -34,7 +36,6 @@ import { isErrorRecordingNotFound, OpenViduMeetError } from '../models/error.model.js'; -import { MeetRecordingField, MeetRecordingFilters } from '../models/recording-request.js'; import { RecordingRepository } from '../repositories/recording.repository.js'; import { DistributedEventService } from './distributed-event.service.js'; import { FrontendEventService } from './frontend-event.service.js'; diff --git a/meet-ce/backend/src/services/room.service.ts b/meet-ce/backend/src/services/room.service.ts index 6a37c6ea..c3824e37 100644 --- a/meet-ce/backend/src/services/room.service.ts +++ b/meet-ce/backend/src/services/room.service.ts @@ -8,8 +8,10 @@ import { MeetRoomDeletionPolicyWithMeeting, MeetRoomDeletionPolicyWithRecordings, MeetRoomDeletionSuccessCode, + MeetRoomFilters, MeetRoomMemberPermissions, MeetRoomOptions, + MeetRoomResponseOptions, MeetRoomRoles, MeetRoomRolesConfig, MeetRoomStatus, @@ -34,10 +36,7 @@ import { internalError, OpenViduMeetError } from '../models/error.model.js'; -import { - MeetRoomFilters, - MeetRoomResponseOptions -} from '../models/room-request.js'; + import { RoomMemberRepository } from '../repositories/room-member.repository.js'; import { RoomRepository } from '../repositories/room.repository.js'; import { FrontendEventService } from './frontend-event.service.js'; diff --git a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/meeting/services/meeting-lobby.service.ts b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/meeting/services/meeting-lobby.service.ts index 2c32f4f6..d4cb7390 100644 --- a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/meeting/services/meeting-lobby.service.ts +++ b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/meeting/services/meeting-lobby.service.ts @@ -299,7 +299,7 @@ export class MeetingLobbyService { const { recordings } = await this.recordingService.listRecordings({ maxItems: 1, roomId, - fields: 'recordingId' + fields: ['recordingId'] }); const hasRecordings = recordings.length > 0; diff --git a/meet-ce/typings/src/index.ts b/meet-ce/typings/src/index.ts index e2e6d9d4..a53a471a 100644 --- a/meet-ce/typings/src/index.ts +++ b/meet-ce/typings/src/index.ts @@ -5,9 +5,11 @@ export * from './event.model.js'; export * from './global-config.js'; export * from './permissions/livekit-permissions.js'; export * from './permissions/meet-permissions.js'; +export * from './recording-response.js'; export * from './recording.model.js'; export * from './room-config.js'; export * from './room-member.js'; +export * from './room-response.js'; export * from './room.js'; export * from './sort-pagination.js'; export * from './user.js'; @@ -18,3 +20,4 @@ export * from './webcomponent/command.model.js'; export * from './webcomponent/event.model.js'; export * from './webcomponent/message.type.js'; export * from './webcomponent/properties.model.js'; + diff --git a/meet-ce/backend/src/models/recording-request.ts b/meet-ce/typings/src/recording-response.ts similarity index 91% rename from meet-ce/backend/src/models/recording-request.ts rename to meet-ce/typings/src/recording-response.ts index 7618359c..46904c2b 100644 --- a/meet-ce/backend/src/models/recording-request.ts +++ b/meet-ce/typings/src/recording-response.ts @@ -1,4 +1,5 @@ -import { MeetRecordingInfo, MeetRecordingStatus, SortAndPagination } from '@openvidu-meet/typings'; +import { MeetRecordingInfo, MeetRecordingStatus } from './recording.model'; +import { SortAndPagination } from './sort-pagination'; /** * List of all valid fields that can be selected from a MeetRecordingInfo. diff --git a/meet-ce/backend/src/models/room-request.ts b/meet-ce/typings/src/room-response.ts similarity index 91% rename from meet-ce/backend/src/models/room-request.ts rename to meet-ce/typings/src/room-response.ts index c323ac4a..092de4e4 100644 --- a/meet-ce/backend/src/models/room-request.ts +++ b/meet-ce/typings/src/room-response.ts @@ -1,4 +1,6 @@ -import { MeetRoom, MeetRoomMemberPermissions, MeetRoomStatus, SortAndPagination } from '@openvidu-meet/typings'; +import { MeetRoomMemberPermissions } from './permissions/meet-permissions'; +import { MeetRoom, MeetRoomStatus } from './room'; +import { SortAndPagination } from './sort-pagination'; /** * List of all valid fields that can be selected from a MeetRoom. @@ -49,10 +51,9 @@ export const SENSITIVE_ROOM_FIELDS_BY_PERMISSION: Partial; +export const SENSITIVE_ROOM_FIELDS_ENTRIES = Object.entries(SENSITIVE_ROOM_FIELDS_BY_PERMISSION) as ReadonlyArray< + [keyof MeetRoomMemberPermissions, MeetRoomField[]] +>; /** * Filters for querying rooms with pagination, sorting, field selection, and expand support. diff --git a/meet-ce/typings/tsconfig.json b/meet-ce/typings/tsconfig.json index d1bb4a3e..e55c5bba 100644 --- a/meet-ce/typings/tsconfig.json +++ b/meet-ce/typings/tsconfig.json @@ -8,7 +8,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "typeRoots": ["node_modules/@types"], - "lib": ["es2016", "dom"], + "lib": ["es2017", "dom"], "outDir": "dist", "rootDir": "src", "strict": true,