diff --git a/apps/meteor/app/api/server/router.ts b/apps/meteor/app/api/server/router.ts index 5921932804b02..1f18ea4c47228 100644 --- a/apps/meteor/app/api/server/router.ts +++ b/apps/meteor/app/api/server/router.ts @@ -31,7 +31,7 @@ export class RocketChatAPIRouter< [x: string]: unknown; } = NonNullable, > extends Router { - protected convertActionToHandler(action: APIActionHandler): (c: HonoContext) => Promise> { + protected override convertActionToHandler(action: APIActionHandler): (c: HonoContext) => Promise> { return async (c: HonoContext): Promise> => { const { req, res } = c; const queryParams = this.parseQueryParams(req); diff --git a/apps/meteor/app/api/server/v1/integrations.ts b/apps/meteor/app/api/server/v1/integrations.ts index 5fb1781aa1411..78d77fe007f39 100644 --- a/apps/meteor/app/api/server/v1/integrations.ts +++ b/apps/meteor/app/api/server/v1/integrations.ts @@ -36,9 +36,9 @@ API.v1.addRoute( return API.v1.success({ integration: await addOutgoingIntegration(this.userId, this.bodyParams as INewOutgoingIntegration) }); case 'webhook-incoming': return API.v1.success({ integration: await addIncomingIntegration(this.userId, this.bodyParams as INewIncomingIntegration) }); + default: + return API.v1.failure('Invalid integration type.'); } - - return API.v1.failure('Invalid integration type.'); }, }, ); diff --git a/apps/meteor/app/apple/server/AppleCustomOAuth.ts b/apps/meteor/app/apple/server/AppleCustomOAuth.ts index 5ec0e8f570bc0..d6617b7b5e81d 100644 --- a/apps/meteor/app/apple/server/AppleCustomOAuth.ts +++ b/apps/meteor/app/apple/server/AppleCustomOAuth.ts @@ -5,7 +5,7 @@ import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server'; import { handleIdentityToken } from '../lib/handleIdentityToken'; export class AppleCustomOAuth extends CustomOAuth { - async getIdentity(_accessToken: string, query: Record): Promise { + override async getIdentity(_accessToken: string, query: Record): Promise { const { id_token: identityToken, user: userStr = '' } = query; let usrObj = {} as any; diff --git a/apps/meteor/app/file-upload/server/config/GridFS.ts b/apps/meteor/app/file-upload/server/config/GridFS.ts index 551569d4c58c4..bb9dfa5891f26 100644 --- a/apps/meteor/app/file-upload/server/config/GridFS.ts +++ b/apps/meteor/app/file-upload/server/config/GridFS.ts @@ -28,7 +28,7 @@ class ExtractRange extends stream.Transform { this.bytes_read = 0; } - _transform(chunk: any, _enc: BufferEncoding, cb: TransformCallback) { + override _transform(chunk: any, _enc: BufferEncoding, cb: TransformCallback) { if (this.bytes_read > this.stop) { // done reading this.end(); diff --git a/apps/meteor/app/importer-csv/server/CsvImporter.ts b/apps/meteor/app/importer-csv/server/CsvImporter.ts index 4f5eeba7d88b9..cab23a46da62a 100644 --- a/apps/meteor/app/importer-csv/server/CsvImporter.ts +++ b/apps/meteor/app/importer-csv/server/CsvImporter.ts @@ -19,7 +19,7 @@ export class CsvImporter extends Importer { this.csvParser = parse; } - async prepareUsingLocalFile(fullFilePath: string): Promise { + override async prepareUsingLocalFile(fullFilePath: string): Promise { this.logger.debug('start preparing import operation'); await this.converter.clearImportData(); diff --git a/apps/meteor/app/importer-omnichannel-contacts/server/ContactImporter.ts b/apps/meteor/app/importer-omnichannel-contacts/server/ContactImporter.ts index ca5f66bc05ea5..5415f10e63887 100644 --- a/apps/meteor/app/importer-omnichannel-contacts/server/ContactImporter.ts +++ b/apps/meteor/app/importer-omnichannel-contacts/server/ContactImporter.ts @@ -18,7 +18,7 @@ export class ContactImporter extends Importer { this.csvParser = parse; } - async prepareUsingLocalFile(fullFilePath: string): Promise { + override async prepareUsingLocalFile(fullFilePath: string): Promise { this.logger.debug('start preparing import operation'); await this.converter.clearImportData(); diff --git a/apps/meteor/app/importer-pending-avatars/server/PendingAvatarImporter.ts b/apps/meteor/app/importer-pending-avatars/server/PendingAvatarImporter.ts index f057da4a625d4..746bb41681336 100644 --- a/apps/meteor/app/importer-pending-avatars/server/PendingAvatarImporter.ts +++ b/apps/meteor/app/importer-pending-avatars/server/PendingAvatarImporter.ts @@ -33,7 +33,7 @@ export class PendingAvatarImporter extends Importer { return fileCount; } - async startImport(importSelection: IImporterShortSelection): Promise { + override async startImport(importSelection: IImporterShortSelection): Promise { const pendingFileUserList = Users.findAllUsersWithPendingAvatar(); try { for await (const user of pendingFileUserList) { diff --git a/apps/meteor/app/importer-pending-files/server/PendingFileImporter.ts b/apps/meteor/app/importer-pending-files/server/PendingFileImporter.ts index a6d147cf8df35..818031d07916e 100644 --- a/apps/meteor/app/importer-pending-files/server/PendingFileImporter.ts +++ b/apps/meteor/app/importer-pending-files/server/PendingFileImporter.ts @@ -43,7 +43,7 @@ export class PendingFileImporter extends Importer { return fileCount; } - async startImport(importSelection: IImporterShortSelection): Promise { + override async startImport(importSelection: IImporterShortSelection): Promise { const downloadedFileIds: string[] = []; const maxFileCount = 10; const maxFileSize = 1024 * 1024 * 500; diff --git a/apps/meteor/app/importer-slack-users/server/SlackUsersImporter.ts b/apps/meteor/app/importer-slack-users/server/SlackUsersImporter.ts index c05c6da8d690e..aa51f56daa47f 100644 --- a/apps/meteor/app/importer-slack-users/server/SlackUsersImporter.ts +++ b/apps/meteor/app/importer-slack-users/server/SlackUsersImporter.ts @@ -20,7 +20,7 @@ export class SlackUsersImporter extends Importer { this.csvParser = parse; } - async prepareUsingLocalFile(fullFilePath: string): Promise { + override async prepareUsingLocalFile(fullFilePath: string): Promise { this.logger.debug('start preparing import operation'); await this.converter.clearImportData(); diff --git a/apps/meteor/app/importer-slack/server/SlackImporter.ts b/apps/meteor/app/importer-slack/server/SlackImporter.ts index c7e1b7c624ce7..f0fefed3f749e 100644 --- a/apps/meteor/app/importer-slack/server/SlackImporter.ts +++ b/apps/meteor/app/importer-slack/server/SlackImporter.ts @@ -267,7 +267,7 @@ export class SlackImporter extends Importer { return data.length; } - async prepareUsingLocalFile(fullFilePath: string): Promise { + override async prepareUsingLocalFile(fullFilePath: string): Promise { this.logger.debug('start preparing import operation'); await this.converter.clearImportData(); diff --git a/apps/meteor/app/importer/server/classes/converters/ContactConverter.ts b/apps/meteor/app/importer/server/classes/converters/ContactConverter.ts index eb6b25acd3851..01067cbe118f8 100644 --- a/apps/meteor/app/importer/server/classes/converters/ContactConverter.ts +++ b/apps/meteor/app/importer/server/classes/converters/ContactConverter.ts @@ -16,7 +16,7 @@ export class ContactConverter extends RecordConverter { return validateCustomFields(allowedCustomFields, customFields, { ignoreAdditionalFields: true }); } - protected async convertRecord(record: IImportContactRecord): Promise { + protected override async convertRecord(record: IImportContactRecord): Promise { const { data } = record; await createContact({ @@ -36,7 +36,7 @@ export class ContactConverter extends RecordConverter { return LivechatVisitors.getNextVisitorUsername(); } - protected getDataType(): 'contact' { + protected override getDataType(): 'contact' { return 'contact'; } } diff --git a/apps/meteor/app/importer/server/classes/converters/MessageConverter.ts b/apps/meteor/app/importer/server/classes/converters/MessageConverter.ts index 732e46b4398bc..aa47be4434186 100644 --- a/apps/meteor/app/importer/server/classes/converters/MessageConverter.ts +++ b/apps/meteor/app/importer/server/classes/converters/MessageConverter.ts @@ -27,7 +27,7 @@ type IMessageReactions = Record; export class MessageConverter extends RecordConverter { private rids: string[] = []; - async convertData({ afterImportAllMessagesFn, ...callbacks }: MessageConversionCallbacks = {}): Promise { + override async convertData({ afterImportAllMessagesFn, ...callbacks }: MessageConversionCallbacks = {}): Promise { this.rids = []; await super.convertData(callbacks); @@ -76,7 +76,7 @@ export class MessageConverter extends RecordConverter { } } - protected async convertRecord(record: IImportMessageRecord): Promise { + protected override async convertRecord(record: IImportMessageRecord): Promise { await this.insertMessage(record.data); return true; } @@ -257,7 +257,7 @@ export class MessageConverter extends RecordConverter { } } - protected getDataType(): 'message' { + protected override getDataType(): 'message' { return 'message'; } } diff --git a/apps/meteor/app/importer/server/classes/converters/RoomConverter.ts b/apps/meteor/app/importer/server/classes/converters/RoomConverter.ts index ba7d01b0009ee..a19d5f0ae0fd3 100644 --- a/apps/meteor/app/importer/server/classes/converters/RoomConverter.ts +++ b/apps/meteor/app/importer/server/classes/converters/RoomConverter.ts @@ -20,7 +20,7 @@ export class RoomConverter extends RecordConverter { return this.convertData(callbacks); } - protected async convertRecord(record: IImportChannelRecord): Promise { + protected override async convertRecord(record: IImportChannelRecord): Promise { const { data } = record; if (!data.name && data.t !== 'd') { @@ -193,7 +193,7 @@ export class RoomConverter extends RecordConverter { throw new Error('importer-channel-invalid-creator'); } - protected getDataType(): 'channel' { + protected override getDataType(): 'channel' { return 'channel'; } } diff --git a/apps/meteor/app/importer/server/classes/converters/UserConverter.ts b/apps/meteor/app/importer/server/classes/converters/UserConverter.ts index dbfbd9f0c94d9..9d26d2c7ffdf1 100644 --- a/apps/meteor/app/importer/server/classes/converters/UserConverter.ts +++ b/apps/meteor/app/importer/server/classes/converters/UserConverter.ts @@ -32,7 +32,7 @@ export class UserConverter extends RecordConverter(); - protected async convertRecord(record: IImportUserRecord): Promise { + protected override async convertRecord(record: IImportUserRecord): Promise { const { data, _id } = record; data.importIds = data.importIds.filter((item) => item); @@ -55,7 +55,7 @@ export class UserConverter extends RecordConverter { + override async convertData(userCallbacks: IConversionCallbacks = {}): Promise { this.insertedIds.clear(); this.updatedIds.clear(); @@ -424,7 +424,7 @@ export class UserConverter extends RecordConverter u.toUpperCase()); } - protected getDataType(): 'user' { + protected override getDataType(): 'user' { return 'user'; } } diff --git a/apps/meteor/app/integrations/server/api/api.ts b/apps/meteor/app/integrations/server/api/api.ts index 59770587170a4..14617b587657a 100644 --- a/apps/meteor/app/integrations/server/api/api.ts +++ b/apps/meteor/app/integrations/server/api/api.ts @@ -187,7 +187,7 @@ async function executeIntegrationRest( }); return API.v1.success(); } - if (result && result.error) { + if (result?.error) { return API.v1.failure(result.error); } @@ -312,7 +312,7 @@ function integrationInfoRest(): { statusCode: number; body: { success: boolean } } class WebHookAPI extends APIClass<'/hooks'> { - async authenticatedRoute(this: IntegrationThis): Promise { + override async authenticatedRoute(this: IntegrationThis): Promise { const { integrationId, token } = this.urlParams; const integration = await Integrations.findOneByIdAndToken(integrationId, decodeURIComponent(token)); @@ -327,7 +327,7 @@ class WebHookAPI extends APIClass<'/hooks'> { return Users.findOneById(this.request.integration.userId); } - shouldAddRateLimitToRoute(options: { rateLimiterOptions?: RateLimiterOptions | boolean }): boolean { + override shouldAddRateLimitToRoute(options: { rateLimiterOptions?: RateLimiterOptions | boolean }): boolean { const { rateLimiterOptions } = options; return ( (typeof rateLimiterOptions === 'object' || rateLimiterOptions === undefined) && @@ -336,14 +336,14 @@ class WebHookAPI extends APIClass<'/hooks'> { ); } - async shouldVerifyRateLimit(): Promise { + override async shouldVerifyRateLimit(): Promise { return ( settings.get('API_Enable_Rate_Limiter') === true && (process.env.NODE_ENV !== 'development' || settings.get('API_Enable_Rate_Limiter_Dev') === true) ); } - async enforceRateLimit( + override async enforceRateLimit( objectForRateLimitMatch: RateLimiterOptionsToCheck, request: Request, response: Response, diff --git a/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts b/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts index a9b29bac2e8f6..2ee80129962a8 100644 --- a/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts +++ b/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts @@ -7,7 +7,7 @@ import { validators } from './roomAccessValidator.compatibility'; export class AuthorizationLivechat extends ServiceClassInternal implements IAuthorizationLivechat { protected name = 'authorization-livechat'; - protected internal = true; + protected override internal = true; async canAccessRoom(room: IOmnichannelRoom, user?: Pick, extraData?: object): Promise { for await (const validator of validators) { diff --git a/apps/meteor/app/notifications/server/lib/Presence.ts b/apps/meteor/app/notifications/server/lib/Presence.ts index 17f35a9d39ff1..7e147dfec9ca4 100644 --- a/apps/meteor/app/notifications/server/lib/Presence.ts +++ b/apps/meteor/app/notifications/server/lib/Presence.ts @@ -73,7 +73,7 @@ export class StreamPresence { // eslint-disable-next-line @typescript-eslint/naming-convention static getInstance(Streamer: IStreamerConstructor, name = 'user-presence'): IStreamer<'user-presence'> { return new (class StreamPresence extends Streamer<'user-presence'> { - async _publish( + override async _publish( publication: IPublication, _eventName: string, options: boolean | { useCollection?: boolean; args?: any } = false, diff --git a/apps/meteor/app/search/server/search.internalService.ts b/apps/meteor/app/search/server/search.internalService.ts index bf4a0c484ddc0..f5854028a4fbb 100644 --- a/apps/meteor/app/search/server/search.internalService.ts +++ b/apps/meteor/app/search/server/search.internalService.ts @@ -8,7 +8,7 @@ import { settings } from '../../settings/server'; class Search extends ServiceClassInternal { protected name = 'search'; - protected internal = true; + protected override internal = true; constructor() { super(); diff --git a/apps/meteor/app/settings/server/CachedSettings.ts b/apps/meteor/app/settings/server/CachedSettings.ts index 9a42569b4cf64..6a16a4c761313 100644 --- a/apps/meteor/app/settings/server/CachedSettings.ts +++ b/apps/meteor/app/settings/server/CachedSettings.ts @@ -106,7 +106,7 @@ export class CachedSettings * @param _id - The setting id * @returns {boolean} */ - public has(_id: ISetting['_id']): boolean { + public override has(_id: ISetting['_id']): boolean { if (!this.ready && warn) { SystemLogger.warn(`Settings not initialized yet. getting: ${_id}`); } diff --git a/apps/meteor/app/utils/client/lib/RestApiClient.ts b/apps/meteor/app/utils/client/lib/RestApiClient.ts index 219c297406bc1..3ea1d39f4f2f6 100644 --- a/apps/meteor/app/utils/client/lib/RestApiClient.ts +++ b/apps/meteor/app/utils/client/lib/RestApiClient.ts @@ -6,7 +6,7 @@ import { invokeTwoFactorModal } from '../../../../client/lib/2fa/process2faRetur import { baseURI } from '../../../../client/lib/baseURI'; class RestApiClient extends RestClient { - getCredentials(): + override getCredentials(): | { 'X-User-Id': string; 'X-Auth-Token': string; diff --git a/apps/meteor/client/cachedStores/RoomsCachedStore.ts b/apps/meteor/client/cachedStores/RoomsCachedStore.ts index 6ab8c929e73b0..f5ee93b9701b7 100644 --- a/apps/meteor/client/cachedStores/RoomsCachedStore.ts +++ b/apps/meteor/client/cachedStores/RoomsCachedStore.ts @@ -103,7 +103,7 @@ class RoomsCachedStore extends PrivateCachedStore { ); } - protected deserializeFromCache(record: unknown) { + protected override deserializeFromCache(record: unknown) { const deserialized = super.deserializeFromCache(record); if (deserialized?.lastMessage?._updatedAt) { diff --git a/apps/meteor/client/cachedStores/SubscriptionsCachedStore.ts b/apps/meteor/client/cachedStores/SubscriptionsCachedStore.ts index 6e5fea6c2a488..99ff7f9c0b012 100644 --- a/apps/meteor/client/cachedStores/SubscriptionsCachedStore.ts +++ b/apps/meteor/client/cachedStores/SubscriptionsCachedStore.ts @@ -79,7 +79,7 @@ class SubscriptionsCachedStore extends PrivateCachedStore { this.clear(); } - protected filter(message: IMessage): boolean { + protected override filter(message: IMessage): boolean { const { rid } = this._options; if (!isDiscussionMessageInRoom(message, rid)) { @@ -46,7 +46,7 @@ export class DiscussionsList extends MessageList { return true; } - protected compare(a: IMessage, b: IMessage): number { + protected override compare(a: IMessage, b: IMessage): number { return (b.tlm ?? b.ts).getTime() - (a.tlm ?? a.ts).getTime(); } } diff --git a/apps/meteor/client/lib/lists/FilesList.ts b/apps/meteor/client/lib/lists/FilesList.ts index 7362467d9bd7c..f1ec0315afeea 100644 --- a/apps/meteor/client/lib/lists/FilesList.ts +++ b/apps/meteor/client/lib/lists/FilesList.ts @@ -26,7 +26,7 @@ export class FilesList extends RecordList { this.clear(); } - protected filter(message: IUpload): boolean { + protected override filter(message: IUpload): boolean { const { rid } = this._options; if (!isFileMessageInRoom(message, rid)) { diff --git a/apps/meteor/client/lib/lists/ImagesList.ts b/apps/meteor/client/lib/lists/ImagesList.ts index cefb1bec9fc55..d5f22c4eb6c45 100644 --- a/apps/meteor/client/lib/lists/ImagesList.ts +++ b/apps/meteor/client/lib/lists/ImagesList.ts @@ -27,7 +27,7 @@ export class ImagesList extends RecordList { this.clear(); } - protected filter(message: IUpload): boolean { + protected override filter(message: IUpload): boolean { const { roomId } = this._options; if (!isFileMessageInRoom(message, roomId)) { diff --git a/apps/meteor/client/lib/lists/MessageList.ts b/apps/meteor/client/lib/lists/MessageList.ts index 934ee26a96b10..917bf47f69372 100644 --- a/apps/meteor/client/lib/lists/MessageList.ts +++ b/apps/meteor/client/lib/lists/MessageList.ts @@ -3,11 +3,11 @@ import type { IMessage } from '@rocket.chat/core-typings'; import { RecordList } from './RecordList'; export class MessageList extends RecordList { - protected filter(message: T): boolean { + protected override filter(message: T): boolean { return message._hidden !== true; } - protected compare(a: T, b: T): number { + protected override compare(a: T, b: T): number { return a.ts.getTime() - b.ts.getTime(); } } diff --git a/apps/meteor/client/lib/lists/ThreadsList.ts b/apps/meteor/client/lib/lists/ThreadsList.ts index 0b4f0183296a3..1ca17a2ee2a8e 100644 --- a/apps/meteor/client/lib/lists/ThreadsList.ts +++ b/apps/meteor/client/lib/lists/ThreadsList.ts @@ -46,7 +46,7 @@ export class ThreadsList extends MessageList { this.clear(); } - protected filter(message: IThreadMainMessage): boolean { + protected override filter(message: IThreadMainMessage): boolean { const { rid } = this._options; if (!isThreadMessageInRoom(message, rid)) { @@ -77,7 +77,7 @@ export class ThreadsList extends MessageList { return true; } - protected compare(a: IThreadMainMessage, b: IThreadMainMessage): number { + protected override compare(a: IThreadMainMessage, b: IThreadMainMessage): number { return (b.tlm ?? b.ts).getTime() - (a.tlm ?? a.ts).getTime(); } } diff --git a/apps/meteor/client/lib/rooms/roomCoordinator.tsx b/apps/meteor/client/lib/rooms/roomCoordinator.tsx index 1e99fa0bfa7df..54a317a321df8 100644 --- a/apps/meteor/client/lib/rooms/roomCoordinator.tsx +++ b/apps/meteor/client/lib/rooms/roomCoordinator.tsx @@ -156,7 +156,7 @@ class RoomCoordinatorClient extends RoomCoordinator { } } - protected validateRoomConfig(roomConfig: IRoomTypeClientConfig): void { + protected override validateRoomConfig(roomConfig: IRoomTypeClientConfig): void { super.validateRoomConfig(roomConfig); const { route, label } = roomConfig; @@ -170,7 +170,7 @@ class RoomCoordinatorClient extends RoomCoordinator { } } - protected addRoomType(roomConfig: IRoomTypeClientConfig, directives: IRoomTypeClientDirectives): void { + protected override addRoomType(roomConfig: IRoomTypeClientConfig, directives: IRoomTypeClientDirectives): void { super.addRoomType(roomConfig, directives); if (roomConfig.route?.path && roomConfig.route.name && directives.extractOpenRoomParams) { diff --git a/apps/meteor/client/lib/voip/EEVoipClient.ts b/apps/meteor/client/lib/voip/EEVoipClient.ts index 5f3496ed317c5..dd64e5174d46f 100644 --- a/apps/meteor/client/lib/voip/EEVoipClient.ts +++ b/apps/meteor/client/lib/voip/EEVoipClient.ts @@ -10,7 +10,7 @@ export class EEVoipClient extends VoIPUser { super(config, mediaRenderer); } - async makeCallURI(calleeURI: string, mediaRenderer?: IMediaStreamRenderer): Promise { + override async makeCallURI(calleeURI: string, mediaRenderer?: IMediaStreamRenderer): Promise { if (mediaRenderer) { this.mediaStreamRendered = mediaRenderer; } @@ -62,14 +62,14 @@ export class EEVoipClient extends VoIPUser { this.emit('stateChanged'); } - async makeCall(calleeNumber: string): Promise { + override async makeCall(calleeNumber: string): Promise { const hasPlusChar = calleeNumber.includes('+'); const digits = calleeNumber.replace('+', ''); this.makeCallURI(`sip:${hasPlusChar ? '*' : ''}${digits}@${this.userConfig.sipRegistrarHostnameOrIP}`); } - static async create(config: VoIPUserConfiguration, mediaRenderer?: IMediaStreamRenderer): Promise { + static override async create(config: VoIPUserConfiguration, mediaRenderer?: IMediaStreamRenderer): Promise { const voip = new EEVoipClient(config, mediaRenderer); await voip.init(); return voip; diff --git a/apps/meteor/client/lib/voip/RemoteStream.ts b/apps/meteor/client/lib/voip/RemoteStream.ts index b870cb2bae4f9..6d413289da943 100644 --- a/apps/meteor/client/lib/voip/RemoteStream.ts +++ b/apps/meteor/client/lib/voip/RemoteStream.ts @@ -65,7 +65,7 @@ export default class RemoteStream extends Stream { this.renderingMediaElement?.pause(); } - clear(): void { + override clear(): void { super.clear(); if (this.renderingMediaElement) { this.renderingMediaElement.pause(); diff --git a/apps/meteor/client/meteor/minimongo/ObserveHandle.ts b/apps/meteor/client/meteor/minimongo/ObserveHandle.ts index 6ec754e2eec7c..bca335fe08e61 100644 --- a/apps/meteor/client/meteor/minimongo/ObserveHandle.ts +++ b/apps/meteor/client/meteor/minimongo/ObserveHandle.ts @@ -34,7 +34,7 @@ export class ReactiveObserveHandle extends ObserveHan } } - stop() { + override stop() { this.collection.queries.delete(this.query); } } diff --git a/apps/meteor/client/views/admin/subscription/surface/UiKitSubscriptionLicenseSurface.tsx b/apps/meteor/client/views/admin/subscription/surface/UiKitSubscriptionLicenseSurface.tsx index 8fe0cf142a315..45883f4454791 100644 --- a/apps/meteor/client/views/admin/subscription/surface/UiKitSubscriptionLicenseSurface.tsx +++ b/apps/meteor/client/views/admin/subscription/surface/UiKitSubscriptionLicenseSurface.tsx @@ -22,9 +22,9 @@ export class SubscriptionLicenseSurfaceRenderer extends FuselageSurfaceRenderer super(['context', 'divider', 'image', 'section', 'callout']); } - plain_text = renderTextObject; + override plain_text = renderTextObject; - mrkdwn = renderTextObject; + override mrkdwn = renderTextObject; } export default SubscriptionLicenseSurface; diff --git a/apps/meteor/client/views/room/contextualBar/VideoConference/VideoConfList/VideoConfRecordList.ts b/apps/meteor/client/views/room/contextualBar/VideoConference/VideoConfList/VideoConfRecordList.ts index 9a07b7cfd566d..ae298216a5ffa 100644 --- a/apps/meteor/client/views/room/contextualBar/VideoConference/VideoConfList/VideoConfRecordList.ts +++ b/apps/meteor/client/views/room/contextualBar/VideoConference/VideoConfList/VideoConfRecordList.ts @@ -3,7 +3,7 @@ import type { VideoConference } from '@rocket.chat/core-typings'; import { RecordList } from '../../../../../lib/lists/RecordList'; export class VideoConfRecordList extends RecordList { - protected compare(a: VideoConference, b: VideoConference): number { + protected override compare(a: VideoConference, b: VideoConference): number { return b.createdAt.getTime() - a.createdAt.getTime(); } } diff --git a/apps/meteor/ee/app/license/server/license.internalService.ts b/apps/meteor/ee/app/license/server/license.internalService.ts index 9998378191d15..c85f7d21c5b50 100644 --- a/apps/meteor/ee/app/license/server/license.internalService.ts +++ b/apps/meteor/ee/app/license/server/license.internalService.ts @@ -30,7 +30,7 @@ export class LicenseService extends ServiceClassInternal implements ILicense { this.onEvent('license.sync', () => License.sync()); } - async started(): Promise { + override async started(): Promise { if (!License.hasValidLicense()) { return; } diff --git a/apps/meteor/ee/app/livechat-enterprise/server/business-hour/Multiple.ts b/apps/meteor/ee/app/livechat-enterprise/server/business-hour/Multiple.ts index 45f19dc2eda77..b795574ccbdfd 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/business-hour/Multiple.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/business-hour/Multiple.ts @@ -229,7 +229,7 @@ export class MultipleBusinessHoursBehavior extends AbstractBusinessHourBehavior return this.onDepartmentDisabled(department); } - allowAgentChangeServiceStatus(agentId: string): Promise { + override allowAgentChangeServiceStatus(agentId: string): Promise { return this.UsersRepository.isAgentWithinBusinessHours(agentId); } diff --git a/apps/meteor/ee/app/livechat-enterprise/server/services/omnichannel.internalService.ts b/apps/meteor/ee/app/livechat-enterprise/server/services/omnichannel.internalService.ts index f2db61ddbc9a9..0f8bbc283ced0 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/services/omnichannel.internalService.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/services/omnichannel.internalService.ts @@ -19,7 +19,7 @@ import { callbacks } from '../../../../../lib/callbacks'; export class OmnichannelEE extends ServiceClassInternal implements IOmnichannelEEService { protected name = 'omnichannel-ee'; - protected internal = true; + protected override internal = true; logger: Logger; diff --git a/apps/meteor/ee/app/settings/server/settings.internalService.ts b/apps/meteor/ee/app/settings/server/settings.internalService.ts index 20599a0a685ff..8f4bf07cd9cf4 100644 --- a/apps/meteor/ee/app/settings/server/settings.internalService.ts +++ b/apps/meteor/ee/app/settings/server/settings.internalService.ts @@ -7,7 +7,7 @@ import { changeSettingValue } from './settings'; export class EnterpriseSettings extends ServiceClassInternal implements IEnterpriseSettings { protected name = 'ee-settings'; - protected internal = true; + protected override internal = true; changeSettingValue(record: ISetting): undefined | ISetting['value'] { return changeSettingValue(record); diff --git a/apps/meteor/ee/server/apps/communication/endpoints/appLogsExportHandler.ts b/apps/meteor/ee/server/apps/communication/endpoints/appLogsExportHandler.ts index 2db1ceaf906a7..29378ae294c61 100644 --- a/apps/meteor/ee/server/apps/communication/endpoints/appLogsExportHandler.ts +++ b/apps/meteor/ee/server/apps/communication/endpoints/appLogsExportHandler.ts @@ -25,7 +25,7 @@ const isErrorResponse = ajv.compile<{ }); class ExportHandlerAPI extends APIClass { - protected async authenticatedRoute(req: Request): Promise { + protected override async authenticatedRoute(req: Request): Promise { const { rc_uid, rc_token } = parse(req.headers.get('cookie') || ''); if (rc_uid) { diff --git a/apps/meteor/ee/server/local-services/instance/service.ts b/apps/meteor/ee/server/local-services/instance/service.ts index 39b63258a4090..cc7d2cdb9c3bf 100644 --- a/apps/meteor/ee/server/local-services/instance/service.ts +++ b/apps/meteor/ee/server/local-services/instance/service.ts @@ -21,11 +21,11 @@ const hostIP = process.env.INSTANCE_IP ? String(process.env.INSTANCE_IP).trim() const { Base } = Serializers; class EJSONSerializer extends Base { - serialize(obj: any): Buffer { + override serialize(obj: any): Buffer { return Buffer.from(EJSON.stringify(obj)); } - deserialize(buf: Buffer): any { + override deserialize(buf: Buffer): any { return EJSON.parse(buf.toString()); } } @@ -72,7 +72,7 @@ export class InstanceService extends ServiceClassInternal implements IInstanceSe }); } - async created() { + override async created() { const transporter = getTransporter({ transporter: process.env.TRANSPORTER, port: process.env.TCP_PORT, @@ -162,7 +162,7 @@ export class InstanceService extends ServiceClassInternal implements IInstanceSe (this.broker.transit?.tx as any).nodes.nodes.delete(nodeId); } - async started() { + override async started() { await this.broker.start(); const instance = { diff --git a/apps/meteor/ee/server/local-services/voip-freeswitch/service.ts b/apps/meteor/ee/server/local-services/voip-freeswitch/service.ts index 82cae0a9210cf..de88d48495213 100644 --- a/apps/meteor/ee/server/local-services/voip-freeswitch/service.ts +++ b/apps/meteor/ee/server/local-services/voip-freeswitch/service.ts @@ -78,7 +78,7 @@ export class VoipFreeSwitchService extends ServiceClassInternal implements IVoip }); } - public async started(): Promise { + public override async started(): Promise { void this.serviceStarter.start(); } diff --git a/apps/meteor/ee/server/models/raw/CannedResponse.ts b/apps/meteor/ee/server/models/raw/CannedResponse.ts index 2bae8abd5dd70..adf146d13c89c 100644 --- a/apps/meteor/ee/server/models/raw/CannedResponse.ts +++ b/apps/meteor/ee/server/models/raw/CannedResponse.ts @@ -9,7 +9,7 @@ export class CannedResponseRaw extends BaseRaw imple super(db, 'canned_response'); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { @@ -64,7 +64,7 @@ export class CannedResponseRaw extends BaseRaw imple return Object.assign(record, { _id }); } - findOneById(_id: string, options?: FindOptions): Promise { + override findOneById(_id: string, options?: FindOptions): Promise { const query = { _id }; return this.findOne(query, options); @@ -100,7 +100,7 @@ export class CannedResponseRaw extends BaseRaw imple } // REMOVE - removeById(_id: string): Promise { + override removeById(_id: string): Promise { const query = { _id }; return this.deleteOne(query); diff --git a/apps/meteor/ee/server/models/raw/LivechatDepartment.ts b/apps/meteor/ee/server/models/raw/LivechatDepartment.ts index 4c5850984f93e..0b34f0f6ae5ca 100644 --- a/apps/meteor/ee/server/models/raw/LivechatDepartment.ts +++ b/apps/meteor/ee/server/models/raw/LivechatDepartment.ts @@ -40,19 +40,22 @@ export class LivechatDepartmentEE extends LivechatDepartmentRaw implements ILive super(db, trash); } - async removeDepartmentFromForwardListById(departmentId: string): Promise { + override async removeDepartmentFromForwardListById(departmentId: string): Promise { await this.updateMany({ departmentsAllowedToForward: departmentId }, { $pull: { departmentsAllowedToForward: departmentId } }); } - unfilteredFind(query: Filter, options: FindOptions): FindCursor { + override unfilteredFind(query: Filter, options: FindOptions): FindCursor { return this.col.find(query, options); } - unfilteredFindOne(query: Filter, options: FindOptions): Promise { + override unfilteredFindOne( + query: Filter, + options: FindOptions, + ): Promise { return this.col.findOne(query, options); } - unfilteredUpdate( + override unfilteredUpdate( query: Filter, update: UpdateFilter, options: FindOptions, @@ -60,19 +63,19 @@ export class LivechatDepartmentEE extends LivechatDepartmentRaw implements ILive return this.col.updateOne(query, update, options); } - unfilteredRemove(query: Filter): Promise { + override unfilteredRemove(query: Filter): Promise { return this.col.deleteOne(query); } - createOrUpdateDepartment(_id: string | null, data: LivechatDepartmentDTO): Promise { + override createOrUpdateDepartment(_id: string | null, data: LivechatDepartmentDTO): Promise { return super.createOrUpdateDepartment(_id, { ...data, type: 'd' }); } - removeParentAndAncestorById(id: string): Promise { + override removeParentAndAncestorById(id: string): Promise { return this.updateMany({ parentId: id }, { $unset: { parentId: 1 }, $pull: { ancestors: id } }); } - findActiveByUnitIds(unitIds: string[], options: FindOptions = {}): FindCursor { + override findActiveByUnitIds(unitIds: string[], options: FindOptions = {}): FindCursor { const query = { enabled: true, numAgents: { $gt: 0 }, @@ -85,7 +88,7 @@ export class LivechatDepartmentEE extends LivechatDepartmentRaw implements ILive return this.find(query, options); } - findEnabledWithAgentsAndBusinessUnit( + override findEnabledWithAgentsAndBusinessUnit( businessUnit?: string, projection?: FindOptions['projection'], ): FindCursor { @@ -96,11 +99,11 @@ export class LivechatDepartmentEE extends LivechatDepartmentRaw implements ILive return this.findActiveByUnitIds([businessUnit], { projection }); } - findByParentId(parentId: string, options?: FindOptions): FindCursor { + override findByParentId(parentId: string, options?: FindOptions): FindCursor { return this.col.find({ parentId }, options); } - findAgentsByBusinessHourId(businessHourId: string): AggregationCursor<{ agentIds: string[] }> { + override findAgentsByBusinessHourId(businessHourId: string): AggregationCursor<{ agentIds: string[] }> { return this.col.aggregate<{ agentIds: string[] }>([ [ { diff --git a/apps/meteor/ee/server/models/raw/LivechatDepartmentAgents.ts b/apps/meteor/ee/server/models/raw/LivechatDepartmentAgents.ts index a7a6612254592..64174f03fe2ce 100644 --- a/apps/meteor/ee/server/models/raw/LivechatDepartmentAgents.ts +++ b/apps/meteor/ee/server/models/raw/LivechatDepartmentAgents.ts @@ -2,7 +2,7 @@ import type { ILivechatDepartmentAgents } from '@rocket.chat/core-typings'; import { LivechatDepartmentAgentsRaw } from '@rocket.chat/models'; export class LivechatDepartmentAgents extends LivechatDepartmentAgentsRaw { - findAgentsByAgentIdAndBusinessHourId(agentId: string, businessHourId: string): Promise { + override findAgentsByAgentIdAndBusinessHourId(agentId: string, businessHourId: string): Promise { const match = { $match: { agentId }, }; diff --git a/apps/meteor/ee/server/models/raw/LivechatInquiry.ts b/apps/meteor/ee/server/models/raw/LivechatInquiry.ts index 1f6471af1bcec..472bc26065a89 100644 --- a/apps/meteor/ee/server/models/raw/LivechatInquiry.ts +++ b/apps/meteor/ee/server/models/raw/LivechatInquiry.ts @@ -16,7 +16,10 @@ declare module '@rocket.chat/model-typings' { // Note: Expect a circular dependency error here 😓 export class LivechatInquiryRawEE extends LivechatInquiryRaw implements ILivechatInquiryModel { - setSlaForRoom(rid: string, sla: { estimatedWaitingTimeQueue: number; slaId: string }): Promise> { + override setSlaForRoom( + rid: string, + sla: { estimatedWaitingTimeQueue: number; slaId: string }, + ): Promise> { const { estimatedWaitingTimeQueue, slaId } = sla; return this.findOneAndUpdate( @@ -30,7 +33,7 @@ export class LivechatInquiryRawEE extends LivechatInquiryRaw implements ILivecha ); } - unsetSlaForRoom(rid: string): Promise> { + override unsetSlaForRoom(rid: string): Promise> { return this.findOneAndUpdate( { rid }, { @@ -44,7 +47,7 @@ export class LivechatInquiryRawEE extends LivechatInquiryRaw implements ILivecha ); } - bulkUnsetSla(roomIds: string[]): Promise { + override bulkUnsetSla(roomIds: string[]): Promise { return this.updateMany( { rid: { $in: roomIds }, @@ -60,7 +63,10 @@ export class LivechatInquiryRawEE extends LivechatInquiryRaw implements ILivecha ); } - setPriorityForRoom(rid: string, priority: Pick): Promise> { + override setPriorityForRoom( + rid: string, + priority: Pick, + ): Promise> { return this.findOneAndUpdate( { rid }, { @@ -72,7 +78,7 @@ export class LivechatInquiryRawEE extends LivechatInquiryRaw implements ILivecha ); } - unsetPriorityForRoom(rid: string): Promise> { + override unsetPriorityForRoom(rid: string): Promise> { return this.findOneAndUpdate( { rid }, { diff --git a/apps/meteor/ee/server/models/raw/LivechatRooms.ts b/apps/meteor/ee/server/models/raw/LivechatRooms.ts index a4f2c639aa489..3bf27773a41b8 100644 --- a/apps/meteor/ee/server/models/raw/LivechatRooms.ts +++ b/apps/meteor/ee/server/models/raw/LivechatRooms.ts @@ -80,19 +80,19 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo super(db, trash); } - countPrioritizedRooms(): Promise { + override countPrioritizedRooms(): Promise { return this.countDocuments({ priorityId: { $exists: true } }); } - countRoomsWithSla(): Promise { + override countRoomsWithSla(): Promise { return this.countDocuments({ slaId: { $exists: true } }); } - countRoomsWithTranscriptSent(): Promise { + override countRoomsWithTranscriptSent(): Promise { return this.countDocuments({ pdfTranscriptFileId: { $exists: true } }); } - async unsetAllPredictedVisitorAbandonment(): Promise { + override async unsetAllPredictedVisitorAbandonment(): Promise { return this.updateMany( { 'open': true, @@ -105,15 +105,15 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo ).then(); } - setOnHoldByRoomId(roomId: string): Promise { + override setOnHoldByRoomId(roomId: string): Promise { return this.updateOne({ _id: roomId }, { $set: { onHold: true } }); } - unsetOnHoldByRoomId(roomId: string): Promise { + override unsetOnHoldByRoomId(roomId: string): Promise { return this.updateOne({ _id: roomId }, { $unset: { onHold: 1 } }); } - unsetOnHoldAndPredictedVisitorAbandonmentByRoomId(roomId: string): Promise { + override unsetOnHoldAndPredictedVisitorAbandonmentByRoomId(roomId: string): Promise { return this.updateOne( { _id: roomId, @@ -127,7 +127,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo ); } - setSlaForRoomById( + override setSlaForRoomById( roomId: string, sla: Pick, ): Promise { @@ -146,7 +146,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo ); } - removeSlaFromRoomById(roomId: string): Promise { + override removeSlaFromRoomById(roomId: string): Promise { return this.updateOne( { _id: roomId, @@ -162,7 +162,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo ); } - bulkRemoveSlaFromRoomsById(slaId: string): Promise { + override bulkRemoveSlaFromRoomsById(slaId: string): Promise { return this.updateMany( { open: true, @@ -178,7 +178,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo ); } - findOpenBySlaId( + override findOpenBySlaId( slaId: string, options: FindOptions, extraQuery?: Filter, @@ -193,13 +193,13 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo return this.find(query, options); } - async setPriorityByRoomId(roomId: string, priority: Pick): Promise { + override async setPriorityByRoomId(roomId: string, priority: Pick): Promise { const { _id: priorityId, sortItem: priorityWeight } = priority; return this.updateOne({ _id: roomId }, { $set: { priorityId, priorityWeight } }); } - async unsetPriorityByRoomId(roomId: string): Promise { + override async unsetPriorityByRoomId(roomId: string): Promise { return this.updateOne( { _id: roomId }, { @@ -213,14 +213,14 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo ); } - getPredictedVisitorAbandonmentByRoomIdUpdateQuery( + override getPredictedVisitorAbandonmentByRoomIdUpdateQuery( date: Date, roomUpdater: Updater = this.getUpdater(), ): Updater { return roomUpdater.set('omnichannel.predictedVisitorAbandonmentAt', date); } - setPredictedVisitorAbandonmentByRoomId(rid: string, willBeAbandonedAt: Date): Promise { + override setPredictedVisitorAbandonmentByRoomId(rid: string, willBeAbandonedAt: Date): Promise { const query = { _id: rid, }; @@ -233,7 +233,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo return this.updateOne(query, update); } - findAbandonedOpenRooms(date: Date, extraQuery?: Filter): FindCursor { + override findAbandonedOpenRooms(date: Date, extraQuery?: Filter): FindCursor { return this.find({ 'omnichannel.predictedVisitorAbandonmentAt': { $lte: date }, 'waitingResponse': { $exists: false }, @@ -243,7 +243,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo }); } - async unsetPredictedVisitorAbandonmentByRoomId(roomId: string): Promise { + override async unsetPredictedVisitorAbandonmentByRoomId(roomId: string): Promise { return this.updateOne( { _id: roomId, @@ -254,7 +254,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo ); } - async associateRoomsWithDepartmentToUnit(departments: string[], unitId: string): Promise { + override async associateRoomsWithDepartmentToUnit(departments: string[], unitId: string): Promise { const query = { $and: [ { @@ -290,7 +290,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo await this.updateMany(queryToDisassociateOldRoomsConnectedToUnit, updateToDisassociateRooms); } - async removeUnitAssociationFromRooms(unitId: string): Promise { + override async removeUnitAssociationFromRooms(unitId: string): Promise { const query = { departmentAncestors: unitId, }; @@ -298,7 +298,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo await this.updateMany(query, update); } - async updateDepartmentAncestorsById(rid: string, departmentAncestors?: string[]) { + override async updateDepartmentAncestorsById(rid: string, departmentAncestors?: string[]) { const query = { _id: rid, }; @@ -306,7 +306,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo return this.updateOne(query, update); } - getConversationsBySource(start: Date, end: Date, extraQuery: Filter): AggregationCursor { + override getConversationsBySource(start: Date, end: Date, extraQuery: Filter): AggregationCursor { return this.col.aggregate( [ { @@ -358,7 +358,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo ); } - getConversationsByStatus(start: Date, end: Date, extraQuery: Filter): AggregationCursor { + override getConversationsByStatus(start: Date, end: Date, extraQuery: Filter): AggregationCursor { return this.col.aggregate( [ { @@ -465,7 +465,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo ); } - getConversationsByDepartment( + override getConversationsByDepartment( start: Date, end: Date, sort: Record, @@ -542,7 +542,11 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo ); } - getTotalConversationsWithoutDepartmentBetweenDates(start: Date, end: Date, extraQuery: Filter): Promise { + override getTotalConversationsWithoutDepartmentBetweenDates( + start: Date, + end: Date, + extraQuery: Filter, + ): Promise { return this.countDocuments({ t: 'l', departmentId: { @@ -556,7 +560,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo }); } - getConversationsByTags( + override getConversationsByTags( start: Date, end: Date, sort: Record, @@ -620,7 +624,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo ); } - getConversationsWithoutTagsBetweenDate(start: Date, end: Date, extraQuery: Filter): Promise { + override getConversationsWithoutTagsBetweenDate(start: Date, end: Date, extraQuery: Filter): Promise { return this.countDocuments({ t: 'l', ts: { @@ -643,7 +647,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo }); } - getConversationsByAgents( + override getConversationsByAgents( start: Date, end: Date, sort: Record, @@ -715,7 +719,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo ); } - getTotalConversationsWithoutAgentsBetweenDate(start: Date, end: Date, extraQuery: Filter): Promise { + override getTotalConversationsWithoutAgentsBetweenDate(start: Date, end: Date, extraQuery: Filter): Promise { return this.countDocuments({ t: 'l', ts: { @@ -729,7 +733,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo }); } - updateMergedContactIds( + override updateMergedContactIds( contactIdsThatWereMerged: ILivechatContact['_id'][], newContactId: ILivechatContact['_id'], options?: UpdateOptions, @@ -737,7 +741,7 @@ export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoo return this.updateMany({ contactId: { $in: contactIdsThatWereMerged } }, { $set: { contactId: newContactId } }, options); } - findClosedRoomsByContactAndSourcePaginated({ + override findClosedRoomsByContactAndSourcePaginated({ contactId, source, options = {}, diff --git a/apps/meteor/ee/server/models/raw/LivechatTag.ts b/apps/meteor/ee/server/models/raw/LivechatTag.ts index f1997e95b713a..0002679054336 100644 --- a/apps/meteor/ee/server/models/raw/LivechatTag.ts +++ b/apps/meteor/ee/server/models/raw/LivechatTag.ts @@ -8,7 +8,7 @@ export class LivechatTagRaw extends BaseRaw implements ILivechatTa super(db, 'livechat_tag'); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { @@ -47,7 +47,7 @@ export class LivechatTagRaw extends BaseRaw implements ILivechatTa } // REMOVE - removeById(_id: string): Promise { + override removeById(_id: string): Promise { const query = { _id }; return this.deleteOne(query); diff --git a/apps/meteor/ee/server/models/raw/LivechatUnit.ts b/apps/meteor/ee/server/models/raw/LivechatUnit.ts index 9d0c86f47b066..5687431cab1df 100644 --- a/apps/meteor/ee/server/models/raw/LivechatUnit.ts +++ b/apps/meteor/ee/server/models/raw/LivechatUnit.ts @@ -38,7 +38,7 @@ export class LivechatUnitRaw extends BaseRaw implement return this.col.findOne

(query, options); } - async findOneById

( + override async findOneById

( _id: IOmnichannelBusinessUnit['_id'], options: FindOptions, extra?: Record, @@ -144,7 +144,7 @@ export class LivechatUnitRaw extends BaseRaw implement return this.updateOne({ _id }, { $inc: { numDepartments: -1 } }); } - async removeById(_id: string): Promise { + override async removeById(_id: string): Promise { await LivechatUnitMonitors.removeByUnitId(_id); await this.removeParentAndAncestorById(_id); await LivechatRooms.removeUnitAssociationFromRooms(_id); diff --git a/apps/meteor/ee/server/models/raw/LivechatUnitMonitors.ts b/apps/meteor/ee/server/models/raw/LivechatUnitMonitors.ts index f5545174ee608..dbf4e5431b052 100644 --- a/apps/meteor/ee/server/models/raw/LivechatUnitMonitors.ts +++ b/apps/meteor/ee/server/models/raw/LivechatUnitMonitors.ts @@ -8,7 +8,7 @@ export class LivechatUnitMonitorsRaw extends BaseRaw imple super(db, 'livechat_unit_monitors'); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { diff --git a/apps/meteor/ee/server/models/raw/ReadReceipts.ts b/apps/meteor/ee/server/models/raw/ReadReceipts.ts index 0f55c2fc226bc..22ef443f2640b 100644 --- a/apps/meteor/ee/server/models/raw/ReadReceipts.ts +++ b/apps/meteor/ee/server/models/raw/ReadReceipts.ts @@ -10,7 +10,7 @@ export class ReadReceiptsRaw extends BaseRaw implements IReadRecei super(db, 'read_receipts', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { roomId: 1, userId: 1, messageId: 1 }, unique: true }, { key: { messageId: 1 } }, { key: { userId: 1 } }]; } diff --git a/apps/meteor/ee/server/models/raw/ServiceLevelAgreements.ts b/apps/meteor/ee/server/models/raw/ServiceLevelAgreements.ts index 30f330b4710a2..440e26bc0f164 100644 --- a/apps/meteor/ee/server/models/raw/ServiceLevelAgreements.ts +++ b/apps/meteor/ee/server/models/raw/ServiceLevelAgreements.ts @@ -8,7 +8,7 @@ export class ServiceLevelAgreements extends BaseRaw, ): Promise[]> { diff --git a/apps/meteor/ee/tests/unit/server/airgappedRestrictions/airgappedRestrictions.spec.ts b/apps/meteor/ee/tests/unit/server/airgappedRestrictions/airgappedRestrictions.spec.ts index cf90a0c83463d..66b812910a89f 100644 --- a/apps/meteor/ee/tests/unit/server/airgappedRestrictions/airgappedRestrictions.spec.ts +++ b/apps/meteor/ee/tests/unit/server/airgappedRestrictions/airgappedRestrictions.spec.ts @@ -11,7 +11,7 @@ class AirgappedRestriction extends Emitter<{ remainingDays: { days: number } }> isWarningPeriod = sinon.stub(); - on(type: any, cb: any): any { + override on(type: any, cb: any): any { const newCb = (...args: any) => { promises.push(cb(...args)); }; diff --git a/apps/meteor/ee/tests/unit/server/hooks/messages/BeforeSaveCannedResponse.tests.ts b/apps/meteor/ee/tests/unit/server/hooks/messages/BeforeSaveCannedResponse.tests.ts index 9d2d2661dffe8..dcb7da272fa56 100644 --- a/apps/meteor/ee/tests/unit/server/hooks/messages/BeforeSaveCannedResponse.tests.ts +++ b/apps/meteor/ee/tests/unit/server/hooks/messages/BeforeSaveCannedResponse.tests.ts @@ -39,7 +39,7 @@ class LivechatVisitorsModel extends BaseRaw { } class UsersModel extends BaseRaw { - async findOneById() { + override async findOneById() { return { name: 'John Doe Agent', }; diff --git a/apps/meteor/lib/errors/InvalidCloudAnnouncementInteractionError.ts b/apps/meteor/lib/errors/InvalidCloudAnnouncementInteractionError.ts index a8e042fdbe634..f8e347ad83ac0 100644 --- a/apps/meteor/lib/errors/InvalidCloudAnnouncementInteractionError.ts +++ b/apps/meteor/lib/errors/InvalidCloudAnnouncementInteractionError.ts @@ -1,3 +1,3 @@ export class InvalidCloudAnnouncementInteractionError extends Error { - name = InvalidCloudAnnouncementInteractionError.name; + override name = InvalidCloudAnnouncementInteractionError.name; } diff --git a/apps/meteor/lib/errors/InvalidCoreAppInteractionError.ts b/apps/meteor/lib/errors/InvalidCoreAppInteractionError.ts index 8db9daa92eaa6..979611d051718 100644 --- a/apps/meteor/lib/errors/InvalidCoreAppInteractionError.ts +++ b/apps/meteor/lib/errors/InvalidCoreAppInteractionError.ts @@ -1,3 +1,3 @@ export class InvalidCoreAppInteractionError extends Error { - name = InvalidCoreAppInteractionError.name; + override name = InvalidCoreAppInteractionError.name; } diff --git a/apps/meteor/server/database/utils.ts b/apps/meteor/server/database/utils.ts index 714d54606d6a9..68b6d05832a95 100644 --- a/apps/meteor/server/database/utils.ts +++ b/apps/meteor/server/database/utils.ts @@ -55,7 +55,7 @@ const getExtendedSession = (session: ClientSession, onceSuccesfulCommit: Extende }; class UnsuccessfulTransactionError extends Error { - name = UnsuccessfulTransactionError.name; + override name = UnsuccessfulTransactionError.name; constructor(message?: string) { super(message || 'Something went wrong while trying to commit changes. Please try again.'); diff --git a/apps/meteor/server/lib/i18n.ts b/apps/meteor/server/lib/i18n.ts index bfa4bff7383fc..86265b8d378bf 100644 --- a/apps/meteor/server/lib/i18n.ts +++ b/apps/meteor/server/lib/i18n.ts @@ -6,6 +6,7 @@ import { i18n } from '../../app/utils/lib/i18n'; // Meteor bundler is incredible (derogatory) // eslint-disable-next-line no-constant-condition if (false) { + // @ts-expect-error unreachable code import('@rocket.chat/i18n/dist/resources/af.i18n.json'); import('@rocket.chat/i18n/dist/resources/ar.i18n.json'); import('@rocket.chat/i18n/dist/resources/az.i18n.json'); diff --git a/apps/meteor/server/lib/ldap/UserConverter.ts b/apps/meteor/server/lib/ldap/UserConverter.ts index bb6087a971345..977e27ef8ad78 100644 --- a/apps/meteor/server/lib/ldap/UserConverter.ts +++ b/apps/meteor/server/lib/ldap/UserConverter.ts @@ -22,7 +22,7 @@ export class LDAPUserConverter extends UserConverter { this.mergeExistingUsers = settings.get('LDAP_Merge_Existing_Users') ?? true; } - async findExistingUser(data: IImportUser): Promise { + override async findExistingUser(data: IImportUser): Promise { if (data.services?.ldap?.id) { const importedUser = await Users.findOneByLDAPId(data.services.ldap.id, data.services.ldap.idAttribute); if (importedUser) { @@ -47,7 +47,7 @@ export class LDAPUserConverter extends UserConverter { } } - async insertUser(userData: IImportUser): Promise { + override async insertUser(userData: IImportUser): Promise { if (!userData.deleted) { // #TODO: Change the LDAP sync process to split the inserts and updates into two stages so that we can validate this only once for all insertions if (await License.shouldPreventAction('activeUsers')) { diff --git a/apps/meteor/server/modules/core-apps/cloudSubscriptionCommunication.module.ts b/apps/meteor/server/modules/core-apps/cloudSubscriptionCommunication.module.ts index 8e5789f910995..e4b540416d4cc 100644 --- a/apps/meteor/server/modules/core-apps/cloudSubscriptionCommunication.module.ts +++ b/apps/meteor/server/modules/core-apps/cloudSubscriptionCommunication.module.ts @@ -4,9 +4,9 @@ import type * as UiKit from '@rocket.chat/ui-kit'; import { CloudAnnouncementsModule } from './cloudAnnouncements.module'; export class CloudSubscriptionCommunication extends CloudAnnouncementsModule { - appId = 'cloud-communication-core'; + override appId = 'cloud-communication-core'; - async viewClosed(payload: UiKitCoreAppPayload): Promise { + override async viewClosed(payload: UiKitCoreAppPayload): Promise { const { payload: { view: { viewId } = {} }, user: { _id: userId } = {}, diff --git a/apps/meteor/server/modules/streamer/streamer.module.ts b/apps/meteor/server/modules/streamer/streamer.module.ts index 9fc8065db2e79..01cdd6861600d 100644 --- a/apps/meteor/server/modules/streamer/streamer.module.ts +++ b/apps/meteor/server/modules/streamer/streamer.module.ts @@ -305,7 +305,7 @@ export abstract class Streamer extends EventEmit }); } - emit(eventName: string | symbol, ...args: any[]): boolean { + override emit(eventName: string | symbol, ...args: any[]): boolean { return this._emit(eventName as string, args, undefined, true); } diff --git a/apps/meteor/server/services/authorization/service.ts b/apps/meteor/server/services/authorization/service.ts index 50ce3d320f310..68cdb9cd3f338 100644 --- a/apps/meteor/server/services/authorization/service.ts +++ b/apps/meteor/server/services/authorization/service.ts @@ -39,7 +39,7 @@ export class Authorization extends ServiceClass implements IAuthorization { }); } - async started(): Promise { + override async started(): Promise { try { if (!(await License.hasValidLicense())) { return; diff --git a/apps/meteor/server/services/messages/service.ts b/apps/meteor/server/services/messages/service.ts index 4c8a39794f966..9b7e59fb800d5 100644 --- a/apps/meteor/server/services/messages/service.ts +++ b/apps/meteor/server/services/messages/service.ts @@ -43,7 +43,7 @@ export class MessageService extends ServiceClassInternal implements IMessageServ private checkMAC: BeforeSaveCheckMAC; - async created() { + override async created() { this.preventMention = new BeforeSavePreventMention(); this.badWords = new BeforeSaveBadWords(); this.spotify = new BeforeSaveSpotify(); diff --git a/apps/meteor/server/services/meteor/service.ts b/apps/meteor/server/services/meteor/service.ts index ed5bee65ae697..b907b766d2a4e 100644 --- a/apps/meteor/server/services/meteor/service.ts +++ b/apps/meteor/server/services/meteor/service.ts @@ -233,7 +233,7 @@ export class MeteorService extends ServiceClassInternal implements IMeteor { } } - async started(): Promise { + override async started(): Promise { // Even after server startup, client versions might not be updated yet, the only way // to make sure we can send the most up to date versions is using the publication below. // Since it receives each document one at a time, we have to store them to be able to send diff --git a/apps/meteor/server/services/omnichannel/service.ts b/apps/meteor/server/services/omnichannel/service.ts index 239a759aac5c4..067cd9474ce7d 100644 --- a/apps/meteor/server/services/omnichannel/service.ts +++ b/apps/meteor/server/services/omnichannel/service.ts @@ -19,7 +19,7 @@ export class OmnichannelService extends ServiceClassInternal implements IOmnicha this.queueWorker = new OmnichannelQueue(); } - async created() { + override async created() { this.onEvent('presence.status', async ({ user }): Promise => { if (!user?._id) { return; @@ -32,7 +32,7 @@ export class OmnichannelService extends ServiceClassInternal implements IOmnicha }); } - async started() { + override async started() { settings.watchMultiple(['Livechat_enabled', 'Livechat_Routing_Method'], () => { this.queueWorker.shouldStart(); }); diff --git a/apps/meteor/server/services/settings/service.ts b/apps/meteor/server/services/settings/service.ts index b057f869d0b08..a6540fc79f19c 100644 --- a/apps/meteor/server/services/settings/service.ts +++ b/apps/meteor/server/services/settings/service.ts @@ -12,7 +12,7 @@ export class SettingsService extends ServiceClassInternal implements ISettingsSe return settings.get(settingId); } - async started() { + override async started() { settings.change('Site_Url', () => { void verifyFingerPrint(); }); diff --git a/apps/meteor/server/services/voip-asterisk/connector/asterisk/ami/ACDQueue.ts b/apps/meteor/server/services/voip-asterisk/connector/asterisk/ami/ACDQueue.ts index 7a1d3fbad4b49..015670ab734c4 100644 --- a/apps/meteor/server/services/voip-asterisk/connector/asterisk/ami/ACDQueue.ts +++ b/apps/meteor/server/services/voip-asterisk/connector/asterisk/ami/ACDQueue.ts @@ -198,7 +198,7 @@ export class ACDQueue extends Command { } } - async executeCommand(data: any): Promise { + override async executeCommand(data: any): Promise { let amiCommand = {}; // set up the specific action based on the value of |Commands| if (this.commandText === Commands.queue_summary.toString()) { diff --git a/apps/meteor/server/services/voip-asterisk/connector/asterisk/ami/ContinuousMonitor.ts b/apps/meteor/server/services/voip-asterisk/connector/asterisk/ami/ContinuousMonitor.ts index 38f2ce32e99cd..ef6035b7fdc69 100644 --- a/apps/meteor/server/services/voip-asterisk/connector/asterisk/ami/ContinuousMonitor.ts +++ b/apps/meteor/server/services/voip-asterisk/connector/asterisk/ami/ContinuousMonitor.ts @@ -382,7 +382,7 @@ export class ContinuousMonitor extends Command { this.connection.off('dialstate', this); } - initMonitor(_data: any): boolean { + override initMonitor(_data: any): boolean { /** * See the implementation of |call| function in CallbackContext to understand * why we are using regex here. @@ -392,7 +392,7 @@ export class ContinuousMonitor extends Command { return true; } - cleanMonitor(): boolean { + override cleanMonitor(): boolean { this.resetEventHandlers(); return true; } diff --git a/apps/meteor/server/services/voip-asterisk/connector/asterisk/ami/PJSIPEndpoint.ts b/apps/meteor/server/services/voip-asterisk/connector/asterisk/ami/PJSIPEndpoint.ts index 0e35b608d33a2..d31991a588cdd 100644 --- a/apps/meteor/server/services/voip-asterisk/connector/asterisk/ami/PJSIPEndpoint.ts +++ b/apps/meteor/server/services/voip-asterisk/connector/asterisk/ami/PJSIPEndpoint.ts @@ -246,7 +246,7 @@ export class PJSIPEndpoint extends Command { } } - async executeCommand(data: any): Promise { + override async executeCommand(data: any): Promise { let amiCommand = {}; // set up the specific action based on the value of |Commands| if (this.commandText === Commands.extension_list.toString()) { diff --git a/apps/meteor/server/ufs/ufs-local.ts b/apps/meteor/server/ufs/ufs-local.ts index b8609f197fe16..a2842696cfee1 100644 --- a/apps/meteor/server/ufs/ufs-local.ts +++ b/apps/meteor/server/ufs/ufs-local.ts @@ -101,7 +101,7 @@ export class LocalStore extends Store { }; } - async getFilePath(fileId: string, fileParam?: IUpload): Promise { + override async getFilePath(fileId: string, fileParam?: IUpload): Promise { const file = fileParam || (await this.getCollection().findOne(fileId, { projection: { extension: 1 } })); return (file && this.getPath(fileId + (file.extension ? `.${file.extension}` : ''))) || ''; } diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.ts index a74f2c2f677d3..01d381bcf10b3 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.ts @@ -35,7 +35,7 @@ export class HomeOmnichannelContent extends HomeContent { return this.page.locator('role=button[name="Take it!"]'); } - get inputMessage(): Locator { + override get inputMessage(): Locator { return this.page.locator('[name="msg"]'); } diff --git a/apps/meteor/tests/end-to-end/api/LDAP.ts b/apps/meteor/tests/end-to-end/api/LDAP.ts index d9ac0c65b8ca3..156e1c4bb851c 100644 --- a/apps/meteor/tests/end-to-end/api/LDAP.ts +++ b/apps/meteor/tests/end-to-end/api/LDAP.ts @@ -15,7 +15,6 @@ describe('LDAP', function () { // ideally we should have a single CI job that adds a license and runs both CE and EE tests. if (process.env.IS_EE) { this.skip(); - return; } await request .post(api('ldap.syncNow')) @@ -31,7 +30,6 @@ describe('LDAP', function () { it('should throw an error of LDAP disabled when running EE', async function () { if (!process.env.IS_EE) { this.skip(); - return; } await request .post(api('ldap.syncNow')) diff --git a/apps/meteor/tests/end-to-end/api/roles.ts b/apps/meteor/tests/end-to-end/api/roles.ts index 774e6a6433686..130012f753530 100644 --- a/apps/meteor/tests/end-to-end/api/roles.ts +++ b/apps/meteor/tests/end-to-end/api/roles.ts @@ -21,7 +21,6 @@ describe('[Roles]', function () { // ideally we should have a single CI job that adds a license and runs both CE and EE tests. if (isEnterprise) { this.skip(); - return; } await request .post(api('roles.create')) @@ -43,7 +42,6 @@ describe('[Roles]', function () { // ideally we should have a single CI job that adds a license and runs both CE and EE tests. if (!isEnterprise) { this.skip(); - return; } await request .post(api('roles.create')) @@ -101,7 +99,6 @@ describe('[Roles]', function () { // ideally we should have a single CI job that adds a license and runs both CE and EE tests. if (isEnterprise) { this.skip(); - return; } await request .post(api('roles.update')) @@ -124,7 +121,6 @@ describe('[Roles]', function () { // ideally we should have a single CI job that adds a license and runs both CE and EE tests. if (!isEnterprise) { this.skip(); - return; } await request @@ -189,7 +185,6 @@ describe('[Roles]', function () { it('should successfully get an empty list of users in a role if no user has been assigned to it', async function () { if (!isEnterprise) { this.skip(); - return; } await request @@ -210,7 +205,6 @@ describe('[Roles]', function () { it('should successfully get a list of users in a role', async function () { if (!isEnterprise) { this.skip(); - return; } await request @@ -245,7 +239,6 @@ describe('[Roles]', function () { it('should fail getting a list of users in a role in case an invalid role is provided', async function () { if (!isEnterprise) { this.skip(); - return; } await request @@ -320,7 +313,6 @@ describe('[Roles]', function () { // ideally we should have a single CI job that adds a license and runs both CE and EE tests. if (!isEnterprise) { this.skip(); - return; } await request @@ -342,7 +334,6 @@ describe('[Roles]', function () { // ideally we should have a single CI job that adds a license and runs both CE and EE tests. if (!isEnterprise) { this.skip(); - return; } await request @@ -365,7 +356,6 @@ describe('[Roles]', function () { // ideally we should have a single CI job that adds a license and runs both CE and EE tests. if (!isEnterprise) { this.skip(); - return; } await request @@ -452,7 +442,6 @@ describe('[Roles]', function () { // ideally we should have a single CI job that adds a license and runs both CE and EE tests. if (!isEnterprise) { this.skip(); - return; } await request @@ -476,7 +465,6 @@ describe('[Roles]', function () { // ideally we should have a single CI job that adds a license and runs both CE and EE tests. if (!isEnterprise) { this.skip(); - return; } await request @@ -500,7 +488,6 @@ describe('[Roles]', function () { // ideally we should have a single CI job that adds a license and runs both CE and EE tests. if (!isEnterprise) { this.skip(); - return; } await request @@ -524,7 +511,6 @@ describe('[Roles]', function () { // ideally we should have a single CI job that adds a license and runs both CE and EE tests. if (!isEnterprise) { this.skip(); - return; } await request diff --git a/apps/meteor/tests/end-to-end/apps/video-conferences.ts b/apps/meteor/tests/end-to-end/apps/video-conferences.ts index 0f54c05bdc896..cee4c2cb727ef 100644 --- a/apps/meteor/tests/end-to-end/apps/video-conferences.ts +++ b/apps/meteor/tests/end-to-end/apps/video-conferences.ts @@ -251,7 +251,6 @@ describe('Apps - Video Conferences', () => { it('should start a call successfully when using a provider that supports persistent chat', async function () { if (!process.env.IS_EE) { this.skip(); - return; } await updateSetting('VideoConf_Default_Provider', 'persistentchat'); @@ -276,7 +275,6 @@ describe('Apps - Video Conferences', () => { it('should start a call successfully when using a provider that supports persistent chat with the feature disabled', async function () { if (!process.env.IS_EE) { this.skip(); - return; } await updateSetting('VideoConf_Default_Provider', 'persistentchat'); @@ -301,7 +299,6 @@ describe('Apps - Video Conferences', () => { it('should start a call successfully when using a provider that supports persistent chat with discussions disabled', async function () { if (!process.env.IS_EE) { this.skip(); - return; } await updateSetting('VideoConf_Default_Provider', 'persistentchat'); @@ -481,7 +478,6 @@ describe('Apps - Video Conferences', () => { it('should load the video conference data successfully', async function () { if (!process.env.IS_EE) { this.skip(); - return; } await request @@ -535,7 +531,6 @@ describe('Apps - Video Conferences', () => { it('should include a discussion room id on the response', async function () { if (!process.env.IS_EE) { this.skip(); - return; } await request @@ -560,7 +555,6 @@ describe('Apps - Video Conferences', () => { it('should have created the discussion room using the configured name', async function () { if (!process.env.IS_EE) { this.skip(); - return; } await request @@ -585,7 +579,6 @@ describe('Apps - Video Conferences', () => { it('should have created a subscription with open = false', async function () { if (!process.env.IS_EE) { this.skip(); - return; } await request @@ -635,7 +628,6 @@ describe('Apps - Video Conferences', () => { it('should include a discussion room id on the response', async function () { if (!process.env.IS_EE) { this.skip(); - return; } await request @@ -660,7 +652,6 @@ describe('Apps - Video Conferences', () => { it('should have created the discussion room using the configured name', async function () { if (!process.env.IS_EE) { this.skip(); - return; } await request @@ -739,7 +730,6 @@ describe('Apps - Video Conferences', () => { it('should not include a discussion room id on the response', async function () { if (!process.env.IS_EE) { this.skip(); - return; } await request @@ -861,7 +851,6 @@ describe('Apps - Video Conferences', () => { it('should load the list of video conferences sorted by new', async function () { if (!process.env.IS_EE) { this.skip(); - return; } await request diff --git a/apps/meteor/tests/unit/server/services/banner/service.tests.ts b/apps/meteor/tests/unit/server/services/banner/service.tests.ts index b570f87365df0..657423aeac6f5 100644 --- a/apps/meteor/tests/unit/server/services/banner/service.tests.ts +++ b/apps/meteor/tests/unit/server/services/banner/service.tests.ts @@ -26,7 +26,7 @@ class BannerDismissModel extends BaseRaw { } class UserModel extends BaseRaw { - findOneById(): Promise { + override findOneById(): Promise { return Promise.resolve({}); } } diff --git a/apps/uikit-playground/src/Components/Preview/Wrapper.tsx b/apps/uikit-playground/src/Components/Preview/Wrapper.tsx index 9ed8aef650a80..ced3dd0357082 100644 --- a/apps/uikit-playground/src/Components/Preview/Wrapper.tsx +++ b/apps/uikit-playground/src/Components/Preview/Wrapper.tsx @@ -24,6 +24,8 @@ const Wrapper = () => { transition: 0.5s ease; left: -100%; `; + default: + return undefined; } }; diff --git a/apps/uikit-playground/src/hooks/useHorizontalScroll.ts b/apps/uikit-playground/src/hooks/useHorizontalScroll.ts index ea058a4596bba..61ef7004b735c 100644 --- a/apps/uikit-playground/src/hooks/useHorizontalScroll.ts +++ b/apps/uikit-playground/src/hooks/useHorizontalScroll.ts @@ -5,20 +5,22 @@ export function useHorizontalScroll() { useEffect(() => { const el = elRef.current; - if (el) { - const onWheel = (e: WheelEvent) => { - if (e.deltaY === 0) { - return; - } - if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) { - e.preventDefault(); - el.scrollLeft += e.deltaX; - } - el.scrollTo({ left: el.scrollLeft + e.deltaY }); - }; - el.addEventListener('wheel', onWheel); - return () => el.removeEventListener('wheel', onWheel); - } + + if (!el) return; + + const onWheel = (e: WheelEvent) => { + if (e.deltaY === 0) { + return; + } + if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) { + e.preventDefault(); + el.scrollLeft += e.deltaX; + } + el.scrollTo({ left: el.scrollLeft + e.deltaY }); + }; + el.addEventListener('wheel', onWheel); + return () => el.removeEventListener('wheel', onWheel); + }, []); return elRef; } diff --git a/ee/apps/account-service/src/Account.ts b/ee/apps/account-service/src/Account.ts index c71376d301f3e..626949cae9c47 100644 --- a/ee/apps/account-service/src/Account.ts +++ b/ee/apps/account-service/src/Account.ts @@ -44,7 +44,7 @@ export class Account extends ServiceClass implements IAccount { return removeSession(userId, token); } - async started(): Promise { + override async started(): Promise { const expiry = await Settings.findOne({ _id: 'Accounts_LoginExpiration' }, { projection: { value: 1 } }); this.loginExpiration = getLoginExpirationInDays(expiry?.value as number); diff --git a/ee/apps/account-service/tsconfig.json b/ee/apps/account-service/tsconfig.json index fe5d33c19430d..bd731186d92b0 100644 --- a/ee/apps/account-service/tsconfig.json +++ b/ee/apps/account-service/tsconfig.json @@ -8,7 +8,6 @@ "strictFunctionTypes": false, /* Additional Checks */ - "noImplicitReturns": false, "noFallthroughCasesInSwitch": false, "outDir": "./dist/ee/apps/account-service/src", diff --git a/ee/apps/ddp-streamer/src/DDPStreamer.ts b/ee/apps/ddp-streamer/src/DDPStreamer.ts index 1a6a1046ae776..013603ec3226d 100644 --- a/ee/apps/ddp-streamer/src/DDPStreamer.ts +++ b/ee/apps/ddp-streamer/src/DDPStreamer.ts @@ -69,7 +69,7 @@ export class DDPStreamer extends ServiceClass { InstanceStatus.updateConnections(this.wss?.clients.size ?? 0); }, 30000); - async created(): Promise { + override async created(): Promise { if (!this.context) { return; } @@ -217,7 +217,7 @@ export class DDPStreamer extends ServiceClass { }); } - async started(): Promise { + override async started(): Promise { // TODO this call creates a dependency to MeteorService, should it be a hard dependency? or can this call fail and be ignored? try { const versions = await MeteorService.getAutoUpdateClientVersions(); @@ -265,7 +265,7 @@ export class DDPStreamer extends ServiceClass { } } - async stopped(): Promise { + override async stopped(): Promise { this.wss?.clients.forEach(function (client) { client.terminate(); }); diff --git a/ee/apps/ddp-streamer/src/Streamer.ts b/ee/apps/ddp-streamer/src/Streamer.ts index aa689dfb1f8f3..f1b36445b3602 100644 --- a/ee/apps/ddp-streamer/src/Streamer.ts +++ b/ee/apps/ddp-streamer/src/Streamer.ts @@ -33,7 +33,7 @@ export class Stream extends Streamer { ); } - async sendToManySubscriptions( + override async sendToManySubscriptions( subscriptions: Set, origin: Connection | undefined, eventName: string, diff --git a/ee/apps/ddp-streamer/src/configureServer.ts b/ee/apps/ddp-streamer/src/configureServer.ts index bf9bd15627cfa..6f776545e597c 100644 --- a/ee/apps/ddp-streamer/src/configureServer.ts +++ b/ee/apps/ddp-streamer/src/configureServer.ts @@ -152,5 +152,7 @@ server.methods({ await MeteorService.notifyGuestStatusChanged(token, 'offline'); }); } + + return undefined; }, }); diff --git a/ee/apps/stream-hub-service/src/StreamHub.ts b/ee/apps/stream-hub-service/src/StreamHub.ts index dfc32611f50ab..0239f64fd3b4c 100755 --- a/ee/apps/stream-hub-service/src/StreamHub.ts +++ b/ee/apps/stream-hub-service/src/StreamHub.ts @@ -20,7 +20,7 @@ export class StreamHub extends ServiceClass implements IServiceClass { this.logger = new loggerClass('StreamHub'); } - async created(): Promise { + override async created(): Promise { if (!this.api) { return; } diff --git a/ee/packages/federation-matrix/src/FederationMatrix.ts b/ee/packages/federation-matrix/src/FederationMatrix.ts index 7eee72b7a9ed5..61eff1a43bbfd 100644 --- a/ee/packages/federation-matrix/src/FederationMatrix.ts +++ b/ee/packages/federation-matrix/src/FederationMatrix.ts @@ -145,7 +145,7 @@ export class FederationMatrix extends ServiceClass implements IFederationMatrixS private readonly logger = new Logger(this.name); - async created(): Promise { + override async created(): Promise { // although this is async function, it is not awaited, so we need to register the listeners before everything else this.onEvent('watch.settings', async ({ clientAction, setting }): Promise => { if (clientAction === 'removed') { diff --git a/ee/packages/license/package.json b/ee/packages/license/package.json index daf6e9eb8e707..b5859c0c47a81 100644 --- a/ee/packages/license/package.json +++ b/ee/packages/license/package.json @@ -13,7 +13,8 @@ "lint": "eslint --ext .js,.jsx,.ts,.tsx .", "lint:fix": "eslint --ext .js,.jsx,.ts,.tsx . --fix", "test": "jest", - "testunit": "jest" + "testunit": "jest", + "typecheck": "tsc --noEmit" }, "dependencies": { "@rocket.chat/core-typings": "workspace:^", diff --git a/ee/packages/license/src/deprecated.ts b/ee/packages/license/src/deprecated.ts index e4d7bd22293af..e16d4aad078bc 100644 --- a/ee/packages/license/src/deprecated.ts +++ b/ee/packages/license/src/deprecated.ts @@ -34,4 +34,6 @@ export function getUnmodifiedLicenseAndModules(this: LicenseManager) { modules: getModules.call(this), }; } + + return undefined; } diff --git a/ee/packages/license/src/license.ts b/ee/packages/license/src/license.ts index 677be2bb5112f..3419c649ae689 100644 --- a/ee/packages/license/src/license.ts +++ b/ee/packages/license/src/license.ts @@ -384,6 +384,8 @@ export abstract class LicenseManager extends Emitter { if (this._valid && this._license) { return this._license; } + + return undefined; } public syncShouldPreventActionResults(actions: Record): void { diff --git a/ee/packages/license/src/pendingLicense.ts b/ee/packages/license/src/pendingLicense.ts index 8dd82dcd7774d..49aa40e9b8404 100644 --- a/ee/packages/license/src/pendingLicense.ts +++ b/ee/packages/license/src/pendingLicense.ts @@ -11,7 +11,7 @@ export function setPendingLicense(this: LicenseManager, encryptedLicense: string export async function applyPendingLicense(this: LicenseManager) { if (this.pendingLicense) { logger.info('Applying pending license.'); - return this.setLicense(this.pendingLicense); + await this.setLicense(this.pendingLicense); } } diff --git a/ee/packages/license/src/validation/validateLicenseUrl.ts b/ee/packages/license/src/validation/validateLicenseUrl.ts index aeba5634a262c..567b44324931c 100644 --- a/ee/packages/license/src/validation/validateLicenseUrl.ts +++ b/ee/packages/license/src/validation/validateLicenseUrl.ts @@ -50,9 +50,9 @@ export function validateLicenseUrl(this: LicenseManager, license: ILicenseV3, op return !validateHash(url.value, workspaceUrl); case 'url': return !validateUrl(url.value, workspaceUrl); + default: + return false; } - - return false; }) .map((url) => { if (!options.suppressLog) { diff --git a/ee/packages/media-calls/package.json b/ee/packages/media-calls/package.json index 2a8dbac893475..565d5077aa070 100644 --- a/ee/packages/media-calls/package.json +++ b/ee/packages/media-calls/package.json @@ -13,7 +13,7 @@ "dev": "tsc -p tsconfig.json --watch --preserveWatchOutput", "lint": "eslint --ext .js,.jsx,.ts,.tsx .", "lint:fix": "eslint --ext .js,.jsx,.ts,.tsx . --fix", - "test": "jest" + "typecheck": "tsc --noEmit" }, "dependencies": { "@rocket.chat/core-typings": "workspace:^", @@ -24,11 +24,9 @@ "drachtio-srf": "patch:drachtio-srf@npm%3A5.0.12#~/.yarn/patches/drachtio-srf-npm-5.0.12-b0b1afaad6.patch" }, "devDependencies": { - "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", "eslint": "~8.45.0", - "jest": "~30.2.0", "typescript": "~5.9.3" } } diff --git a/ee/packages/media-calls/src/server/MediaCallServer.ts b/ee/packages/media-calls/src/server/MediaCallServer.ts index 00cd4f5ac8cbb..2065b05ec04b8 100644 --- a/ee/packages/media-calls/src/server/MediaCallServer.ts +++ b/ee/packages/media-calls/src/server/MediaCallServer.ts @@ -240,8 +240,9 @@ export class MediaCallServer implements IMediaCallServer { return { preferredType: 'sip', }; - } - return {}; + default: + return {}; + } } } diff --git a/ee/packages/media-calls/src/sip/providers/BaseSipCall.ts b/ee/packages/media-calls/src/sip/providers/BaseSipCall.ts index 9fec8f8ad2d6b..1fa12801f8928 100644 --- a/ee/packages/media-calls/src/sip/providers/BaseSipCall.ts +++ b/ee/packages/media-calls/src/sip/providers/BaseSipCall.ts @@ -20,7 +20,7 @@ export abstract class BaseSipCall extends BaseCallProvider { this.lastCallState = 'none'; } - public async reactToCallChanges(params: { dtmf?: ClientMediaSignalBody<'dtmf'> }): Promise { + public override async reactToCallChanges(params: { dtmf?: ClientMediaSignalBody<'dtmf'> }): Promise { // If we already knew this call was over, there's nothing more to reflect if (this.lastCallState === 'hangup') { return; diff --git a/ee/packages/media-calls/src/sip/providers/IncomingSipCall.ts b/ee/packages/media-calls/src/sip/providers/IncomingSipCall.ts index 829ae45405f54..497dde10026c1 100644 --- a/ee/packages/media-calls/src/sip/providers/IncomingSipCall.ts +++ b/ee/packages/media-calls/src/sip/providers/IncomingSipCall.ts @@ -37,7 +37,7 @@ export class IncomingSipCall extends BaseSipCall { constructor( session: SipServerSession, call: IMediaCall, - protected readonly agent: BroadcastActorAgent, + protected override readonly agent: BroadcastActorAgent, channel: IMediaCallChannel, private readonly srf: Srf, private readonly req: SrfRequest, diff --git a/ee/packages/media-calls/src/sip/providers/OutgoingSipCall.ts b/ee/packages/media-calls/src/sip/providers/OutgoingSipCall.ts index c7c251c45b58a..09fe0d8e98e85 100644 --- a/ee/packages/media-calls/src/sip/providers/OutgoingSipCall.ts +++ b/ee/packages/media-calls/src/sip/providers/OutgoingSipCall.ts @@ -33,7 +33,7 @@ export class OutgoingSipCall extends BaseSipCall { constructor( session: SipServerSession, call: IMediaCall, - protected readonly agent: BroadcastActorAgent, + protected override readonly agent: BroadcastActorAgent, channel: IMediaCallChannel, ) { super(session, call, agent, channel); diff --git a/ee/packages/network-broker/src/index.ts b/ee/packages/network-broker/src/index.ts index 2c6da09750e31..df4a80191d090 100644 --- a/ee/packages/network-broker/src/index.ts +++ b/ee/packages/network-broker/src/index.ts @@ -34,7 +34,7 @@ const { const { Base } = Serializers; class CustomRegenerator extends Errors.Regenerator { - restoreCustomError(plainError: any): Error | undefined { + override restoreCustomError(plainError: any): Error | undefined { const { message, reason, details, errorType, isClientSafe } = plainError; if (errorType === 'Meteor.Error') { @@ -48,7 +48,7 @@ class CustomRegenerator extends Errors.Regenerator { return undefined; } - extractPlainError(err: Error | MeteorError): Errors.PlainMoleculerError { + override extractPlainError(err: Error | MeteorError): Errors.PlainMoleculerError { return { ...super.extractPlainError(err), ...(isMeteorError(err) && { @@ -62,11 +62,11 @@ class CustomRegenerator extends Errors.Regenerator { } class EJSONSerializer extends Base { - serialize(obj: any): Buffer { + override serialize(obj: any): Buffer { return Buffer.from(EJSON.stringify(obj)); } - deserialize(buf: Buffer): any { + override deserialize(buf: Buffer): any { return EJSON.parse(buf.toString()); } } diff --git a/ee/packages/omnichannel-services/package.json b/ee/packages/omnichannel-services/package.json index 231210fe6e6dc..f2bd4961a040b 100644 --- a/ee/packages/omnichannel-services/package.json +++ b/ee/packages/omnichannel-services/package.json @@ -13,7 +13,8 @@ "lint": "eslint --ext .js,.jsx,.ts,.tsx .", "lint:fix": "eslint --ext .js,.jsx,.ts,.tsx . --fix", "test": "jest", - "testunit": "jest" + "testunit": "jest", + "typecheck": "tsc --noEmit" }, "dependencies": { "@rocket.chat/core-services": "workspace:^", diff --git a/ee/packages/omnichannel-services/src/QueueWorker.ts b/ee/packages/omnichannel-services/src/QueueWorker.ts index 5950bbd128ea3..3e18e4fea4b7a 100644 --- a/ee/packages/omnichannel-services/src/QueueWorker.ts +++ b/ee/packages/omnichannel-services/src/QueueWorker.ts @@ -37,7 +37,7 @@ export class QueueWorker extends ServiceClass implements IQueueWorkerService { return message.includes('retry'); } - async created(): Promise { + override async created(): Promise { this.queue.databasePromise = () => { return Promise.resolve(this.db); }; @@ -62,7 +62,7 @@ export class QueueWorker extends ServiceClass implements IQueueWorkerService { await this.db.collection(this.queue.collectionName).createIndex({ receivedTime: 1 }, { sparse: true }); } - async stopped(): Promise { + override async stopped(): Promise { this.logger.info('Stopping queue worker'); this.queue.stopPolling(); } diff --git a/ee/packages/presence/src/Presence.ts b/ee/packages/presence/src/Presence.ts index 5b537857698c9..8c90eb5ff7c67 100755 --- a/ee/packages/presence/src/Presence.ts +++ b/ee/packages/presence/src/Presence.ts @@ -72,7 +72,7 @@ export class Presence extends ServiceClass implements IPresence { return affectedUsers.forEach((uid) => this.updateUserPresence(uid)); } - async started(): Promise { + override async started(): Promise { this.lostConTimeout = setTimeout(async () => { const affectedUsers = await this.removeLostConnections(); return affectedUsers.forEach((uid) => this.updateUserPresence(uid)); @@ -89,7 +89,7 @@ export class Presence extends ServiceClass implements IPresence { } } - async stopped(): Promise { + override async stopped(): Promise { if (!this.lostConTimeout) { return; } diff --git a/packages/agenda/src/Agenda.ts b/packages/agenda/src/Agenda.ts index d0c4e807aeed3..86034bb9f48ec 100644 --- a/packages/agenda/src/Agenda.ts +++ b/packages/agenda/src/Agenda.ts @@ -185,7 +185,6 @@ export class Agenda extends EventEmitter { this.dbInit(collection); } catch (error) { debug('error connecting to MongoDB using collection: [%s]', collection); - return error; } } @@ -356,6 +355,7 @@ export class Agenda extends EventEmitter { return Promise.all(jobs); } catch (error) { debug('every() -> error creating one or more of the jobs', error); + return undefined; } } @@ -623,11 +623,11 @@ export class Agenda extends EventEmitter { // Continue processing but notify that Agenda has lost the connection debug('Missing MongoDB connection, not attempting to find and lock a job'); this.emit('error', new Error('Lost MongoDB connection')); - } else { - // No longer recoverable - debug('topology.autoReconnect: %s, topology.isDestroyed(): %s', client.topology.autoReconnect, client.topology.isDestroyed?.()); - throw new Error('MongoDB connection is not recoverable, application restart required'); + return undefined; } + // No longer recoverable + debug('topology.autoReconnect: %s, topology.isDestroyed(): %s', client.topology.autoReconnect, client.topology.isDestroyed?.()); + throw new Error('MongoDB connection is not recoverable, application restart required'); } else { // /** // * Query used to find job to run diff --git a/packages/base64/tsconfig.json b/packages/base64/tsconfig.json index de1626fb52adb..20d11edcf6a8f 100644 --- a/packages/base64/tsconfig.json +++ b/packages/base64/tsconfig.json @@ -3,9 +3,6 @@ "compilerOptions": { "outDir": "dist", "rootDir": "src", - "noImplicitAny": true, - "noUnusedLocals": true, - "noUnusedParameters": true, "strictNullChecks": true, }, "include": ["src"] diff --git a/packages/core-services/package.json b/packages/core-services/package.json index e487a3971a540..03a3b05bc2b12 100644 --- a/packages/core-services/package.json +++ b/packages/core-services/package.json @@ -12,7 +12,8 @@ "dev": "tsc --watch --preserveWatchOutput", "lint": "eslint --ext .js,.jsx,.ts,.tsx .", "lint:fix": "eslint --ext .js,.jsx,.ts,.tsx . --fix", - "testunit": "jest" + "testunit": "jest", + "typecheck": "tsc --noEmit" }, "dependencies": { "@rocket.chat/core-typings": "workspace:^", diff --git a/packages/core-services/src/types/ServiceClass.ts b/packages/core-services/src/types/ServiceClass.ts index eb3675617a7bd..a971617cb2fac 100644 --- a/packages/core-services/src/types/ServiceClass.ts +++ b/packages/core-services/src/types/ServiceClass.ts @@ -111,5 +111,5 @@ export abstract class ServiceClass implements IServiceClass { * Services that run on their own node should use @ServiceClass instead. */ export abstract class ServiceClassInternal extends ServiceClass { - protected internal = true; + protected override internal = true; } diff --git a/packages/ddp-client/package.json b/packages/ddp-client/package.json index bebd12b1ddb10..2cb6ed32d7282 100644 --- a/packages/ddp-client/package.json +++ b/packages/ddp-client/package.json @@ -12,7 +12,8 @@ "lint": "eslint --ext .js,.jsx,.ts,.tsx .", "lint:fix": "eslint --ext .js,.jsx,.ts,.tsx . --fix", "test": "jest", - "testunit": "jest" + "testunit": "jest", + "typecheck": "tsc --noEmit" }, "dependencies": { "@rocket.chat/api-client": "workspace:^", diff --git a/packages/ddp-client/src/DDPDispatcher.ts b/packages/ddp-client/src/DDPDispatcher.ts index d8a1d9000947c..b24d1d12a0be9 100644 --- a/packages/ddp-client/src/DDPDispatcher.ts +++ b/packages/ddp-client/src/DDPDispatcher.ts @@ -15,7 +15,7 @@ type Queue = Blocks[]; export class DDPDispatcher extends MinimalDDPClient { queue: Queue = []; - dispatch(msg: MethodPayload, options?: { wait?: boolean }) { + override dispatch(msg: MethodPayload, options?: { wait?: boolean }) { if (options?.wait) { this.wait(msg); return; diff --git a/packages/ddp-client/src/DDPSDK.ts b/packages/ddp-client/src/DDPSDK.ts index 445ce90d7c780..f3a8834a3bf7c 100644 --- a/packages/ddp-client/src/DDPSDK.ts +++ b/packages/ddp-client/src/DDPSDK.ts @@ -99,7 +99,7 @@ export class DDPSDK implements SDK { const timeoutControl = TimeoutControl.create(ddp, connection); const rest = new (class RestApiClient extends RestClient { - getCredentials() { + override getCredentials() { if (!account.uid || !account.user?.token) { return; } diff --git a/packages/ddp-client/src/legacy/RocketchatSDKLegacy.ts b/packages/ddp-client/src/legacy/RocketchatSDKLegacy.ts index cac646fa2bbfc..12d7b2da96791 100644 --- a/packages/ddp-client/src/legacy/RocketchatSDKLegacy.ts +++ b/packages/ddp-client/src/legacy/RocketchatSDKLegacy.ts @@ -253,7 +253,7 @@ export class RocketchatSdkLegacyImpl extends DDPSDK implements RocketchatSDKLega return Promise.all(Object.entries(this.client.subscriptions).map(([, subscription]) => this.client.unsubscribe(subscription))); } - static create(url: string, retryOptions = { retryCount: 1, retryTime: 100 }): RocketchatSdkLegacyImpl { + static override create(url: string, retryOptions = { retryCount: 1, retryTime: 100 }): RocketchatSdkLegacyImpl { const ddp = new DDPDispatcher(); const connection = ConnectionImpl.create(url, WebSocket, ddp, retryOptions); @@ -265,7 +265,7 @@ export class RocketchatSdkLegacyImpl extends DDPSDK implements RocketchatSDKLega const timeoutControl = TimeoutControl.create(ddp, connection); const rest = new (class RestApiClient extends RestClient { - getCredentials() { + override getCredentials() { if (!account.uid || !account.user?.token) { return; } diff --git a/packages/ddp-client/src/livechat/LivechatClientImpl.ts b/packages/ddp-client/src/livechat/LivechatClientImpl.ts index 973853678f6e6..0cec7e44eba6a 100644 --- a/packages/ddp-client/src/livechat/LivechatClientImpl.ts +++ b/packages/ddp-client/src/livechat/LivechatClientImpl.ts @@ -364,7 +364,7 @@ export class LivechatClientImpl extends DDPSDK implements LivechatStream, Livech return Promise.all(subscriptions.map((subscription) => this.client.unsubscribe(subscription))); } - static create(url: string, retryOptions = { retryCount: 3, retryTime: 10000 }): LivechatClientImpl { + static override create(url: string, retryOptions = { retryCount: 3, retryTime: 10000 }): LivechatClientImpl { // TODO: Decide what to do with the EJSON objects const ddp = new DDPDispatcher(); diff --git a/packages/freeswitch/package.json b/packages/freeswitch/package.json index ec858fef70cec..dc2aeea37500a 100644 --- a/packages/freeswitch/package.json +++ b/packages/freeswitch/package.json @@ -13,7 +13,8 @@ "lint": "eslint --ext .js,.jsx,.ts,.tsx .", "lint:fix": "eslint --ext .js,.jsx,.ts,.tsx . --fix", "test": "jest", - "testunit": "jest" + "testunit": "jest", + "typecheck": "tsc --noEmit" }, "dependencies": { "@rocket.chat/core-typings": "workspace:^", diff --git a/packages/freeswitch/src/esl/apiClient.ts b/packages/freeswitch/src/esl/apiClient.ts index fea42df2533a1..b4a25dbc08462 100644 --- a/packages/freeswitch/src/esl/apiClient.ts +++ b/packages/freeswitch/src/esl/apiClient.ts @@ -13,7 +13,7 @@ export class FreeSwitchApiClient extends FreeSwitchESLClient { return response.body; } - protected async transitionToReady(): Promise { + protected override async transitionToReady(): Promise { try { this.response.event_json('BACKGROUND_JOB'); } catch (error) { diff --git a/packages/freeswitch/src/esl/eventClient.ts b/packages/freeswitch/src/esl/eventClient.ts index 43b1c60049c38..b08f804c770a4 100644 --- a/packages/freeswitch/src/esl/eventClient.ts +++ b/packages/freeswitch/src/esl/eventClient.ts @@ -26,7 +26,7 @@ const eventsToListen: EventNames = [ export class FreeSwitchEventClient extends FreeSwitchESLClient { constructor( - protected options: FreeSwitchESLClientOptions, + protected override options: FreeSwitchESLClientOptions, private eventsToListen: EventNames, ) { super(options); @@ -36,7 +36,7 @@ export class FreeSwitchEventClient extends FreeSwitchESLClient { }); } - protected async transitionToReady(): Promise { + protected override async transitionToReady(): Promise { try { this.response.event_json(...this.eventsToListen); } catch (error) { diff --git a/packages/fuselage-ui-kit/src/surfaces/BannerSurfaceRenderer.tsx b/packages/fuselage-ui-kit/src/surfaces/BannerSurfaceRenderer.tsx index bb819cc37f82c..facdf70c8e516 100644 --- a/packages/fuselage-ui-kit/src/surfaces/BannerSurfaceRenderer.tsx +++ b/packages/fuselage-ui-kit/src/surfaces/BannerSurfaceRenderer.tsx @@ -1,7 +1,7 @@ import { FuselageSurfaceRenderer, renderTextObject } from './FuselageSurfaceRenderer'; export class BannerSurfaceRenderer extends FuselageSurfaceRenderer { - plain_text = renderTextObject; + override plain_text = renderTextObject; - mrkdwn = renderTextObject; + override mrkdwn = renderTextObject; } diff --git a/packages/fuselage-ui-kit/src/surfaces/ContextualBarSurfaceRenderer.tsx b/packages/fuselage-ui-kit/src/surfaces/ContextualBarSurfaceRenderer.tsx index 1521599ef2891..faffa17b1785a 100644 --- a/packages/fuselage-ui-kit/src/surfaces/ContextualBarSurfaceRenderer.tsx +++ b/packages/fuselage-ui-kit/src/surfaces/ContextualBarSurfaceRenderer.tsx @@ -10,9 +10,9 @@ export class ContextualBarSurfaceRenderer extends FuselageSurfaceRenderer { super(['actions', 'context', 'divider', 'image', 'input', 'section', 'preview', 'callout', 'tab_navigation']); } - plain_text = renderTextObject; + override plain_text = renderTextObject; - mrkdwn = renderTextObject; + override mrkdwn = renderTextObject; tab_navigation(block: UiKit.ExperimentalTabNavigationBlock, context: UiKit.BlockContext, index: number): ReactElement | null { if (context === UiKit.BlockContext.BLOCK) { diff --git a/packages/fuselage-ui-kit/src/surfaces/FuselageMessageSurfaceRenderer.tsx b/packages/fuselage-ui-kit/src/surfaces/FuselageMessageSurfaceRenderer.tsx index 40e920692e142..94d4db0553e41 100644 --- a/packages/fuselage-ui-kit/src/surfaces/FuselageMessageSurfaceRenderer.tsx +++ b/packages/fuselage-ui-kit/src/surfaces/FuselageMessageSurfaceRenderer.tsx @@ -10,9 +10,9 @@ export class FuselageMessageSurfaceRenderer extends FuselageSurfaceRenderer { super(['actions', 'context', 'divider', 'image', 'input', 'section', 'preview', 'video_conf', 'info_card']); } - plain_text = renderTextObject; + override plain_text = renderTextObject; - mrkdwn = renderTextObject; + override mrkdwn = renderTextObject; video_conf(block: UiKit.VideoConferenceBlock, context: UiKit.BlockContext, index: number): ReactElement | null { if (context === UiKit.BlockContext.BLOCK) { diff --git a/packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx b/packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx index d4067ec415786..e35cc64f36fae 100644 --- a/packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx +++ b/packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx @@ -83,7 +83,7 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer; } - public text(textObject: UiKit.TextObject, context: UiKit.BlockContext, index: number): ReactElement | null { + public override text(textObject: UiKit.TextObject, context: UiKit.BlockContext, index: number): ReactElement | null { if (textObject.type === 'mrkdwn') { return this.mrkdwn(textObject, context, index); } diff --git a/packages/fuselage-ui-kit/src/surfaces/ModalSurfaceRenderer.tsx b/packages/fuselage-ui-kit/src/surfaces/ModalSurfaceRenderer.tsx index 7cc8804248100..a6fbcae1b9c87 100644 --- a/packages/fuselage-ui-kit/src/surfaces/ModalSurfaceRenderer.tsx +++ b/packages/fuselage-ui-kit/src/surfaces/ModalSurfaceRenderer.tsx @@ -5,7 +5,7 @@ export class ModalSurfaceRenderer extends FuselageSurfaceRenderer { super(['actions', 'context', 'divider', 'image', 'input', 'section', 'preview', 'callout']); } - plain_text = renderTextObject; + override plain_text = renderTextObject; - mrkdwn = renderTextObject; + override mrkdwn = renderTextObject; } diff --git a/packages/livechat/src/components/App/App.tsx b/packages/livechat/src/components/App/App.tsx index e0398b3a08510..ff14905678330 100644 --- a/packages/livechat/src/components/App/App.tsx +++ b/packages/livechat/src/components/App/App.tsx @@ -71,7 +71,7 @@ type AppState = { }; export class App extends Component { - state = { + override state = { initialized: false, poppedOut: false, }; @@ -96,12 +96,14 @@ export class App extends Component { setInitCookies(); if (gdprRequired && !gdprAccepted) { - return route('/gdpr'); + route('/gdpr'); + return; } if (!online) { parentCall('callback', 'no-agent-online'); - return route('/leave-message'); + route('/leave-message'); + return; } const showDepartment = departments.some((dept) => dept.showOnRegistration); @@ -109,7 +111,7 @@ export class App extends Component { const showRegistrationForm = !user?.token && registrationForm && isAnyFieldVisible && !Triggers.hasTriggersBeforeRegistration(); if (url === '/' && showRegistrationForm) { - return route('/register'); + route('/register'); } }, 100); }; @@ -179,15 +181,15 @@ export class App extends Component { visibility.removeListener(this.handleVisibilityChange); } - componentDidMount() { + override componentDidMount() { this.initialize(); } - componentWillUnmount() { + override componentWillUnmount() { this.finalize(); } - componentDidUpdate() { + override componentDidUpdate() { const { i18n } = this.props; if (i18n.t) { diff --git a/packages/livechat/src/components/Avatar/index.tsx b/packages/livechat/src/components/Avatar/index.tsx index 1cfd930a935b6..53cd78d79ad43 100644 --- a/packages/livechat/src/components/Avatar/index.tsx +++ b/packages/livechat/src/components/Avatar/index.tsx @@ -19,7 +19,7 @@ type AvatarState = { }; export class Avatar extends Component { - static getDerivedStateFromProps(props: AvatarProps) { + static override getDerivedStateFromProps(props: AvatarProps) { if (props.src) { return { errored: false }; } @@ -27,7 +27,7 @@ export class Avatar extends Component { return null; } - state = { + override state = { errored: false, }; diff --git a/packages/livechat/src/components/Composer/index.tsx b/packages/livechat/src/components/Composer/index.tsx index 75d89f2fd7229..8c876b070b276 100644 --- a/packages/livechat/src/components/Composer/index.tsx +++ b/packages/livechat/src/components/Composer/index.tsx @@ -176,7 +176,7 @@ export class Composer extends Component { // we only update composer if value length changed from 0 to 1 or 1 to 0 // everything else is managed by this.el - shouldComponentUpdate({ value: nextValue = '' }: ComposerProps) { + override shouldComponentUpdate({ value: nextValue = '' }: ComposerProps) { const { value = '', limitTextLength } = this.props; const nextValueEmpty = !nextValue || nextValue.length === 0; @@ -193,7 +193,7 @@ export class Composer extends Component { return false; } - componentDidUpdate() { + override componentDidUpdate() { const { el } = this; if (!el) { return; diff --git a/packages/livechat/src/components/Menu/index.tsx b/packages/livechat/src/components/Menu/index.tsx index 1bf8125a80a04..7ca6e7ae11325 100644 --- a/packages/livechat/src/components/Menu/index.tsx +++ b/packages/livechat/src/components/Menu/index.tsx @@ -61,7 +61,7 @@ type PopoverMenuWrapperState = { }; class PopoverMenuWrapper extends Component { - state: PopoverMenuWrapperState = {}; + override state: PopoverMenuWrapperState = {}; menuRef: (Component & { base: Element }) | null = null; @@ -78,7 +78,7 @@ class PopoverMenuWrapper extends Component, S> extends Component { - shouldComponentUpdate(nextProps: RenderableProps

) { + override shouldComponentUpdate(nextProps: RenderableProps

) { const { props } = this; for (const key in props) { diff --git a/packages/livechat/src/lib/transcript.ts b/packages/livechat/src/lib/transcript.ts index 33260edd62e83..2a735092e9a4b 100644 --- a/packages/livechat/src/lib/transcript.ts +++ b/packages/livechat/src/lib/transcript.ts @@ -35,6 +35,8 @@ const promptTranscript = async () => { if (typeof result.success === 'boolean' && result.success) { return Livechat.requestTranscript(email, { rid: _id }); } + + return undefined; }); }; diff --git a/packages/livechat/src/routes/SwitchDepartment/index.tsx b/packages/livechat/src/routes/SwitchDepartment/index.tsx index 5fc3d3b447455..fea3dfc8fc627 100644 --- a/packages/livechat/src/routes/SwitchDepartment/index.tsx +++ b/packages/livechat/src/routes/SwitchDepartment/index.tsx @@ -68,7 +68,8 @@ const SwitchDepartment = (_: SwitchDepartmentProps) => { user: user as StoreState['user'], alerts: (alerts.push({ id: createToken(), children: t('department_switched'), success: true }), alerts), }); - return route('/'); + route('/'); + return; } await dispatch({ loading: true }); diff --git a/packages/livechat/src/routes/TriggerMessage/component.tsx b/packages/livechat/src/routes/TriggerMessage/component.tsx index 160ed47fb4f9f..0a40dce425457 100644 --- a/packages/livechat/src/routes/TriggerMessage/component.tsx +++ b/packages/livechat/src/routes/TriggerMessage/component.tsx @@ -19,7 +19,7 @@ type TriggerMessageProps = { }; class TriggerMessage extends Component { - state = {}; + override state = {}; ref: RefObject; @@ -28,7 +28,7 @@ class TriggerMessage extends Component { this.ref = createRef(); } - componentDidUpdate() { + override componentDidUpdate() { let height = 0; for (const el of this.ref.current.base.children) { diff --git a/packages/livechat/src/store/index.tsx b/packages/livechat/src/store/index.tsx index d27cacc75b4f0..d30e0a0981b63 100644 --- a/packages/livechat/src/store/index.tsx +++ b/packages/livechat/src/store/index.tsx @@ -231,9 +231,9 @@ export const StoreContext = createContext({ }); export class Provider extends Component { - static displayName = 'StoreProvider'; + static override displayName = 'StoreProvider'; - state = { + override state = { ...store.state, dispatch: store.setState.bind(store), on: store.on.bind(store), @@ -244,11 +244,11 @@ export class Provider extends Component { this.setState({ ...store.state }); }; - componentDidMount() { + override componentDidMount() { store.on('change', this.handleStoreChange); } - componentWillUnmount() { + override componentWillUnmount() { store.off('change', this.handleStoreChange); } diff --git a/packages/livechat/src/widget.ts b/packages/livechat/src/widget.ts index 589e02e554791..fb6c803abc1d2 100644 --- a/packages/livechat/src/widget.ts +++ b/packages/livechat/src/widget.ts @@ -122,6 +122,8 @@ function callHook(action: keyof HooksWidgetAPI, ...params: Parameters(collection: string, callback: (event: RealTimeData) => void): this { + override on(collection: string, callback: (event: RealTimeData) => void): this { return super.on(collection, callback); } diff --git a/packages/models/src/models/Analytics.ts b/packages/models/src/models/Analytics.ts index b95eb23e9e26d..04203b8e552c0 100644 --- a/packages/models/src/models/Analytics.ts +++ b/packages/models/src/models/Analytics.ts @@ -13,7 +13,7 @@ export class AnalyticsRaw extends BaseRaw implements IAnalyticsModel }); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { date: 1 } }, { key: { 'room._id': 1, 'date': 1 }, unique: true, partialFilterExpression: { type: 'rooms' } }, diff --git a/packages/models/src/models/AppLogsModel.ts b/packages/models/src/models/AppLogsModel.ts index 4447e4d716b6c..092a1edf28dc1 100644 --- a/packages/models/src/models/AppLogsModel.ts +++ b/packages/models/src/models/AppLogsModel.ts @@ -8,7 +8,7 @@ export class AppsLogsModel extends BaseRaw implements IAppLogsModel { super(db, 'apps_logs', undefined); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ // This index is used to expire logs after 30 days { diff --git a/packages/models/src/models/AppsPersistence.ts b/packages/models/src/models/AppsPersistence.ts index 445fccddaf851..23b3df9127ceb 100644 --- a/packages/models/src/models/AppsPersistence.ts +++ b/packages/models/src/models/AppsPersistence.ts @@ -8,7 +8,7 @@ export class AppsPersistenceModel extends BaseRaw implements IAppsPersisten super(db, 'apps_persistence'); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { diff --git a/packages/models/src/models/Avatars.ts b/packages/models/src/models/Avatars.ts index 40fb14eab0a06..b21502df841f1 100644 --- a/packages/models/src/models/Avatars.ts +++ b/packages/models/src/models/Avatars.ts @@ -9,7 +9,7 @@ export class AvatarsRaw extends BaseUploadModelRaw implements IAvatarsModel { super(db, 'avatars', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [...super.modelIndexes(), { key: { userId: 1 }, sparse: true }]; } diff --git a/packages/models/src/models/Banners.ts b/packages/models/src/models/Banners.ts index 2f3dd5f1207e6..4dd35b27a1631 100644 --- a/packages/models/src/models/Banners.ts +++ b/packages/models/src/models/Banners.ts @@ -10,7 +10,7 @@ export class BannersRaw extends BaseRaw implements IBannersModel { super(db, 'banner', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { platform: 1, startAt: 1, expireAt: 1 } }, { key: { platform: 1, startAt: 1, expireAt: 1, active: 1 } }]; } diff --git a/packages/models/src/models/BannersDismiss.ts b/packages/models/src/models/BannersDismiss.ts index 999e268201b66..5fabf466e8d12 100644 --- a/packages/models/src/models/BannersDismiss.ts +++ b/packages/models/src/models/BannersDismiss.ts @@ -9,7 +9,7 @@ export class BannersDismissRaw extends BaseRaw implements IBanne super(db, 'banner_dismiss', trash); } - modelIndexes(): IndexDescription[] { + override modelIndexes(): IndexDescription[] { return [{ key: { userId: 1, bannerId: 1 } }]; } diff --git a/packages/models/src/models/BaseUploadModel.ts b/packages/models/src/models/BaseUploadModel.ts index d0a5ad9b705e5..77614d162d36e 100644 --- a/packages/models/src/models/BaseUploadModel.ts +++ b/packages/models/src/models/BaseUploadModel.ts @@ -18,7 +18,7 @@ import { BaseRaw } from './BaseRaw'; type T = IUpload; export abstract class BaseUploadModelRaw extends BaseRaw implements IBaseUploadsModel { - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { name: 1 }, sparse: true }, { key: { rid: 1 }, sparse: true }, diff --git a/packages/models/src/models/CalendarEvent.ts b/packages/models/src/models/CalendarEvent.ts index 6726aa26cef50..87a64ee7d0944 100644 --- a/packages/models/src/models/CalendarEvent.ts +++ b/packages/models/src/models/CalendarEvent.ts @@ -9,7 +9,7 @@ export class CalendarEventRaw extends BaseRaw implements ICalend super(db, 'calendar_event', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { startTime: -1, uid: 1, externalId: 1 }, diff --git a/packages/models/src/models/CallHistory.ts b/packages/models/src/models/CallHistory.ts index 79f945c5fa1d4..960b069e54420 100644 --- a/packages/models/src/models/CallHistory.ts +++ b/packages/models/src/models/CallHistory.ts @@ -9,7 +9,7 @@ export class CallHistoryRaw extends BaseRaw implements ICallHis super(db, 'call_history'); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { uid: 1, callId: 1 }, unique: true }, { key: { uid: 1, ts: -1 } }]; } } diff --git a/packages/models/src/models/CredentialTokens.ts b/packages/models/src/models/CredentialTokens.ts index 97f8203c0bdaf..5623aec70d2aa 100644 --- a/packages/models/src/models/CredentialTokens.ts +++ b/packages/models/src/models/CredentialTokens.ts @@ -9,7 +9,7 @@ export class CredentialTokensRaw extends BaseRaw implements IC super(db, 'credential_tokens', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { expireAt: 1 }, sparse: true, expireAfterSeconds: 0 }]; } diff --git a/packages/models/src/models/CronHistoryModel.ts b/packages/models/src/models/CronHistoryModel.ts index 9fb1339b90025..905f62cfaab82 100644 --- a/packages/models/src/models/CronHistoryModel.ts +++ b/packages/models/src/models/CronHistoryModel.ts @@ -9,7 +9,7 @@ export class CronHistoryRaw extends BaseRaw implements ICronHi super(db, 'cron_history'); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { intendedAt: 1, name: 1 }, unique: true }]; } } diff --git a/packages/models/src/models/CustomSounds.ts b/packages/models/src/models/CustomSounds.ts index 2d53afb348849..07c5b9c594a13 100644 --- a/packages/models/src/models/CustomSounds.ts +++ b/packages/models/src/models/CustomSounds.ts @@ -9,7 +9,7 @@ export class CustomSoundsRaw extends BaseRaw implements ICustomSou super(db, 'custom_sounds', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { name: 1 } }]; } diff --git a/packages/models/src/models/CustomUserStatus.ts b/packages/models/src/models/CustomUserStatus.ts index fb352c61768b2..0518e4aac58b4 100644 --- a/packages/models/src/models/CustomUserStatus.ts +++ b/packages/models/src/models/CustomUserStatus.ts @@ -9,7 +9,7 @@ export class CustomUserStatusRaw extends BaseRaw implements I super(db, 'custom_user_status', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { name: 1 } }]; } diff --git a/packages/models/src/models/EmailInbox.ts b/packages/models/src/models/EmailInbox.ts index 2e45f33743b4a..a4d27f7a9d844 100644 --- a/packages/models/src/models/EmailInbox.ts +++ b/packages/models/src/models/EmailInbox.ts @@ -9,7 +9,7 @@ export class EmailInboxRaw extends BaseRaw implements IEmailInboxMo super(db, 'email_inbox', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { email: 1 }, unique: true }]; } diff --git a/packages/models/src/models/EmailMessageHistory.ts b/packages/models/src/models/EmailMessageHistory.ts index a04f976f2217b..ff874971e92ff 100644 --- a/packages/models/src/models/EmailMessageHistory.ts +++ b/packages/models/src/models/EmailMessageHistory.ts @@ -9,7 +9,7 @@ export class EmailMessageHistoryRaw extends BaseRaw implem super(db, 'email_message_history', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { createdAt: 1 }, expireAfterSeconds: 60 * 60 * 24 }]; } diff --git a/packages/models/src/models/EmojiCustom.ts b/packages/models/src/models/EmojiCustom.ts index 539f3b0f0b57a..49bc7322be1f5 100644 --- a/packages/models/src/models/EmojiCustom.ts +++ b/packages/models/src/models/EmojiCustom.ts @@ -9,7 +9,7 @@ export class EmojiCustomRaw extends BaseRaw implements IEmojiCusto super(db, 'custom_emoji', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { name: 1 } }, { key: { aliases: 1 } }, { key: { extension: 1 } }]; } diff --git a/packages/models/src/models/ExportOperations.ts b/packages/models/src/models/ExportOperations.ts index 0b544ddaa6c9f..64656ebba579c 100644 --- a/packages/models/src/models/ExportOperations.ts +++ b/packages/models/src/models/ExportOperations.ts @@ -9,7 +9,7 @@ export class ExportOperationsRaw extends BaseRaw implements IE super(db, 'export_operations', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { userId: 1 } }, { key: { status: 1 } }]; } diff --git a/packages/models/src/models/FederationEvents.ts b/packages/models/src/models/FederationEvents.ts index a94ca5dec730e..397b2c4e6ef56 100644 --- a/packages/models/src/models/FederationEvents.ts +++ b/packages/models/src/models/FederationEvents.ts @@ -10,7 +10,7 @@ export class FederationEventsModel extends BaseRaw { super(db, nameOrModel); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { hasChildren: 1 }, sparse: true }, { key: { timestamp: 1 } }]; } diff --git a/packages/models/src/models/FederationRoomEvents.ts b/packages/models/src/models/FederationRoomEvents.ts index e15b47d581a56..8c6e6c717df82 100644 --- a/packages/models/src/models/FederationRoomEvents.ts +++ b/packages/models/src/models/FederationRoomEvents.ts @@ -10,7 +10,7 @@ export class FederationRoomEventsRaw extends FederationEventsModel implements IF super(db, 'federation_room_events'); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { 'context.roomId': 1 } }]; } diff --git a/packages/models/src/models/FederationServers.ts b/packages/models/src/models/FederationServers.ts index 95256c2280b9e..9b5896f694128 100644 --- a/packages/models/src/models/FederationServers.ts +++ b/packages/models/src/models/FederationServers.ts @@ -10,7 +10,7 @@ export class FederationServersRaw extends BaseRaw implements super(db, 'federation_servers', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { domain: 1 } }]; } diff --git a/packages/models/src/models/FreeSwitchChannel.ts b/packages/models/src/models/FreeSwitchChannel.ts index d81ee27fc793a..992d68a018948 100644 --- a/packages/models/src/models/FreeSwitchChannel.ts +++ b/packages/models/src/models/FreeSwitchChannel.ts @@ -20,7 +20,7 @@ export class FreeSwitchChannelRaw extends BaseRaw implements super(db, 'freeswitch_channels', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { uniqueId: 1 }, unique: true }, { key: { kind: 1, startedAt: -1 } }, diff --git a/packages/models/src/models/FreeSwitchChannelEvent.ts b/packages/models/src/models/FreeSwitchChannelEvent.ts index c598018a2c379..cfb44649f1192 100644 --- a/packages/models/src/models/FreeSwitchChannelEvent.ts +++ b/packages/models/src/models/FreeSwitchChannelEvent.ts @@ -9,7 +9,7 @@ export class FreeSwitchChannelEventRaw extends BaseRaw super(db, 'freeswitch_channel_events', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { channelUniqueId: 1, sequence: 1 }, unique: true }, // Allow 3 days of events to be saved diff --git a/packages/models/src/models/FreeSwitchChannelEventDelta.ts b/packages/models/src/models/FreeSwitchChannelEventDelta.ts index 5fc9973518639..be4451d40417e 100644 --- a/packages/models/src/models/FreeSwitchChannelEventDelta.ts +++ b/packages/models/src/models/FreeSwitchChannelEventDelta.ts @@ -9,7 +9,7 @@ export class FreeSwitchChannelEventDeltaRaw extends BaseRaw implements IImportData super(db, 'import_data', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { dataType: 1 } }]; } diff --git a/packages/models/src/models/Imports.ts b/packages/models/src/models/Imports.ts index 41c17d5e0845d..4bee58b120912 100644 --- a/packages/models/src/models/Imports.ts +++ b/packages/models/src/models/Imports.ts @@ -9,7 +9,7 @@ export class ImportsModel extends BaseRaw implements IImportsModel { super(db, 'import'); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { ts: -1 } }, { key: { valid: 1 } }]; } diff --git a/packages/models/src/models/IntegrationHistory.ts b/packages/models/src/models/IntegrationHistory.ts index 09007df7ee04a..565e39f95c755 100644 --- a/packages/models/src/models/IntegrationHistory.ts +++ b/packages/models/src/models/IntegrationHistory.ts @@ -9,7 +9,7 @@ export class IntegrationHistoryRaw extends BaseRaw implemen super(db, 'integration_history'); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { 'integration._id': 1, 'integration._createdBy._id': 1 } }, { key: { _updatedAt: 1 }, expireAfterSeconds: 30 * 24 * 60 * 60 }, diff --git a/packages/models/src/models/Integrations.ts b/packages/models/src/models/Integrations.ts index eb7a8b79dfd5d..9acb2496e3805 100644 --- a/packages/models/src/models/Integrations.ts +++ b/packages/models/src/models/Integrations.ts @@ -9,7 +9,7 @@ export class IntegrationsRaw extends BaseRaw implements IIntegrati super(db, 'integrations', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { type: 1 } }]; } diff --git a/packages/models/src/models/LivechatAgentActivity.ts b/packages/models/src/models/LivechatAgentActivity.ts index a1b2731031755..cb0bc8172b339 100644 --- a/packages/models/src/models/LivechatAgentActivity.ts +++ b/packages/models/src/models/LivechatAgentActivity.ts @@ -11,7 +11,7 @@ export class LivechatAgentActivityRaw extends BaseRaw im super(db, 'livechat_agent_activity', trash); } - modelIndexes(): IndexDescription[] { + override modelIndexes(): IndexDescription[] { return [{ key: { date: 1 } }, { key: { agentId: 1, date: 1 }, unique: true }]; } diff --git a/packages/models/src/models/LivechatBusinessHours.ts b/packages/models/src/models/LivechatBusinessHours.ts index 19b37f4ba02f1..39d076cbd1951 100644 --- a/packages/models/src/models/LivechatBusinessHours.ts +++ b/packages/models/src/models/LivechatBusinessHours.ts @@ -72,7 +72,7 @@ export class LivechatBusinessHoursRaw extends BaseRaw imp ).toArray(); } - async insertOne(data: Omit): Promise { + override async insertOne(data: Omit): Promise { return super.insertOne({ ...data, ts: new Date(), diff --git a/packages/models/src/models/LivechatContacts.ts b/packages/models/src/models/LivechatContacts.ts index f5c0b605deea9..78c2b3963d43d 100644 --- a/packages/models/src/models/LivechatContacts.ts +++ b/packages/models/src/models/LivechatContacts.ts @@ -33,7 +33,7 @@ export class LivechatContactsRaw extends BaseRaw implements IL super(db, 'livechat_contact', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { name: 1 }, diff --git a/packages/models/src/models/LivechatCustomField.ts b/packages/models/src/models/LivechatCustomField.ts index 38a93f6439b4c..df13b279442a2 100644 --- a/packages/models/src/models/LivechatCustomField.ts +++ b/packages/models/src/models/LivechatCustomField.ts @@ -9,7 +9,7 @@ export class LivechatCustomFieldRaw extends BaseRaw implem super(db, 'livechat_custom_field', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { scope: 1 } }]; } diff --git a/packages/models/src/models/LivechatDepartment.ts b/packages/models/src/models/LivechatDepartment.ts index d7f3ffc7e9617..60263c72e2416 100644 --- a/packages/models/src/models/LivechatDepartment.ts +++ b/packages/models/src/models/LivechatDepartment.ts @@ -47,7 +47,7 @@ export class LivechatDepartmentRaw extends BaseRaw implemen throw new Error('Method not implemented.'); } - protected modelIndexes(): Array { + protected override modelIndexes(): Array { return [ { key: { diff --git a/packages/models/src/models/LivechatDepartmentAgents.ts b/packages/models/src/models/LivechatDepartmentAgents.ts index 70913a5d359eb..7fabbd5aea7f1 100644 --- a/packages/models/src/models/LivechatDepartmentAgents.ts +++ b/packages/models/src/models/LivechatDepartmentAgents.ts @@ -22,7 +22,7 @@ export class LivechatDepartmentAgentsRaw extends BaseRaw { + protected override modelIndexes(): Array { return [ { key: { diff --git a/packages/models/src/models/LivechatInquiry.ts b/packages/models/src/models/LivechatInquiry.ts index 270691d80813e..f3b24ae1d2cae 100644 --- a/packages/models/src/models/LivechatInquiry.ts +++ b/packages/models/src/models/LivechatInquiry.ts @@ -33,7 +33,7 @@ export class LivechatInquiryRaw extends BaseRaw implemen super(db, 'livechat_inquiry', trash); } - protected modelIndexes(): Array { + protected override modelIndexes(): Array { return [ { key: { diff --git a/packages/models/src/models/LivechatPriority.ts b/packages/models/src/models/LivechatPriority.ts index 13da14b300feb..4c254319f71cf 100644 --- a/packages/models/src/models/LivechatPriority.ts +++ b/packages/models/src/models/LivechatPriority.ts @@ -11,7 +11,7 @@ export class LivechatPriorityRaw extends BaseRaw implements I super(db, 'livechat_priority'); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { diff --git a/packages/models/src/models/LivechatRooms.ts b/packages/models/src/models/LivechatRooms.ts index 2f0a28eae808b..3f489ca1043ea 100644 --- a/packages/models/src/models/LivechatRooms.ts +++ b/packages/models/src/models/LivechatRooms.ts @@ -43,7 +43,7 @@ export class LivechatRoomsRaw extends BaseRaw implements ILive } // move indexes from constructor to here using IndexDescription as type - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { open: 1 }, sparse: true }, { key: { departmentId: 1 }, sparse: true }, @@ -83,11 +83,14 @@ export class LivechatRoomsRaw extends BaseRaw implements ILive ]; } - async findOneById(_id: IOmnichannelRoom['_id'], options?: FindOptions): Promise; + override async findOneById(_id: IOmnichannelRoom['_id'], options?: FindOptions): Promise; - async findOneById

(_id: IOmnichannelRoom['_id'], options?: FindOptions

): Promise

; + override async findOneById

( + _id: IOmnichannelRoom['_id'], + options?: FindOptions

, + ): Promise

; - async findOneById(_id: IOmnichannelRoom['_id'], options?: any): Promise { + override async findOneById(_id: IOmnichannelRoom['_id'], options?: any): Promise { const query: Filter = { _id, t: 'l' } as Filter; if (options) { return this.findOne(query, options); @@ -2418,7 +2421,7 @@ export class LivechatRoomsRaw extends BaseRaw implements ILive return this.deleteMany(query); } - removeById(_id: string) { + override removeById(_id: string) { const query: Filter = { _id, t: 'l', diff --git a/packages/models/src/models/LivechatTrigger.ts b/packages/models/src/models/LivechatTrigger.ts index 6e5db23d5ac2c..fc1ae977fe20a 100644 --- a/packages/models/src/models/LivechatTrigger.ts +++ b/packages/models/src/models/LivechatTrigger.ts @@ -9,7 +9,7 @@ export class LivechatTriggerRaw extends BaseRaw implements ILi super(db, 'livechat_trigger', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { enabled: 1 } }]; } diff --git a/packages/models/src/models/LivechatVisitors.ts b/packages/models/src/models/LivechatVisitors.ts index d7e1feed247f9..bf15dc4c650dc 100644 --- a/packages/models/src/models/LivechatVisitors.ts +++ b/packages/models/src/models/LivechatVisitors.ts @@ -26,7 +26,7 @@ export class LivechatVisitorsRaw extends BaseRaw implements IL super(db, 'livechat_visitor', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { token: 1 } }, { key: { 'phone.phoneNumber': 1 }, sparse: true }, @@ -365,7 +365,7 @@ export class LivechatVisitorsRaw extends BaseRaw implements IL return this.updateOne({ _id }, { $unset: { department: 1 } }); } - removeById(_id: string): Promise { + override removeById(_id: string): Promise { return this.deleteOne({ _id }); } diff --git a/packages/models/src/models/MediaCallChannels.ts b/packages/models/src/models/MediaCallChannels.ts index 47d1bd11a821c..fac659d1d9265 100644 --- a/packages/models/src/models/MediaCallChannels.ts +++ b/packages/models/src/models/MediaCallChannels.ts @@ -9,7 +9,7 @@ export class MediaCallChannelsRaw extends BaseRaw implements super(db, 'media_call_channels', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { callId: 1, actorType: 1, actorId: 1, contractId: 1 }, diff --git a/packages/models/src/models/MediaCallNegotiations.ts b/packages/models/src/models/MediaCallNegotiations.ts index c3a1a111f1169..5b015c83d4a59 100644 --- a/packages/models/src/models/MediaCallNegotiations.ts +++ b/packages/models/src/models/MediaCallNegotiations.ts @@ -9,7 +9,7 @@ export class MediaCallNegotiationsRaw extends BaseRaw imp super(db, 'media_call_negotiations', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { callId: 1, requestTimestamp: -1 }, unique: false }]; } diff --git a/packages/models/src/models/MediaCalls.ts b/packages/models/src/models/MediaCalls.ts index 18c70647a8254..8f52333aa36db 100644 --- a/packages/models/src/models/MediaCalls.ts +++ b/packages/models/src/models/MediaCalls.ts @@ -26,7 +26,7 @@ export class MediaCallsRaw extends BaseRaw implements IMediaCallsMod super(db, 'media_calls', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { createdAt: 1 }, unique: false }, { key: { ended: 1, uids: 1, expiresAt: 1 }, unique: false }, diff --git a/packages/models/src/models/MessageReads.ts b/packages/models/src/models/MessageReads.ts index 46e6a6a7e0d10..cb49161ed4532 100644 --- a/packages/models/src/models/MessageReads.ts +++ b/packages/models/src/models/MessageReads.ts @@ -9,7 +9,7 @@ export class MessageReadsRaw extends BaseRaw implements IMessageRe super(db, 'message_reads', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { tmid: 1, userId: 1 }, unique: true }, { key: { ls: 1 } }]; } diff --git a/packages/models/src/models/Messages.ts b/packages/models/src/models/Messages.ts index c87b403b0785b..d4eb96ab9090f 100644 --- a/packages/models/src/models/Messages.ts +++ b/packages/models/src/models/Messages.ts @@ -44,7 +44,7 @@ export class MessagesRaw extends BaseRaw implements IMessagesModel { super(db, 'message', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { rid: 1, ts: 1, _updatedAt: 1 } }, { key: { ts: 1 } }, diff --git a/packages/models/src/models/ModerationReports.ts b/packages/models/src/models/ModerationReports.ts index 5a9b5600c9299..196b5161aef5c 100644 --- a/packages/models/src/models/ModerationReports.ts +++ b/packages/models/src/models/ModerationReports.ts @@ -17,7 +17,7 @@ export class ModerationReportsRaw extends BaseRaw implements super(db, 'moderation_reports', trash); } - modelIndexes(): IndexDescription[] | undefined { + override modelIndexes(): IndexDescription[] | undefined { return [ // TODO deprecated. remove within a migration in v7.0 // { key: { 'ts': 1, 'reports.ts': 1 } }, diff --git a/packages/models/src/models/NotificationQueue.ts b/packages/models/src/models/NotificationQueue.ts index e3af2d80d4b90..2fbe9aa7c8bef 100644 --- a/packages/models/src/models/NotificationQueue.ts +++ b/packages/models/src/models/NotificationQueue.ts @@ -9,7 +9,7 @@ export class NotificationQueueRaw extends BaseRaw implements INot super(db, 'notification_queue', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { uid: 1 } }, { key: { ts: 1 }, expireAfterSeconds: 2 * 60 * 60 }, diff --git a/packages/models/src/models/Nps.ts b/packages/models/src/models/Nps.ts index 22588760c6325..892f6defca06e 100644 --- a/packages/models/src/models/Nps.ts +++ b/packages/models/src/models/Nps.ts @@ -10,7 +10,7 @@ export class NpsRaw extends BaseRaw implements INpsModel { super(db, 'nps', trash); } - modelIndexes(): IndexDescription[] { + override modelIndexes(): IndexDescription[] { return [{ key: { status: 1, expireAt: 1 } }]; } diff --git a/packages/models/src/models/NpsVote.ts b/packages/models/src/models/NpsVote.ts index 1559444fe6312..4bf83b2342f8e 100644 --- a/packages/models/src/models/NpsVote.ts +++ b/packages/models/src/models/NpsVote.ts @@ -11,7 +11,7 @@ export class NpsVoteRaw extends BaseRaw implements INpsVoteModel { super(db, 'nps_vote', trash); } - modelIndexes(): IndexDescription[] { + override modelIndexes(): IndexDescription[] { return [{ key: { npsId: 1, status: 1, sentAt: 1 } }, { key: { npsId: 1, identifier: 1 }, unique: true }]; } diff --git a/packages/models/src/models/OAuthAccessTokens.ts b/packages/models/src/models/OAuthAccessTokens.ts index 6143a6379e2fd..5adca5f964e9a 100644 --- a/packages/models/src/models/OAuthAccessTokens.ts +++ b/packages/models/src/models/OAuthAccessTokens.ts @@ -9,7 +9,7 @@ export class OAuthAccessTokensRaw extends BaseRaw implements super(db, 'oauth_access_tokens', trash); } - modelIndexes(): IndexDescription[] { + override modelIndexes(): IndexDescription[] { return [ { key: { accessToken: 1 } }, { key: { refreshToken: 1 } }, diff --git a/packages/models/src/models/OAuthApps.ts b/packages/models/src/models/OAuthApps.ts index c8650a407f6e6..0f0d412365023 100644 --- a/packages/models/src/models/OAuthApps.ts +++ b/packages/models/src/models/OAuthApps.ts @@ -9,7 +9,7 @@ export class OAuthAppsRaw extends BaseRaw implements IOAuthAppsModel super(db, 'oauth_apps', trash); } - modelIndexes(): IndexDescription[] { + override modelIndexes(): IndexDescription[] { return [{ key: { clientId: 1, clientSecret: 1 } }, { key: { appId: 1 } }]; } diff --git a/packages/models/src/models/OAuthAuthCodes.ts b/packages/models/src/models/OAuthAuthCodes.ts index 59909a8822192..852f3ac4cb1ee 100644 --- a/packages/models/src/models/OAuthAuthCodes.ts +++ b/packages/models/src/models/OAuthAuthCodes.ts @@ -9,7 +9,7 @@ export class OAuthAuthCodesRaw extends BaseRaw implements IOAuth super(db, 'oauth_auth_codes', trash); } - modelIndexes(): IndexDescription[] { + override modelIndexes(): IndexDescription[] { return [{ key: { authCode: 1 } }, { key: { expires: 1 }, expireAfterSeconds: 60 * 5 }]; } diff --git a/packages/models/src/models/OAuthRefreshTokens.ts b/packages/models/src/models/OAuthRefreshTokens.ts index add97ee375e7a..2693cb61ebe6f 100644 --- a/packages/models/src/models/OAuthRefreshTokens.ts +++ b/packages/models/src/models/OAuthRefreshTokens.ts @@ -9,7 +9,7 @@ export class OAuthRefreshTokensRaw extends BaseRaw implement super(db, 'oauth_refresh_tokens', trash); } - modelIndexes(): IndexDescription[] { + override modelIndexes(): IndexDescription[] { return [{ key: { refreshToken: 1 } }, { key: { expires: 1 }, expireAfterSeconds: 60 * 60 * 24 * 30 }]; } diff --git a/packages/models/src/models/OEmbedCache.ts b/packages/models/src/models/OEmbedCache.ts index 6bfab4024b4ee..77ed9c64f6708 100644 --- a/packages/models/src/models/OEmbedCache.ts +++ b/packages/models/src/models/OEmbedCache.ts @@ -9,7 +9,7 @@ export class OEmbedCacheRaw extends BaseRaw implements IOEmbedCach super(db, 'oembed_cache', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { updatedAt: 1 } }]; } diff --git a/packages/models/src/models/PbxEvents.ts b/packages/models/src/models/PbxEvents.ts index bc4cc676235dd..c996610087c3c 100644 --- a/packages/models/src/models/PbxEvents.ts +++ b/packages/models/src/models/PbxEvents.ts @@ -13,7 +13,7 @@ export class PbxEventsRaw extends BaseRaw implements IPbxEventsModel }); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { uniqueId: 1 }, unique: true }]; } diff --git a/packages/models/src/models/Permissions.ts b/packages/models/src/models/Permissions.ts index 694f9c56e941c..fcf229897cdcb 100644 --- a/packages/models/src/models/Permissions.ts +++ b/packages/models/src/models/Permissions.ts @@ -9,7 +9,7 @@ export class PermissionsRaw extends BaseRaw implements IPermissions super(db, 'permissions', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { diff --git a/packages/models/src/models/PushToken.ts b/packages/models/src/models/PushToken.ts index c58e6cab25970..3ada0d55a2d98 100644 --- a/packages/models/src/models/PushToken.ts +++ b/packages/models/src/models/PushToken.ts @@ -13,7 +13,7 @@ export class PushTokenRaw extends BaseRaw implements IPushTokenModel }); } - modelIndexes(): IndexDescription[] { + override modelIndexes(): IndexDescription[] { return [{ key: { userId: 1, authToken: 1 } }, { key: { appName: 1, token: 1 } }]; } diff --git a/packages/models/src/models/Rooms.ts b/packages/models/src/models/Rooms.ts index 6cb6f72a4028d..59f5151646bab 100644 --- a/packages/models/src/models/Rooms.ts +++ b/packages/models/src/models/Rooms.ts @@ -37,7 +37,7 @@ export class RoomsRaw extends BaseRaw implements IRoomsModel { super(db, 'room', trash); } - modelIndexes(): IndexDescription[] { + override modelIndexes(): IndexDescription[] { return [ { key: { name: 1 }, @@ -1979,13 +1979,13 @@ export class RoomsRaw extends BaseRaw implements IRoomsModel { } // REMOVE - removeById(_id: IRoom['_id']): Promise { + override removeById(_id: IRoom['_id']): Promise { const query: Filter = { _id }; return this.deleteOne(query); } - removeByIds(ids: Array): Promise { + override removeByIds(ids: Array): Promise { return this.deleteMany({ _id: { $in: ids } }); } diff --git a/packages/models/src/models/ServerEvents.ts b/packages/models/src/models/ServerEvents.ts index 50722d690993f..c0b16f879febf 100644 --- a/packages/models/src/models/ServerEvents.ts +++ b/packages/models/src/models/ServerEvents.ts @@ -16,7 +16,7 @@ export class ServerEventsRaw extends BaseRaw implements IServerEve super(db, 'server_events', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { t: 1, ip: 1, ts: -1 } }, { key: { 't': 1, 'u.username': 1, 'ts': -1 } }]; } diff --git a/packages/models/src/models/Sessions.ts b/packages/models/src/models/Sessions.ts index 9310d103de947..c350da40e550d 100644 --- a/packages/models/src/models/Sessions.ts +++ b/packages/models/src/models/Sessions.ts @@ -976,7 +976,7 @@ export class SessionsRaw extends BaseRaw implements ISessionsModel { return { sessions, total, count, offset }; } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { createdAt: -1 } }, { key: { loginAt: -1 } }, diff --git a/packages/models/src/models/Statistics.ts b/packages/models/src/models/Statistics.ts index 5617a16201c8f..8a1dae77dc76e 100644 --- a/packages/models/src/models/Statistics.ts +++ b/packages/models/src/models/Statistics.ts @@ -9,7 +9,7 @@ export class StatisticsRaw extends BaseRaw implements IStatisticsModel { super(db, 'statistics'); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { createdAt: -1 } }]; } diff --git a/packages/models/src/models/Subscriptions.ts b/packages/models/src/models/Subscriptions.ts index dbd72d644cf11..acc83474e1b33 100644 --- a/packages/models/src/models/Subscriptions.ts +++ b/packages/models/src/models/Subscriptions.ts @@ -41,7 +41,7 @@ export class SubscriptionsRaw extends BaseRaw implements ISubscri super(db, 'subscription', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { // Add all indexes from constructor to here return [ { key: { E2EKey: 1 }, unique: true, sparse: true }, diff --git a/packages/models/src/models/Team.ts b/packages/models/src/models/Team.ts index 5f4b6765eb207..8a3cf29518150 100644 --- a/packages/models/src/models/Team.ts +++ b/packages/models/src/models/Team.ts @@ -9,7 +9,7 @@ export class TeamRaw extends BaseRaw implements ITeamModel { super(db, 'team', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { name: 1 }, unique: true }]; } diff --git a/packages/models/src/models/TeamMember.ts b/packages/models/src/models/TeamMember.ts index 0a5b2a2755f41..686890d7f864f 100644 --- a/packages/models/src/models/TeamMember.ts +++ b/packages/models/src/models/TeamMember.ts @@ -20,7 +20,7 @@ export class TeamMemberRaw extends BaseRaw implements ITeamMemberMo super(db, 'team_member', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { teamId: 1 }, diff --git a/packages/models/src/models/Trash.ts b/packages/models/src/models/Trash.ts index cfabffd5558fb..1135b786be7cc 100644 --- a/packages/models/src/models/Trash.ts +++ b/packages/models/src/models/Trash.ts @@ -12,7 +12,7 @@ export class TrashRaw extends BaseRaw> { }); } - protected modelIndexes(): IndexDescription[] | undefined { + protected override modelIndexes(): IndexDescription[] | undefined { return [ { key: { __collection__: 1 } }, { key: { _deletedAt: 1 }, expireAfterSeconds: 60 * 60 * 24 * 30 }, diff --git a/packages/models/src/models/Uploads.ts b/packages/models/src/models/Uploads.ts index 760080a0cf3b6..3baeeaa715005 100644 --- a/packages/models/src/models/Uploads.ts +++ b/packages/models/src/models/Uploads.ts @@ -11,7 +11,7 @@ export class UploadsRaw extends BaseUploadModelRaw implements IUploadsModel { super(db, 'uploads', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ ...super.modelIndexes(), { key: { uploadedAt: -1 } }, diff --git a/packages/models/src/models/UserDataFiles.ts b/packages/models/src/models/UserDataFiles.ts index 7141ac09d1b6a..c86d392fc59ae 100644 --- a/packages/models/src/models/UserDataFiles.ts +++ b/packages/models/src/models/UserDataFiles.ts @@ -9,7 +9,7 @@ export class UserDataFilesRaw extends BaseUploadModelRaw implements IUserDataFil super(db, 'user_data_files', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [...super.modelIndexes(), { key: { userId: 1 } }]; } diff --git a/packages/models/src/models/Users.ts b/packages/models/src/models/Users.ts index 49aa37037b4c6..dd11568dff70f 100644 --- a/packages/models/src/models/Users.ts +++ b/packages/models/src/models/Users.ts @@ -72,7 +72,7 @@ export class UsersRaw extends BaseRaw> implements IU } // Move index from constructor to here - modelIndexes(): IndexDescription[] { + override modelIndexes(): IndexDescription[] { return [ { key: { __rooms: 1 }, sparse: true }, { key: { roles: 1 }, sparse: true }, @@ -2404,7 +2404,7 @@ export class UsersRaw extends BaseRaw> implements IU return this.findOne(query, options); } - findOneById(userId: IUser['_id'], options: FindOptions = {}) { + override findOneById(userId: IUser['_id'], options: FindOptions = {}) { const query = { _id: userId }; return this.findOne(query, options); @@ -3240,7 +3240,7 @@ export class UsersRaw extends BaseRaw> implements IU } // REMOVE - removeById(_id: IUser['_id']) { + override removeById(_id: IUser['_id']) { return this.deleteOne({ _id }); } diff --git a/packages/models/src/models/VideoConference.ts b/packages/models/src/models/VideoConference.ts index 2d2175926c7b5..e6bba09747c03 100644 --- a/packages/models/src/models/VideoConference.ts +++ b/packages/models/src/models/VideoConference.ts @@ -27,7 +27,7 @@ export class VideoConferenceRaw extends BaseRaw implements IVid super(db, 'video_conference', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [ { key: { rid: 1, createdAt: 1 }, unique: false }, { key: { type: 1, status: 1 }, unique: false }, diff --git a/packages/models/src/models/WebdavAccounts.ts b/packages/models/src/models/WebdavAccounts.ts index ee710a4eb35cd..bc1871ef6fa07 100644 --- a/packages/models/src/models/WebdavAccounts.ts +++ b/packages/models/src/models/WebdavAccounts.ts @@ -9,7 +9,7 @@ export class WebdavAccountsRaw extends BaseRaw implements IWebda super(db, 'webdav_accounts', trash); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { userId: 1 } }]; } diff --git a/packages/models/src/models/WorkspaceCredentials.ts b/packages/models/src/models/WorkspaceCredentials.ts index 09706cdec4bbf..8f9e62bd4684a 100644 --- a/packages/models/src/models/WorkspaceCredentials.ts +++ b/packages/models/src/models/WorkspaceCredentials.ts @@ -9,7 +9,7 @@ export class WorkspaceCredentialsRaw extends BaseRaw impl super(db, 'workspace_credentials'); } - protected modelIndexes(): IndexDescription[] { + protected override modelIndexes(): IndexDescription[] { return [{ key: { scope: 1, expirationDate: 1, accessToken: 1 }, unique: true }]; } diff --git a/packages/random/src/NodeRandomGenerator.ts b/packages/random/src/NodeRandomGenerator.ts index 8c9f239413ca8..24226fdb5fb4b 100644 --- a/packages/random/src/NodeRandomGenerator.ts +++ b/packages/random/src/NodeRandomGenerator.ts @@ -21,7 +21,7 @@ export class NodeRandomGenerator extends RandomGenerator { * @locus Anywhere * @param digits Length of the string */ - hexString(digits: number) { + override hexString(digits: number) { const numBytes = Math.ceil(digits / 2); let bytes; // Try to get cryptographically strong randomness. Fall back to diff --git a/packages/random/tsconfig.json b/packages/random/tsconfig.json index de1626fb52adb..20d11edcf6a8f 100644 --- a/packages/random/tsconfig.json +++ b/packages/random/tsconfig.json @@ -3,9 +3,6 @@ "compilerOptions": { "outDir": "dist", "rootDir": "src", - "noImplicitAny": true, - "noUnusedLocals": true, - "noUnusedParameters": true, "strictNullChecks": true, }, "include": ["src"] diff --git a/packages/sha256/tsconfig.json b/packages/sha256/tsconfig.json index de1626fb52adb..20d11edcf6a8f 100644 --- a/packages/sha256/tsconfig.json +++ b/packages/sha256/tsconfig.json @@ -3,9 +3,6 @@ "compilerOptions": { "outDir": "dist", "rootDir": "src", - "noImplicitAny": true, - "noUnusedLocals": true, - "noUnusedParameters": true, "strictNullChecks": true, }, "include": ["src"] diff --git a/packages/tools/src/wrapExceptions.ts b/packages/tools/src/wrapExceptions.ts index bd830a92bfebd..92e8281de5530 100644 --- a/packages/tools/src/wrapExceptions.ts +++ b/packages/tools/src/wrapExceptions.ts @@ -36,6 +36,7 @@ export function wrapExceptions(getter: () => T) { return value; } catch (error) { errorWrapper?.(error); + return undefined; } }; diff --git a/packages/tsconfig/base.json b/packages/tsconfig/base.json index 7b4a67f12e032..d0936655f05b3 100644 --- a/packages/tsconfig/base.json +++ b/packages/tsconfig/base.json @@ -4,17 +4,20 @@ "target": "es5", "module": "commonjs", - "strict": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "moduleResolution": "node", "resolveJsonModule": true, - "noImplicitAny": true, + "strict": true, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "noFallthroughCasesInSwitch": true, + "noImplicitOverride": true, + "noImplicitReturns": true, "noUnusedLocals": true, "noUnusedParameters": true, - "strictNullChecks": true }, "exclude": ["node_modules", "${configDir}/**/*.spec.ts"] } diff --git a/packages/ui-client/src/components/CustomFieldsForm.tsx b/packages/ui-client/src/components/CustomFieldsForm.tsx index 6aff18fc06d15..bd57e573e6657 100644 --- a/packages/ui-client/src/components/CustomFieldsForm.tsx +++ b/packages/ui-client/src/components/CustomFieldsForm.tsx @@ -56,6 +56,8 @@ const CustomField = ({ return t('Min_length_is', { postProcess: 'sprintf', sprintf: [props?.minLength] }); case 'maxLength': return t('Max_length_is', { postProcess: 'sprintf', sprintf: [props?.maxLength] }); + default: + return error?.message || ''; } }, [label, name, props?.maxLength, props?.minLength, t], diff --git a/packages/ui-client/src/helpers/imperativeModal.tsx b/packages/ui-client/src/helpers/imperativeModal.tsx index b730a7a2c6677..9db91fe4dfb09 100644 --- a/packages/ui-client/src/helpers/imperativeModal.tsx +++ b/packages/ui-client/src/helpers/imperativeModal.tsx @@ -27,6 +27,8 @@ const mapCurrentModal = (descriptor: ModalDescriptor): ReactNode => { ...descriptor.props, }); } + + return null; }; class ImperativeModalEmmiter extends Emitter<{ update: ModalDescriptor }> { diff --git a/packages/ui-kit/src/rendering/renderBlockElement.ts b/packages/ui-kit/src/rendering/renderBlockElement.ts index a18ae6656ccc9..72402eb84ee0c 100644 --- a/packages/ui-kit/src/rendering/renderBlockElement.ts +++ b/packages/ui-kit/src/rendering/renderBlockElement.ts @@ -25,6 +25,9 @@ const getBlockElementRenderer = (renderers: BlockRenderers, type: BlockEle case 'linear_scale': return renderers.linearScale as BlockElementRenderer | undefined; + + default: + return undefined; } }; diff --git a/packages/ui-voip/src/context/useMediaSession.ts b/packages/ui-voip/src/context/useMediaSession.ts index 15e6bac72c898..fcb56b3128b62 100644 --- a/packages/ui-voip/src/context/useMediaSession.ts +++ b/packages/ui-voip/src/context/useMediaSession.ts @@ -61,6 +61,8 @@ const deriveWidgetStateFromCallState = ( case 'none': case 'ringing': return callRole === 'callee' ? 'ringing' : 'calling'; + default: + return undefined; } }; diff --git a/packages/ui-voip/src/context/useTonePlayer.ts b/packages/ui-voip/src/context/useTonePlayer.ts index 09d0d80231fbb..4f626f40b0dc2 100644 --- a/packages/ui-voip/src/context/useTonePlayer.ts +++ b/packages/ui-voip/src/context/useTonePlayer.ts @@ -33,7 +33,7 @@ class TonePlayer { this.filter.connect(this.destination); } - public setSinkId(sinkId: string) { + public async setSinkId(sinkId: string) { if (this.audioElement.setSinkId) { return this.audioElement.setSinkId(sinkId); } diff --git a/yarn.lock b/yarn.lock index 49b8e415931f2..37244e5a45302 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9056,7 +9056,6 @@ __metadata: dependencies: "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/emitter": "npm:~0.31.25" - "@rocket.chat/jest-presets": "workspace:~" "@rocket.chat/logger": "workspace:^" "@rocket.chat/media-signaling": "workspace:^" "@rocket.chat/models": "workspace:^" @@ -9064,7 +9063,6 @@ __metadata: "@types/jest": "npm:~30.0.0" drachtio-srf: "patch:drachtio-srf@npm%3A5.0.12#~/.yarn/patches/drachtio-srf-npm-5.0.12-b0b1afaad6.patch" eslint: "npm:~8.45.0" - jest: "npm:~30.2.0" typescript: "npm:~5.9.3" languageName: unknown linkType: soft