From f74ba4e587ec294b4482ba578dcb2708f0322b4e Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Mon, 8 Aug 2022 10:52:22 -0300 Subject: [PATCH] Chore: ESLint warnings (#26504) --- .vscode/settings.json | 4 + apps/meteor/.scripts/run-ha.ts | 3 +- apps/meteor/app/2fa/server/code/EmailCheck.ts | 2 +- .../2fa/server/code/PasswordCheckFallback.ts | 2 +- apps/meteor/app/2fa/server/code/TOTPCheck.ts | 2 +- apps/meteor/app/2fa/server/code/index.ts | 2 +- .../app/2fa/server/twoFactorRequired.ts | 3 +- .../action-links/client/lib/actionLinks.ts | 16 ++- .../action-links/server/lib/actionLinks.ts | 2 +- apps/meteor/app/api/server/api.d.ts | 11 +- .../api/server/helpers/addUserToFileObj.ts | 2 +- .../api/server/helpers/getUserFromParams.ts | 6 +- .../app/api/server/helpers/getUserInfo.ts | 2 +- .../meteor/app/api/server/helpers/isWidget.ts | 2 +- apps/meteor/app/api/server/lib/emailInbox.ts | 8 +- .../meteor/app/api/server/lib/emoji-custom.ts | 4 +- .../app/api/server/lib/getUploadFormData.ts | 4 +- apps/meteor/app/api/server/lib/rooms.ts | 2 +- apps/meteor/app/api/server/lib/users.ts | 13 +-- .../api/server/middlewares/authentication.ts | 2 +- apps/meteor/app/api/server/v1/channels.ts | 2 +- apps/meteor/app/api/server/v1/e2e.ts | 2 +- apps/meteor/app/api/server/v1/integrations.ts | 2 +- apps/meteor/app/api/server/v1/invites.ts | 2 +- apps/meteor/app/api/server/v1/misc.ts | 2 +- apps/meteor/app/api/server/v1/settings.ts | 6 +- .../meteor/app/api/server/v1/subscriptions.ts | 4 +- apps/meteor/app/api/server/v1/teams.ts | 3 +- apps/meteor/app/api/server/v1/users.ts | 2 +- .../app/api/server/v1/voip/omnichannel.ts | 2 +- .../app/apps/client/@types/IOrchestrator.ts | 4 +- apps/meteor/app/apps/client/orchestrator.ts | 12 +- .../apps/lib/misc/formatAppInstanceForRest.ts | 10 +- .../app/apps/server/bridges/activation.ts | 6 +- apps/meteor/app/apps/server/bridges/api.ts | 11 +- apps/meteor/app/apps/server/bridges/cloud.ts | 4 +- .../app/apps/server/bridges/commands.ts | 5 +- .../meteor/app/apps/server/bridges/details.ts | 4 +- .../app/apps/server/bridges/environmental.ts | 2 +- apps/meteor/app/apps/server/bridges/http.ts | 6 +- .../app/apps/server/bridges/internal.ts | 4 +- .../app/apps/server/bridges/livechat.ts | 14 +-- .../app/apps/server/bridges/messages.ts | 11 +- .../app/apps/server/bridges/persistence.ts | 4 +- apps/meteor/app/apps/server/bridges/rooms.ts | 16 +-- .../app/apps/server/bridges/scheduler.ts | 48 ++------ .../app/apps/server/bridges/settings.ts | 4 +- .../app/apps/server/bridges/uiInteraction.ts | 6 +- .../meteor/app/apps/server/bridges/uploads.ts | 6 +- apps/meteor/app/apps/server/bridges/users.ts | 4 +- .../apps/server/bridges/videoConferences.ts | 6 +- .../endpoints/actionButtonsHandler.ts | 27 ++--- .../app/apps/server/communication/methods.ts | 4 +- .../app/apps/server/communication/uikit.ts | 16 +-- .../apps/server/communication/websockets.ts | 9 +- .../server/converters/videoConferences.ts | 8 -- apps/meteor/app/apps/server/orchestrator.js | 2 +- .../storage/AppFileSystemSourceStorage.ts | 3 +- .../server/storage/AppGridFSSourceStorage.ts | 6 +- .../app/apps/server/storage/AppRealStorage.ts | 5 +- .../storage/ConfigurableAppSourceStorage.ts | 3 +- apps/meteor/app/assets/server/assets.ts | 26 ++--- .../app/authentication/server/hooks/login.ts | 2 +- .../server/lib/logLoginAttempts.ts | 8 +- .../server/lib/restrictLoginAttempts.ts | 2 +- .../app/authorization/client/hasPermission.ts | 2 +- .../server/functions/canAccessRoom.ts | 2 +- .../server/functions/canDeleteMessage.ts | 2 +- .../server/functions/canSendMessage.ts | 2 +- .../server/functions/getUsersInRole.ts | 4 +- .../authorization/server/functions/hasRole.ts | 2 +- .../server/functions/upsertPermissions.ts | 2 +- .../autotranslate/client/lib/autotranslate.ts | 9 +- .../app/autotranslate/server/autotranslate.ts | 4 +- .../autotranslate/server/deeplTranslate.ts | 2 +- .../autotranslate/server/googleTranslate.ts | 2 +- .../app/autotranslate/server/msTranslate.ts | 2 +- .../app/channel-settings/client/tabBar.ts | 3 +- .../server/functions/buildRegistrationData.ts | 2 +- .../server/functions/connectWorkspace.ts | 2 +- .../server/functions/getConfirmationPoll.ts | 4 +- .../server/functions/getWorkspaceLicense.ts | 2 +- .../functions/startRegisterWorkspace.ts | 2 +- .../startRegisterWorkspaceSetupWizard.ts | 4 +- .../cloud/server/functions/syncWorkspace.ts | 2 +- .../app/federation-v2/client/Federation.ts | 2 +- .../server/application/RoomServiceReceiver.ts | 13 ++- .../server/application/RoomServiceSender.ts | 12 +- .../application/input/RoomReceiverDto.ts | 4 +- .../server/application/input/RoomSenderDto.ts | 2 +- .../server/domain/FederatedRoom.ts | 4 +- .../server/domain/FederatedUser.ts | 2 +- apps/meteor/app/federation-v2/server/index.ts | 2 +- .../server/infrastructure/Factory.ts | 4 +- .../server/infrastructure/matrix/Bridge.ts | 8 +- .../matrix/converters/RoomReceiver.ts | 2 +- .../matrix/definitions/IMatrixEvent.ts | 4 +- .../definitions/IMatrixEventContent/index.ts | 14 +-- .../matrix/handlers/BaseEvent.ts | 4 +- .../infrastructure/matrix/handlers/Room.ts | 6 +- .../infrastructure/matrix/handlers/index.ts | 6 +- .../infrastructure/queue/InMemoryQueue.ts | 6 +- .../infrastructure/rocket-chat/Federation.ts | 2 +- .../rocket-chat/adapters/Message.ts | 4 +- .../rocket-chat/adapters/Room.ts | 4 +- .../rocket-chat/adapters/Settings.ts | 4 +- .../rocket-chat/adapters/User.ts | 2 +- .../rocket-chat/converters/RoomSender.ts | 2 +- .../infrastructure/rocket-chat/hooks/index.ts | 12 +- .../rocket-chat/slash-commands/index.ts | 4 +- .../federation/server/functions/helpers.ts | 4 +- .../file-upload/server/lib/streamToBuffer.ts | 2 +- .../server/methods/sendFileMessage.ts | 5 +- .../app/highlight-words/client/client.ts | 2 +- .../server/classes/ImportDataConverter.ts | 3 +- apps/meteor/app/katex/client/index.ts | 2 +- .../app/lib/server/functions/attachMessage.ts | 3 +- .../lib/server/functions/cleanRoomHistory.ts | 2 +- .../lib/server/functions/createDirectRoom.ts | 14 ++- .../app/lib/server/functions/createRoom.ts | 5 +- .../app/lib/server/functions/deleteUser.ts | 2 +- .../functions/getRoomsWithSingleOwner.ts | 2 +- .../functions/getUserSingleOwnedRooms.ts | 2 +- .../functions/relinquishRoomOwnerships.ts | 2 +- .../app/lib/server/functions/setEmail.ts | 4 +- .../app/lib/server/lib/processDirectEmail.ts | 4 +- .../server/methods/deleteUserOwnAccount.ts | 2 +- .../meteor/app/lib/server/methods/setEmail.ts | 2 +- .../server/startup/settingsOnLoadSiteUrl.ts | 2 +- .../views/app/business-hours/BusinessHours.ts | 2 +- .../client/views/app/business-hours/Single.ts | 2 +- apps/meteor/app/livechat/client/voip.ts | 6 +- apps/meteor/app/livechat/lib/messageTypes.ts | 2 +- .../business-hour/AbstractBusinessHour.ts | 2 +- .../business-hour/BusinessHourManager.ts | 8 +- .../livechat/server/business-hour/Default.ts | 6 +- .../livechat/server/business-hour/Helper.ts | 3 +- .../livechat/server/business-hour/Single.ts | 3 +- .../app/livechat/server/lib/Contacts.ts | 4 +- .../roomAccessValidator.internalService.ts | 2 +- .../LivechatAgentActivityMonitor.ts | 2 +- apps/meteor/app/livestream/client/tabBar.tsx | 3 +- .../server/functions/sendMail.ts | 2 +- .../app/message-star/client/actionButton.ts | 6 +- .../meteor-accounts-saml/server/lib/SAML.ts | 10 +- .../server/lib/ServiceProvider.ts | 8 +- .../meteor-accounts-saml/server/lib/Utils.ts | 10 +- .../server/lib/generators/AuthorizeRequest.ts | 6 +- .../server/lib/generators/LogoutRequest.ts | 6 +- .../server/lib/generators/LogoutResponse.ts | 6 +- .../lib/generators/ServiceProviderMetadata.ts | 4 +- .../server/lib/parsers/LogoutRequest.ts | 4 +- .../server/lib/parsers/LogoutResponse.ts | 4 +- .../server/lib/parsers/Response.ts | 12 +- .../server/lib/settings.ts | 2 +- .../meteor-accounts-saml/server/listener.ts | 6 +- .../server/loginHandler.ts | 1 - .../server/methods/samlLogout.ts | 2 +- .../app/metrics/server/lib/collectMetrics.ts | 2 +- .../server/models/LivechatBusinessHours.ts | 3 +- .../models/server/models/LivechatInquiry.ts | 4 +- .../server/NotificationQueue.ts | 3 +- .../app/notifications/server/lib/Presence.ts | 2 +- .../server/oauth/oauth2-server.ts | 4 +- .../meteor/app/oembed/server/jumpToMessage.ts | 5 +- apps/meteor/app/oembed/server/providers.ts | 2 +- apps/meteor/app/oembed/server/server.ts | 13 +-- .../server/lib/PushNotification.ts | 2 +- .../server/cronPruneMessages.ts | 10 +- .../app/settings/client/lib/settings.ts | 2 +- apps/meteor/app/settings/lib/settings.ts | 4 +- .../app/settings/server/CachedSettings.ts | 2 +- .../app/settings/server/SettingsRegistry.ts | 6 +- .../settings/server/functions/convertValue.ts | 2 +- .../server/functions/getSettingDefaults.ts | 3 +- .../server/functions/settings.mocks.ts | 2 +- apps/meteor/app/settings/server/raw.ts | 2 +- apps/meteor/app/settings/server/startup.ts | 2 +- .../app/slashcommands-join/client/client.ts | 2 +- apps/meteor/app/spotify/lib/spotify.ts | 2 +- .../app/statistics/server/lib/SAUMonitor.ts | 2 +- .../statistics/server/lib/telemetryEvents.ts | 2 +- .../app/threads/client/flextab/threadlist.tsx | 8 +- apps/meteor/app/ui-master/server/inject.ts | 2 +- .../ui-message/client/ActionButtonSyncer.ts | 3 +- .../client/actionButtons/dropdownAction.ts | 2 +- .../actionButtons/lib/applyButtonFilters.ts | 5 +- .../client/actionButtons/messageAction.ts | 2 +- .../client/actionButtons/messageBox.ts | 2 +- .../ui-message/client/actionButtons/tabbar.ts | 2 +- .../app/ui-utils/client/lib/AccountBox.ts | 2 +- .../app/ui-utils/client/lib/MessageAction.ts | 10 +- .../client/lib/messageActionDefault.ts | 6 +- apps/meteor/app/ui-utils/lib/MessageTypes.ts | 4 +- apps/meteor/app/ui/client/lib/UserAction.ts | 2 +- apps/meteor/app/ui/client/lib/fileUpload.ts | 2 +- .../ui/client/views/app/photoswipeContent.ts | 2 - apps/meteor/app/ui/client/views/app/room.d.ts | 2 +- .../utils/lib/getDefaultSubscriptionPref.js | 7 ++ .../app/utils/server/lib/cron/Cronjobs.ts | 7 +- .../app/utils/server/lib/getTimezone.ts | 2 +- .../server/lib/normalizeMessagesForUser.ts | 2 +- .../server/functions/checkVersionUpdate.ts | 2 +- apps/meteor/app/version-check/server/index.ts | 2 +- apps/meteor/app/videobridge/client/tabBar.tsx | 3 +- .../webdav/server/lib/getWebdavCredentials.ts | 4 +- .../webdav/server/lib/webdavClientAdapter.ts | 37 +++--- .../webdav/server/methods/addWebdavAccount.ts | 6 +- .../server/methods/uploadFileToWebdav.ts | 1 - .../UIKit/hooks/useUIKitStateManager.tsx | 2 +- .../components/GenericTable/GenericTable.tsx | 6 +- .../meteor/client/components/MarkdownText.tsx | 4 +- .../Omnichannel/modals/ForwardChatModal.tsx | 2 - apps/meteor/client/definitions/html.d.ts | 3 + .../lists/useStreamUpdatesForMessageList.ts | 2 +- .../client/hooks/useComponentDidUpdate.ts | 2 +- apps/meteor/client/lib/imperativeModal.ts | 6 +- apps/meteor/client/lib/minimongo/query.ts | 2 +- apps/meteor/client/lib/minimongo/types.ts | 8 +- .../lib/portals/createEphemeralPortal.ts | 2 +- .../client/lib/portals/createLazyElement.ts | 2 +- .../client/lib/portals/createLazyPortal.ts | 2 +- .../lib/portals/createTemplateForComponent.ts | 2 +- .../client/lib/rooms/roomTypes/livechat.ts | 2 +- .../client/lib/utils/callWithErrorHandling.ts | 2 +- apps/meteor/client/lib/utils/handleError.ts | 12 +- apps/meteor/client/polyfills/cssVars.ts | 2 +- .../client/providers/ServerProvider.tsx | 8 +- apps/meteor/client/startup/messageTypes.ts | 10 +- .../startup/renderMessage/mentionsMessage.ts | 2 +- .../stories/contexts/ServerContextMock.tsx | 8 +- .../meteor/client/views/admin/apps/helpers.ts | 12 +- .../client/views/banners/UiKitBanner.tsx | 33 +++--- .../MessageList/hooks/useParsedMessage.ts | 16 +-- apps/meteor/client/views/room/Room/Room.tsx | 4 +- .../views/room/contextualBar/Apps/Apps.tsx | 3 +- .../room/contextualBar/Apps/AppsWithData.tsx | 6 +- .../views/room/contextualBar/Threads/Row.tsx | 2 +- .../lib/QuickActions/QuickActionsContext.tsx | 2 +- .../views/room/lib/Toolbox/ToolboxContext.tsx | 4 +- .../views/room/lib/Toolbox/generator.tsx | 4 +- .../views/room/providers/ToolboxProvider.tsx | 9 +- .../views/room/providers/VirtualAction.tsx | 2 +- .../contexts/SetupWizardContext.tsx | 2 +- apps/meteor/definition/externals/express.d.ts | 2 +- apps/meteor/definition/externals/global.d.ts | 53 +++++---- .../externals/meteor/accounts-base.d.ts | 13 ++- .../externals/meteor/kadira-flow-router.d.ts | 8 +- .../meteor/littledata-synced-cron.d.ts | 4 +- .../definition/externals/meteor/meteor.d.ts | 4 +- .../definition/externals/meteor/mongo.d.ts | 8 +- .../definition/externals/meteor/oauth.d.ts | 4 +- .../externals/meteor/oauth2server.d.ts | 6 +- .../externals/meteor/rocketchat-streamer.d.ts | 24 ++-- .../externals/meteor/rocketchat-tap-i18n.d.ts | 6 +- .../externals/meteor/webapp-hashing.d.ts | 8 +- .../rocket.chat/fuselage-ui-kit.d.ts | 32 ------ apps/meteor/definition/externals/webdav.d.ts | 32 ------ apps/meteor/definition/methods/omnichannel.ts | 4 +- apps/meteor/ee/app/ecdh/Session.ts | 3 +- .../server/application/RoomServiceSender.ts | 14 +-- .../server/domain/FederatedRoom.ts | 6 +- .../server/domain/IFederationBridge.ts | 4 +- .../ee/app/federation-v2/server/index.ts | 2 +- .../server/infrastructure/Factory.ts | 8 +- .../server/infrastructure/matrix/Bridge.ts | 7 +- .../rocket-chat/adapters/Room.ts | 2 +- .../rocket-chat/adapters/User.ts | 2 +- .../rocket-chat/converters/RoomSender.ts | 4 +- .../infrastructure/rocket-chat/hooks/index.ts | 16 +-- .../rocket-chat/slash-commands/index.ts | 2 +- .../ee/app/license/definitions/ILicense.ts | 2 +- .../license/server/license.internalService.ts | 2 +- apps/meteor/ee/app/license/server/license.ts | 7 +- .../ee/app/license/server/maxSeatsBanners.ts | 3 +- .../modals/PlaceChatOnHoldModal.tsx | 3 +- .../app/livechat-enterprise/client/startup.ts | 2 +- .../client/views/business-hours/Multiple.ts | 5 +- .../server/api/lib/priorities.ts | 2 +- .../server/api/lib/tags.ts | 2 +- .../server/api/monitors.ts | 2 +- .../server/business-hour/Custom.ts | 6 +- .../server/business-hour/Helper.ts | 3 +- .../server/business-hour/Multiple.ts | 7 +- .../server/business-hour/lib/business-hour.ts | 2 +- .../hooks/applyDepartmentRestrictions.ts | 5 +- .../server/hooks/beforeJoinRoom.ts | 4 +- .../server/hooks/onTransferFailure.ts | 2 +- .../server/hooks/scheduleAutoTransfer.ts | 2 +- .../server/lib/AutoTransferChatScheduler.ts | 3 +- .../server/lib/QueueInactivityMonitor.ts | 2 +- .../server/lib/routing/LoadRotation.ts | 2 +- .../server/methods/resumeOnHold.ts | 2 +- .../ee/app/models/server/models/Users.ts | 2 +- .../server/settings.internalService.ts | 2 +- .../meteor/ee/app/settings/server/settings.ts | 2 +- .../server/lib/calculateOnHoldTimeForRoom.ts | 2 +- .../server/services/voipService.ts | 4 +- apps/meteor/ee/server/NetworkBroker.ts | 10 +- apps/meteor/ee/server/api/api.ts | 3 +- apps/meteor/ee/server/api/licenses.ts | 2 +- apps/meteor/ee/server/api/sessions.ts | 2 +- apps/meteor/ee/server/configuration/ldap.ts | 4 +- .../ee/server/lib/deviceManagement/session.ts | 2 +- .../lib/engagementDashboard/messages.ts | 4 +- .../server/lib/engagementDashboard/users.ts | 4 +- apps/meteor/ee/server/lib/ldap/Manager.ts | 5 +- .../ee/server/local-services/ldap/service.ts | 2 +- apps/meteor/ee/server/requestSeatsRoute.ts | 2 +- apps/meteor/ee/server/sdk/index.ts | 2 +- .../ee/server/services/account/Account.ts | 12 +- .../server/services/ecdh-proxy/lib/server.ts | 8 +- .../ee/server/services/presence/Presence.ts | 6 +- .../presence/actions/newConnection.ts | 2 +- .../presence/actions/removeLostConnections.ts | 6 +- .../services/presence/actions/setStatus.ts | 3 +- .../server/services/stream-hub/StreamHub.ts | 3 +- apps/meteor/ee/server/startup/broker.ts | 5 +- apps/meteor/lib/callbacks.ts | 4 +- apps/meteor/lib/rooms/coordinator.ts | 4 +- .../lib/rooms/roomTypes/conversation.ts | 2 +- apps/meteor/lib/rooms/roomTypes/direct.ts | 2 +- apps/meteor/lib/rooms/roomTypes/discussion.ts | 2 +- apps/meteor/lib/rooms/roomTypes/favorite.ts | 2 +- apps/meteor/lib/rooms/roomTypes/livechat.ts | 2 +- apps/meteor/lib/rooms/roomTypes/public.ts | 2 +- apps/meteor/lib/rooms/roomTypes/unread.ts | 2 +- apps/meteor/lib/rooms/roomTypes/voip.ts | 2 +- apps/meteor/lib/typedJSONParse.ts | 2 +- apps/meteor/package.json | 1 + apps/meteor/playwright.config.ts | 2 +- apps/meteor/server/cron/federation.ts | 2 +- apps/meteor/server/cron/videoConferences.ts | 3 +- .../meteor/server/database/DatabaseWatcher.ts | 2 +- .../server/database/convertOplogPayload.ts | 2 +- .../server/database/readSecondaryPreferred.ts | 3 +- apps/meteor/server/email/IMAPInterceptor.ts | 6 +- .../server/features/EmailInbox/EmailInbox.ts | 2 +- .../EmailInbox/EmailInbox_Incoming.ts | 5 +- .../EmailInbox/EmailInbox_Outgoing.ts | 5 +- apps/meteor/server/hooks/sauMonitorHooks.ts | 2 +- apps/meteor/server/lib/http/fetch.ts | 6 +- apps/meteor/server/lib/ldap/Connection.ts | 2 +- apps/meteor/server/lib/ldap/Manager.ts | 5 +- apps/meteor/server/lib/logger/Logger.ts | 3 +- apps/meteor/server/lib/logger/startup.ts | 3 +- apps/meteor/server/lib/migrations.ts | 4 +- .../server/lib/rooms/roomCoordinator.ts | 3 +- .../server/lib/rooms/roomTypes/direct.ts | 3 +- .../server/lib/rooms/roomTypes/private.ts | 3 +- .../server/lib/rooms/roomTypes/public.ts | 3 +- .../meteor/server/lib/sendMessagesToAdmins.ts | 6 +- apps/meteor/server/lib/videoConfProviders.ts | 2 +- apps/meteor/server/models/raw/Banners.ts | 3 +- apps/meteor/server/models/raw/BaseRaw.ts | 4 +- .../server/models/raw/InstanceStatus.ts | 2 +- .../models/raw/LoginServiceConfiguration.ts | 2 +- .../server/modules/core-apps/banner.module.ts | 2 +- .../server/modules/core-apps/nps.module.ts | 2 +- .../modules/core-apps/videoconf.module.ts | 2 +- .../modules/listeners/listeners.module.ts | 4 +- .../notifications/notifications.module.ts | 2 +- .../modules/watchers/watchers.module.ts | 4 +- .../server/publications/settings/index.ts | 2 +- apps/meteor/server/routes/i18n.ts | 4 +- apps/meteor/server/sdk/index.ts | 40 +++---- apps/meteor/server/sdk/lib/Api.ts | 6 +- apps/meteor/server/sdk/lib/Events.ts | 4 +- apps/meteor/server/sdk/lib/LocalBroker.ts | 8 +- apps/meteor/server/sdk/lib/proxify.ts | 4 +- apps/meteor/server/sdk/types/IAccount.ts | 2 +- .../server/sdk/types/IAnalyticsService.ts | 2 +- .../server/sdk/types/IAuthorizationVoip.ts | 2 +- .../meteor/server/sdk/types/IBannerService.ts | 2 +- apps/meteor/server/sdk/types/IBroker.ts | 4 +- .../sdk/types/IDeviceManagementService.ts | 2 +- .../server/sdk/types/IEnterpriseSettings.ts | 2 +- apps/meteor/server/sdk/types/ILicense.ts | 2 +- apps/meteor/server/sdk/types/IMediaService.ts | 4 +- apps/meteor/server/sdk/types/IMeteor.ts | 4 +- .../sdk/types/IOmnichannelVoipService.ts | 6 +- apps/meteor/server/sdk/types/IPresence.ts | 4 +- apps/meteor/server/sdk/types/IPushService.ts | 2 +- .../server/sdk/types/ISAUMonitorService.ts | 2 +- apps/meteor/server/sdk/types/ITeamService.ts | 18 ++- apps/meteor/server/sdk/types/IUiKitCoreApp.ts | 2 +- apps/meteor/server/sdk/types/IVoipService.ts | 10 +- apps/meteor/server/sdk/types/ServiceClass.ts | 4 +- .../server/services/analytics/service.ts | 2 +- .../services/authorization/canAccessRoom.ts | 6 +- .../authorization/canAccessRoomLivechat.ts | 4 +- .../authorization/canAccessRoomVoip.ts | 4 +- .../server/services/authorization/service.ts | 4 +- apps/meteor/server/services/banner/service.ts | 5 +- .../services/device-management/service.ts | 2 +- apps/meteor/server/services/image/service.ts | 5 +- apps/meteor/server/services/ldap/service.ts | 4 +- apps/meteor/server/services/meteor/service.ts | 4 +- .../services/nps/getAndCreateNpsSurvey.ts | 2 +- .../server/services/nps/notification.ts | 3 +- apps/meteor/server/services/nps/service.ts | 5 +- .../omnichannel-voip/internalTypes.ts | 4 +- .../services/omnichannel-voip/service.ts | 13 +-- apps/meteor/server/services/push/service.ts | 2 +- apps/meteor/server/services/room/service.ts | 2 +- .../server/services/sauMonitor/service.ts | 2 +- apps/meteor/server/services/team/service.ts | 18 ++- .../server/services/uikit-core-app/service.ts | 2 +- .../voip/connector/asterisk/Command.ts | 4 +- .../voip/connector/asterisk/CommandHandler.ts | 10 +- .../voip/connector/asterisk/IConnection.ts | 4 +- .../voip/connector/asterisk/ami/ACDQueue.ts | 2 +- .../connector/asterisk/ami/AMIConnection.ts | 6 +- .../connector/asterisk/ami/CallbackContext.ts | 4 +- .../connector/asterisk/ami/CommandFactory.ts | 2 +- .../asterisk/ami/ContinuousMonitor.ts | 18 +-- .../connector/asterisk/ami/PJSIPEndpoint.ts | 6 +- .../websocket/WebsocketConnection.ts | 6 +- .../meteor/server/services/voip/lib/Helper.ts | 3 +- apps/meteor/server/services/voip/service.ts | 15 +-- apps/meteor/server/startup/migrations/v252.ts | 3 +- apps/meteor/server/startup/migrations/v260.ts | 4 +- .../tests/e2e/fixtures/collections/users.ts | 2 +- apps/meteor/tests/e2e/messaging.spec.ts | 2 +- .../tests/e2e/page-objects/account-profile.ts | 2 +- apps/meteor/tests/e2e/page-objects/admin.ts | 2 +- apps/meteor/tests/e2e/page-objects/auth.ts | 2 +- .../page-objects/fragments/account-sidenav.ts | 2 +- .../fragments/admin-flextab-users.ts | 2 +- .../page-objects/fragments/admin-flextab.ts | 2 +- .../page-objects/fragments/admin-sidenav.ts | 2 +- .../page-objects/fragments/home-content.ts | 2 +- .../fragments/home-flextab-members.ts | 2 +- .../fragments/home-flextab-room.ts | 2 +- .../page-objects/fragments/home-flextab.ts | 2 +- .../page-objects/fragments/home-sidenav.ts | 2 +- .../fragments/omnichannel-sidenav.ts | 2 +- .../tests/e2e/page-objects/home-channel.ts | 2 +- .../tests/e2e/page-objects/home-discussion.ts | 2 +- .../e2e/page-objects/omnichannel-agents.ts | 2 +- .../page-objects/omnichannel-departaments.ts | 2 +- .../tests/e2e/utils/create-target-channel.ts | 2 +- apps/meteor/tests/e2e/utils/test.ts | 4 +- .../tests/end-to-end/api/import.spec.ts | 2 +- .../tests/end-to-end/api/livechat/00-rooms.ts | 4 +- .../end-to-end/api/livechat/01-agents.ts | 2 +- .../end-to-end/api/livechat/02-appearance.ts | 2 +- .../api/livechat/03-custom-fields.ts | 2 +- .../end-to-end/api/livechat/04-dashboards.ts | 2 +- .../end-to-end/api/livechat/05-inquiries.ts | 2 +- .../api/livechat/06-integrations.ts | 2 +- .../tests/end-to-end/api/livechat/07-queue.ts | 2 +- .../end-to-end/api/livechat/08-triggers.ts | 2 +- .../end-to-end/api/livechat/09-visitors.ts | 2 +- .../end-to-end/api/livechat/10-departments.ts | 2 +- .../tests/mocks/client/RouterContextMock.tsx | 10 +- .../queue/InMemoryQueue.spec.ts | 11 +- .../rocket-chat/converters/RoomSender.spec.ts | 2 +- .../app/meteor-accounts-saml/server.tests.ts | 11 +- .../helpers/filterAppsByCategories.test.ts | 2 +- ee/apps/ddp-streamer/package.json | 3 + ee/apps/ddp-streamer/src/Client.ts | 4 +- ee/apps/ddp-streamer/src/DDPStreamer.ts | 3 +- ee/apps/ddp-streamer/src/Publication.ts | 18 ++- ee/apps/ddp-streamer/src/Server.ts | 4 +- ee/apps/ddp-streamer/src/lib/Autoupdate.ts | 2 +- packages/agenda/src/Agenda.ts | 4 +- packages/cas-validate/src/validate.ts | 3 +- packages/core-typings/src/ICronJobs.ts | 2 +- packages/core-typings/src/IImportRecord.ts | 2 +- .../core-typings/src/IRocketChatAssets.ts | 10 +- .../core-typings/src/ldap/ILDAPCallback.ts | 2 +- packages/eslint-config/standard/index.js | 2 + packages/favicon/src/index.ts | 3 +- .../model-typings/src/models/IBaseModel.ts | 4 +- packages/models/src/proxify.ts | 2 +- .../src/helpers/PaginatedRequest.ts | 2 +- .../src/helpers/PaginatedResult.ts | 2 +- .../rest-typings/src/helpers/WithItemCount.ts | 2 +- packages/rest-typings/src/v1/assets.ts | 3 +- .../rest-typings/src/v1/channels/channels.ts | 26 +++-- packages/rest-typings/src/v1/chat.ts | 2 +- packages/rest-typings/src/v1/directory.ts | 2 +- .../rest-typings/src/v1/dm/DmKickProps.ts | 3 +- packages/rest-typings/src/v1/groups.ts | 20 ++-- .../DownloadPendingAvatarsParamsPOST.ts | 2 +- .../GetCurrentImportOperationParamsGET.ts | 2 +- .../v1/import/GetImportProgressParamsGET.ts | 2 +- .../GetLatestImportOperationsParamsGET.ts | 2 +- .../src/v1/import/StartImportParamsPOST.ts | 3 +- .../src/v1/integrations/integrations.ts | 2 +- packages/rest-typings/src/v1/me.ts | 2 +- packages/rest-typings/src/v1/omnichannel.ts | 2 +- .../src/v1/teams/TeamsAddMembersProps.ts | 3 +- .../v1/teams/TeamsConvertToChannelProps.ts | 3 +- .../src/v1/teams/TeamsDeleteProps.ts | 3 +- .../src/v1/teams/TeamsLeaveProps.ts | 3 +- .../src/v1/teams/TeamsRemoveMemberProps.ts | 3 +- .../src/v1/teams/TeamsRemoveRoomProps.ts | 3 +- .../src/v1/teams/TeamsUpdateMemberProps.ts | 3 +- .../src/v1/teams/TeamsUpdateProps.ts | 3 +- packages/rest-typings/src/v1/teams/index.ts | 2 +- .../UsersUpdateOwnBasicInfoParamsPOST.ts | 2 +- .../src/v1/users/UsersUpdateParamsPOST.ts | 2 +- .../videoConference/VideoConfCancelProps.ts | 3 +- .../v1/videoConference/VideoConfInfoProps.ts | 3 +- .../v1/videoConference/VideoConfJoinProps.ts | 3 +- .../v1/videoConference/VideoConfListProps.ts | 3 +- .../v1/videoConference/VideoConfStartProps.ts | 3 +- packages/rest-typings/src/v1/voip.ts | 3 +- packages/ui-contexts/src/ModalContext.ts | 3 +- packages/ui-contexts/src/RouterContext.ts | 5 +- .../src/ServerContext/ServerContext.ts | 8 +- packages/ui-contexts/src/TooltipContext.ts | 3 +- .../src/hooks/useAvailableDevices.ts | 3 +- .../src/hooks/useConnectionStatus.ts | 3 +- .../ui-contexts/src/hooks/useCurrentModal.ts | 3 +- .../ui-contexts/src/hooks/useCurrentRoute.ts | 3 +- .../ui-contexts/src/hooks/useCustomSound.ts | 3 +- packages/ui-contexts/src/hooks/useLanguage.ts | 3 +- .../ui-contexts/src/hooks/useLanguages.ts | 3 +- packages/ui-contexts/src/hooks/useLayout.ts | 3 +- .../hooks/useLayoutContextualBarPosition.ts | 3 +- .../ui-contexts/src/hooks/useLayoutSizes.ts | 3 +- .../ui-contexts/src/hooks/useLoadLanguage.ts | 3 +- packages/ui-contexts/src/hooks/useModal.ts | 3 +- .../src/hooks/useRolesDescription.ts | 3 +- packages/ui-contexts/src/hooks/useRoute.ts | 3 +- .../ui-contexts/src/hooks/useRoutePath.ts | 3 +- packages/ui-contexts/src/hooks/useRouteUrl.ts | 3 +- .../src/hooks/useSelectedDevices.ts | 3 +- .../src/hooks/useSetInputMediaDevice.ts | 3 +- .../src/hooks/useSetOutputMediaDevice.ts | 3 +- packages/ui-contexts/src/hooks/useSettings.ts | 3 +- packages/ui-contexts/src/hooks/useStream.ts | 8 +- .../src/hooks/useToastMessageDispatch.ts | 3 +- .../ui-contexts/src/hooks/useTooltipClose.ts | 3 +- .../ui-contexts/src/hooks/useTooltipOpen.ts | 3 +- .../ui-contexts/src/hooks/useTranslation.ts | 3 +- packages/ui-contexts/src/hooks/useUpload.ts | 3 +- packages/ui-contexts/src/hooks/useUserRoom.ts | 3 +- .../src/hooks/useUserSubscription.ts | 3 +- .../src/hooks/useUserSubscriptionByName.ts | 3 +- .../src/hooks/useUserSubscriptions.ts | 3 +- yarn.lock | 107 ++++++++++++++++++ 545 files changed, 1435 insertions(+), 1199 deletions(-) create mode 100644 apps/meteor/client/definitions/html.d.ts delete mode 100644 apps/meteor/definition/externals/rocket.chat/fuselage-ui-kit.d.ts delete mode 100644 apps/meteor/definition/externals/webdav.d.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 3a27ecd598c..215a5f16b0f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,6 +7,10 @@ { "pattern": "apps/*", "changeProcessCWD": true + }, + { + "pattern": "ee/apps/*", + "changeProcessCWD": true } ], "typescript.tsdk": "./node_modules/typescript/lib", diff --git a/apps/meteor/.scripts/run-ha.ts b/apps/meteor/.scripts/run-ha.ts index ee75e77a8b8..91d37225f4b 100644 --- a/apps/meteor/.scripts/run-ha.ts +++ b/apps/meteor/.scripts/run-ha.ts @@ -1,4 +1,5 @@ -import { spawn, SpawnOptions } from 'child_process'; +import type { SpawnOptions } from 'child_process'; +import { spawn } from 'child_process'; import * as path from 'path'; enum ModeParam { diff --git a/apps/meteor/app/2fa/server/code/EmailCheck.ts b/apps/meteor/app/2fa/server/code/EmailCheck.ts index 187519eff5c..1b890eb4219 100644 --- a/apps/meteor/app/2fa/server/code/EmailCheck.ts +++ b/apps/meteor/app/2fa/server/code/EmailCheck.ts @@ -7,7 +7,7 @@ import type { IUser } from '@rocket.chat/core-typings'; import { settings } from '../../../settings/server'; import * as Mailer from '../../../mailer'; import { Users } from '../../../models/server'; -import { ICodeCheck, IProcessInvalidCodeResult } from './ICodeCheck'; +import type { ICodeCheck, IProcessInvalidCodeResult } from './ICodeCheck'; export class EmailCheck implements ICodeCheck { public readonly name = 'email'; diff --git a/apps/meteor/app/2fa/server/code/PasswordCheckFallback.ts b/apps/meteor/app/2fa/server/code/PasswordCheckFallback.ts index 3b68fbc0a28..7094779e5e1 100644 --- a/apps/meteor/app/2fa/server/code/PasswordCheckFallback.ts +++ b/apps/meteor/app/2fa/server/code/PasswordCheckFallback.ts @@ -2,7 +2,7 @@ import { Accounts } from 'meteor/accounts-base'; import type { IUser } from '@rocket.chat/core-typings'; import { settings } from '../../../settings/server'; -import { ICodeCheck, IProcessInvalidCodeResult } from './ICodeCheck'; +import type { ICodeCheck, IProcessInvalidCodeResult } from './ICodeCheck'; export class PasswordCheckFallback implements ICodeCheck { public readonly name = 'password'; diff --git a/apps/meteor/app/2fa/server/code/TOTPCheck.ts b/apps/meteor/app/2fa/server/code/TOTPCheck.ts index 5f9c85676d4..08016449c41 100644 --- a/apps/meteor/app/2fa/server/code/TOTPCheck.ts +++ b/apps/meteor/app/2fa/server/code/TOTPCheck.ts @@ -2,7 +2,7 @@ import type { IUser } from '@rocket.chat/core-typings'; import { TOTP } from '../lib/totp'; import { settings } from '../../../settings/server'; -import { ICodeCheck, IProcessInvalidCodeResult } from './ICodeCheck'; +import type { ICodeCheck, IProcessInvalidCodeResult } from './ICodeCheck'; export class TOTPCheck implements ICodeCheck { public readonly name = 'totp'; diff --git a/apps/meteor/app/2fa/server/code/index.ts b/apps/meteor/app/2fa/server/code/index.ts index 844f6965ace..878f817fb40 100644 --- a/apps/meteor/app/2fa/server/code/index.ts +++ b/apps/meteor/app/2fa/server/code/index.ts @@ -8,7 +8,7 @@ import { settings } from '../../../settings/server'; import { TOTPCheck } from './TOTPCheck'; import { EmailCheck } from './EmailCheck'; import { PasswordCheckFallback } from './PasswordCheckFallback'; -import { ICodeCheck } from './ICodeCheck'; +import type { ICodeCheck } from './ICodeCheck'; import { Users } from '../../../models/server'; export interface ITwoFactorOptions { diff --git a/apps/meteor/app/2fa/server/twoFactorRequired.ts b/apps/meteor/app/2fa/server/twoFactorRequired.ts index 1cda35f5bcc..61a483da113 100644 --- a/apps/meteor/app/2fa/server/twoFactorRequired.ts +++ b/apps/meteor/app/2fa/server/twoFactorRequired.ts @@ -1,6 +1,7 @@ import { Meteor } from 'meteor/meteor'; -import { checkCodeForUser, ITwoFactorOptions } from './code/index'; +import type { ITwoFactorOptions } from './code/index'; +import { checkCodeForUser } from './code/index'; export function twoFactorRequired any>( fn: TFunction, diff --git a/apps/meteor/app/action-links/client/lib/actionLinks.ts b/apps/meteor/app/action-links/client/lib/actionLinks.ts index d4214482096..817589455fb 100644 --- a/apps/meteor/app/action-links/client/lib/actionLinks.ts +++ b/apps/meteor/app/action-links/client/lib/actionLinks.ts @@ -1,12 +1,18 @@ import { Meteor } from 'meteor/meteor'; -import { IMessage } from '@rocket.chat/core-typings'; +import type { IMessage } from '@rocket.chat/core-typings'; import { handleError } from '../../../../client/lib/utils/handleError'; // Action Links namespace creation. export const actionLinks = { - actions: new Map(), - register(name: string, fn: Function): void { + actions: new Map< + string, + (message: IMessage, params: string, instance?: Blaze.TemplateInstance | ((actionId: string, context: string) => void)) => void + >(), + register( + name: string, + fn: (message: IMessage, params: string, instance?: Blaze.TemplateInstance | ((actionId: string, context: string) => void)) => void, + ): void { actionLinks.actions.set(name, fn); }, // getMessage(name, messageId) { @@ -42,8 +48,8 @@ export const actionLinks = { // return message; // }, - run(method: string, message: IMessage, instance?: Blaze.TemplateInstance | Function): void { - const actionLink = message.actionLinks && message.actionLinks.find((action) => action.method_id === method); + run(method: string, message: IMessage, instance?: Blaze.TemplateInstance | ((actionId: string, context: string) => void)): void { + const actionLink = message.actionLinks?.find((action) => action.method_id === method); if (!actionLink) { throw new Meteor.Error('error-invalid-actionlink', 'Invalid action link'); diff --git a/apps/meteor/app/action-links/server/lib/actionLinks.ts b/apps/meteor/app/action-links/server/lib/actionLinks.ts index 4b441df64fc..58b8fa950b0 100644 --- a/apps/meteor/app/action-links/server/lib/actionLinks.ts +++ b/apps/meteor/app/action-links/server/lib/actionLinks.ts @@ -1,4 +1,4 @@ -import { IMessage } from '@rocket.chat/core-typings'; +import type { IMessage } from '@rocket.chat/core-typings'; import { Meteor } from 'meteor/meteor'; import { getMessageForUser } from '../../../../server/lib/messages/getMessageForUser'; diff --git a/apps/meteor/app/api/server/api.d.ts b/apps/meteor/app/api/server/api.d.ts index 0f6db1f2f43..b6ccf5f05b5 100644 --- a/apps/meteor/app/api/server/api.d.ts +++ b/apps/meteor/app/api/server/api.d.ts @@ -11,7 +11,7 @@ import type { IUser, IMethodConnection, IRoom } from '@rocket.chat/core-typings' import type { ValidateFunction } from 'ajv'; import type { Request, Response } from 'express'; -import { ITwoFactorOptions } from '../../2fa/server/code'; +import type { ITwoFactorOptions } from '../../2fa/server/code'; type SuccessResult = { statusCode: 200; @@ -28,8 +28,8 @@ type FailureResult = { @@ -80,7 +80,7 @@ type PartialThis = { type UserInfo = IUser & { email?: string; settings: { - profile: {}; + profile: object; preferences: unknown; }; avatarUrl: string; @@ -167,7 +167,7 @@ type Operation; } & { twoFactorRequired: boolean }); -type Operations = { +type Operations = { [M in MethodOf as Lowercase]: Operation, TPathPattern, TOptions>; }; @@ -252,6 +252,7 @@ export declare const API: { v1: APIClass<'/v1'>; default: APIClass; helperMethods: Map unknown>; + ApiClass: APIClass; }; export declare const defaultRateLimiterOptions: { diff --git a/apps/meteor/app/api/server/helpers/addUserToFileObj.ts b/apps/meteor/app/api/server/helpers/addUserToFileObj.ts index b09f1e70015..4c46192b532 100644 --- a/apps/meteor/app/api/server/helpers/addUserToFileObj.ts +++ b/apps/meteor/app/api/server/helpers/addUserToFileObj.ts @@ -1,4 +1,4 @@ -import { IUpload, IUser } from '@rocket.chat/core-typings'; +import type { IUpload, IUser } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; export async function addUserToFileObj(files: IUpload[]): Promise<(IUpload & { user?: Pick })[]> { diff --git a/apps/meteor/app/api/server/helpers/getUserFromParams.ts b/apps/meteor/app/api/server/helpers/getUserFromParams.ts index a6d57f8f558..8378fb67d22 100644 --- a/apps/meteor/app/api/server/helpers/getUserFromParams.ts +++ b/apps/meteor/app/api/server/helpers/getUserFromParams.ts @@ -9,11 +9,11 @@ API.helperMethods.set('getUserFromParams', function _getUserFromParams(this: any let user; const params = this.requestParams(); - if (params.userId && params.userId.trim()) { + if (params.userId?.trim()) { user = Users.findOneById(params.userId) || doesntExist; - } else if (params.username && params.username.trim()) { + } else if (params.username?.trim()) { user = Users.findOneByUsernameIgnoringCase(params.username) || doesntExist; - } else if (params.user && params.user.trim()) { + } else if (params.user?.trim()) { user = Users.findOneByUsernameIgnoringCase(params.user) || doesntExist; } else { throw new Meteor.Error('error-user-param-not-provided', 'The required "userId" or "username" param was not provided'); diff --git a/apps/meteor/app/api/server/helpers/getUserInfo.ts b/apps/meteor/app/api/server/helpers/getUserInfo.ts index 80b20152bc2..ed0ed362a3e 100644 --- a/apps/meteor/app/api/server/helpers/getUserInfo.ts +++ b/apps/meteor/app/api/server/helpers/getUserInfo.ts @@ -25,7 +25,7 @@ const getUserPreferences = (me: IUser): Record => { API.helperMethods.set('getUserInfo', function _getUserInfo(me: IUser) { const verifiedEmail = isVerifiedEmail(me); - const userPreferences = (me.settings && me.settings.preferences) || {}; + const userPreferences = me.settings?.preferences ?? {}; return { ...me, diff --git a/apps/meteor/app/api/server/helpers/isWidget.ts b/apps/meteor/app/api/server/helpers/isWidget.ts index 32d55496dbd..9a080cf5d56 100644 --- a/apps/meteor/app/api/server/helpers/isWidget.ts +++ b/apps/meteor/app/api/server/helpers/isWidget.ts @@ -3,7 +3,7 @@ import { parse } from 'cookie'; import { API } from '../api'; API.helperMethods.set('isWidget', function _isWidget() { - // @ts-expect-error + // @ts-expect-error 'this' implicitly has type 'any' because it does not have a type annotation. const { headers } = this.request; const { rc_room_type: roomType, rc_is_widget: isWidget } = parse(headers.cookie || ''); diff --git a/apps/meteor/app/api/server/lib/emailInbox.ts b/apps/meteor/app/api/server/lib/emailInbox.ts index 006dfb1b0d7..1e6e1db3619 100644 --- a/apps/meteor/app/api/server/lib/emailInbox.ts +++ b/apps/meteor/app/api/server/lib/emailInbox.ts @@ -1,5 +1,5 @@ -import { IEmailInbox } from '@rocket.chat/core-typings'; -import { InsertOneResult, UpdateResult, WithId } from 'mongodb'; +import type { IEmailInbox } from '@rocket.chat/core-typings'; +import type { Filter, InsertOneResult, Sort, UpdateResult, WithId } from 'mongodb'; import { EmailInbox } from '@rocket.chat/models'; import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; @@ -11,11 +11,11 @@ export const findEmailInboxes = async ({ pagination: { offset, count, sort }, }: { userId: string; - query?: {}; + query?: Filter; pagination: { offset: number; count: number; - sort?: {}; + sort?: Sort; }; }): Promise<{ emailInboxes: IEmailInbox[]; diff --git a/apps/meteor/app/api/server/lib/emoji-custom.ts b/apps/meteor/app/api/server/lib/emoji-custom.ts index b9450338503..c94139c82db 100644 --- a/apps/meteor/app/api/server/lib/emoji-custom.ts +++ b/apps/meteor/app/api/server/lib/emoji-custom.ts @@ -1,5 +1,5 @@ -import { IEmojiCustom } from '@rocket.chat/core-typings'; -import { Filter, FindOptions } from 'mongodb'; +import type { IEmojiCustom } from '@rocket.chat/core-typings'; +import type { Filter, FindOptions } from 'mongodb'; import { EmojiCustom } from '@rocket.chat/models'; export async function findEmojisCustom({ diff --git a/apps/meteor/app/api/server/lib/getUploadFormData.ts b/apps/meteor/app/api/server/lib/getUploadFormData.ts index f20075823bb..15a433a2141 100644 --- a/apps/meteor/app/api/server/lib/getUploadFormData.ts +++ b/apps/meteor/app/api/server/lib/getUploadFormData.ts @@ -1,9 +1,9 @@ -import { Readable } from 'stream'; +import type { Readable } from 'stream'; import { Meteor } from 'meteor/meteor'; import type { Request } from 'express'; import busboy from 'busboy'; -import { ValidateFunction } from 'ajv'; +import type { ValidateFunction } from 'ajv'; type UploadResult = { file: Readable; diff --git a/apps/meteor/app/api/server/lib/rooms.ts b/apps/meteor/app/api/server/lib/rooms.ts index fa69e6af4be..32908c18544 100644 --- a/apps/meteor/app/api/server/lib/rooms.ts +++ b/apps/meteor/app/api/server/lib/rooms.ts @@ -1,4 +1,4 @@ -import { IRoom, ISubscription } from '@rocket.chat/core-typings'; +import type { IRoom, ISubscription } from '@rocket.chat/core-typings'; import { Rooms } from '@rocket.chat/models'; import { hasPermissionAsync, hasAtLeastOnePermissionAsync } from '../../../authorization/server/functions/hasPermission'; diff --git a/apps/meteor/app/api/server/lib/users.ts b/apps/meteor/app/api/server/lib/users.ts index d683df20f19..38edb4fa5cd 100644 --- a/apps/meteor/app/api/server/lib/users.ts +++ b/apps/meteor/app/api/server/lib/users.ts @@ -1,6 +1,6 @@ import { escapeRegExp } from '@rocket.chat/string-helpers'; -import { IUser } from '@rocket.chat/core-typings'; -import { Filter } from 'mongodb'; +import type { IUser } from '@rocket.chat/core-typings'; +import type { Filter } from 'mongodb'; import { Users } from '@rocket.chat/models'; import type { Mongo } from 'meteor/mongo'; @@ -53,9 +53,8 @@ export async function findUsersToAutocomplete({ /** * Returns a new query object with the inclusive fields only - * @param {Object} query search query for matching rows */ -export function getInclusiveFields(query: { [k: string]: 1 }): {} { +export function getInclusiveFields(query: Record): Record { const newQuery = Object.create(null); for (const [key, value] of Object.entries(query)) { @@ -69,9 +68,9 @@ export function getInclusiveFields(query: { [k: string]: 1 }): {} { /** * get the default fields if **fields** are empty (`{}`) or `undefined`/`null` - * @param {Object|null|undefined} fields the fields from parsed jsonQuery + * @param fields the fields from parsed jsonQuery */ -export function getNonEmptyFields(fields: { [k: string]: 1 | 0 }): { [k: string]: 1 } { +export function getNonEmptyFields(fields: Record): Record { const defaultFields = { name: 1, username: 1, @@ -93,7 +92,7 @@ export function getNonEmptyFields(fields: { [k: string]: 1 | 0 }): { [k: string] /** * get the default query if **query** is empty (`{}`) or `undefined`/`null` - * @param {Object|null|undefined} query the query from parsed jsonQuery + * @param query the query from parsed jsonQuery */ export function getNonEmptyQuery(query: Mongo.Query | undefined | null, canSeeAllUserInfo?: boolean): Mongo.Query { const defaultQuery: Mongo.Query = { diff --git a/apps/meteor/app/api/server/middlewares/authentication.ts b/apps/meteor/app/api/server/middlewares/authentication.ts index 268000ef4cb..b378f21de84 100644 --- a/apps/meteor/app/api/server/middlewares/authentication.ts +++ b/apps/meteor/app/api/server/middlewares/authentication.ts @@ -1,4 +1,4 @@ -import { Request, Response, NextFunction } from 'express'; +import type { Request, Response, NextFunction } from 'express'; import { Users } from '../../../models/server'; import { oAuth2ServerAuth } from '../../../oauth2-server-config/server/oauth/oauth2-server'; diff --git a/apps/meteor/app/api/server/v1/channels.ts b/apps/meteor/app/api/server/v1/channels.ts index fab7c8f5e36..9816a262d10 100644 --- a/apps/meteor/app/api/server/v1/channels.ts +++ b/apps/meteor/app/api/server/v1/channels.ts @@ -485,7 +485,7 @@ API.v1.addRoute( fields: { 'u._id': 1 }, }); - const members = subscriptions.fetch().map((s: ISubscription) => s.u && s.u._id); + const members = subscriptions.fetch().map((s: ISubscription) => s.u?._id); const teamData = { team: { diff --git a/apps/meteor/app/api/server/v1/e2e.ts b/apps/meteor/app/api/server/v1/e2e.ts index 34e963cd9f2..a86bb550486 100644 --- a/apps/meteor/app/api/server/v1/e2e.ts +++ b/apps/meteor/app/api/server/v1/e2e.ts @@ -5,7 +5,7 @@ import { ise2eSetUserPublicAndPrivateKeysParamsPOST, ise2eUpdateGroupKeyParamsPOST, } from '@rocket.chat/rest-typings'; -import { IUser } from '@rocket.chat/core-typings'; +import type { IUser } from '@rocket.chat/core-typings'; import { API } from '../api'; diff --git a/apps/meteor/app/api/server/v1/integrations.ts b/apps/meteor/app/api/server/v1/integrations.ts index 4f3127e58fb..0aae30959bc 100644 --- a/apps/meteor/app/api/server/v1/integrations.ts +++ b/apps/meteor/app/api/server/v1/integrations.ts @@ -1,6 +1,6 @@ import { Meteor } from 'meteor/meteor'; import { Match, check } from 'meteor/check'; -import { IIntegration } from '@rocket.chat/core-typings'; +import type { IIntegration } from '@rocket.chat/core-typings'; import { isIntegrationsCreateProps, isIntegrationsHistoryProps, diff --git a/apps/meteor/app/api/server/v1/invites.ts b/apps/meteor/app/api/server/v1/invites.ts index 8ac3a2b8edd..bf4f64be32b 100644 --- a/apps/meteor/app/api/server/v1/invites.ts +++ b/apps/meteor/app/api/server/v1/invites.ts @@ -1,5 +1,5 @@ /* eslint-disable react-hooks/rules-of-hooks */ -import { IInvite } from '@rocket.chat/core-typings'; +import type { IInvite } from '@rocket.chat/core-typings'; import { isFindOrCreateInviteParams, isUseInviteTokenProps, isValidateInviteTokenProps } from '@rocket.chat/rest-typings'; import { API } from '../api'; diff --git a/apps/meteor/app/api/server/v1/misc.ts b/apps/meteor/app/api/server/v1/misc.ts index bc27049c92c..633b0b1a342 100644 --- a/apps/meteor/app/api/server/v1/misc.ts +++ b/apps/meteor/app/api/server/v1/misc.ts @@ -14,7 +14,7 @@ import { isMethodCallAnonProps, isMeteorCall, } from '@rocket.chat/rest-typings'; -import { IUser } from '@rocket.chat/core-typings'; +import type { IUser } from '@rocket.chat/core-typings'; import { hasPermission } from '../../../authorization/server'; import { Users } from '../../../models/server'; diff --git a/apps/meteor/app/api/server/v1/settings.ts b/apps/meteor/app/api/server/v1/settings.ts index 1a1880aa545..7e88bf321df 100644 --- a/apps/meteor/app/api/server/v1/settings.ts +++ b/apps/meteor/app/api/server/v1/settings.ts @@ -1,7 +1,8 @@ import { Meteor } from 'meteor/meteor'; import { ServiceConfiguration } from 'meteor/service-configuration'; import _ from 'underscore'; -import { ISetting, ISettingColor, isSettingAction, isSettingColor } from '@rocket.chat/core-typings'; +import type { ISetting, ISettingColor } from '@rocket.chat/core-typings'; +import { isSettingAction, isSettingColor } from '@rocket.chat/core-typings'; import { isOauthCustomConfiguration, isSettingsUpdatePropDefault, @@ -12,7 +13,8 @@ import { Settings } from '@rocket.chat/models'; import type { FindOptions } from 'mongodb'; import { hasPermission } from '../../../authorization/server'; -import { API, ResultFor } from '../api'; +import type { ResultFor } from '../api'; +import { API } from '../api'; import { SettingsEvents, settings } from '../../../settings/server'; import { setValue } from '../../../settings/server/raw'; diff --git a/apps/meteor/app/api/server/v1/subscriptions.ts b/apps/meteor/app/api/server/v1/subscriptions.ts index 08b186301f9..b86c97f95dd 100644 --- a/apps/meteor/app/api/server/v1/subscriptions.ts +++ b/apps/meteor/app/api/server/v1/subscriptions.ts @@ -49,14 +49,14 @@ API.v1.addRoute( }, { async get() { - const { roomId }: { [roomId: string]: {} } | Record = this.queryParams; + const { roomId } = this.queryParams; if (!roomId) { return API.v1.failure("The 'roomId' param is required"); } return API.v1.success({ - subscription: await Subscriptions.findOneByRoomIdAndUserId(roomId as string, this.userId), + subscription: await Subscriptions.findOneByRoomIdAndUserId(roomId, this.userId), }); }, }, diff --git a/apps/meteor/app/api/server/v1/teams.ts b/apps/meteor/app/api/server/v1/teams.ts index 4e905f51797..0403418db6a 100644 --- a/apps/meteor/app/api/server/v1/teams.ts +++ b/apps/meteor/app/api/server/v1/teams.ts @@ -11,7 +11,8 @@ import { isTeamsLeaveProps, isTeamsUpdateProps, } from '@rocket.chat/rest-typings'; -import { ITeam, TEAM_TYPE } from '@rocket.chat/core-typings'; +import type { ITeam } from '@rocket.chat/core-typings'; +import { TEAM_TYPE } from '@rocket.chat/core-typings'; import { removeUserFromRoom } from '../../../lib/server/functions/removeUserFromRoom'; import { Users } from '../../../models/server'; diff --git a/apps/meteor/app/api/server/v1/users.ts b/apps/meteor/app/api/server/v1/users.ts index 95769585399..2d902ac1ce1 100644 --- a/apps/meteor/app/api/server/v1/users.ts +++ b/apps/meteor/app/api/server/v1/users.ts @@ -16,7 +16,7 @@ import { Meteor } from 'meteor/meteor'; import { Accounts } from 'meteor/accounts-base'; import { Match, check } from 'meteor/check'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; -import { IExportOperation, IPersonalAccessToken, IUser } from '@rocket.chat/core-typings'; +import type { IExportOperation, IPersonalAccessToken, IUser } from '@rocket.chat/core-typings'; import { Users as UsersRaw } from '@rocket.chat/models'; import { Users, Subscriptions } from '../../../models/server'; diff --git a/apps/meteor/app/api/server/v1/voip/omnichannel.ts b/apps/meteor/app/api/server/v1/voip/omnichannel.ts index 28ef3608be6..9e7fe2e0066 100644 --- a/apps/meteor/app/api/server/v1/voip/omnichannel.ts +++ b/apps/meteor/app/api/server/v1/voip/omnichannel.ts @@ -1,5 +1,5 @@ import { Match, check } from 'meteor/check'; -import { IUser, IVoipExtensionWithAgentInfo } from '@rocket.chat/core-typings'; +import type { IUser, IVoipExtensionWithAgentInfo } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; import { API } from '../../api'; diff --git a/apps/meteor/app/apps/client/@types/IOrchestrator.ts b/apps/meteor/app/apps/client/@types/IOrchestrator.ts index 848dcdfabf8..7ac37be4df8 100644 --- a/apps/meteor/app/apps/client/@types/IOrchestrator.ts +++ b/apps/meteor/app/apps/client/@types/IOrchestrator.ts @@ -1,5 +1,5 @@ -import { ISetting } from '@rocket.chat/apps-engine/definition/settings/ISetting'; -import { App } from '@rocket.chat/core-typings'; +import type { ISetting } from '@rocket.chat/apps-engine/definition/settings/ISetting'; +import type { App } from '@rocket.chat/core-typings'; export interface IDetailedDescription { raw: string; diff --git a/apps/meteor/app/apps/client/orchestrator.ts b/apps/meteor/app/apps/client/orchestrator.ts index 13d1a0e06b0..23852dac9e7 100644 --- a/apps/meteor/app/apps/client/orchestrator.ts +++ b/apps/meteor/app/apps/client/orchestrator.ts @@ -1,20 +1,20 @@ /* eslint-disable @typescript-eslint/no-var-requires */ import type { ISetting } from '@rocket.chat/apps-engine/definition/settings'; import { AppClientManager } from '@rocket.chat/apps-engine/client/AppClientManager'; -import { IApiEndpointMetadata } from '@rocket.chat/apps-engine/definition/api'; +import type { IApiEndpointMetadata } from '@rocket.chat/apps-engine/definition/api'; import { AppStatus } from '@rocket.chat/apps-engine/definition/AppStatus'; -import { IPermission } from '@rocket.chat/apps-engine/definition/permissions/IPermission'; -import { IAppStorageItem } from '@rocket.chat/apps-engine/server/storage/IAppStorageItem'; +import type { IPermission } from '@rocket.chat/apps-engine/definition/permissions/IPermission'; +import type { IAppStorageItem } from '@rocket.chat/apps-engine/server/storage/IAppStorageItem'; import { Meteor } from 'meteor/meteor'; import { Tracker } from 'meteor/tracker'; -import { AppScreenshot, Serialized } from '@rocket.chat/core-typings'; +import type { AppScreenshot, Serialized } from '@rocket.chat/core-typings'; -import { App } from '../../../client/views/admin/apps/types'; +import type { App } from '../../../client/views/admin/apps/types'; import { dispatchToastMessage } from '../../../client/lib/toast'; import { settings } from '../../settings/client'; import { CachedCollectionManager } from '../../ui-cached-collection'; import { createDeferredValue } from '../lib/misc/DeferredValue'; -import { +import type { // IAppFromMarketplace, IAppLanguage, IAppExternalURL, diff --git a/apps/meteor/app/apps/lib/misc/formatAppInstanceForRest.ts b/apps/meteor/app/apps/lib/misc/formatAppInstanceForRest.ts index b642d7ff48c..bb17a78b24b 100644 --- a/apps/meteor/app/apps/lib/misc/formatAppInstanceForRest.ts +++ b/apps/meteor/app/apps/lib/misc/formatAppInstanceForRest.ts @@ -1,8 +1,8 @@ -import { AppStatus } from '@rocket.chat/apps-engine/definition/AppStatus'; -import { IAppInfo } from '@rocket.chat/apps-engine/definition/metadata'; -import { AppLicenseValidationResult } from '@rocket.chat/apps-engine/server/marketplace/license'; -import { ProxiedApp } from '@rocket.chat/apps-engine/server/ProxiedApp'; -import { IAppStorageItem } from '@rocket.chat/apps-engine/server/storage'; +import type { AppStatus } from '@rocket.chat/apps-engine/definition/AppStatus'; +import type { IAppInfo } from '@rocket.chat/apps-engine/definition/metadata'; +import type { AppLicenseValidationResult } from '@rocket.chat/apps-engine/server/marketplace/license'; +import type { ProxiedApp } from '@rocket.chat/apps-engine/server/ProxiedApp'; +import type { IAppStorageItem } from '@rocket.chat/apps-engine/server/storage'; export interface IAppInfoRest extends IAppInfo { status: AppStatus; diff --git a/apps/meteor/app/apps/server/bridges/activation.ts b/apps/meteor/app/apps/server/bridges/activation.ts index a610200b896..511d3136dce 100644 --- a/apps/meteor/app/apps/server/bridges/activation.ts +++ b/apps/meteor/app/apps/server/bridges/activation.ts @@ -1,9 +1,9 @@ import { AppActivationBridge as ActivationBridge } from '@rocket.chat/apps-engine/server/bridges/AppActivationBridge'; -import { ProxiedApp } from '@rocket.chat/apps-engine/server/ProxiedApp'; -import { AppStatus } from '@rocket.chat/apps-engine/definition/AppStatus'; +import type { ProxiedApp } from '@rocket.chat/apps-engine/server/ProxiedApp'; +import type { AppStatus } from '@rocket.chat/apps-engine/definition/AppStatus'; import { Users } from '@rocket.chat/models'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; export class AppActivationBridge extends ActivationBridge { // eslint-disable-next-line no-empty-function diff --git a/apps/meteor/app/apps/server/bridges/api.ts b/apps/meteor/app/apps/server/bridges/api.ts index fcca596a47b..d60a120dcfb 100644 --- a/apps/meteor/app/apps/server/bridges/api.ts +++ b/apps/meteor/app/apps/server/bridges/api.ts @@ -1,12 +1,13 @@ import { Meteor } from 'meteor/meteor'; -import express, { Response, Request, IRouter, RequestHandler } from 'express'; +import type { Response, Request, IRouter, RequestHandler } from 'express'; +import express from 'express'; import { WebApp } from 'meteor/webapp'; import { ApiBridge } from '@rocket.chat/apps-engine/server/bridges/ApiBridge'; -import { IApiRequest, IApiEndpoint, IApi } from '@rocket.chat/apps-engine/definition/api'; -import { AppApi } from '@rocket.chat/apps-engine/server/managers/AppApi'; -import { RequestMethod } from '@rocket.chat/apps-engine/definition/accessors'; +import type { IApiRequest, IApiEndpoint, IApi } from '@rocket.chat/apps-engine/definition/api'; +import type { AppApi } from '@rocket.chat/apps-engine/server/managers/AppApi'; +import type { RequestMethod } from '@rocket.chat/apps-engine/definition/accessors'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; import { authenticationMiddleware } from '../../../api/server/middlewares/authentication'; const apiServer = express(); diff --git a/apps/meteor/app/apps/server/bridges/cloud.ts b/apps/meteor/app/apps/server/bridges/cloud.ts index 8b78b678b3a..6f3569af057 100644 --- a/apps/meteor/app/apps/server/bridges/cloud.ts +++ b/apps/meteor/app/apps/server/bridges/cloud.ts @@ -1,9 +1,9 @@ import { Meteor } from 'meteor/meteor'; import { CloudWorkspaceBridge } from '@rocket.chat/apps-engine/server/bridges/CloudWorkspaceBridge'; -import { IWorkspaceToken } from '@rocket.chat/apps-engine/definition/cloud/IWorkspaceToken'; +import type { IWorkspaceToken } from '@rocket.chat/apps-engine/definition/cloud/IWorkspaceToken'; import { getWorkspaceAccessTokenWithScope } from '../../../cloud/server'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; const boundGetWorkspaceAccessToken = Meteor.bindEnvironment(getWorkspaceAccessTokenWithScope); diff --git a/apps/meteor/app/apps/server/bridges/commands.ts b/apps/meteor/app/apps/server/bridges/commands.ts index 8c9a429af17..42735ec762a 100644 --- a/apps/meteor/app/apps/server/bridges/commands.ts +++ b/apps/meteor/app/apps/server/bridges/commands.ts @@ -1,11 +1,12 @@ import { Meteor } from 'meteor/meteor'; -import { SlashCommandContext, ISlashCommand, ISlashCommandPreviewItem } from '@rocket.chat/apps-engine/definition/slashcommands'; +import type { ISlashCommand, ISlashCommandPreviewItem } from '@rocket.chat/apps-engine/definition/slashcommands'; +import { SlashCommandContext } from '@rocket.chat/apps-engine/definition/slashcommands'; import { CommandBridge } from '@rocket.chat/apps-engine/server/bridges/CommandBridge'; import type { IMessage, RequiredField, SlashCommand } from '@rocket.chat/core-typings'; import { slashCommands } from '../../../utils/server'; import { Utilities } from '../../lib/misc/Utilities'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; import { parseParameters } from '../../../../lib/utils/parseParameters'; export class AppCommandsBridge extends CommandBridge { diff --git a/apps/meteor/app/apps/server/bridges/details.ts b/apps/meteor/app/apps/server/bridges/details.ts index a6c4c1b05e3..1cea999fd3c 100644 --- a/apps/meteor/app/apps/server/bridges/details.ts +++ b/apps/meteor/app/apps/server/bridges/details.ts @@ -1,7 +1,7 @@ -import { ISetting } from '@rocket.chat/apps-engine/definition/settings'; +import type { ISetting } from '@rocket.chat/apps-engine/definition/settings'; import { AppDetailChangesBridge as DetailChangesBridge } from '@rocket.chat/apps-engine/server/bridges/AppDetailChangesBridge'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; export class AppDetailChangesBridge extends DetailChangesBridge { // eslint-disable-next-line no-empty-function diff --git a/apps/meteor/app/apps/server/bridges/environmental.ts b/apps/meteor/app/apps/server/bridges/environmental.ts index fae0040b2ee..2f7a46ae793 100644 --- a/apps/meteor/app/apps/server/bridges/environmental.ts +++ b/apps/meteor/app/apps/server/bridges/environmental.ts @@ -1,6 +1,6 @@ import { EnvironmentalVariableBridge } from '@rocket.chat/apps-engine/server/bridges/EnvironmentalVariableBridge'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; export class AppEnvironmentalVariableBridge extends EnvironmentalVariableBridge { allowed: Array; diff --git a/apps/meteor/app/apps/server/bridges/http.ts b/apps/meteor/app/apps/server/bridges/http.ts index cd0cae9122f..c67a1b48470 100644 --- a/apps/meteor/app/apps/server/bridges/http.ts +++ b/apps/meteor/app/apps/server/bridges/http.ts @@ -1,8 +1,8 @@ import { HttpBridge } from '@rocket.chat/apps-engine/server/bridges/HttpBridge'; -import { IHttpResponse } from '@rocket.chat/apps-engine/definition/accessors'; -import { IHttpBridgeRequestInfo } from '@rocket.chat/apps-engine/server/bridges'; +import type { IHttpResponse } from '@rocket.chat/apps-engine/definition/accessors'; +import type { IHttpBridgeRequestInfo } from '@rocket.chat/apps-engine/server/bridges'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; import { fetch } from '../../../../server/lib/http/fetch'; const isGetOrHead = (method: string): boolean => ['GET', 'HEAD'].includes(method.toUpperCase()); diff --git a/apps/meteor/app/apps/server/bridges/internal.ts b/apps/meteor/app/apps/server/bridges/internal.ts index 7b21e61139e..8355ec817d6 100644 --- a/apps/meteor/app/apps/server/bridges/internal.ts +++ b/apps/meteor/app/apps/server/bridges/internal.ts @@ -1,9 +1,9 @@ import { InternalBridge } from '@rocket.chat/apps-engine/server/bridges/InternalBridge'; -import { ISetting } from '@rocket.chat/apps-engine/definition/settings'; +import type { ISetting } from '@rocket.chat/apps-engine/definition/settings'; import type { ISubscription } from '@rocket.chat/core-typings'; import { Settings } from '@rocket.chat/models'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; import { Subscriptions } from '../../../models/server'; export class AppInternalBridge extends InternalBridge { diff --git a/apps/meteor/app/apps/server/bridges/livechat.ts b/apps/meteor/app/apps/server/bridges/livechat.ts index 28f28a9ae4c..73a391c7126 100644 --- a/apps/meteor/app/apps/server/bridges/livechat.ts +++ b/apps/meteor/app/apps/server/bridges/livechat.ts @@ -1,22 +1,22 @@ import { Random } from 'meteor/random'; import { LivechatBridge } from '@rocket.chat/apps-engine/server/bridges/LivechatBridge'; -import { +import type { ILivechatMessage, IVisitor, ILivechatRoom, ILivechatTransferData, IDepartment, } from '@rocket.chat/apps-engine/definition/livechat'; -import { IUser } from '@rocket.chat/apps-engine/definition/users'; -import { IMessage } from '@rocket.chat/apps-engine/definition/messages'; -import { IExtraRoomParams } from '@rocket.chat/apps-engine/definition/accessors/ILivechatCreator'; +import type { IUser } from '@rocket.chat/apps-engine/definition/users'; +import type { IMessage } from '@rocket.chat/apps-engine/definition/messages'; +import type { IExtraRoomParams } from '@rocket.chat/apps-engine/definition/accessors/ILivechatCreator'; import { OmnichannelSourceType } from '@rocket.chat/core-typings'; import { LivechatVisitors } from '@rocket.chat/models'; import { getRoom } from '../../../livechat/server/api/lib/livechat'; import { Livechat } from '../../../livechat/server/lib/Livechat'; import { Users, LivechatDepartment, LivechatRooms } from '../../../models/server'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; export class AppLivechatBridge extends LivechatBridge { // eslint-disable-next-line no-empty-function @@ -157,11 +157,11 @@ export class AppLivechatBridge extends LivechatBridge { id: visitor.id, }; - if (visitor.visitorEmails && visitor.visitorEmails.length) { + if (visitor.visitorEmails?.length) { registerData.email = visitor.visitorEmails[0].address; } - if (visitor.phone && visitor.phone.length) { + if (visitor.phone?.length) { (registerData as any).phone = { number: visitor.phone[0].phoneNumber }; } diff --git a/apps/meteor/app/apps/server/bridges/messages.ts b/apps/meteor/app/apps/server/bridges/messages.ts index 93eaa0c616b..935a10efbc1 100644 --- a/apps/meteor/app/apps/server/bridges/messages.ts +++ b/apps/meteor/app/apps/server/bridges/messages.ts @@ -1,7 +1,8 @@ -import { ITypingDescriptor, MessageBridge } from '@rocket.chat/apps-engine/server/bridges/MessageBridge'; -import { IMessage } from '@rocket.chat/apps-engine/definition/messages'; -import { IUser } from '@rocket.chat/apps-engine/definition/users'; -import { IRoom } from '@rocket.chat/apps-engine/definition/rooms'; +import type { ITypingDescriptor } from '@rocket.chat/apps-engine/server/bridges/MessageBridge'; +import { MessageBridge } from '@rocket.chat/apps-engine/server/bridges/MessageBridge'; +import type { IMessage } from '@rocket.chat/apps-engine/definition/messages'; +import type { IUser } from '@rocket.chat/apps-engine/definition/users'; +import type { IRoom } from '@rocket.chat/apps-engine/definition/rooms'; import type { ISubscription } from '@rocket.chat/core-typings'; import { Messages, Users, Subscriptions } from '../../../models/server'; @@ -9,7 +10,7 @@ import { updateMessage } from '../../../lib/server/functions/updateMessage'; import { executeSendMessage } from '../../../lib/server/methods/sendMessage'; import { api } from '../../../../server/sdk/api'; import notifications from '../../../notifications/server/lib/Notifications'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; export class AppMessageBridge extends MessageBridge { // eslint-disable-next-line no-empty-function diff --git a/apps/meteor/app/apps/server/bridges/persistence.ts b/apps/meteor/app/apps/server/bridges/persistence.ts index ff78d72d019..b14aef68eb3 100644 --- a/apps/meteor/app/apps/server/bridges/persistence.ts +++ b/apps/meteor/app/apps/server/bridges/persistence.ts @@ -1,7 +1,7 @@ import { PersistenceBridge } from '@rocket.chat/apps-engine/server/bridges/PersistenceBridge'; -import { RocketChatAssociationRecord } from '@rocket.chat/apps-engine/definition/metadata'; +import type { RocketChatAssociationRecord } from '@rocket.chat/apps-engine/definition/metadata'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; export class AppPersistenceBridge extends PersistenceBridge { // eslint-disable-next-line no-empty-function diff --git a/apps/meteor/app/apps/server/bridges/rooms.ts b/apps/meteor/app/apps/server/bridges/rooms.ts index ece43ca5d91..401b0459970 100644 --- a/apps/meteor/app/apps/server/bridges/rooms.ts +++ b/apps/meteor/app/apps/server/bridges/rooms.ts @@ -1,11 +1,12 @@ -import { RoomType, IRoom } from '@rocket.chat/apps-engine/definition/rooms'; +import type { IRoom } from '@rocket.chat/apps-engine/definition/rooms'; +import { RoomType } from '@rocket.chat/apps-engine/definition/rooms'; import { RoomBridge } from '@rocket.chat/apps-engine/server/bridges/RoomBridge'; -import { IUser } from '@rocket.chat/apps-engine/definition/users'; -import { IMessage } from '@rocket.chat/apps-engine/definition/messages'; +import type { IUser } from '@rocket.chat/apps-engine/definition/users'; +import type { IMessage } from '@rocket.chat/apps-engine/definition/messages'; import { Meteor } from 'meteor/meteor'; import type { ISubscription } from '@rocket.chat/core-typings'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; import { Rooms, Subscriptions, Users } from '../../../models/server'; import { addUserToRoom } from '../../../lib/server/functions/addUserToRoom'; @@ -93,12 +94,7 @@ export class AppRoomBridge extends RoomBridge { protected async getMembers(roomId: string, appId: string): Promise> { this.orch.debugLog(`The App ${appId} is getting the room's members by room id: "${roomId}"`); const subscriptions = await Subscriptions.findByRoomId(roomId, {}); - return subscriptions.map((sub: ISubscription) => - this.orch - .getConverters() - ?.get('users') - .convertById(sub.u && sub.u._id), - ); + return subscriptions.map((sub: ISubscription) => this.orch.getConverters()?.get('users').convertById(sub.u?._id)); } protected async getDirectByUsernames(usernames: Array, appId: string): Promise { diff --git a/apps/meteor/app/apps/server/bridges/scheduler.ts b/apps/meteor/app/apps/server/bridges/scheduler.ts index 6daede78134..dfc3ddcdbc6 100644 --- a/apps/meteor/app/apps/server/bridges/scheduler.ts +++ b/apps/meteor/app/apps/server/bridges/scheduler.ts @@ -1,13 +1,15 @@ -import { Agenda, Job } from '@rocket.chat/agenda'; +import type { Job } from '@rocket.chat/agenda'; +import { Agenda } from '@rocket.chat/agenda'; import { ObjectID } from 'bson'; import { MongoInternals } from 'meteor/mongo'; -import { StartupType, IProcessor, IOnetimeSchedule, IRecurringSchedule } from '@rocket.chat/apps-engine/definition/scheduler'; +import type { IProcessor, IOnetimeSchedule, IRecurringSchedule, IJobContext } from '@rocket.chat/apps-engine/definition/scheduler'; +import { StartupType } from '@rocket.chat/apps-engine/definition/scheduler'; import { SchedulerBridge } from '@rocket.chat/apps-engine/server/bridges/SchedulerBridge'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; -function _callProcessor(processor: Function): (job: Job) => void { - return (job): void => { +function _callProcessor(processor: IProcessor['processor']): (job: Job) => Promise { + return (job) => { const data = job?.attrs?.data || {}; // This field is for internal use, no need to leak to app processor @@ -15,7 +17,7 @@ function _callProcessor(processor: Function): (job: Job) => void { data.jobId = job.attrs._id.toString(); - return processor(data); + return (processor as (jobContext: IJobContext) => Promise)(data); }; } @@ -40,33 +42,13 @@ export class AppSchedulerBridge extends SchedulerBridge { this.isConnected = false; } - /** - * Entity that will be run in a job. - * @typedef {Object} Processor - * @property {string} id The processor's identifier - * @property {function} processor The function that will be run on a given schedule - * @property {IOnetimeStartup|IRecurrentStartup} [startupSetting] If provided, the processor will be configured with the setting as soon as it gets registered - - * Processor setting for running once after being registered - * @typedef {Object} IOnetimeStartup - * @property {string} type=onetime - * @property {string} when When the processor will be executed - * @property {Object} [data] An optional object that is passed to the processor - * - * Processor setting for running recurringly after being registered - * @typedef {Object} IRecurrentStartup - * @property {string} type=recurring - * @property {string} interval When the processor will be re executed - * @property {Object} [data] An optional object that is passed to the processor - */ - /** * Register processors that can be scheduled to run * - * @param {Array.} processors An array of processors - * @param {string} appId + * @param processors An array of processors + * @param appId * - * @returns {string[]} List of task ids run at startup, or void no startup run is set + * @returns List of task ids run at startup, or void no startup run is set */ protected async registerProcessors(processors: Array = [], appId: string): Promise> { const runAfterRegister: Promise[] = []; @@ -112,14 +94,6 @@ export class AppSchedulerBridge extends SchedulerBridge { /** * Schedules a registered processor to run _once_. - * - * @param {Object} job - * @param {string} job.id The processor's id - * @param {string} job.when When the processor will be executed - * @param {Object} [job.data] An optional object that is passed to the processor - * @param {string} appId - * - * @returns {string} taskid */ protected async scheduleOnce({ id, when, data }: IOnetimeSchedule, appId: string): Promise { this.orch.debugLog(`The App ${appId} is scheduling an onetime job (processor ${id})`); diff --git a/apps/meteor/app/apps/server/bridges/settings.ts b/apps/meteor/app/apps/server/bridges/settings.ts index 9062eb923fd..7be7a888043 100644 --- a/apps/meteor/app/apps/server/bridges/settings.ts +++ b/apps/meteor/app/apps/server/bridges/settings.ts @@ -1,8 +1,8 @@ -import { ISetting } from '@rocket.chat/apps-engine/definition/settings'; +import type { ISetting } from '@rocket.chat/apps-engine/definition/settings'; import { ServerSettingBridge } from '@rocket.chat/apps-engine/server/bridges/ServerSettingBridge'; import { Settings } from '@rocket.chat/models'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; export class AppSettingBridge extends ServerSettingBridge { // eslint-disable-next-line no-empty-function diff --git a/apps/meteor/app/apps/server/bridges/uiInteraction.ts b/apps/meteor/app/apps/server/bridges/uiInteraction.ts index 56a3b48ccc3..15788ce4684 100644 --- a/apps/meteor/app/apps/server/bridges/uiInteraction.ts +++ b/apps/meteor/app/apps/server/bridges/uiInteraction.ts @@ -1,9 +1,9 @@ import { UiInteractionBridge as UiIntBridge } from '@rocket.chat/apps-engine/server/bridges/UiInteractionBridge'; -import { IUIKitInteraction } from '@rocket.chat/apps-engine/definition/uikit'; -import { IUser } from '@rocket.chat/apps-engine/definition/users'; +import type { IUIKitInteraction } from '@rocket.chat/apps-engine/definition/uikit'; +import type { IUser } from '@rocket.chat/apps-engine/definition/users'; import { api } from '../../../../server/sdk/api'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; export class UiInteractionBridge extends UiIntBridge { // eslint-disable-next-line no-empty-function diff --git a/apps/meteor/app/apps/server/bridges/uploads.ts b/apps/meteor/app/apps/server/bridges/uploads.ts index 38075e62424..21de997be2f 100644 --- a/apps/meteor/app/apps/server/bridges/uploads.ts +++ b/apps/meteor/app/apps/server/bridges/uploads.ts @@ -1,11 +1,11 @@ import { Meteor } from 'meteor/meteor'; import { UploadBridge } from '@rocket.chat/apps-engine/server/bridges/UploadBridge'; -import { IUpload } from '@rocket.chat/apps-engine/definition/uploads'; -import { IUploadDetails } from '@rocket.chat/apps-engine/definition/uploads/IUploadDetails'; +import type { IUpload } from '@rocket.chat/apps-engine/definition/uploads'; +import type { IUploadDetails } from '@rocket.chat/apps-engine/definition/uploads/IUploadDetails'; import { FileUpload } from '../../../file-upload/server'; import { determineFileType } from '../../lib/misc/determineFileType'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; const getUploadDetails = (details: IUploadDetails): Partial => { if (details.visitorToken) { diff --git a/apps/meteor/app/apps/server/bridges/users.ts b/apps/meteor/app/apps/server/bridges/users.ts index 012ad09227c..af00a8be2cd 100644 --- a/apps/meteor/app/apps/server/bridges/users.ts +++ b/apps/meteor/app/apps/server/bridges/users.ts @@ -1,12 +1,12 @@ import { Random } from 'meteor/random'; import { UserPresence } from 'meteor/konecty:user-presence'; import { UserBridge } from '@rocket.chat/apps-engine/server/bridges/UserBridge'; -import { IUserCreationOptions, IUser } from '@rocket.chat/apps-engine/definition/users'; +import type { IUserCreationOptions, IUser } from '@rocket.chat/apps-engine/definition/users'; import { Subscriptions, Users as UsersRaw } from '@rocket.chat/models'; import { setUserAvatar, checkUsernameAvailability, deleteUser } from '../../../lib/server/functions'; import { Users } from '../../../models/server'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; export class AppUserBridge extends UserBridge { // eslint-disable-next-line no-empty-function diff --git a/apps/meteor/app/apps/server/bridges/videoConferences.ts b/apps/meteor/app/apps/server/bridges/videoConferences.ts index 93c9e445f91..d6ac7b62fb2 100644 --- a/apps/meteor/app/apps/server/bridges/videoConferences.ts +++ b/apps/meteor/app/apps/server/bridges/videoConferences.ts @@ -1,9 +1,9 @@ import { VideoConferenceBridge } from '@rocket.chat/apps-engine/server/bridges/VideoConferenceBridge'; -import { AppVideoConference, VideoConference } from '@rocket.chat/apps-engine/definition/videoConferences'; -import { IVideoConfProvider } from '@rocket.chat/apps-engine/definition/videoConfProviders'; +import type { AppVideoConference, VideoConference } from '@rocket.chat/apps-engine/definition/videoConferences'; +import type { IVideoConfProvider } from '@rocket.chat/apps-engine/definition/videoConfProviders'; import { VideoConf } from '../../../../server/sdk'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; import { videoConfProviders } from '../../../../server/lib/videoConfProviders'; import type { AppVideoConferencesConverter } from '../converters/videoConferences'; diff --git a/apps/meteor/app/apps/server/communication/endpoints/actionButtonsHandler.ts b/apps/meteor/app/apps/server/communication/endpoints/actionButtonsHandler.ts index 2bab611576f..c2d5126366e 100644 --- a/apps/meteor/app/apps/server/communication/endpoints/actionButtonsHandler.ts +++ b/apps/meteor/app/apps/server/communication/endpoints/actionButtonsHandler.ts @@ -1,19 +1,20 @@ -import { AppManager } from '@rocket.chat/apps-engine/server/AppManager'; +import type { AppManager } from '@rocket.chat/apps-engine/server/AppManager'; import { API } from '../../../../api/server'; -import { AppsRestApi } from '../rest'; +import type { AppsRestApi } from '../rest'; -export const actionButtonsHandler = (apiManager: AppsRestApi): [Record, Record] => [ - { - authRequired: false, - }, - { - get(): any { - const manager = apiManager._manager as AppManager; +export const actionButtonsHandler = (apiManager: AppsRestApi) => + [ + { + authRequired: false, + }, + { + get(): any { + const manager = apiManager._manager as AppManager; - const buttons = manager.getUIActionButtonManager().getAllActionButtons(); + const buttons = manager.getUIActionButtonManager().getAllActionButtons(); - return API.v1.success(buttons); + return API.v1.success(buttons); + }, }, - }, -]; + ] as const; diff --git a/apps/meteor/app/apps/server/communication/methods.ts b/apps/meteor/app/apps/server/communication/methods.ts index 5533651aecb..3757314cf38 100644 --- a/apps/meteor/app/apps/server/communication/methods.ts +++ b/apps/meteor/app/apps/server/communication/methods.ts @@ -1,10 +1,10 @@ import { Meteor } from 'meteor/meteor'; -import { SettingValue } from '@rocket.chat/core-typings'; +import type { SettingValue } from '@rocket.chat/core-typings'; import { Settings } from '@rocket.chat/models'; import { hasPermission } from '../../../authorization/server'; import { twoFactorRequired } from '../../../2fa/server/twoFactorRequired'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; const waitToLoad = function (orch: AppServerOrchestrator): unknown { return new Promise((resolve) => { diff --git a/apps/meteor/app/apps/server/communication/uikit.ts b/apps/meteor/app/apps/server/communication/uikit.ts index a9a8ddc4673..933eb4c918c 100644 --- a/apps/meteor/app/apps/server/communication/uikit.ts +++ b/apps/meteor/app/apps/server/communication/uikit.ts @@ -1,4 +1,5 @@ -import express, { Request, Response } from 'express'; +import type { Request, Response } from 'express'; +import express from 'express'; import cors from 'cors'; import rateLimit from 'express-rate-limit'; import { Meteor } from 'meteor/meteor'; @@ -7,7 +8,8 @@ import { UIKitIncomingInteractionType } from '@rocket.chat/apps-engine/definitio import { AppInterface } from '@rocket.chat/apps-engine/definition/metadata'; import { settings } from '../../../settings/server'; -import { Apps, AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; +import { Apps } from '../orchestrator'; import { UiKitCoreApp } from '../../../../server/sdk'; import { authenticationMiddleware } from '../../../api/server/middlewares/authentication'; @@ -71,8 +73,8 @@ router.use((req: Request, res, next) => { next(); }); -const corsOptions = { - origin: (origin: string | undefined, callback: Function): void => { +const corsOptions: cors.CorsOptions = { + origin: (origin, callback) => { if ( !origin || !corsEnabled || @@ -82,14 +84,14 @@ const corsOptions = { ) { callback(null, true); } else { - callback('Not allowed by CORS', false); + callback(new Error('Not allowed by CORS'), false); } }, }; apiServer.use('/api/apps/ui.interaction/', cors(corsOptions), router); // didn't have the rateLimiter option -const getPayloadForType = (type: UIKitIncomingInteractionType, req: Request): {} => { +const getPayloadForType = (type: UIKitIncomingInteractionType, req: Request) => { if (type === UIKitIncomingInteractionType.BLOCK) { const { type, actionId, triggerId, mid, rid, payload, container } = req.body; @@ -109,7 +111,7 @@ const getPayloadForType = (type: UIKitIncomingInteractionType, req: Request): {} user, visitor, room, - }; + } as const; } if (type === UIKitIncomingInteractionType.VIEW_CLOSED) { diff --git a/apps/meteor/app/apps/server/communication/websockets.ts b/apps/meteor/app/apps/server/communication/websockets.ts index cfdfdf2b77b..71cf29f68de 100644 --- a/apps/meteor/app/apps/server/communication/websockets.ts +++ b/apps/meteor/app/apps/server/communication/websockets.ts @@ -1,11 +1,12 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import { AppStatus, AppStatusUtils } from '@rocket.chat/apps-engine/definition/AppStatus'; -import { ISetting } from '@rocket.chat/core-typings'; -import { IStreamer } from 'meteor/rocketchat:streamer'; +import type { AppStatus } from '@rocket.chat/apps-engine/definition/AppStatus'; +import { AppStatusUtils } from '@rocket.chat/apps-engine/definition/AppStatus'; +import type { ISetting } from '@rocket.chat/core-typings'; +import type { IStreamer } from 'meteor/rocketchat:streamer'; import { SystemLogger } from '../../../../server/lib/logger/system'; import notifications from '../../../notifications/server/lib/Notifications'; -import { AppServerOrchestrator } from '../orchestrator'; +import type { AppServerOrchestrator } from '../orchestrator'; export enum AppEvents { APP_ADDED = 'app/added', diff --git a/apps/meteor/app/apps/server/converters/videoConferences.ts b/apps/meteor/app/apps/server/converters/videoConferences.ts index dd4e2c113b6..77bc25e4cbe 100644 --- a/apps/meteor/app/apps/server/converters/videoConferences.ts +++ b/apps/meteor/app/apps/server/converters/videoConferences.ts @@ -2,16 +2,8 @@ import type { VideoConference } from '@rocket.chat/apps-engine/definition/videoC import type { IVideoConference } from '@rocket.chat/core-typings'; import { VideoConf } from '../../../../server/sdk'; -import type { AppServerOrchestrator } from '../orchestrator'; export class AppVideoConferencesConverter { - // @ts-ignore - private orch: AppServerOrchestrator; - - constructor(orch: AppServerOrchestrator) { - this.orch = orch; - } - async convertById(callId: string): Promise { const call = await VideoConf.getUnfiltered(callId); diff --git a/apps/meteor/app/apps/server/orchestrator.js b/apps/meteor/app/apps/server/orchestrator.js index 9d3bdf7a35a..de3d950025b 100644 --- a/apps/meteor/app/apps/server/orchestrator.js +++ b/apps/meteor/app/apps/server/orchestrator.js @@ -60,7 +60,7 @@ export class AppServerOrchestrator { this._converters.set('visitors', new AppVisitorsConverter(this)); this._converters.set('departments', new AppDepartmentsConverter(this)); this._converters.set('uploads', new AppUploadsConverter(this)); - this._converters.set('videoConferences', new AppVideoConferencesConverter(this)); + this._converters.set('videoConferences', new AppVideoConferencesConverter()); this._bridges = new RealAppBridges(this); diff --git a/apps/meteor/app/apps/server/storage/AppFileSystemSourceStorage.ts b/apps/meteor/app/apps/server/storage/AppFileSystemSourceStorage.ts index 7c0c053ebbc..54e83a11df5 100644 --- a/apps/meteor/app/apps/server/storage/AppFileSystemSourceStorage.ts +++ b/apps/meteor/app/apps/server/storage/AppFileSystemSourceStorage.ts @@ -1,7 +1,8 @@ import { promises as fs } from 'fs'; import { join, normalize } from 'path'; -import { AppSourceStorage, IAppStorageItem } from '@rocket.chat/apps-engine/server/storage'; +import type { IAppStorageItem } from '@rocket.chat/apps-engine/server/storage'; +import { AppSourceStorage } from '@rocket.chat/apps-engine/server/storage'; export class AppFileSystemSourceStorage extends AppSourceStorage { private pathPrefix = 'fs:/'; diff --git a/apps/meteor/app/apps/server/storage/AppGridFSSourceStorage.ts b/apps/meteor/app/apps/server/storage/AppGridFSSourceStorage.ts index 1775fca4be8..aa0831e3064 100644 --- a/apps/meteor/app/apps/server/storage/AppGridFSSourceStorage.ts +++ b/apps/meteor/app/apps/server/storage/AppGridFSSourceStorage.ts @@ -1,6 +1,8 @@ import { MongoInternals } from 'meteor/mongo'; -import { GridFSBucket, GridFSBucketWriteStream, ObjectId } from 'mongodb'; -import { AppSourceStorage, IAppStorageItem } from '@rocket.chat/apps-engine/server/storage'; +import type { GridFSBucket, GridFSBucketWriteStream } from 'mongodb'; +import { ObjectId } from 'mongodb'; +import type { IAppStorageItem } from '@rocket.chat/apps-engine/server/storage'; +import { AppSourceStorage } from '@rocket.chat/apps-engine/server/storage'; import { streamToBuffer } from '../../../file-upload/server/lib/streamToBuffer'; diff --git a/apps/meteor/app/apps/server/storage/AppRealStorage.ts b/apps/meteor/app/apps/server/storage/AppRealStorage.ts index b90e5890edf..1d3cd8793e1 100644 --- a/apps/meteor/app/apps/server/storage/AppRealStorage.ts +++ b/apps/meteor/app/apps/server/storage/AppRealStorage.ts @@ -1,6 +1,7 @@ -import { AppMetadataStorage, IAppStorageItem } from '@rocket.chat/apps-engine/server/storage'; +import type { IAppStorageItem } from '@rocket.chat/apps-engine/server/storage'; +import { AppMetadataStorage } from '@rocket.chat/apps-engine/server/storage'; -import { AppsModel } from '../../../models/server/models/apps-model'; +import type { AppsModel } from '../../../models/server/models/apps-model'; export class AppRealStorage extends AppMetadataStorage { constructor(private db: AppsModel) { diff --git a/apps/meteor/app/apps/server/storage/ConfigurableAppSourceStorage.ts b/apps/meteor/app/apps/server/storage/ConfigurableAppSourceStorage.ts index 2f0118b18cf..42a0b5d3e40 100644 --- a/apps/meteor/app/apps/server/storage/ConfigurableAppSourceStorage.ts +++ b/apps/meteor/app/apps/server/storage/ConfigurableAppSourceStorage.ts @@ -1,4 +1,5 @@ -import { AppSourceStorage, IAppStorageItem } from '@rocket.chat/apps-engine/server/storage'; +import type { IAppStorageItem } from '@rocket.chat/apps-engine/server/storage'; +import { AppSourceStorage } from '@rocket.chat/apps-engine/server/storage'; import { AppFileSystemSourceStorage } from './AppFileSystemSourceStorage'; import { AppGridFSSourceStorage } from './AppGridFSSourceStorage'; diff --git a/apps/meteor/app/assets/server/assets.ts b/apps/meteor/app/assets/server/assets.ts index d37e67470b1..fcd13e707e2 100644 --- a/apps/meteor/app/assets/server/assets.ts +++ b/apps/meteor/app/assets/server/assets.ts @@ -1,5 +1,5 @@ import crypto from 'crypto'; -import { ServerResponse, IncomingMessage } from 'http'; +import type { ServerResponse, IncomingMessage } from 'http'; import { Meteor } from 'meteor/meteor'; import { WebApp, WebAppInternals } from 'meteor/webapp'; @@ -7,8 +7,8 @@ import { WebAppHashing } from 'meteor/webapp-hashing'; import _ from 'underscore'; import sizeOf from 'image-size'; import sharp from 'sharp'; -import { NextHandleFunction } from 'connect'; -import { IRocketChatAssets, IRocketChatAsset } from '@rocket.chat/core-typings'; +import type { NextHandleFunction } from 'connect'; +import type { IRocketChatAssets, IRocketChatAsset, IRocketChatAssetCache } from '@rocket.chat/core-typings'; import { Settings } from '@rocket.chat/models'; import { settings, settingsRegistry } from '../../settings/server'; @@ -257,7 +257,7 @@ class RocketChatAssetsClass { } public refreshClients(): boolean { - return (process.emit as Function)('message', { + return process.emit('message', { refresh: 'client', }); } @@ -358,9 +358,9 @@ for (const key of Object.keys(assets)) { settings.watchByRegex(/^Assets_/, (key, value) => RocketChatAssets.processAsset(key, value)); -Meteor.startup(function () { - return Meteor.setTimeout(function () { - return (process.emit as Function)('message', { +Meteor.startup(() => { + Meteor.setTimeout(() => { + process.emit('message', { refresh: 'client', }); }, 200); @@ -368,14 +368,14 @@ Meteor.startup(function () { const { calculateClientHash } = WebAppHashing; -WebAppHashing.calculateClientHash = function (manifest: Record, includeFilter: Function, runtimeConfigOverride: any): string { +WebAppHashing.calculateClientHash = function (manifest, includeFilter, runtimeConfigOverride): string { for (const key of Object.keys(assets)) { const value = getAssetByKey(key); if (!value.cache && !value.defaultUrl) { continue; } - let cache = {}; + let cache: IRocketChatAssetCache; if (value.cache) { cache = { path: value.cache.path, @@ -504,7 +504,7 @@ const listener = Meteor.bindEnvironment((req: IncomingMessage, res: ServerRespon const reqModifiedHeader = req.headers['if-modified-since']; if (reqModifiedHeader) { - if (reqModifiedHeader === (file.uploadDate && file.uploadDate.toUTCString())) { + if (reqModifiedHeader === file.uploadDate?.toUTCString()) { res.setHeader('Last-Modified', reqModifiedHeader); res.writeHead(304); res.end(); @@ -523,9 +523,9 @@ const listener = Meteor.bindEnvironment((req: IncomingMessage, res: ServerRespon return; } - res.setHeader('Last-Modified', (file.uploadDate && file.uploadDate.toUTCString()) || new Date().toUTCString()); - res.setHeader('Content-Type', file.contentType); - res.setHeader('Content-Length', file.size); + res.setHeader('Last-Modified', file.uploadDate?.toUTCString() || new Date().toUTCString()); + if (file.contentType) res.setHeader('Content-Type', file.contentType); + if (file.size) res.setHeader('Content-Length', file.size); res.writeHead(200); res.end(file.content); }); diff --git a/apps/meteor/app/authentication/server/hooks/login.ts b/apps/meteor/app/authentication/server/hooks/login.ts index 7c7ec0c874a..270a2dada60 100644 --- a/apps/meteor/app/authentication/server/hooks/login.ts +++ b/apps/meteor/app/authentication/server/hooks/login.ts @@ -1,6 +1,6 @@ import { Accounts } from 'meteor/accounts-base'; -import { ILoginAttempt } from '../ILoginAttempt'; +import type { ILoginAttempt } from '../ILoginAttempt'; import { saveFailedLoginAttempts, saveSuccessfulLogin } from '../lib/restrictLoginAttempts'; import { logFailedLoginAttempts } from '../lib/logLoginAttempts'; import { callbacks } from '../../../../lib/callbacks'; diff --git a/apps/meteor/app/authentication/server/lib/logLoginAttempts.ts b/apps/meteor/app/authentication/server/lib/logLoginAttempts.ts index aa0ec9c12e4..806b4f93b80 100644 --- a/apps/meteor/app/authentication/server/lib/logLoginAttempts.ts +++ b/apps/meteor/app/authentication/server/lib/logLoginAttempts.ts @@ -1,4 +1,4 @@ -import { ILoginAttempt } from '../ILoginAttempt'; +import type { ILoginAttempt } from '../ILoginAttempt'; import { settings } from '../../../settings/server'; import { SystemLogger } from '../../../../server/lib/logger/system'; @@ -16,13 +16,13 @@ export const logFailedLoginAttempts = (login: ILoginAttempt): void => { if (!settings.get('Login_Logs_ClientIp')) { clientAddress = '-'; } - let forwardedFor = connection.httpHeaders && connection.httpHeaders['x-forwarded-for']; - let realIp = connection.httpHeaders && connection.httpHeaders['x-real-ip']; + let forwardedFor = connection.httpHeaders?.['x-forwarded-for']; + let realIp = connection.httpHeaders?.['x-real-ip']; if (!settings.get('Login_Logs_ForwardedForIp')) { forwardedFor = '-'; realIp = '-'; } - let userAgent = connection.httpHeaders && connection.httpHeaders['user-agent']; + let userAgent = connection.httpHeaders?.['user-agent']; if (!settings.get('Login_Logs_UserAgent')) { userAgent = '-'; } diff --git a/apps/meteor/app/authentication/server/lib/restrictLoginAttempts.ts b/apps/meteor/app/authentication/server/lib/restrictLoginAttempts.ts index f49abd3ac68..0301fa1bb93 100644 --- a/apps/meteor/app/authentication/server/lib/restrictLoginAttempts.ts +++ b/apps/meteor/app/authentication/server/lib/restrictLoginAttempts.ts @@ -8,7 +8,7 @@ import { getClientAddress } from '../../../../server/lib/getClientAddress'; import { sendMessage } from '../../../lib/server/functions'; import { Logger } from '../../../logger/server'; import { settings } from '../../../settings/server'; -import { ILoginAttempt } from '../ILoginAttempt'; +import type { ILoginAttempt } from '../ILoginAttempt'; const logger = new Logger('LoginProtection'); diff --git a/apps/meteor/app/authorization/client/hasPermission.ts b/apps/meteor/app/authorization/client/hasPermission.ts index 48c2999538d..a0d6a2fe63b 100644 --- a/apps/meteor/app/authorization/client/hasPermission.ts +++ b/apps/meteor/app/authorization/client/hasPermission.ts @@ -35,7 +35,7 @@ const createPermissionValidator = } const model = Models[roleScope as keyof typeof Models]; - return model.isUserInRole && model.isUserInRole(userId, roleId, scope); + return model.isUserInRole?.(userId, roleId, scope); }); }); }; diff --git a/apps/meteor/app/authorization/server/functions/canAccessRoom.ts b/apps/meteor/app/authorization/server/functions/canAccessRoom.ts index 16e0a76b51e..d82bed560d1 100644 --- a/apps/meteor/app/authorization/server/functions/canAccessRoom.ts +++ b/apps/meteor/app/authorization/server/functions/canAccessRoom.ts @@ -1,5 +1,5 @@ import { Authorization } from '../../../../server/sdk'; -import { IAuthorization } from '../../../../server/sdk/types/IAuthorization'; +import type { IAuthorization } from '../../../../server/sdk/types/IAuthorization'; export const canAccessRoomAsync = Authorization.canAccessRoom; export const canAccessRoomIdAsync = Authorization.canAccessRoomId; diff --git a/apps/meteor/app/authorization/server/functions/canDeleteMessage.ts b/apps/meteor/app/authorization/server/functions/canDeleteMessage.ts index 36d7b30394c..8ffb33958c2 100644 --- a/apps/meteor/app/authorization/server/functions/canDeleteMessage.ts +++ b/apps/meteor/app/authorization/server/functions/canDeleteMessage.ts @@ -1,4 +1,4 @@ -import { IUser } from '@rocket.chat/core-typings'; +import type { IUser } from '@rocket.chat/core-typings'; import { hasPermissionAsync } from './hasPermission'; import { getValue } from '../../../settings/server/raw'; diff --git a/apps/meteor/app/authorization/server/functions/canSendMessage.ts b/apps/meteor/app/authorization/server/functions/canSendMessage.ts index 59e1da2eb14..6b962fbda47 100644 --- a/apps/meteor/app/authorization/server/functions/canSendMessage.ts +++ b/apps/meteor/app/authorization/server/functions/canSendMessage.ts @@ -1,4 +1,4 @@ -import { IRoom, IUser } from '@rocket.chat/core-typings'; +import type { IRoom, IUser } from '@rocket.chat/core-typings'; import { Subscriptions, Rooms } from '@rocket.chat/models'; import { canAccessRoomAsync } from './canAccessRoom'; diff --git a/apps/meteor/app/authorization/server/functions/getUsersInRole.ts b/apps/meteor/app/authorization/server/functions/getUsersInRole.ts index b73bd133ba0..3e6e82b20df 100644 --- a/apps/meteor/app/authorization/server/functions/getUsersInRole.ts +++ b/apps/meteor/app/authorization/server/functions/getUsersInRole.ts @@ -1,7 +1,7 @@ -import { FindCursor, FindOptions } from 'mongodb'; +import type { FindCursor, FindOptions } from 'mongodb'; import type { IRole, IUser } from '@rocket.chat/core-typings'; import { Roles, Subscriptions, Users } from '@rocket.chat/models'; -import { FindPaginated } from '@rocket.chat/model-typings'; +import type { FindPaginated } from '@rocket.chat/model-typings'; import { compact } from 'lodash'; export function getUsersInRole(roleId: IRole['_id'], scope?: string): Promise>; diff --git a/apps/meteor/app/authorization/server/functions/hasRole.ts b/apps/meteor/app/authorization/server/functions/hasRole.ts index 040d28d8a90..076ce8741ea 100644 --- a/apps/meteor/app/authorization/server/functions/hasRole.ts +++ b/apps/meteor/app/authorization/server/functions/hasRole.ts @@ -29,4 +29,4 @@ export const hasRole = (...args: Parameters): boolean => Pr export const hasAnyRole = (...args: Parameters): boolean => Promise.await(hasAnyRoleAsync(...args)); -export const subscriptionHasRole = (sub: ISubscription, role: IRole['_id']): boolean | undefined => sub.roles && sub.roles.includes(role); +export const subscriptionHasRole = (sub: ISubscription, role: IRole['_id']): boolean | undefined => sub.roles?.includes(role); diff --git a/apps/meteor/app/authorization/server/functions/upsertPermissions.ts b/apps/meteor/app/authorization/server/functions/upsertPermissions.ts index 837020591c0..3be452c5ca5 100644 --- a/apps/meteor/app/authorization/server/functions/upsertPermissions.ts +++ b/apps/meteor/app/authorization/server/functions/upsertPermissions.ts @@ -279,7 +279,7 @@ export const upsertPermissions = async (): Promise => { roles: [], }; // copy previously assigned roles if available - if (previousSettingPermissions[permissionId] && previousSettingPermissions[permissionId].roles) { + if (previousSettingPermissions[permissionId]?.roles) { permission.roles = previousSettingPermissions[permissionId].roles; } if (setting.group) { diff --git a/apps/meteor/app/autotranslate/client/lib/autotranslate.ts b/apps/meteor/app/autotranslate/client/lib/autotranslate.ts index 20ead8d84de..91713db2e33 100644 --- a/apps/meteor/app/autotranslate/client/lib/autotranslate.ts +++ b/apps/meteor/app/autotranslate/client/lib/autotranslate.ts @@ -1,7 +1,14 @@ import { Meteor } from 'meteor/meteor'; import { Tracker } from 'meteor/tracker'; import mem from 'mem'; -import { IRoom, ISubscription, ISupportedLanguage, ITranslatedMessage, IUser, MessageAttachmentDefault } from '@rocket.chat/core-typings'; +import type { + IRoom, + ISubscription, + ISupportedLanguage, + ITranslatedMessage, + IUser, + MessageAttachmentDefault, +} from '@rocket.chat/core-typings'; import { Subscriptions, Messages } from '../../../models/client'; import { hasPermission } from '../../../authorization/client'; diff --git a/apps/meteor/app/autotranslate/server/autotranslate.ts b/apps/meteor/app/autotranslate/server/autotranslate.ts index d50cb15a145..8566cdd18e4 100644 --- a/apps/meteor/app/autotranslate/server/autotranslate.ts +++ b/apps/meteor/app/autotranslate/server/autotranslate.ts @@ -1,7 +1,7 @@ import { Meteor } from 'meteor/meteor'; import _ from 'underscore'; import { escapeHTML } from '@rocket.chat/string-helpers'; -import { +import type { IMessage, IRoom, MessageAttachment, @@ -286,7 +286,7 @@ export abstract class AutoTranslate { if (targetLanguage) { targetLanguages = [targetLanguage]; } else { - targetLanguages = Subscriptions.getAutoTranslateLanguagesByRoomAndNotUser(room._id, message.u && message.u._id); + targetLanguages = Subscriptions.getAutoTranslateLanguagesByRoomAndNotUser(room._id, message.u?._id); } if (message.msg) { Meteor.defer(() => { diff --git a/apps/meteor/app/autotranslate/server/deeplTranslate.ts b/apps/meteor/app/autotranslate/server/deeplTranslate.ts index 442d004d469..28793811505 100644 --- a/apps/meteor/app/autotranslate/server/deeplTranslate.ts +++ b/apps/meteor/app/autotranslate/server/deeplTranslate.ts @@ -5,7 +5,7 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import { HTTP } from 'meteor/http'; import _ from 'underscore'; -import { +import type { IMessage, IDeepLTranslation, MessageAttachment, diff --git a/apps/meteor/app/autotranslate/server/googleTranslate.ts b/apps/meteor/app/autotranslate/server/googleTranslate.ts index e519f56fdbb..5ce253f80af 100644 --- a/apps/meteor/app/autotranslate/server/googleTranslate.ts +++ b/apps/meteor/app/autotranslate/server/googleTranslate.ts @@ -5,7 +5,7 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import { HTTP } from 'meteor/http'; import _ from 'underscore'; -import { +import type { IMessage, IProviderMetadata, ISupportedLanguage, diff --git a/apps/meteor/app/autotranslate/server/msTranslate.ts b/apps/meteor/app/autotranslate/server/msTranslate.ts index ccf34ddaca6..46b3de38143 100644 --- a/apps/meteor/app/autotranslate/server/msTranslate.ts +++ b/apps/meteor/app/autotranslate/server/msTranslate.ts @@ -5,7 +5,7 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import { HTTP } from 'meteor/http'; import _ from 'underscore'; -import { IMessage, IProviderMetadata, ISupportedLanguage, ITranslationResult, MessageAttachment } from '@rocket.chat/core-typings'; +import type { IMessage, IProviderMetadata, ISupportedLanguage, ITranslationResult, MessageAttachment } from '@rocket.chat/core-typings'; import { TranslationProviderRegistry, AutoTranslate } from './autotranslate'; import { msLogger } from './logger'; diff --git a/apps/meteor/app/channel-settings/client/tabBar.ts b/apps/meteor/app/channel-settings/client/tabBar.ts index 91dc8aa1fe7..ffb431ec39b 100644 --- a/apps/meteor/app/channel-settings/client/tabBar.ts +++ b/apps/meteor/app/channel-settings/client/tabBar.ts @@ -1,4 +1,5 @@ -import { FC, lazy, LazyExoticComponent } from 'react'; +import type { FC, LazyExoticComponent } from 'react'; +import { lazy } from 'react'; import { addAction } from '../../../client/views/room/lib/Toolbox'; diff --git a/apps/meteor/app/cloud/server/functions/buildRegistrationData.ts b/apps/meteor/app/cloud/server/functions/buildRegistrationData.ts index edc18eaf52f..a30fc190546 100644 --- a/apps/meteor/app/cloud/server/functions/buildRegistrationData.ts +++ b/apps/meteor/app/cloud/server/functions/buildRegistrationData.ts @@ -1,4 +1,4 @@ -import { SettingValue } from '@rocket.chat/core-typings'; +import type { SettingValue } from '@rocket.chat/core-typings'; import { Statistics } from '@rocket.chat/models'; import { settings } from '../../../settings/server'; diff --git a/apps/meteor/app/cloud/server/functions/connectWorkspace.ts b/apps/meteor/app/cloud/server/functions/connectWorkspace.ts index a0d76a402ef..b3b0c095715 100644 --- a/apps/meteor/app/cloud/server/functions/connectWorkspace.ts +++ b/apps/meteor/app/cloud/server/functions/connectWorkspace.ts @@ -37,7 +37,7 @@ export async function connectWorkspace(token: string) { data: regInfo, }); } catch (e: any) { - if (e.response && e.response.data && e.response.data.error) { + if (e.response?.data?.error) { SystemLogger.error(`Failed to register with Rocket.Chat Cloud. Error: ${e.response.data.error}`); } else { SystemLogger.error(e); diff --git a/apps/meteor/app/cloud/server/functions/getConfirmationPoll.ts b/apps/meteor/app/cloud/server/functions/getConfirmationPoll.ts index f83dd650d83..4405d0ba33a 100644 --- a/apps/meteor/app/cloud/server/functions/getConfirmationPoll.ts +++ b/apps/meteor/app/cloud/server/functions/getConfirmationPoll.ts @@ -1,5 +1,5 @@ import { HTTP } from 'meteor/http'; -import { CloudConfirmationPollData } from '@rocket.chat/core-typings'; +import type { CloudConfirmationPollData } from '@rocket.chat/core-typings'; import { settings } from '../../../settings/server'; import { SystemLogger } from '../../../../server/lib/logger/system'; @@ -11,7 +11,7 @@ export async function getConfirmationPoll(deviceCode: string): Promise void; export const runFederation = async (): Promise => { federationQueueInstance.setHandler(federationEventsHandler.handleEvent.bind(federationEventsHandler), FEDERATION_PROCESSING_CONCURRENCY); diff --git a/apps/meteor/app/federation-v2/server/infrastructure/Factory.ts b/apps/meteor/app/federation-v2/server/infrastructure/Factory.ts index e5f6370814b..51f5882544c 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/Factory.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/Factory.ts @@ -1,4 +1,4 @@ -import { IRoom, IUser } from '@rocket.chat/core-typings'; +import type { IRoom, IUser } from '@rocket.chat/core-typings'; import { FederationRoomServiceReceiver } from '../application/RoomServiceReceiver'; import { FederationRoomServiceSender } from '../application/RoomServiceSender'; @@ -17,7 +17,7 @@ import { RocketChatMessageAdapter } from './rocket-chat/adapters/Message'; import { RocketChatRoomAdapter } from './rocket-chat/adapters/Room'; import { RocketChatSettingsAdapter } from './rocket-chat/adapters/Settings'; import { RocketChatUserAdapter } from './rocket-chat/adapters/User'; -import { IFederationBridge } from '../domain/IFederationBridge'; +import type { IFederationBridge } from '../domain/IFederationBridge'; import { FederationHooks } from './rocket-chat/hooks'; import { FederationRoomSenderConverter } from './rocket-chat/converters/RoomSender'; diff --git a/apps/meteor/app/federation-v2/server/infrastructure/matrix/Bridge.ts b/apps/meteor/app/federation-v2/server/infrastructure/matrix/Bridge.ts index 6a27ff694b9..52665ed295f 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/matrix/Bridge.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/matrix/Bridge.ts @@ -1,9 +1,9 @@ import type { AppServiceOutput, Bridge } from '@rocket.chat/forked-matrix-appservice-bridge'; -import { IFederationBridge } from '../../domain/IFederationBridge'; +import type { IFederationBridge } from '../../domain/IFederationBridge'; import { bridgeLogger } from '../rocket-chat/adapters/logger'; -import { IMatrixEvent } from './definitions/IMatrixEvent'; -import { MatrixEventType } from './definitions/MatrixEventType'; +import type { IMatrixEvent } from './definitions/IMatrixEvent'; +import type { MatrixEventType } from './definitions/MatrixEventType'; import { MatrixRoomType } from './definitions/MatrixRoomType'; import { MatrixRoomVisibility } from './definitions/MatrixRoomVisibility'; @@ -23,7 +23,7 @@ export class MatrixBridge implements IFederationBridge { protected bridgeUrl: string, protected bridgePort: number, protected homeServerRegistrationFile: Record, - protected eventHandler: Function, + protected eventHandler: (event: IMatrixEvent) => void, ) { this.logInfo(); } diff --git a/apps/meteor/app/federation-v2/server/infrastructure/matrix/converters/RoomReceiver.ts b/apps/meteor/app/federation-v2/server/infrastructure/matrix/converters/RoomReceiver.ts index e6e75c872f5..6740c5546e3 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/matrix/converters/RoomReceiver.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/matrix/converters/RoomReceiver.ts @@ -9,7 +9,7 @@ import { FederationRoomSendInternalMessageDto, } from '../../../application/input/RoomReceiverDto'; import { EVENT_ORIGIN } from '../../../domain/IFederationBridge'; -import { IMatrixEvent } from '../definitions/IMatrixEvent'; +import type { IMatrixEvent } from '../definitions/IMatrixEvent'; import { AddMemberToRoomMembership } from '../definitions/IMatrixEventContent/IMatrixEventContentAddMemberToRoom'; import { RoomJoinRules } from '../definitions/IMatrixEventContent/IMatrixEventContentSetRoomJoinRules'; import { MatrixEventType } from '../definitions/MatrixEventType'; diff --git a/apps/meteor/app/federation-v2/server/infrastructure/matrix/definitions/IMatrixEvent.ts b/apps/meteor/app/federation-v2/server/infrastructure/matrix/definitions/IMatrixEvent.ts index 3470ab6481b..f86dd3f79a3 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/matrix/definitions/IMatrixEvent.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/matrix/definitions/IMatrixEvent.ts @@ -1,5 +1,5 @@ -import { MatrixEventType } from './MatrixEventType'; -import { EventContent } from './IMatrixEventContent'; +import type { MatrixEventType } from './MatrixEventType'; +import type { EventContent } from './IMatrixEventContent'; export interface IMatrixEvent { age: number; diff --git a/apps/meteor/app/federation-v2/server/infrastructure/matrix/definitions/IMatrixEventContent/index.ts b/apps/meteor/app/federation-v2/server/infrastructure/matrix/definitions/IMatrixEventContent/index.ts index e260e62ac5e..8b7cabee379 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/matrix/definitions/IMatrixEventContent/index.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/matrix/definitions/IMatrixEventContent/index.ts @@ -1,10 +1,10 @@ -import { MatrixEventType } from '../MatrixEventType'; -import { IMatrixEventContentCreateRoom } from './IMatrixEventContentCreateRoom'; -import { IMatrixEventContentAddMemberToRoom } from './IMatrixEventContentAddMemberToRoom'; -import { IMatrixEventContentSendMessage } from './IMatrixEventContentSendMessage'; -import { IMatrixEventContentSetRoomJoinRules } from './IMatrixEventContentSetRoomJoinRules'; -import { IMatrixEventContentSetRoomName } from './IMatrixEventContentSetRoomName'; -import { IMatrixEventContentSetRoomTopic } from './IMatrixEventContentSetRoomTopic'; +import type { MatrixEventType } from '../MatrixEventType'; +import type { IMatrixEventContentCreateRoom } from './IMatrixEventContentCreateRoom'; +import type { IMatrixEventContentAddMemberToRoom } from './IMatrixEventContentAddMemberToRoom'; +import type { IMatrixEventContentSendMessage } from './IMatrixEventContentSendMessage'; +import type { IMatrixEventContentSetRoomJoinRules } from './IMatrixEventContentSetRoomJoinRules'; +import type { IMatrixEventContentSetRoomName } from './IMatrixEventContentSetRoomName'; +import type { IMatrixEventContentSetRoomTopic } from './IMatrixEventContentSetRoomTopic'; export type EventContent = { [MatrixEventType.ROOM_CREATED]: IMatrixEventContentCreateRoom; diff --git a/apps/meteor/app/federation-v2/server/infrastructure/matrix/handlers/BaseEvent.ts b/apps/meteor/app/federation-v2/server/infrastructure/matrix/handlers/BaseEvent.ts index 5e6b916eef5..6fe2b6fa512 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/matrix/handlers/BaseEvent.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/matrix/handlers/BaseEvent.ts @@ -1,5 +1,5 @@ -import { IMatrixEvent } from '../definitions/IMatrixEvent'; -import { MatrixEventType } from '../definitions/MatrixEventType'; +import type { IMatrixEvent } from '../definitions/IMatrixEvent'; +import type { MatrixEventType } from '../definitions/MatrixEventType'; export abstract class MatrixBaseEventHandler { protected type: T; diff --git a/apps/meteor/app/federation-v2/server/infrastructure/matrix/handlers/Room.ts b/apps/meteor/app/federation-v2/server/infrastructure/matrix/handlers/Room.ts index 0c7460d5a25..c5974eac461 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/matrix/handlers/Room.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/matrix/handlers/Room.ts @@ -1,7 +1,7 @@ -import { FederationRoomServiceReceiver } from '../../../application/RoomServiceReceiver'; -import { RocketChatSettingsAdapter } from '../../rocket-chat/adapters/Settings'; +import type { FederationRoomServiceReceiver } from '../../../application/RoomServiceReceiver'; +import type { RocketChatSettingsAdapter } from '../../rocket-chat/adapters/Settings'; import { MatrixRoomReceiverConverter } from '../converters/RoomReceiver'; -import { IMatrixEvent } from '../definitions/IMatrixEvent'; +import type { IMatrixEvent } from '../definitions/IMatrixEvent'; import { MatrixEventType } from '../definitions/MatrixEventType'; import { MatrixBaseEventHandler } from './BaseEvent'; diff --git a/apps/meteor/app/federation-v2/server/infrastructure/matrix/handlers/index.ts b/apps/meteor/app/federation-v2/server/infrastructure/matrix/handlers/index.ts index 5394f96e028..998504dd6a7 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/matrix/handlers/index.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/matrix/handlers/index.ts @@ -1,6 +1,6 @@ -import { IMatrixEvent } from '../definitions/IMatrixEvent'; -import { MatrixEventType } from '../definitions/MatrixEventType'; -import { MatrixBaseEventHandler } from './BaseEvent'; +import type { IMatrixEvent } from '../definitions/IMatrixEvent'; +import type { MatrixEventType } from '../definitions/MatrixEventType'; +import type { MatrixBaseEventHandler } from './BaseEvent'; export class MatrixEventsHandler { // eslint-disable-next-line no-empty-function diff --git a/apps/meteor/app/federation-v2/server/infrastructure/queue/InMemoryQueue.ts b/apps/meteor/app/federation-v2/server/infrastructure/queue/InMemoryQueue.ts index fc4ea1106d2..422a1c1ff8e 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/queue/InMemoryQueue.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/queue/InMemoryQueue.ts @@ -1,10 +1,10 @@ -import * as fastq from 'fastq'; +import fastq from 'fastq'; export class InMemoryQueue { private instance: any; - public setHandler(handler: Function, concurrency: number): void { - this.instance = fastq.promise(handler as any, concurrency); + public setHandler(handler: fastq.asyncWorker, concurrency: number): void { + this.instance = fastq.promise(handler, concurrency); } public addToQueue(task: Record): void { diff --git a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/Federation.ts b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/Federation.ts index a3b3b0b3bf1..2b2ca1ff5a1 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/Federation.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/Federation.ts @@ -1,5 +1,5 @@ import { RoomType } from '@rocket.chat/apps-engine/definition/rooms'; -import { IRoom, ValueOf } from '@rocket.chat/core-typings'; +import type { IRoom, ValueOf } from '@rocket.chat/core-typings'; import { RoomMemberActions } from '../../../../../definition/IRoomTypeConfig'; diff --git a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Message.ts b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Message.ts index 3f82f77a6a1..63e1339474d 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Message.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Message.ts @@ -1,6 +1,6 @@ import { sendMessage } from '../../../../../lib/server'; -import { FederatedRoom } from '../../../domain/FederatedRoom'; -import { FederatedUser } from '../../../domain/FederatedUser'; +import type { FederatedRoom } from '../../../domain/FederatedRoom'; +import type { FederatedUser } from '../../../domain/FederatedUser'; export class RocketChatMessageAdapter { public async sendMessage(user: FederatedUser, text: string, room: FederatedRoom): Promise { diff --git a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Room.ts b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Room.ts index 53269fb090a..da32c3f8181 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Room.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Room.ts @@ -1,10 +1,10 @@ -import { ICreatedRoom, IRoom } from '@rocket.chat/core-typings'; +import type { ICreatedRoom, IRoom } from '@rocket.chat/core-typings'; import { Rooms, Subscriptions as SubscriptionsRaw } from '@rocket.chat/models'; import { MatrixBridgedRoom, Subscriptions } from '../../../../../models/server'; import { FederatedRoom } from '../../../domain/FederatedRoom'; import { createRoom, addUserToRoom, removeUserFromRoom } from '../../../../../lib/server'; -import { FederatedUser } from '../../../domain/FederatedUser'; +import type { FederatedUser } from '../../../domain/FederatedUser'; import { saveRoomName } from '../../../../../channel-settings/server/functions/saveRoomName'; import { saveRoomTopic } from '../../../../../channel-settings/server/functions/saveRoomTopic'; diff --git a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Settings.ts b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Settings.ts index d70e5240751..78431549203 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Settings.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Settings.ts @@ -57,8 +57,8 @@ export class RocketChatSettingsAdapter { return settings.get('Federation_Matrix_enabled') === true; } - public onFederationEnabledStatusChanged(callback: Function): Function { - return settings.watchMultiple( + public onFederationEnabledStatusChanged(callback: (enabled: boolean) => void): () => void { + return settings.watchMultiple( [ 'Federation_Matrix_enabled', 'Federation_Matrix_id', diff --git a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/User.ts b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/User.ts index 4dd7ada4bad..8fce365db46 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/User.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/User.ts @@ -1,4 +1,4 @@ -import { IUser } from '@rocket.chat/core-typings'; +import type { IUser } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; import { MatrixBridgedUser } from '../../../../../models/server'; diff --git a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/converters/RoomSender.ts b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/converters/RoomSender.ts index e6a25fff9e1..70995de5460 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/converters/RoomSender.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/converters/RoomSender.ts @@ -1,4 +1,4 @@ -import { IMessage } from '@rocket.chat/core-typings'; +import type { IMessage } from '@rocket.chat/core-typings'; import { FederationAfterLeaveRoomDto, diff --git a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/hooks/index.ts b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/hooks/index.ts index d7e75c817ad..f25767f2215 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/hooks/index.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/hooks/index.ts @@ -1,9 +1,9 @@ -import { IRoom, IUser } from '@rocket.chat/core-typings'; +import type { IRoom, IUser } from '@rocket.chat/core-typings'; import { callbacks } from '../../../../../../lib/callbacks'; export class FederationHooks { - public static afterLeaveRoom(callback: Function): void { + public static afterLeaveRoom(callback: (user: IUser, room: IRoom) => void): void { callbacks.add( 'afterLeaveRoom', (user: IUser, room: IRoom | undefined): void => { @@ -17,7 +17,7 @@ export class FederationHooks { ); } - public static afterRemoveFromRoom(callback: Function): void { + public static afterRemoveFromRoom(callback: (removedUser: IUser, room: IRoom, userWhoRemoved: IUser) => void): void { callbacks.add( 'afterRemoveFromRoom', (params: { removedUser: IUser; userWhoRemoved: IUser }, room: IRoom | undefined): void => { @@ -31,7 +31,7 @@ export class FederationHooks { ); } - public static canAddTheUserToTheRoom(callback: Function): void { + public static canAddTheUserToTheRoom(callback: (user: string | IUser, room: IRoom) => void): void { callbacks.add( 'federation.beforeAddUserAToRoom', (params: { user: IUser | string }, room: IRoom): void => { @@ -42,7 +42,7 @@ export class FederationHooks { ); } - public static canAddUsersToTheRoom(callback: Function): void { + public static canAddUsersToTheRoom(callback: (user: IUser | string, inviter: IUser, room: IRoom) => void): void { callbacks.add( 'federation.beforeAddUserAToRoom', (params: { user: IUser | string; inviter: IUser }, room: IRoom): void => { @@ -53,7 +53,7 @@ export class FederationHooks { ); } - public static beforeCreateDirectMessage(callback: Function): void { + public static beforeCreateDirectMessage(callback: (members: IUser[]) => void): void { callbacks.add( 'federation.beforeCreateDirectMessage', (members: IUser[]): void => { diff --git a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/slash-commands/index.ts b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/slash-commands/index.ts index 2aa502c3ee8..f113a8f2acb 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/slash-commands/index.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/slash-commands/index.ts @@ -5,7 +5,7 @@ import { federationRoomServiceSender } from '../../..'; import { FederationRoomSenderConverter } from '../converters/RoomSender'; import { slashCommands } from '../../../../../utils/lib/slashCommand'; -const FEDERATION_COMMANDS: Record = { +const FEDERATION_COMMANDS: Record Promise> = { dm: async (currentUserId: string, roomId: string, invitee: string) => federationRoomServiceSender.createDirectMessageRoomAndInviteUser( FederationRoomSenderConverter.toCreateDirectMessageRoomDto(currentUserId, roomId, invitee), @@ -26,7 +26,7 @@ const executeSlashCommand = async ( providedCommand: string, stringParams: string | undefined, item: Record, - commands: Record, + commands: Record Promise>, ): Promise => { if (providedCommand !== 'federation' || !stringParams) { return; diff --git a/apps/meteor/app/federation/server/functions/helpers.ts b/apps/meteor/app/federation/server/functions/helpers.ts index 494934b6a18..3b354ecdf84 100644 --- a/apps/meteor/app/federation/server/functions/helpers.ts +++ b/apps/meteor/app/federation/server/functions/helpers.ts @@ -1,5 +1,5 @@ -import { IRoom, isDirectMessageRoom } from '@rocket.chat/core-typings'; -import type { ISubscription, IRegisterUser, IUser } from '@rocket.chat/core-typings'; +import { isDirectMessageRoom } from '@rocket.chat/core-typings'; +import type { ISubscription, IRegisterUser, IUser, IRoom } from '@rocket.chat/core-typings'; import { Settings } from '@rocket.chat/models'; import { Subscriptions, Users } from '../../../models/server'; diff --git a/apps/meteor/app/file-upload/server/lib/streamToBuffer.ts b/apps/meteor/app/file-upload/server/lib/streamToBuffer.ts index 09c13713a0d..110d364705f 100644 --- a/apps/meteor/app/file-upload/server/lib/streamToBuffer.ts +++ b/apps/meteor/app/file-upload/server/lib/streamToBuffer.ts @@ -1,4 +1,4 @@ -import { Readable } from 'stream'; +import type { Readable } from 'stream'; export const streamToBuffer = (stream: Readable): Promise => new Promise((resolve, reject) => { diff --git a/apps/meteor/app/file-upload/server/methods/sendFileMessage.ts b/apps/meteor/app/file-upload/server/methods/sendFileMessage.ts index 766b598955d..a3f6332f1cf 100644 --- a/apps/meteor/app/file-upload/server/methods/sendFileMessage.ts +++ b/apps/meteor/app/file-upload/server/methods/sendFileMessage.ts @@ -1,8 +1,7 @@ import { Meteor } from 'meteor/meteor'; import { Match, check } from 'meteor/check'; import _ from 'underscore'; -import { MessageAttachment, FileAttachmentProps } from '@rocket.chat/core-typings'; -import type { IUser } from '@rocket.chat/core-typings'; +import type { MessageAttachment, FileAttachmentProps, IUser } from '@rocket.chat/core-typings'; import { Rooms, Uploads } from '@rocket.chat/models'; import { callbacks } from '../../../../lib/callbacks'; @@ -63,7 +62,7 @@ Meteor.methods({ image_size: file.size, }; - if (file.identify && file.identify.size) { + if (file.identify?.size) { attachment.image_dimensions = file.identify.size; } diff --git a/apps/meteor/app/highlight-words/client/client.ts b/apps/meteor/app/highlight-words/client/client.ts index c3551f1f630..402d45e7b0b 100644 --- a/apps/meteor/app/highlight-words/client/client.ts +++ b/apps/meteor/app/highlight-words/client/client.ts @@ -1,4 +1,4 @@ -import { IMessage } from '@rocket.chat/core-typings'; +import type { IMessage } from '@rocket.chat/core-typings'; import { highlightWords, getRegexHighlight, getRegexHighlightUrl } from './helper'; diff --git a/apps/meteor/app/importer/server/classes/ImportDataConverter.ts b/apps/meteor/app/importer/server/classes/ImportDataConverter.ts index ff174cb2669..74eec85b942 100644 --- a/apps/meteor/app/importer/server/classes/ImportDataConverter.ts +++ b/apps/meteor/app/importer/server/classes/ImportDataConverter.ts @@ -15,7 +15,7 @@ import type { } from '@rocket.chat/core-typings'; import { ImportData as ImportDataRaw } from '@rocket.chat/models'; -import { IConversionCallbacks } from '../definitions/IConversionCallbacks'; +import type { IConversionCallbacks } from '../definitions/IConversionCallbacks'; import { Users, Rooms, Subscriptions, ImportData } from '../../../models/server'; import { generateUsernameSuggestion, insertMessage, saveUserIdentity, addUserToDefaultChannels } from '../../../lib/server'; import { setUserActiveStatus } from '../../../lib/server/functions/setUserActiveStatus'; @@ -283,7 +283,6 @@ export class ImportDataConverter { : Accounts.createUser({ username: userData.username, password, - // @ts-ignore joinDefaultChannelsSilenced: true, }); diff --git a/apps/meteor/app/katex/client/index.ts b/apps/meteor/app/katex/client/index.ts index 7baf7098d0c..93ba5b98459 100644 --- a/apps/meteor/app/katex/client/index.ts +++ b/apps/meteor/app/katex/client/index.ts @@ -3,7 +3,7 @@ import KatexPackage from 'katex'; import { unescapeHTML, escapeHTML } from '@rocket.chat/string-helpers'; import 'katex/dist/katex.min.css'; import './style.css'; -import { IMessage } from '@rocket.chat/core-typings'; +import type { IMessage } from '@rocket.chat/core-typings'; class Boundary { start: number; diff --git a/apps/meteor/app/lib/server/functions/attachMessage.ts b/apps/meteor/app/lib/server/functions/attachMessage.ts index a24dea87b19..946747b313c 100644 --- a/apps/meteor/app/lib/server/functions/attachMessage.ts +++ b/apps/meteor/app/lib/server/functions/attachMessage.ts @@ -1,5 +1,4 @@ -import type { IMessage, IRoom } from '@rocket.chat/core-typings'; -import { MessageAttachment } from '@rocket.chat/core-typings'; +import type { IMessage, IRoom, MessageAttachment } from '@rocket.chat/core-typings'; import { getUserAvatarURL } from '../../../utils/lib/getUserAvatarURL'; import { roomCoordinator } from '../../../../server/lib/rooms/roomCoordinator'; diff --git a/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts b/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts index 90df732bf4c..6c935ca2514 100644 --- a/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts +++ b/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts @@ -1,4 +1,4 @@ -import { FindCursor } from 'mongodb'; +import type { FindCursor } from 'mongodb'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import type { IMessage, IMessageDiscussion } from '@rocket.chat/core-typings'; diff --git a/apps/meteor/app/lib/server/functions/createDirectRoom.ts b/apps/meteor/app/lib/server/functions/createDirectRoom.ts index 4e01a366027..78bcfb780a6 100644 --- a/apps/meteor/app/lib/server/functions/createDirectRoom.ts +++ b/apps/meteor/app/lib/server/functions/createDirectRoom.ts @@ -1,17 +1,23 @@ import { AppsEngineException } from '@rocket.chat/apps-engine/definition/exceptions'; import { Meteor } from 'meteor/meteor'; import { Random } from 'meteor/random'; -import type { ICreatedRoom, IUser } from '@rocket.chat/core-typings'; +import type { ICreatedRoom, ISubscription, IUser } from '@rocket.chat/core-typings'; import { Subscriptions } from '@rocket.chat/models'; +import type { MatchKeysAndValues } from 'mongodb'; import { Users, Rooms } from '../../../models/server'; import { Apps } from '../../../apps/server'; import { callbacks } from '../../../../lib/callbacks'; import { settings } from '../../../settings/server'; import { getDefaultSubscriptionPref } from '../../../utils/server'; -import { ICreateRoomParams } from '../../../../server/sdk/types/IRoomService'; - -const generateSubscription = (fname: string, name: string, user: IUser, extra: {}): any => ({ +import type { ICreateRoomParams } from '../../../../server/sdk/types/IRoomService'; + +const generateSubscription = ( + fname: string, + name: string, + user: IUser, + extra: MatchKeysAndValues, +): MatchKeysAndValues => ({ _id: Random.id(), alert: false, unread: 0, diff --git a/apps/meteor/app/lib/server/functions/createRoom.ts b/apps/meteor/app/lib/server/functions/createRoom.ts index 28fcf4b13c0..1afe273ae13 100644 --- a/apps/meteor/app/lib/server/functions/createRoom.ts +++ b/apps/meteor/app/lib/server/functions/createRoom.ts @@ -2,8 +2,7 @@ import { AppsEngineException } from '@rocket.chat/apps-engine/definition/excepti import { Meteor } from 'meteor/meteor'; import _ from 'underscore'; import s from 'underscore.string'; -import type { ICreatedRoom, IUser } from '@rocket.chat/core-typings'; -import { IRoom, RoomType } from '@rocket.chat/core-typings'; +import type { ICreatedRoom, IUser, IRoom, RoomType } from '@rocket.chat/core-typings'; import { Apps } from '../../../apps/server'; import { addUserRoles } from '../../../../server/lib/roles/addUserRoles'; @@ -12,7 +11,7 @@ import { Messages, Rooms, Subscriptions, Users } from '../../../models/server'; import { getValidRoomName } from '../../../utils/server'; import { createDirectRoom } from './createDirectRoom'; import { Team } from '../../../../server/sdk'; -import { ICreateRoomParams, ISubscriptionExtraData } from '../../../../server/sdk/types/IRoomService'; +import type { ICreateRoomParams, ISubscriptionExtraData } from '../../../../server/sdk/types/IRoomService'; const isValidName = (name: unknown): name is string => { return typeof name === 'string' && s.trim(name).length > 0; diff --git a/apps/meteor/app/lib/server/functions/deleteUser.ts b/apps/meteor/app/lib/server/functions/deleteUser.ts index 568cfd37092..d80bfe7ad5d 100644 --- a/apps/meteor/app/lib/server/functions/deleteUser.ts +++ b/apps/meteor/app/lib/server/functions/deleteUser.ts @@ -1,6 +1,6 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; -import { FileProp } from '@rocket.chat/core-typings'; +import type { FileProp } from '@rocket.chat/core-typings'; import { Integrations, FederationServers, LivechatVisitors } from '@rocket.chat/models'; import { FileUpload } from '../../../file-upload/server'; diff --git a/apps/meteor/app/lib/server/functions/getRoomsWithSingleOwner.ts b/apps/meteor/app/lib/server/functions/getRoomsWithSingleOwner.ts index b525ac05e69..5d0badf48f7 100644 --- a/apps/meteor/app/lib/server/functions/getRoomsWithSingleOwner.ts +++ b/apps/meteor/app/lib/server/functions/getRoomsWithSingleOwner.ts @@ -1,4 +1,4 @@ -import { FindCursor } from 'mongodb'; +import type { FindCursor } from 'mongodb'; import type { IUser, ISubscription } from '@rocket.chat/core-typings'; import { subscriptionHasRole } from '../../../authorization/server'; diff --git a/apps/meteor/app/lib/server/functions/getUserSingleOwnedRooms.ts b/apps/meteor/app/lib/server/functions/getUserSingleOwnedRooms.ts index ba48c76e3e6..27f738e0aec 100644 --- a/apps/meteor/app/lib/server/functions/getUserSingleOwnedRooms.ts +++ b/apps/meteor/app/lib/server/functions/getUserSingleOwnedRooms.ts @@ -1,7 +1,7 @@ import type { IRoom } from '@rocket.chat/core-typings'; import { Rooms } from '../../../models/server'; -import { SubscribedRoomsForUserWithDetails } from './getRoomsWithSingleOwner'; +import type { SubscribedRoomsForUserWithDetails } from './getRoomsWithSingleOwner'; export const getUserSingleOwnedRooms = function (subscribedRooms: SubscribedRoomsForUserWithDetails[]): unknown { const roomsThatWillChangeOwner = subscribedRooms diff --git a/apps/meteor/app/lib/server/functions/relinquishRoomOwnerships.ts b/apps/meteor/app/lib/server/functions/relinquishRoomOwnerships.ts index fd113c83656..dea0942b945 100644 --- a/apps/meteor/app/lib/server/functions/relinquishRoomOwnerships.ts +++ b/apps/meteor/app/lib/server/functions/relinquishRoomOwnerships.ts @@ -2,7 +2,7 @@ import { Roles } from '@rocket.chat/models'; import { FileUpload } from '../../../file-upload/server'; import { Subscriptions, Messages, Rooms } from '../../../models/server'; -import { SubscribedRoomsForUserWithDetails } from './getRoomsWithSingleOwner'; +import type { SubscribedRoomsForUserWithDetails } from './getRoomsWithSingleOwner'; const bulkRoomCleanUp = (rids: string[]): unknown => { // no bulk deletion for files diff --git a/apps/meteor/app/lib/server/functions/setEmail.ts b/apps/meteor/app/lib/server/functions/setEmail.ts index 8ee0eef21ca..cc25ab97b64 100644 --- a/apps/meteor/app/lib/server/functions/setEmail.ts +++ b/apps/meteor/app/lib/server/functions/setEmail.ts @@ -54,7 +54,7 @@ const _setEmail = function (userId: string, email: string, shouldSendVerificatio const user = Users.findOneById(userId); // User already has desired username, return - if (user.emails && user.emails[0] && user.emails[0].address === email) { + if (user.emails?.[0] && user.emails[0].address === email) { return user; } @@ -66,7 +66,7 @@ const _setEmail = function (userId: string, email: string, shouldSendVerificatio }); } - const oldEmail = user.emails && user.emails[0]; + const oldEmail = user.emails?.[0]; if (oldEmail) { _sendEmailChangeNotification(oldEmail.address, email); diff --git a/apps/meteor/app/lib/server/lib/processDirectEmail.ts b/apps/meteor/app/lib/server/lib/processDirectEmail.ts index 0819f447562..2584b965c78 100644 --- a/apps/meteor/app/lib/server/lib/processDirectEmail.ts +++ b/apps/meteor/app/lib/server/lib/processDirectEmail.ts @@ -1,7 +1,7 @@ import { Meteor } from 'meteor/meteor'; import moment from 'moment'; -import { ParsedMail } from 'mailparser'; -import { IMessage, IRoom } from '@rocket.chat/core-typings'; +import type { ParsedMail } from 'mailparser'; +import type { IMessage, IRoom } from '@rocket.chat/core-typings'; import { settings } from '../../../settings/server'; import { Rooms, Messages, Users, Subscriptions } from '../../../models/server'; diff --git a/apps/meteor/app/lib/server/methods/deleteUserOwnAccount.ts b/apps/meteor/app/lib/server/methods/deleteUserOwnAccount.ts index 6640f3cca10..ac98e1ed6fb 100644 --- a/apps/meteor/app/lib/server/methods/deleteUserOwnAccount.ts +++ b/apps/meteor/app/lib/server/methods/deleteUserOwnAccount.ts @@ -34,7 +34,7 @@ Meteor.methods({ }); } - if (user.services && user.services.password && s.trim(user.services.password.bcrypt)) { + if (user.services?.password && s.trim(user.services.password.bcrypt)) { const result = Accounts._checkPassword(user, { digest: password.toLowerCase(), algorithm: 'sha-256', diff --git a/apps/meteor/app/lib/server/methods/setEmail.ts b/apps/meteor/app/lib/server/methods/setEmail.ts index 682f936defc..1afd397b022 100644 --- a/apps/meteor/app/lib/server/methods/setEmail.ts +++ b/apps/meteor/app/lib/server/methods/setEmail.ts @@ -22,7 +22,7 @@ Meteor.methods({ }); } - if (user.emails && user.emails[0] && user.emails[0].address === email) { + if (user.emails?.[0] && user.emails[0].address === email) { return email; } diff --git a/apps/meteor/app/lib/server/startup/settingsOnLoadSiteUrl.ts b/apps/meteor/app/lib/server/startup/settingsOnLoadSiteUrl.ts index 11983536c40..f80479d0d51 100644 --- a/apps/meteor/app/lib/server/startup/settingsOnLoadSiteUrl.ts +++ b/apps/meteor/app/lib/server/startup/settingsOnLoadSiteUrl.ts @@ -18,7 +18,7 @@ settings.watch('Site_Url', function (value) { } (global as any).__meteor_runtime_config__.ROOT_URL = value; - if (Meteor.absoluteUrl.defaultOptions && Meteor.absoluteUrl.defaultOptions.rootUrl) { + if (Meteor.absoluteUrl.defaultOptions?.rootUrl) { Meteor.absoluteUrl.defaultOptions.rootUrl = value; } diff --git a/apps/meteor/app/livechat/client/views/app/business-hours/BusinessHours.ts b/apps/meteor/app/livechat/client/views/app/business-hours/BusinessHours.ts index 6fcc8f052bf..0935ac7554e 100644 --- a/apps/meteor/app/livechat/client/views/app/business-hours/BusinessHours.ts +++ b/apps/meteor/app/livechat/client/views/app/business-hours/BusinessHours.ts @@ -1,6 +1,6 @@ import type { ILivechatBusinessHour } from '@rocket.chat/core-typings'; -import { IBusinessHourBehavior } from './IBusinessHourBehavior'; +import type { IBusinessHourBehavior } from './IBusinessHourBehavior'; import { SingleBusinessHourBehavior } from './Single'; class BusinessHoursManager { diff --git a/apps/meteor/app/livechat/client/views/app/business-hours/Single.ts b/apps/meteor/app/livechat/client/views/app/business-hours/Single.ts index 2841a27d7b7..1ce09a63d79 100644 --- a/apps/meteor/app/livechat/client/views/app/business-hours/Single.ts +++ b/apps/meteor/app/livechat/client/views/app/business-hours/Single.ts @@ -1,4 +1,4 @@ -import { IBusinessHourBehavior } from './IBusinessHourBehavior'; +import type { IBusinessHourBehavior } from './IBusinessHourBehavior'; export class SingleBusinessHourBehavior implements IBusinessHourBehavior { getView(): string { diff --git a/apps/meteor/app/livechat/client/voip.ts b/apps/meteor/app/livechat/client/voip.ts index 19643df6052..df9e7c249d5 100644 --- a/apps/meteor/app/livechat/client/voip.ts +++ b/apps/meteor/app/livechat/client/voip.ts @@ -1,7 +1,9 @@ import moment from 'moment'; -import { IMessage, isVoipMessage } from '@rocket.chat/core-typings'; +import type { IMessage } from '@rocket.chat/core-typings'; +import { isVoipMessage } from '@rocket.chat/core-typings'; -import { MessageTypes, MessageType } from '../../ui-utils/client'; +import type { MessageType } from '../../ui-utils/client'; +import { MessageTypes } from '../../ui-utils/client'; type IMessageFuncReturn = { comment: string } | { duration: string } | { reason: string }; diff --git a/apps/meteor/app/livechat/lib/messageTypes.ts b/apps/meteor/app/livechat/lib/messageTypes.ts index 096534d83b9..1ee3397af6e 100644 --- a/apps/meteor/app/livechat/lib/messageTypes.ts +++ b/apps/meteor/app/livechat/lib/messageTypes.ts @@ -2,7 +2,7 @@ import formatDistance from 'date-fns/formatDistance'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import moment from 'moment'; import { escapeHTML } from '@rocket.chat/string-helpers'; -import { IOmnichannelSystemMessage } from '@rocket.chat/core-typings'; +import type { IOmnichannelSystemMessage } from '@rocket.chat/core-typings'; import { MessageTypes } from '../../ui-utils/lib/MessageTypes'; diff --git a/apps/meteor/app/livechat/server/business-hour/AbstractBusinessHour.ts b/apps/meteor/app/livechat/server/business-hour/AbstractBusinessHour.ts index 205cd9e741f..874e27010a6 100644 --- a/apps/meteor/app/livechat/server/business-hour/AbstractBusinessHour.ts +++ b/apps/meteor/app/livechat/server/business-hour/AbstractBusinessHour.ts @@ -3,7 +3,7 @@ import type { ILivechatBusinessHour, ILivechatDepartment } from '@rocket.chat/co import type { ILivechatBusinessHoursModel, IUsersModel } from '@rocket.chat/model-typings'; import { LivechatBusinessHours, Users } from '@rocket.chat/models'; -import { IWorkHoursCronJobsWrapper } from '../../../../server/models/raw/LivechatBusinessHours'; +import type { IWorkHoursCronJobsWrapper } from '../../../../server/models/raw/LivechatBusinessHours'; export interface IBusinessHourBehavior { findHoursToCreateJobs(): Promise; diff --git a/apps/meteor/app/livechat/server/business-hour/BusinessHourManager.ts b/apps/meteor/app/livechat/server/business-hour/BusinessHourManager.ts index cf673dc0979..325fa4aaaf2 100644 --- a/apps/meteor/app/livechat/server/business-hour/BusinessHourManager.ts +++ b/apps/meteor/app/livechat/server/business-hour/BusinessHourManager.ts @@ -1,9 +1,9 @@ import moment from 'moment'; -import { ILivechatBusinessHour, LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; -import type { ICronJobs } from '@rocket.chat/core-typings'; +import { LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; +import type { ICronJobs, ILivechatBusinessHour } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; -import { IBusinessHourBehavior, IBusinessHourType } from './AbstractBusinessHour'; +import type { IBusinessHourBehavior, IBusinessHourType } from './AbstractBusinessHour'; import { settings } from '../../../settings/server'; import { callbacks } from '../../../../lib/callbacks'; @@ -135,7 +135,7 @@ export class BusinessHourManager { finish.forEach(({ day, times }) => this.scheduleCronJob(times, day, 'close', this.closeWorkHoursCallback)); } - private scheduleCronJob(items: string[], day: string, type: string, job: Function): void { + private scheduleCronJob(items: string[], day: string, type: string, job: (day: string, hour: string) => void): void { items.forEach((hour) => { const jobName = `${day}/${hour}/${type}`; const time = moment(hour, 'HH:mm'); diff --git a/apps/meteor/app/livechat/server/business-hour/Default.ts b/apps/meteor/app/livechat/server/business-hour/Default.ts index a94f12baecf..b62a687479a 100644 --- a/apps/meteor/app/livechat/server/business-hour/Default.ts +++ b/apps/meteor/app/livechat/server/business-hour/Default.ts @@ -1,7 +1,9 @@ import moment from 'moment-timezone'; -import { ILivechatBusinessHour, LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; +import type { ILivechatBusinessHour } from '@rocket.chat/core-typings'; +import { LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; -import { AbstractBusinessHourType, IBusinessHourType } from './AbstractBusinessHour'; +import type { IBusinessHourType } from './AbstractBusinessHour'; +import { AbstractBusinessHourType } from './AbstractBusinessHour'; interface IExtraProperties { timezoneName?: string; diff --git a/apps/meteor/app/livechat/server/business-hour/Helper.ts b/apps/meteor/app/livechat/server/business-hour/Helper.ts index 89c439606b0..f74a3f1847f 100644 --- a/apps/meteor/app/livechat/server/business-hour/Helper.ts +++ b/apps/meteor/app/livechat/server/business-hour/Helper.ts @@ -1,5 +1,6 @@ import moment from 'moment'; -import { ILivechatBusinessHour, LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; +import type { ILivechatBusinessHour } from '@rocket.chat/core-typings'; +import { LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; import { LivechatBusinessHours, Users } from '@rocket.chat/models'; import { createDefaultBusinessHourRow } from '../../../models/server/models/LivechatBusinessHours'; diff --git a/apps/meteor/app/livechat/server/business-hour/Single.ts b/apps/meteor/app/livechat/server/business-hour/Single.ts index 6ef82df0335..3dde98bead1 100644 --- a/apps/meteor/app/livechat/server/business-hour/Single.ts +++ b/apps/meteor/app/livechat/server/business-hour/Single.ts @@ -1,6 +1,7 @@ import { LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; -import { AbstractBusinessHourBehavior, IBusinessHourBehavior } from './AbstractBusinessHour'; +import type { IBusinessHourBehavior } from './AbstractBusinessHour'; +import { AbstractBusinessHourBehavior } from './AbstractBusinessHour'; import { openBusinessHourDefault } from './Helper'; export class SingleBusinessHourBehavior extends AbstractBusinessHourBehavior implements IBusinessHourBehavior { diff --git a/apps/meteor/app/livechat/server/lib/Contacts.ts b/apps/meteor/app/livechat/server/lib/Contacts.ts index 45fbf828fdb..0564bded2b9 100644 --- a/apps/meteor/app/livechat/server/lib/Contacts.ts +++ b/apps/meteor/app/livechat/server/lib/Contacts.ts @@ -1,9 +1,9 @@ import { check } from 'meteor/check'; import { Meteor } from 'meteor/meteor'; import s from 'underscore.string'; -import { MatchKeysAndValues, OnlyFieldsOfType } from 'mongodb'; +import type { MatchKeysAndValues, OnlyFieldsOfType } from 'mongodb'; import { LivechatVisitors, Users, LivechatRooms } from '@rocket.chat/models'; -import { ILivechatCustomField, ILivechatVisitor, IOmnichannelRoom } from '@rocket.chat/core-typings'; +import type { ILivechatCustomField, ILivechatVisitor, IOmnichannelRoom } from '@rocket.chat/core-typings'; import { LivechatCustomField, Rooms, LivechatInquiry, Subscriptions } from '../../../models/server'; diff --git a/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts b/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts index dc1a1a6cbc8..3ab3c37843d 100644 --- a/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts +++ b/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts @@ -1,6 +1,6 @@ import type { IUser, IOmnichannelRoom } from '@rocket.chat/core-typings'; -import { IAuthorizationLivechat } from '../../../server/sdk/types/IAuthorizationLivechat'; +import type { IAuthorizationLivechat } from '../../../server/sdk/types/IAuthorizationLivechat'; import { ServiceClassInternal } from '../../../server/sdk/types/ServiceClass'; import { validators } from './roomAccessValidator.compatibility'; diff --git a/apps/meteor/app/livechat/server/statistics/LivechatAgentActivityMonitor.ts b/apps/meteor/app/livechat/server/statistics/LivechatAgentActivityMonitor.ts index 7379376a7a7..e44536e9f03 100644 --- a/apps/meteor/app/livechat/server/statistics/LivechatAgentActivityMonitor.ts +++ b/apps/meteor/app/livechat/server/statistics/LivechatAgentActivityMonitor.ts @@ -1,5 +1,5 @@ import moment from 'moment'; -import { ISocketConnection } from '@rocket.chat/core-typings'; +import type { ISocketConnection } from '@rocket.chat/core-typings'; import { Meteor } from 'meteor/meteor'; import { SyncedCron } from 'meteor/littledata:synced-cron'; import { LivechatAgentActivity, Sessions } from '@rocket.chat/models'; diff --git a/apps/meteor/app/livestream/client/tabBar.tsx b/apps/meteor/app/livestream/client/tabBar.tsx index 8d81cf78a91..eb4eb766784 100644 --- a/apps/meteor/app/livestream/client/tabBar.tsx +++ b/apps/meteor/app/livestream/client/tabBar.tsx @@ -1,4 +1,5 @@ -import React, { ReactNode, useMemo } from 'react'; +import type { ReactNode } from 'react'; +import React, { useMemo } from 'react'; import { Option, Badge } from '@rocket.chat/fuselage'; import { useSetting, useTranslation } from '@rocket.chat/ui-contexts'; import { isRoomFederated } from '@rocket.chat/core-typings'; diff --git a/apps/meteor/app/mail-messages/server/functions/sendMail.ts b/apps/meteor/app/mail-messages/server/functions/sendMail.ts index 3f0fad8185c..cec6b8c6d1c 100644 --- a/apps/meteor/app/mail-messages/server/functions/sendMail.ts +++ b/apps/meteor/app/mail-messages/server/functions/sendMail.ts @@ -3,7 +3,7 @@ import { EJSON } from 'meteor/ejson'; import { FlowRouter } from 'meteor/kadira:flow-router'; import { escapeHTML } from '@rocket.chat/string-helpers'; import type { Filter } from 'mongodb'; -import { IUser } from '@rocket.chat/core-typings'; +import type { IUser } from '@rocket.chat/core-typings'; import { placeholders } from '../../../utils/server'; import { SystemLogger } from '../../../../server/lib/logger/system'; diff --git a/apps/meteor/app/message-star/client/actionButton.ts b/apps/meteor/app/message-star/client/actionButton.ts index 981fce06dc5..857f462eb27 100644 --- a/apps/meteor/app/message-star/client/actionButton.ts +++ b/apps/meteor/app/message-star/client/actionButton.ts @@ -59,7 +59,7 @@ Meteor.startup(function () { return false; } - return Boolean(message.starred && message.starred.find((star: any) => star._id === user._id)); + return Boolean(message.starred?.find((star: any) => star._id === user._id)); }, order: 9, group: 'menu', @@ -98,7 +98,7 @@ Meteor.startup(function () { return false; } - return Boolean(message.starred && message.starred.find((star) => star._id === user._id)); + return Boolean(message.starred?.find((star) => star._id === user._id)); }, order: 100, group: ['message', 'menu'], @@ -121,7 +121,7 @@ Meteor.startup(function () { return false; } - return Boolean(message.starred && message.starred.find((star) => star._id === user._id)); + return Boolean(message.starred?.find((star) => star._id === user._id)); }, order: 101, group: 'menu', diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/SAML.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/SAML.ts index a9c208c9e46..b9c07943bf2 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/SAML.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/SAML.ts @@ -1,4 +1,4 @@ -import { ServerResponse } from 'http'; +import type { ServerResponse } from 'http'; import { Meteor } from 'meteor/meteor'; import { Random } from 'meteor/random'; @@ -6,16 +6,16 @@ import { Accounts } from 'meteor/accounts-base'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import fiber from 'fibers'; import { escapeRegExp, escapeHTML } from '@rocket.chat/string-helpers'; -import { IUser, IIncomingMessage } from '@rocket.chat/core-typings'; +import type { IUser, IIncomingMessage } from '@rocket.chat/core-typings'; import { CredentialTokens } from '@rocket.chat/models'; import { settings } from '../../../settings/server'; import { Users, Rooms } from '../../../models/server'; import { saveUserIdentity, createRoom, generateUsernameSuggestion, addUserToRoom } from '../../../lib/server/functions'; import { SAMLServiceProvider } from './ServiceProvider'; -import { IServiceProviderOptions } from '../definition/IServiceProviderOptions'; -import { ISAMLAction } from '../definition/ISAMLAction'; -import { ISAMLUser } from '../definition/ISAMLUser'; +import type { IServiceProviderOptions } from '../definition/IServiceProviderOptions'; +import type { ISAMLAction } from '../definition/ISAMLAction'; +import type { ISAMLUser } from '../definition/ISAMLUser'; import { SAMLUtils } from './Utils'; import { SystemLogger } from '../../../../server/lib/logger/system'; import { ensureArray } from '../../../../lib/utils/arrayUtils'; diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/ServiceProvider.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/ServiceProvider.ts index a6adefb97cd..b554195887c 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/ServiceProvider.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/ServiceProvider.ts @@ -12,10 +12,10 @@ import { ServiceProviderMetadata } from './generators/ServiceProviderMetadata'; import { LogoutRequestParser } from './parsers/LogoutRequest'; import { LogoutResponseParser } from './parsers/LogoutResponse'; import { ResponseParser } from './parsers/Response'; -import { IServiceProviderOptions } from '../definition/IServiceProviderOptions'; -import { ISAMLRequest } from '../definition/ISAMLRequest'; -import { ILogoutResponse } from '../definition/ILogoutResponse'; -import { ILogoutRequestValidateCallback, ILogoutResponseValidateCallback, IResponseValidateCallback } from '../definition/callbacks'; +import type { IServiceProviderOptions } from '../definition/IServiceProviderOptions'; +import type { ISAMLRequest } from '../definition/ISAMLRequest'; +import type { ILogoutResponse } from '../definition/ILogoutResponse'; +import type { ILogoutRequestValidateCallback, ILogoutResponseValidateCallback, IResponseValidateCallback } from '../definition/callbacks'; export class SAMLServiceProvider { serviceProviderOptions: IServiceProviderOptions; diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/Utils.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/Utils.ts index 2461e4d73b6..f21ac4ef981 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/Utils.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/Utils.ts @@ -3,12 +3,12 @@ import { EventEmitter } from 'events'; import _ from 'underscore'; -import { IServiceProviderOptions } from '../definition/IServiceProviderOptions'; -import { ISAMLUser } from '../definition/ISAMLUser'; -import { ISAMLGlobalSettings } from '../definition/ISAMLGlobalSettings'; -import { IUserDataMap, IAttributeMapping } from '../definition/IAttributeMapping'; +import type { IServiceProviderOptions } from '../definition/IServiceProviderOptions'; +import type { ISAMLUser } from '../definition/ISAMLUser'; +import type { ISAMLGlobalSettings } from '../definition/ISAMLGlobalSettings'; +import type { IUserDataMap, IAttributeMapping } from '../definition/IAttributeMapping'; import { StatusCode } from './constants'; -import { Logger } from '../../../../server/lib/logger/Logger'; +import type { Logger } from '../../../../server/lib/logger/Logger'; import { ensureArray } from '../../../../lib/utils/arrayUtils'; let providerList: Array = []; diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/generators/AuthorizeRequest.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/generators/AuthorizeRequest.ts index 231733b6037..6b5f9d912e5 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/generators/AuthorizeRequest.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/generators/AuthorizeRequest.ts @@ -6,9 +6,9 @@ import { defaultNameIDTemplate, defaultAuthnContextTemplate, } from '../constants'; -import { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; -import { ISAMLRequest } from '../../definition/ISAMLRequest'; -import { IAuthorizeRequestVariables } from '../../definition/IAuthorizeRequestVariables'; +import type { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; +import type { ISAMLRequest } from '../../definition/ISAMLRequest'; +import type { IAuthorizeRequestVariables } from '../../definition/IAuthorizeRequestVariables'; /* An Authorize Request is used to show the Identity Provider login form when the user clicks on the Rocket.Chat SAML login button diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/generators/LogoutRequest.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/generators/LogoutRequest.ts index ff89262fb9f..09ab4aab4dc 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/generators/LogoutRequest.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/generators/LogoutRequest.ts @@ -1,8 +1,8 @@ import { SAMLUtils } from '../Utils'; import { defaultIdentifierFormat, defaultLogoutRequestTemplate } from '../constants'; -import { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; -import { ISAMLRequest } from '../../definition/ISAMLRequest'; -import { ILogoutRequestVariables } from '../../definition/ILogoutRequestVariables'; +import type { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; +import type { ISAMLRequest } from '../../definition/ISAMLRequest'; +import type { ILogoutRequestVariables } from '../../definition/ILogoutRequestVariables'; /* A Logout Request is used when the user is logged out of Rocket.Chat and the Service Provider is configured to also logout from the Identity Provider. diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/generators/LogoutResponse.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/generators/LogoutResponse.ts index 93cc9a97b84..9504376f7bf 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/generators/LogoutResponse.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/generators/LogoutResponse.ts @@ -1,8 +1,8 @@ import { SAMLUtils } from '../Utils'; import { defaultLogoutResponseTemplate, defaultIdentifierFormat } from '../constants'; -import { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; -import { ILogoutResponse } from '../../definition/ILogoutResponse'; -import { ILogoutResponseVariables } from '../../definition/ILogoutResponseVariables'; +import type { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; +import type { ILogoutResponse } from '../../definition/ILogoutResponse'; +import type { ILogoutResponseVariables } from '../../definition/ILogoutResponseVariables'; /* A Logout Response is used when the Identity Provider (IdP) sends us a Logout Request. diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/generators/ServiceProviderMetadata.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/generators/ServiceProviderMetadata.ts index 149ed11dade..47bca793340 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/generators/ServiceProviderMetadata.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/generators/ServiceProviderMetadata.ts @@ -2,8 +2,8 @@ import { Meteor } from 'meteor/meteor'; import { defaultIdentifierFormat, defaultMetadataCertificateTemplate, defaultMetadataTemplate } from '../constants'; import { SAMLUtils } from '../Utils'; -import { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; -import { IMetadataVariables } from '../../definition/IMetadataVariables'; +import type { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; +import type { IMetadataVariables } from '../../definition/IMetadataVariables'; /* The metadata will be available at the following url: diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutRequest.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutRequest.ts index 35eb9d9a92b..2996fd47e9b 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutRequest.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutRequest.ts @@ -1,8 +1,8 @@ import xmldom from '@xmldom/xmldom'; import { SAMLUtils } from '../Utils'; -import { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; -import { ILogoutRequestValidateCallback } from '../../definition/callbacks'; +import type { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; +import type { ILogoutRequestValidateCallback } from '../../definition/callbacks'; export class LogoutRequestParser { serviceProviderOptions: IServiceProviderOptions; diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutResponse.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutResponse.ts index a34c2244876..42d88f4ef85 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutResponse.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutResponse.ts @@ -1,8 +1,8 @@ import xmldom from '@xmldom/xmldom'; import { SAMLUtils } from '../Utils'; -import { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; -import { ILogoutResponseValidateCallback } from '../../definition/callbacks'; +import type { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; +import type { ILogoutResponseValidateCallback } from '../../definition/callbacks'; export class LogoutResponseParser { serviceProviderOptions: IServiceProviderOptions; diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/Response.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/Response.ts index c554df00c9f..93c81c579f2 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/Response.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/Response.ts @@ -4,9 +4,9 @@ import xmlCrypto from 'xml-crypto'; import { SAMLUtils } from '../Utils'; import { StatusCode } from '../constants'; -import { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; -import { IResponseValidateCallback } from '../../definition/callbacks'; -import { ISAMLAssertion } from '../../definition/ISAMLAssertion'; +import type { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; +import type { IResponseValidateCallback } from '../../definition/callbacks'; +import type { ISAMLAssertion } from '../../definition/ISAMLAssertion'; type XmlParent = Element | Document; @@ -287,9 +287,9 @@ export class ResponseParser { const sig = new xmlCrypto.SignedXml(); sig.keyInfoProvider = { - getKeyInfo: (/* key*/): string => '', - // @ts-ignore - the definition file must be wrong - getKey: (/* keyInfo*/): string => SAMLUtils.certToPEM(cert), + file: '', + getKeyInfo: () => '', + getKey: () => Buffer.from(SAMLUtils.certToPEM(cert)), }; sig.loadSignature(signature); diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts index 34a1c1c7c09..671856bb631 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts @@ -3,7 +3,7 @@ import { ServiceConfiguration } from 'meteor/service-configuration'; import { settings, settingsRegistry } from '../../../settings/server'; import { SystemLogger } from '../../../../server/lib/logger/system'; -import { IServiceProviderOptions } from '../definition/IServiceProviderOptions'; +import type { IServiceProviderOptions } from '../definition/IServiceProviderOptions'; import { SAMLUtils } from './Utils'; import { defaultAuthnContextTemplate, diff --git a/apps/meteor/app/meteor-accounts-saml/server/listener.ts b/apps/meteor/app/meteor-accounts-saml/server/listener.ts index ec34ccb5020..9a6995d87a8 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/listener.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/listener.ts @@ -1,16 +1,16 @@ -import { IncomingMessage, ServerResponse } from 'http'; +import type { IncomingMessage, ServerResponse } from 'http'; import { Meteor } from 'meteor/meteor'; import { WebApp } from 'meteor/webapp'; import { RoutePolicy } from 'meteor/routepolicy'; import bodyParser from 'body-parser'; import fiber from 'fibers'; -import { IIncomingMessage } from '@rocket.chat/core-typings'; +import type { IIncomingMessage } from '@rocket.chat/core-typings'; import { SystemLogger } from '../../../server/lib/logger/system'; import { SAML } from './lib/SAML'; import { SAMLUtils } from './lib/Utils'; -import { ISAMLAction } from './definition/ISAMLAction'; +import type { ISAMLAction } from './definition/ISAMLAction'; RoutePolicy.declare('/_saml/', 'network'); diff --git a/apps/meteor/app/meteor-accounts-saml/server/loginHandler.ts b/apps/meteor/app/meteor-accounts-saml/server/loginHandler.ts index f07e6b0616a..81aa390c9cf 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/loginHandler.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/loginHandler.ts @@ -8,7 +8,6 @@ import { SystemLogger } from '../../../server/lib/logger/system'; const makeError = (message: string): Record => ({ type: 'saml', - // @ts-ignore - LoginCancelledError does in fact exist error: new Meteor.Error(Accounts.LoginCancelledError.numericError, message), }); diff --git a/apps/meteor/app/meteor-accounts-saml/server/methods/samlLogout.ts b/apps/meteor/app/meteor-accounts-saml/server/methods/samlLogout.ts index 680f9c64a73..9ca9e625599 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/methods/samlLogout.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/methods/samlLogout.ts @@ -3,7 +3,7 @@ import { Meteor } from 'meteor/meteor'; import { Users } from '../../../models/server'; import { SAMLServiceProvider } from '../lib/ServiceProvider'; import { SAMLUtils } from '../lib/Utils'; -import { IServiceProviderOptions } from '../definition/IServiceProviderOptions'; +import type { IServiceProviderOptions } from '../definition/IServiceProviderOptions'; /** * Fetch SAML provider configs for given 'provider'. diff --git a/apps/meteor/app/metrics/server/lib/collectMetrics.ts b/apps/meteor/app/metrics/server/lib/collectMetrics.ts index 84b6319f0e9..793b7e4d319 100644 --- a/apps/meteor/app/metrics/server/lib/collectMetrics.ts +++ b/apps/meteor/app/metrics/server/lib/collectMetrics.ts @@ -167,7 +167,7 @@ const updatePrometheusConfig = async (): Promise => { resetTimer = Meteor.setInterval(() => { client.register.getMetricsAsArray().then((metrics) => { metrics.forEach((metric) => { - // @ts-expect-error + // @ts-expect-error Property 'hashMap' does not exist on type 'metric'. metric.hashMap = {}; }); }); diff --git a/apps/meteor/app/models/server/models/LivechatBusinessHours.ts b/apps/meteor/app/models/server/models/LivechatBusinessHours.ts index ef455cb4a27..08779168cc8 100644 --- a/apps/meteor/app/models/server/models/LivechatBusinessHours.ts +++ b/apps/meteor/app/models/server/models/LivechatBusinessHours.ts @@ -1,6 +1,7 @@ import moment from 'moment-timezone'; import { ObjectId } from 'mongodb'; -import { ILivechatBusinessHour, LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; +import type { ILivechatBusinessHour } from '@rocket.chat/core-typings'; +import { LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; import { Base } from './_Base'; diff --git a/apps/meteor/app/models/server/models/LivechatInquiry.ts b/apps/meteor/app/models/server/models/LivechatInquiry.ts index 49126d4fce0..a7d52cb97bd 100644 --- a/apps/meteor/app/models/server/models/LivechatInquiry.ts +++ b/apps/meteor/app/models/server/models/LivechatInquiry.ts @@ -1,5 +1,5 @@ -import { ILivechatInquiryRecord } from '@rocket.chat/core-typings'; -import { FindOptions, FindCursor, UpdateResult, DeleteResult } from 'mongodb'; +import type { ILivechatInquiryRecord } from '@rocket.chat/core-typings'; +import type { FindOptions, FindCursor, UpdateResult, DeleteResult } from 'mongodb'; import { Base } from './_Base'; diff --git a/apps/meteor/app/notification-queue/server/NotificationQueue.ts b/apps/meteor/app/notification-queue/server/NotificationQueue.ts index d46f261f014..bccd6500103 100644 --- a/apps/meteor/app/notification-queue/server/NotificationQueue.ts +++ b/apps/meteor/app/notification-queue/server/NotificationQueue.ts @@ -1,6 +1,5 @@ import { Meteor } from 'meteor/meteor'; -import { INotification, INotificationItemPush, INotificationItemEmail, NotificationItem } from '@rocket.chat/core-typings'; -import type { IUser } from '@rocket.chat/core-typings'; +import type { INotification, INotificationItemPush, INotificationItemEmail, NotificationItem, IUser } from '@rocket.chat/core-typings'; import { NotificationQueue, Users } from '@rocket.chat/models'; import { sendEmailFromData } from '../../lib/server/functions/notifications/email'; diff --git a/apps/meteor/app/notifications/server/lib/Presence.ts b/apps/meteor/app/notifications/server/lib/Presence.ts index f6746ccbbbc..a1ce0fc637a 100644 --- a/apps/meteor/app/notifications/server/lib/Presence.ts +++ b/apps/meteor/app/notifications/server/lib/Presence.ts @@ -46,7 +46,7 @@ export class UserPresence { run = (args: UserPresenceStreamArgs): void => { const payload = this.streamer.changedPayload(this.streamer.subscriptionName, args.uid, { ...args, eventName: args.uid }); // there is no good explanation to keep eventName, I just want to save one 'DDPCommon.parseDDP' on the client side, so I'm trying to fit the Meteor Streamer's payload - (this.publication as any)._session.socket.send(payload); + if (payload) this.publication._session.socket?.send(payload); }; stop(): void { diff --git a/apps/meteor/app/oauth2-server-config/server/oauth/oauth2-server.ts b/apps/meteor/app/oauth2-server-config/server/oauth/oauth2-server.ts index d9bc82b5007..22ba09f5002 100644 --- a/apps/meteor/app/oauth2-server-config/server/oauth/oauth2-server.ts +++ b/apps/meteor/app/oauth2-server-config/server/oauth/oauth2-server.ts @@ -2,8 +2,8 @@ import { Meteor } from 'meteor/meteor'; import { Mongo } from 'meteor/mongo'; import { WebApp } from 'meteor/webapp'; import { OAuth2Server } from 'meteor/rocketchat:oauth2-server'; -import { Request, Response } from 'express'; -import { IUser } from '@rocket.chat/core-typings'; +import type { Request, Response } from 'express'; +import type { IUser } from '@rocket.chat/core-typings'; import { OAuthApps } from '@rocket.chat/models'; import { Users } from '../../../models/server'; diff --git a/apps/meteor/app/oembed/server/jumpToMessage.ts b/apps/meteor/app/oembed/server/jumpToMessage.ts index a1112939a67..d4b492a5d82 100644 --- a/apps/meteor/app/oembed/server/jumpToMessage.ts +++ b/apps/meteor/app/oembed/server/jumpToMessage.ts @@ -3,7 +3,8 @@ import QueryString from 'querystring'; import { Meteor } from 'meteor/meteor'; import _ from 'underscore'; -import { ITranslatedMessage, MessageAttachment, isQuoteAttachment } from '@rocket.chat/core-typings'; +import type { ITranslatedMessage, MessageAttachment } from '@rocket.chat/core-typings'; +import { isQuoteAttachment } from '@rocket.chat/core-typings'; import { Messages, Rooms, Users } from '../../models/server'; import { settings } from '../../settings/server'; @@ -89,7 +90,7 @@ callbacks.add( author_name: jumpToMessage.alias || jumpToMessage.u.username, author_icon: getUserAvatarURL(jumpToMessage.u.username), message_link: item.url, - // @ts-expect-error + // @ts-expect-error Type 'MessageAttachment[]' is not assignable to type 'MessageQuoteAttachment[]'. attachments: jumpToMessage.attachments || [], ts: jumpToMessage.ts, }); diff --git a/apps/meteor/app/oembed/server/providers.ts b/apps/meteor/app/oembed/server/providers.ts index fae14bfa0a9..7a8e56476da 100644 --- a/apps/meteor/app/oembed/server/providers.ts +++ b/apps/meteor/app/oembed/server/providers.ts @@ -3,7 +3,7 @@ import QueryString from 'querystring'; import { camelCase } from 'change-case'; import _ from 'underscore'; -import { OEmbedMeta, OEmbedUrlContent, ParsedUrl, OEmbedProvider } from '@rocket.chat/core-typings'; +import type { OEmbedMeta, OEmbedUrlContent, ParsedUrl, OEmbedProvider } from '@rocket.chat/core-typings'; import { callbacks } from '../../../lib/callbacks'; import { SystemLogger } from '../../../server/lib/logger/system'; diff --git a/apps/meteor/app/oembed/server/server.ts b/apps/meteor/app/oembed/server/server.ts index 3b5b5427a4b..1e565386094 100644 --- a/apps/meteor/app/oembed/server/server.ts +++ b/apps/meteor/app/oembed/server/server.ts @@ -7,15 +7,8 @@ import iconv from 'iconv-lite'; import ipRangeCheck from 'ip-range-check'; import he from 'he'; import jschardet from 'jschardet'; -import { - OEmbedUrlContentResult, - OEmbedUrlWithMetadata, - IMessage, - MessageAttachment, - isOEmbedUrlContentResult, - isOEmbedUrlWithMetadata, - OEmbedMeta, -} from '@rocket.chat/core-typings'; +import type { OEmbedUrlContentResult, OEmbedUrlWithMetadata, IMessage, MessageAttachment, OEmbedMeta } from '@rocket.chat/core-typings'; +import { isOEmbedUrlContentResult, isOEmbedUrlWithMetadata } from '@rocket.chat/core-typings'; import { OEmbedCache } from '@rocket.chat/models'; import { Logger } from '../../logger/server'; @@ -316,7 +309,7 @@ const rocketUrlParser = async function (message: IMessage): Promise { } if (isOEmbedUrlWithMetadata(data) && data.meta != null) { item.meta = getRelevantMetaTags(data.meta) || {}; - if (item.meta && item.meta.oembedHtml) { + if (item.meta?.oembedHtml) { item.meta.oembedHtml = insertMaxWidthInOembedHtml(item.meta.oembedHtml) || ''; } } diff --git a/apps/meteor/app/push-notifications/server/lib/PushNotification.ts b/apps/meteor/app/push-notifications/server/lib/PushNotification.ts index 51c57666992..da3357514c2 100644 --- a/apps/meteor/app/push-notifications/server/lib/PushNotification.ts +++ b/apps/meteor/app/push-notifications/server/lib/PushNotification.ts @@ -1,5 +1,5 @@ import { Meteor } from 'meteor/meteor'; -import { IMessage, IPushNotificationConfig, IRoom, IUser } from '@rocket.chat/core-typings'; +import type { IMessage, IPushNotificationConfig, IRoom, IUser } from '@rocket.chat/core-typings'; import { Push } from '../../../push/server'; import { settings } from '../../../settings/server'; diff --git a/apps/meteor/app/retention-policy/server/cronPruneMessages.ts b/apps/meteor/app/retention-policy/server/cronPruneMessages.ts index 1d4ce3169bf..757e321c007 100644 --- a/apps/meteor/app/retention-policy/server/cronPruneMessages.ts +++ b/apps/meteor/app/retention-policy/server/cronPruneMessages.ts @@ -1,14 +1,10 @@ import { SyncedCron } from 'meteor/littledata:synced-cron'; -import { IRoomWithRetentionPolicy } from '@rocket.chat/core-typings'; +import type { IRoomWithRetentionPolicy } from '@rocket.chat/core-typings'; import { settings } from '../../settings/server'; import { Rooms } from '../../models/server'; import { cleanRoomHistory } from '../../lib/server'; -interface IParser { - cron(val: string): string; -} - const maxTimes = { c: 0, p: 0, @@ -88,12 +84,10 @@ function getSchedule(precision: '0' | '1' | '2' | '3'): string { const pruneCronName = 'Prune old messages by retention policy'; function deployCron(precision: string): void { - const schedule = (parser: IParser): string => parser.cron(precision); - SyncedCron.remove(pruneCronName); SyncedCron.add({ name: pruneCronName, - schedule, + schedule: (parser) => parser.cron(precision), job, }); } diff --git a/apps/meteor/app/settings/client/lib/settings.ts b/apps/meteor/app/settings/client/lib/settings.ts index 11872cdfdcd..23a460228cc 100644 --- a/apps/meteor/app/settings/client/lib/settings.ts +++ b/apps/meteor/app/settings/client/lib/settings.ts @@ -1,6 +1,6 @@ import { Meteor } from 'meteor/meteor'; import { ReactiveDict } from 'meteor/reactive-dict'; -import { SettingValue } from '@rocket.chat/core-typings'; +import type { SettingValue } from '@rocket.chat/core-typings'; import { PublicSettingsCachedCollection } from '../../../../client/lib/settings/PublicSettingsCachedCollection'; import { SettingsBase } from '../../lib/settings'; diff --git a/apps/meteor/app/settings/lib/settings.ts b/apps/meteor/app/settings/lib/settings.ts index bfa6ce2eabb..97f7c0ef14d 100644 --- a/apps/meteor/app/settings/lib/settings.ts +++ b/apps/meteor/app/settings/lib/settings.ts @@ -1,6 +1,6 @@ import { Meteor } from 'meteor/meteor'; import _ from 'underscore'; -import { SettingValue } from '@rocket.chat/core-typings'; +import type { SettingValue } from '@rocket.chat/core-typings'; export type SettingComposedValue = { key: string; value: T }; export type SettingCallback = (key: string, value: SettingValue, initialLoad?: boolean) => void; @@ -76,7 +76,7 @@ export class SettingsBase { }, []); } - return Meteor.settings && Meteor.settings[_id]; + return Meteor.settings?.[_id]; } set(_id: string, value: SettingValue, callback: () => void): void { diff --git a/apps/meteor/app/settings/server/CachedSettings.ts b/apps/meteor/app/settings/server/CachedSettings.ts index d9657378151..c270f3beaa3 100644 --- a/apps/meteor/app/settings/server/CachedSettings.ts +++ b/apps/meteor/app/settings/server/CachedSettings.ts @@ -1,6 +1,6 @@ import { Emitter } from '@rocket.chat/emitter'; import _ from 'underscore'; -import { ISetting, SettingValue } from '@rocket.chat/core-typings'; +import type { ISetting, SettingValue } from '@rocket.chat/core-typings'; import { SystemLogger } from '../../../server/lib/logger/system'; diff --git a/apps/meteor/app/settings/server/SettingsRegistry.ts b/apps/meteor/app/settings/server/SettingsRegistry.ts index 71ae504a68b..38daa398c31 100644 --- a/apps/meteor/app/settings/server/SettingsRegistry.ts +++ b/apps/meteor/app/settings/server/SettingsRegistry.ts @@ -1,7 +1,7 @@ import { Emitter } from '@rocket.chat/emitter'; import { isEqual } from 'underscore'; -import { ISetting, ISettingGroup, isSettingEnterprise, SettingValue } from '@rocket.chat/core-typings'; -import { Settings } from '@rocket.chat/models'; +import type { ISetting, ISettingGroup, SettingValue } from '@rocket.chat/core-typings'; +import { isSettingEnterprise } from '@rocket.chat/core-typings'; import type { ISettingsModel } from '@rocket.chat/model-typings'; import { SystemLogger } from '../../../server/lib/logger/system'; @@ -90,7 +90,7 @@ export class SettingsRegistry { private _sorter: { [key: string]: number } = {}; - constructor({ store, model }: { store: ICachedSettings; model: typeof Settings }) { + constructor({ store, model }: { store: ICachedSettings; model: ISettingsModel }) { this.store = store; this.model = model; } diff --git a/apps/meteor/app/settings/server/functions/convertValue.ts b/apps/meteor/app/settings/server/functions/convertValue.ts index 14b40b60df3..4202827b3aa 100644 --- a/apps/meteor/app/settings/server/functions/convertValue.ts +++ b/apps/meteor/app/settings/server/functions/convertValue.ts @@ -1,4 +1,4 @@ -import { ISetting, SettingValue } from '@rocket.chat/core-typings'; +import type { ISetting, SettingValue } from '@rocket.chat/core-typings'; export const convertValue = (value: 'true' | 'false' | string, type: ISetting['type']): SettingValue => { if (value.toLowerCase() === 'true') { diff --git a/apps/meteor/app/settings/server/functions/getSettingDefaults.ts b/apps/meteor/app/settings/server/functions/getSettingDefaults.ts index de9115cf555..fd2ad582774 100644 --- a/apps/meteor/app/settings/server/functions/getSettingDefaults.ts +++ b/apps/meteor/app/settings/server/functions/getSettingDefaults.ts @@ -1,4 +1,5 @@ -import { ISetting, ISettingColor, isSettingColor } from '@rocket.chat/core-typings'; +import type { ISetting, ISettingColor } from '@rocket.chat/core-typings'; +import { isSettingColor } from '@rocket.chat/core-typings'; export const getSettingDefaults = ( setting: Partial & Pick, diff --git a/apps/meteor/app/settings/server/functions/settings.mocks.ts b/apps/meteor/app/settings/server/functions/settings.mocks.ts index 59c47715d80..66300ce638e 100644 --- a/apps/meteor/app/settings/server/functions/settings.mocks.ts +++ b/apps/meteor/app/settings/server/functions/settings.mocks.ts @@ -1,7 +1,7 @@ import mock from 'mock-require'; import type { ISetting } from '@rocket.chat/core-typings'; -import { ICachedSettings } from '../CachedSettings'; +import type { ICachedSettings } from '../CachedSettings'; type Dictionary = { [index: string]: any; diff --git a/apps/meteor/app/settings/server/raw.ts b/apps/meteor/app/settings/server/raw.ts index a32e3b77030..31d6f2d79d2 100644 --- a/apps/meteor/app/settings/server/raw.ts +++ b/apps/meteor/app/settings/server/raw.ts @@ -1,4 +1,4 @@ -import { SettingValue } from '@rocket.chat/core-typings'; +import type { SettingValue } from '@rocket.chat/core-typings'; import { Settings } from '@rocket.chat/models'; const cache = new Map(); diff --git a/apps/meteor/app/settings/server/startup.ts b/apps/meteor/app/settings/server/startup.ts index 2fcc1e75450..5c0f4cdee5f 100644 --- a/apps/meteor/app/settings/server/startup.ts +++ b/apps/meteor/app/settings/server/startup.ts @@ -1,7 +1,7 @@ import type { ISetting } from '@rocket.chat/core-typings'; import type { Settings } from '@rocket.chat/models'; -import { ICachedSettings } from './CachedSettings'; +import type { ICachedSettings } from './CachedSettings'; // eslint-disable-next-line @typescript-eslint/naming-convention export async function initializeSettings({ model, settings }: { model: typeof Settings; settings: ICachedSettings }): Promise { diff --git a/apps/meteor/app/slashcommands-join/client/client.ts b/apps/meteor/app/slashcommands-join/client/client.ts index 71374b69d6c..04e95b8e8ba 100644 --- a/apps/meteor/app/slashcommands-join/client/client.ts +++ b/apps/meteor/app/slashcommands-join/client/client.ts @@ -1,4 +1,4 @@ -import { Meteor } from 'meteor/meteor'; +import type { Meteor } from 'meteor/meteor'; import { slashCommands } from '../../utils/lib/slashCommand'; diff --git a/apps/meteor/app/spotify/lib/spotify.ts b/apps/meteor/app/spotify/lib/spotify.ts index 718be19dcb9..46683fdba2b 100644 --- a/apps/meteor/app/spotify/lib/spotify.ts +++ b/apps/meteor/app/spotify/lib/spotify.ts @@ -1,4 +1,4 @@ -import { IMessage } from '@rocket.chat/core-typings'; +import type { IMessage } from '@rocket.chat/core-typings'; const process = ( message: IMessage, diff --git a/apps/meteor/app/statistics/server/lib/SAUMonitor.ts b/apps/meteor/app/statistics/server/lib/SAUMonitor.ts index dec524ca370..387892379fd 100644 --- a/apps/meteor/app/statistics/server/lib/SAUMonitor.ts +++ b/apps/meteor/app/statistics/server/lib/SAUMonitor.ts @@ -263,7 +263,7 @@ export class SAUMonitorClass { return obj; }; - if (result.browser && result.browser.name) { + if (result.browser?.name) { info.type = 'browser'; info.name = result.browser.name; info.longVersion = result.browser.version || ''; diff --git a/apps/meteor/app/statistics/server/lib/telemetryEvents.ts b/apps/meteor/app/statistics/server/lib/telemetryEvents.ts index 85a82d53d8f..d217eae35da 100644 --- a/apps/meteor/app/statistics/server/lib/telemetryEvents.ts +++ b/apps/meteor/app/statistics/server/lib/telemetryEvents.ts @@ -1,4 +1,4 @@ -import { TelemetryMap, ITelemetryEvent, TelemetryEvents } from '../../../../server/sdk/types/ITelemetryEvent'; +import type { TelemetryMap, ITelemetryEvent, TelemetryEvents } from '../../../../server/sdk/types/ITelemetryEvent'; type TelemetryEventResponse = Promise | void; type TelemetryEventFunction = (data: TelemetryMap[T]) => TelemetryEventResponse; diff --git a/apps/meteor/app/threads/client/flextab/threadlist.tsx b/apps/meteor/app/threads/client/flextab/threadlist.tsx index d5003a429aa..e8cf2f0dd04 100644 --- a/apps/meteor/app/threads/client/flextab/threadlist.tsx +++ b/apps/meteor/app/threads/client/flextab/threadlist.tsx @@ -1,6 +1,8 @@ -import React, { useMemo, lazy, LazyExoticComponent, FC, ReactNode } from 'react'; -import { BadgeProps } from '@rocket.chat/fuselage'; -import { IRoom, isRoomFederated, ISubscription } from '@rocket.chat/core-typings'; +import type { LazyExoticComponent, FC, ReactNode } from 'react'; +import React, { useMemo, lazy } from 'react'; +import type { BadgeProps } from '@rocket.chat/fuselage'; +import type { IRoom, ISubscription } from '@rocket.chat/core-typings'; +import { isRoomFederated } from '@rocket.chat/core-typings'; import { useSetting } from '@rocket.chat/ui-contexts'; import { addAction } from '../../../../client/views/room/lib/Toolbox'; diff --git a/apps/meteor/app/ui-master/server/inject.ts b/apps/meteor/app/ui-master/server/inject.ts index e854ce60ebc..0347c5dab0f 100644 --- a/apps/meteor/app/ui-master/server/inject.ts +++ b/apps/meteor/app/ui-master/server/inject.ts @@ -1,7 +1,7 @@ import crypto from 'crypto'; import parseRequest from 'parseurl'; -import { NextHandleFunction } from 'connect'; +import type { NextHandleFunction } from 'connect'; import { WebApp } from 'meteor/webapp'; import { ReactiveDict } from 'meteor/reactive-dict'; import { Inject } from 'meteor/meteorhacks:inject-initial'; diff --git a/apps/meteor/app/ui-message/client/ActionButtonSyncer.ts b/apps/meteor/app/ui-message/client/ActionButtonSyncer.ts index 0ec6f94d7fb..3a1290fd4ca 100644 --- a/apps/meteor/app/ui-message/client/ActionButtonSyncer.ts +++ b/apps/meteor/app/ui-message/client/ActionButtonSyncer.ts @@ -1,5 +1,6 @@ import { Meteor } from 'meteor/meteor'; -import { IUIActionButton, UIActionButtonContext } from '@rocket.chat/apps-engine/definition/ui'; +import type { IUIActionButton } from '@rocket.chat/apps-engine/definition/ui'; +import { UIActionButtonContext } from '@rocket.chat/apps-engine/definition/ui'; import { APIClient } from '../../utils/client'; import * as TabBar from './actionButtons/tabbar'; diff --git a/apps/meteor/app/ui-message/client/actionButtons/dropdownAction.ts b/apps/meteor/app/ui-message/client/actionButtons/dropdownAction.ts index f6b8ebb4a84..ffe62c171d0 100644 --- a/apps/meteor/app/ui-message/client/actionButtons/dropdownAction.ts +++ b/apps/meteor/app/ui-message/client/actionButtons/dropdownAction.ts @@ -1,4 +1,4 @@ -import { IUIActionButton } from '@rocket.chat/apps-engine/definition/ui'; +import type { IUIActionButton } from '@rocket.chat/apps-engine/definition/ui'; import { AccountBox } from '../../../ui-utils/client/lib/AccountBox'; diff --git a/apps/meteor/app/ui-message/client/actionButtons/lib/applyButtonFilters.ts b/apps/meteor/app/ui-message/client/actionButtons/lib/applyButtonFilters.ts index f693a87a2e0..f9dab36e28d 100644 --- a/apps/meteor/app/ui-message/client/actionButtons/lib/applyButtonFilters.ts +++ b/apps/meteor/app/ui-message/client/actionButtons/lib/applyButtonFilters.ts @@ -2,9 +2,10 @@ /* eslint-disable arrow-body-style */ import { Meteor } from 'meteor/meteor'; -import { IUIActionButton, RoomTypeFilter } from '@rocket.chat/apps-engine/definition/ui'; +import type { IUIActionButton } from '@rocket.chat/apps-engine/definition/ui'; +import { RoomTypeFilter } from '@rocket.chat/apps-engine/definition/ui'; +import type { IRoom } from '@rocket.chat/core-typings'; import { - IRoom, isDirectMessageRoom, isMultipleDirectMessageRoom, isOmnichannelRoom, diff --git a/apps/meteor/app/ui-message/client/actionButtons/messageAction.ts b/apps/meteor/app/ui-message/client/actionButtons/messageAction.ts index 992a47b3489..6cafa3c4f87 100644 --- a/apps/meteor/app/ui-message/client/actionButtons/messageAction.ts +++ b/apps/meteor/app/ui-message/client/actionButtons/messageAction.ts @@ -1,4 +1,4 @@ -import { IUIActionButton } from '@rocket.chat/apps-engine/definition/ui'; +import type { IUIActionButton } from '@rocket.chat/apps-engine/definition/ui'; import { Utilities } from '../../../apps/lib/misc/Utilities'; import { MessageAction } from '../../../ui-utils/client'; diff --git a/apps/meteor/app/ui-message/client/actionButtons/messageBox.ts b/apps/meteor/app/ui-message/client/actionButtons/messageBox.ts index f143a672625..b093f670122 100644 --- a/apps/meteor/app/ui-message/client/actionButtons/messageBox.ts +++ b/apps/meteor/app/ui-message/client/actionButtons/messageBox.ts @@ -1,5 +1,5 @@ import { Session } from 'meteor/session'; -import { IUIActionButton } from '@rocket.chat/apps-engine/definition/ui'; +import type { IUIActionButton } from '@rocket.chat/apps-engine/definition/ui'; import { Rooms } from '../../../models/client'; import { messageBox } from '../../../ui-utils/client'; diff --git a/apps/meteor/app/ui-message/client/actionButtons/tabbar.ts b/apps/meteor/app/ui-message/client/actionButtons/tabbar.ts index bb62cc79864..55d2e17ba0d 100644 --- a/apps/meteor/app/ui-message/client/actionButtons/tabbar.ts +++ b/apps/meteor/app/ui-message/client/actionButtons/tabbar.ts @@ -1,4 +1,4 @@ -import { IUIActionButton } from '@rocket.chat/apps-engine/definition/ui'; +import type { IUIActionButton } from '@rocket.chat/apps-engine/definition/ui'; import { addAction, deleteAction } from '../../../../client/views/room/lib/Toolbox'; import { Utilities } from '../../../apps/lib/misc/Utilities'; diff --git a/apps/meteor/app/ui-utils/client/lib/AccountBox.ts b/apps/meteor/app/ui-utils/client/lib/AccountBox.ts index a3f42a8645b..2cb72ca8863 100644 --- a/apps/meteor/app/ui-utils/client/lib/AccountBox.ts +++ b/apps/meteor/app/ui-utils/client/lib/AccountBox.ts @@ -1,4 +1,4 @@ -import { IUIActionButton, IUActionButtonWhen } from '@rocket.chat/apps-engine/definition/ui/IUIActionButtonDescriptor'; +import type { IUIActionButton, IUActionButtonWhen } from '@rocket.chat/apps-engine/definition/ui/IUIActionButtonDescriptor'; import { ReactiveVar } from 'meteor/reactive-var'; import { Tracker } from 'meteor/tracker'; import { Meteor } from 'meteor/meteor'; diff --git a/apps/meteor/app/ui-utils/client/lib/MessageAction.ts b/apps/meteor/app/ui-utils/client/lib/MessageAction.ts index 044d7fa06cf..3a5c4e1e6a8 100644 --- a/apps/meteor/app/ui-utils/client/lib/MessageAction.ts +++ b/apps/meteor/app/ui-utils/client/lib/MessageAction.ts @@ -1,16 +1,16 @@ -import { ComponentProps, MouseEvent } from 'react'; +import type { ComponentProps, MouseEvent } from 'react'; import _ from 'underscore'; import mem from 'mem'; import { Meteor } from 'meteor/meteor'; import { ReactiveVar } from 'meteor/reactive-var'; import { Tracker } from 'meteor/tracker'; -import { Icon } from '@rocket.chat/fuselage'; -import { IMessage, IUser, ISubscription, IRoom, SettingValue } from '@rocket.chat/core-typings'; -import { TranslationKey } from '@rocket.chat/ui-contexts'; +import type { Icon } from '@rocket.chat/fuselage'; +import type { IMessage, IUser, ISubscription, IRoom, SettingValue } from '@rocket.chat/core-typings'; +import type { TranslationKey } from '@rocket.chat/ui-contexts'; import { Messages, Rooms, Subscriptions } from '../../../models/client'; import { roomCoordinator } from '../../../../client/lib/rooms/roomCoordinator'; -import { ToolboxContextValue } from '../../../../client/views/room/lib/Toolbox/ToolboxContext'; +import type { ToolboxContextValue } from '../../../../client/views/room/lib/Toolbox/ToolboxContext'; const call = (method: string, ...args: any[]): Promise => new Promise((resolve, reject) => { diff --git a/apps/meteor/app/ui-utils/client/lib/messageActionDefault.ts b/apps/meteor/app/ui-utils/client/lib/messageActionDefault.ts index b303d692e06..ab8f0daa487 100644 --- a/apps/meteor/app/ui-utils/client/lib/messageActionDefault.ts +++ b/apps/meteor/app/ui-utils/client/lib/messageActionDefault.ts @@ -3,7 +3,7 @@ import moment from 'moment'; import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import { Session } from 'meteor/session'; -import { IMessage } from '@rocket.chat/core-typings'; +import type { IMessage } from '@rocket.chat/core-typings'; import { messageArgs } from '../../../../client/lib/utils/messageArgs'; import { roomCoordinator } from '../../../../client/lib/rooms/roomCoordinator'; @@ -16,7 +16,7 @@ import ReactionList from '../../../../client/views/room/modals/ReactionListModal import CreateDiscussion from '../../../../client/components/CreateDiscussion/CreateDiscussion'; import { canDeleteMessage } from '../../../../client/lib/utils/canDeleteMessage'; import { dispatchToastMessage } from '../../../../client/lib/toast'; -import { ChatMessages } from '../../../ui/client'; +import type { ChatMessages } from '../../../ui/client'; export const addMessageToList = (messagesList: IMessage[], message: IMessage): IMessage[] => { // checks if the message is not already on the list @@ -219,7 +219,7 @@ Meteor.startup(async function () { modal.open( { title: TAPi18n.__('Report_this_message_question_mark'), - text: message.msg || (message.attachments && message.attachments[0]?.description) || message.file?.name, + text: message.msg || message.attachments?.[0]?.description || message.file?.name, inputPlaceholder: TAPi18n.__('Why_do_you_want_to_report_question_mark'), type: 'input', showCancelButton: true, diff --git a/apps/meteor/app/ui-utils/lib/MessageTypes.ts b/apps/meteor/app/ui-utils/lib/MessageTypes.ts index d7d4d8e3c98..5d81fd32ea1 100644 --- a/apps/meteor/app/ui-utils/lib/MessageTypes.ts +++ b/apps/meteor/app/ui-utils/lib/MessageTypes.ts @@ -1,5 +1,5 @@ -import { IMessage, MessageTypesValues } from '@rocket.chat/core-typings'; -import { TranslationKey } from '@rocket.chat/ui-contexts'; +import type { IMessage, MessageTypesValues } from '@rocket.chat/core-typings'; +import type { TranslationKey } from '@rocket.chat/ui-contexts'; export type MessageType = { id: MessageTypesValues; diff --git a/apps/meteor/app/ui/client/lib/UserAction.ts b/apps/meteor/app/ui/client/lib/UserAction.ts index edee9fba0d1..24ca8f58f5d 100644 --- a/apps/meteor/app/ui/client/lib/UserAction.ts +++ b/apps/meteor/app/ui/client/lib/UserAction.ts @@ -21,7 +21,7 @@ const activityTimeouts = new Map(); const activityRenews = new Map(); const continuingIntervals = new Map(); const roomActivities = new Map>(); -const rooms = new Map(); +const rooms = new Map void>(); const performingUsers = new ReactiveDict(); diff --git a/apps/meteor/app/ui/client/lib/fileUpload.ts b/apps/meteor/app/ui/client/lib/fileUpload.ts index 168497e522e..e23b761b36c 100644 --- a/apps/meteor/app/ui/client/lib/fileUpload.ts +++ b/apps/meteor/app/ui/client/lib/fileUpload.ts @@ -134,7 +134,7 @@ export const uploadFileWithMessage = async ( uploads .filter((u) => u.id === upload.id) .forEach((u) => { - u.error = (error.xhr && error.xhr.responseJSON && error.xhr.responseJSON.error) || error.message; + u.error = error.xhr?.responseJSON?.error || error.message; u.percentage = 0; }); if (!uploads.length) { diff --git a/apps/meteor/app/ui/client/views/app/photoswipeContent.ts b/apps/meteor/app/ui/client/views/app/photoswipeContent.ts index bc2af32b53d..23de6f1ffea 100644 --- a/apps/meteor/app/ui/client/views/app/photoswipeContent.ts +++ b/apps/meteor/app/ui/client/views/app/photoswipeContent.ts @@ -75,9 +75,7 @@ let currentGallery: PhotoSwipe | null = null; const initGallery = async (items: Slide[], options: PhotoSwipe.Options): Promise => { const [{ default: PhotoSwipe }] = await Promise.all([ import('photoswipe'), - // @ts-ignore import('photoswipe/dist/photoswipe.css'), - // @ts-ignore import('./photoswipeContent.html'), ]); diff --git a/apps/meteor/app/ui/client/views/app/room.d.ts b/apps/meteor/app/ui/client/views/app/room.d.ts index aa85a4be7c8..6c7e5815dbf 100644 --- a/apps/meteor/app/ui/client/views/app/room.d.ts +++ b/apps/meteor/app/ui/client/views/app/room.d.ts @@ -1,6 +1,6 @@ import type { IRoom } from '@rocket.chat/core-typings'; -import { ChatMessages } from '../../lib/chatMessages'; +import type { ChatMessages } from '../../lib/chatMessages'; export const chatMessages: Record; diff --git a/apps/meteor/app/utils/lib/getDefaultSubscriptionPref.js b/apps/meteor/app/utils/lib/getDefaultSubscriptionPref.js index 544f3e46a8d..ea699b1eff3 100644 --- a/apps/meteor/app/utils/lib/getDefaultSubscriptionPref.js +++ b/apps/meteor/app/utils/lib/getDefaultSubscriptionPref.js @@ -1,3 +1,10 @@ +/** + * @type {(userPref: Pick) => { + * desktopPrefOrigin: 'user'; + * mobilePrefOrigin: 'user'; + * emailPrefOrigin: 'user'; + * }} + */ export const getDefaultSubscriptionPref = (userPref) => { const subscription = {}; diff --git a/apps/meteor/app/utils/server/lib/cron/Cronjobs.ts b/apps/meteor/app/utils/server/lib/cron/Cronjobs.ts index 83648ac8528..1779160facf 100644 --- a/apps/meteor/app/utils/server/lib/cron/Cronjobs.ts +++ b/apps/meteor/app/utils/server/lib/cron/Cronjobs.ts @@ -1,11 +1,12 @@ import { SyncedCron } from 'meteor/littledata:synced-cron'; -import { ICronJobs, ScheduleType } from '@rocket.chat/core-typings'; +import type { ICronJobs, ScheduleType } from '@rocket.chat/core-typings'; +import type { ParseStatic } from 'later'; class SyncedCronJobs implements ICronJobs { - add(name: string, schedule: string, callback: Function, scheduleType: ScheduleType = 'cron'): void { + add(name: string, schedule: string, callback: (day: string, hour: string) => void, scheduleType: ScheduleType = 'cron'): void { SyncedCron.add({ name, - schedule: (parser: any) => parser[scheduleType](schedule), + schedule: (parser: ParseStatic) => parser[scheduleType](schedule), job() { const [day, hour] = this.name.split('/'); callback(day, hour); diff --git a/apps/meteor/app/utils/server/lib/getTimezone.ts b/apps/meteor/app/utils/server/lib/getTimezone.ts index b73b37de50b..fa0d3a794c7 100644 --- a/apps/meteor/app/utils/server/lib/getTimezone.ts +++ b/apps/meteor/app/utils/server/lib/getTimezone.ts @@ -1,5 +1,5 @@ import moment from 'moment-timezone'; -import { SettingValue } from '@rocket.chat/core-typings'; +import type { SettingValue } from '@rocket.chat/core-typings'; import { settings } from '../../../settings/server'; diff --git a/apps/meteor/app/utils/server/lib/normalizeMessagesForUser.ts b/apps/meteor/app/utils/server/lib/normalizeMessagesForUser.ts index d3ed11aa900..65dd7a9630f 100644 --- a/apps/meteor/app/utils/server/lib/normalizeMessagesForUser.ts +++ b/apps/meteor/app/utils/server/lib/normalizeMessagesForUser.ts @@ -1,4 +1,4 @@ -import { IMessage, IUser } from '@rocket.chat/core-typings'; +import type { IMessage, IUser } from '@rocket.chat/core-typings'; import { Users } from '../../../models/server'; import { settings } from '../../../settings/server'; diff --git a/apps/meteor/app/version-check/server/functions/checkVersionUpdate.ts b/apps/meteor/app/version-check/server/functions/checkVersionUpdate.ts index 6577cd41292..54e0f791c5e 100644 --- a/apps/meteor/app/version-check/server/functions/checkVersionUpdate.ts +++ b/apps/meteor/app/version-check/server/functions/checkVersionUpdate.ts @@ -58,7 +58,7 @@ export const checkVersionUpdate = async () => { break; } - if (alerts && alerts.length) { + if (alerts?.length) { await sendMessagesToAdmins({ msgs: ({ adminUser }) => alerts diff --git a/apps/meteor/app/version-check/server/index.ts b/apps/meteor/app/version-check/server/index.ts index 4f351385877..01f8ce74120 100644 --- a/apps/meteor/app/version-check/server/index.ts +++ b/apps/meteor/app/version-check/server/index.ts @@ -15,7 +15,7 @@ if (SyncedCron.nextScheduledAtDate(jobName)) { const addVersionCheckJob = Meteor.bindEnvironment(() => { SyncedCron.add({ name: jobName, - schedule: (parser: { text: (time: string) => string }) => parser.text('at 2:00 am'), + schedule: (parser) => parser.text('at 2:00 am'), job() { Promise.await(checkVersionUpdate()); }, diff --git a/apps/meteor/app/videobridge/client/tabBar.tsx b/apps/meteor/app/videobridge/client/tabBar.tsx index 4edb0e103ef..4baf6eb7cad 100644 --- a/apps/meteor/app/videobridge/client/tabBar.tsx +++ b/apps/meteor/app/videobridge/client/tabBar.tsx @@ -4,7 +4,8 @@ import { useSetting, useUser } from '@rocket.chat/ui-contexts'; import { isRoomFederated } from '@rocket.chat/core-typings'; import { useVideoConfDispatchOutgoing, useVideoConfIsCalling, useVideoConfIsRinging } from '../../../client/contexts/VideoConfContext'; -import { addAction, ToolboxActionConfig } from '../../../client/views/room/lib/Toolbox'; +import type { ToolboxActionConfig } from '../../../client/views/room/lib/Toolbox'; +import { addAction } from '../../../client/views/room/lib/Toolbox'; import { VideoConfManager } from '../../../client/lib/VideoConfManager'; import { useVideoConfWarning } from '../../../client/views/room/contextualBar/VideoConference/useVideoConfWarning'; import { useHasLicenseModule } from '../../../ee/client/hooks/useHasLicenseModule'; diff --git a/apps/meteor/app/webdav/server/lib/getWebdavCredentials.ts b/apps/meteor/app/webdav/server/lib/getWebdavCredentials.ts index 0b0526a07fb..6f2c59d5660 100644 --- a/apps/meteor/app/webdav/server/lib/getWebdavCredentials.ts +++ b/apps/meteor/app/webdav/server/lib/getWebdavCredentials.ts @@ -1,6 +1,6 @@ -import { ServerCredentials } from './webdavClientAdapter'; +import type { WebDAVClientOptions } from 'webdav'; -export function getWebdavCredentials(account: ServerCredentials): ServerCredentials { +export function getWebdavCredentials(account: WebDAVClientOptions): WebDAVClientOptions { const cred = account.token ? { token: account.token } : { diff --git a/apps/meteor/app/webdav/server/lib/webdavClientAdapter.ts b/apps/meteor/app/webdav/server/lib/webdavClientAdapter.ts index 61a35b4bff2..f8462802bc6 100644 --- a/apps/meteor/app/webdav/server/lib/webdavClientAdapter.ts +++ b/apps/meteor/app/webdav/server/lib/webdavClientAdapter.ts @@ -1,15 +1,12 @@ -import { createClient, WebDavClient, Stat } from 'webdav'; +import type { Readable, Writable } from 'stream'; -export type ServerCredentials = { - token?: string; - username?: string; - password?: string; -}; +import type { WebDAVClient, FileStat, ResponseDataDetailed, WebDAVClientOptions } from 'webdav'; +import { createClient } from 'webdav'; export class WebdavClientAdapter { - _client: WebDavClient; + _client: WebDAVClient; - constructor(serverConfig: string, cred: ServerCredentials) { + constructor(serverConfig: string, cred: WebDAVClientOptions) { if (cred.token) { this._client = createClient(serverConfig, { token: cred.token }); } else { @@ -20,29 +17,27 @@ export class WebdavClientAdapter { } } - async stat(path: string): Promise { + async stat(path: string): Promise> { try { return await this._client.stat(path); } catch (error: any) { - throw new Error( - error.response && error.response.statusText ? error.response.statusText : 'Error checking if directory exists on webdav', - ); + throw new Error(error.response?.statusText ? error.response.statusText : 'Error checking if directory exists on webdav'); } } - async createDirectory(path: string): Promise { + async createDirectory(path: string): Promise { try { return await this._client.createDirectory(path); } catch (error: any) { - throw new Error(error.response && error.response.statusText ? error.response.statusText : 'Error creating directory on webdav'); + throw new Error(error.response?.statusText ? error.response.statusText : 'Error creating directory on webdav'); } } - async deleteFile(path: string): Promise { + async deleteFile(path: string): Promise { try { return await this._client.deleteFile(path); } catch (error: any) { - throw new Error(error.response && error.response.statusText ? error.response.statusText : 'Error deleting file on webdav'); + throw new Error(error.response?.statusText ? error.response.statusText : 'Error deleting file on webdav'); } } @@ -50,15 +45,15 @@ export class WebdavClientAdapter { try { return (await this._client.getFileContents(filename)) as Buffer; } catch (error: any) { - throw new Error(error.response && error.response.statusText ? error.response.statusText : 'Error getting file contents webdav'); + throw new Error(error.response?.statusText ? error.response.statusText : 'Error getting file contents webdav'); } } - async getDirectoryContents(path: string): Promise> { + async getDirectoryContents(path: string): Promise> { try { return await this._client.getDirectoryContents(path); } catch (error: any) { - throw new Error(error.response && error.response.statusText ? error.response.statusText : 'Error getting directory contents webdav'); + throw new Error(error.response?.statusText ? error.response.statusText : 'Error getting directory contents webdav'); } } @@ -70,11 +65,11 @@ export class WebdavClientAdapter { } } - createReadStream(path: string, options?: Record): ReadableStream { + createReadStream(path: string, options?: Record): Readable { return this._client.createReadStream(path, options); } - createWriteStream(path: string): WritableStream { + createWriteStream(path: string): Writable { return this._client.createWriteStream(path); } } diff --git a/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts b/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts index f89c56f69c9..bfee8173194 100644 --- a/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts +++ b/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts @@ -87,7 +87,11 @@ Meteor.methods({ data, Match.ObjectIncluding({ serverURL: String, - token: String, + token: Match.ObjectIncluding({ + access_token: String, + token_type: String, + refresh_token: Match.Optional(String), + }), name: Match.Maybe(String), }), ); diff --git a/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts b/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts index efc30558498..6e30c57c3d8 100644 --- a/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts +++ b/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts @@ -31,7 +31,6 @@ Meteor.methods({ }); } - // @ts-ignore logger.error(error); if (error.response) { diff --git a/apps/meteor/client/UIKit/hooks/useUIKitStateManager.tsx b/apps/meteor/client/UIKit/hooks/useUIKitStateManager.tsx index 503c29c27bb..8d513ee518c 100644 --- a/apps/meteor/client/UIKit/hooks/useUIKitStateManager.tsx +++ b/apps/meteor/client/UIKit/hooks/useUIKitStateManager.tsx @@ -5,7 +5,7 @@ import { useEffect, useState } from 'react'; import * as ActionManager from '../../../app/ui-message/client/ActionManager'; const useUIKitStateManager = (initialState: S): S => { - const [state, setState] = useSafely(useState(initialState)); + const [state, setState] = useSafely(useState(initialState)); const { viewId } = state; diff --git a/apps/meteor/client/components/GenericTable/GenericTable.tsx b/apps/meteor/client/components/GenericTable/GenericTable.tsx index 77132baa8a4..48dd3a9b280 100644 --- a/apps/meteor/client/components/GenericTable/GenericTable.tsx +++ b/apps/meteor/client/components/GenericTable/GenericTable.tsx @@ -19,7 +19,7 @@ export type GenericTableParams = { itemsPerPage: 25 | 50 | 100; }; -type GenericTableProps void }, ResultProps extends { _id?: Key } | {}> = { +type GenericTableProps void }, ResultProps> = { fixed?: boolean; header?: ReactNode; params?: GenericTableParams; @@ -34,7 +34,7 @@ type GenericTableProps void }, - ResultProps extends { _id?: Key } | {}, + ResultProps extends { _id?: Key } | object, >( { children, @@ -83,7 +83,7 @@ const GenericTable = forwardRef(function GenericTable< {isLoading && } {!isLoading && - ((RenderRow && results?.map((props, index: number) => )) || + ((RenderRow && results?.map((props, index) => )) || (children && results?.map(children)))} diff --git a/apps/meteor/client/components/MarkdownText.tsx b/apps/meteor/client/components/MarkdownText.tsx index cc7a49880af..a146c3d8aa5 100644 --- a/apps/meteor/client/components/MarkdownText.tsx +++ b/apps/meteor/client/components/MarkdownText.tsx @@ -77,7 +77,7 @@ const MarkdownText: FC> = ({ }) => { const sanitizer = dompurify.sanitize; - let markedOptions: {}; + let markedOptions: marked.MarkedOptions; switch (variant) { case 'inline': @@ -110,7 +110,7 @@ const MarkdownText: FC> = ({ })(); return preserveHtml ? html : html && sanitizer(html, { ADD_ATTR: ['target'] }); - }, [content, preserveHtml, sanitizer, markedOptions, parseEmoji]); + }, [preserveHtml, sanitizer, content, variant, markedOptions, parseEmoji]); return __html ? ( {t('Forward_to_department')} { - // TODO: Definitions on fuselage are incorrect, need to be fixed! - // @ts-ignore-next-line { +export const useComponentDidUpdate = (effect: () => void, dependencies: unknown[] = []): void => { const hasMounted = useRef(false); useEffect(() => { if (!hasMounted.current) { diff --git a/apps/meteor/client/lib/imperativeModal.ts b/apps/meteor/client/lib/imperativeModal.ts index 917049a942e..f19eb9b71f0 100644 --- a/apps/meteor/client/lib/imperativeModal.ts +++ b/apps/meteor/client/lib/imperativeModal.ts @@ -1,19 +1,19 @@ import { Emitter } from '@rocket.chat/emitter'; import { ComponentType } from 'react'; -type ReactModalDescriptor = { +type ReactModalDescriptor = { component: ComponentType; props?: TProps; }; -type ModalDescriptor = ReactModalDescriptor<{}> | null; +type ModalDescriptor = ReactModalDescriptor> | null; class ImperativeModalEmmiter extends Emitter<{ update: ModalDescriptor }> { update(descriptor: ModalDescriptor): void { this.emit('update', descriptor); } - open = (descriptor: ReactModalDescriptor | null): void => { + open = (descriptor: ReactModalDescriptor | null): void => { // There are some TS shenanigans causing errors if this is not asserted // Since this method is for internal use only, it's ok to use this here // This will not affect prop types inference when using the method. diff --git a/apps/meteor/client/lib/minimongo/query.ts b/apps/meteor/client/lib/minimongo/query.ts index bbfb2b67edd..9cfd0b0d0b7 100644 --- a/apps/meteor/client/lib/minimongo/query.ts +++ b/apps/meteor/client/lib/minimongo/query.ts @@ -179,7 +179,7 @@ const $nor = (subSelector: Query[]): ((doc: T) => boolean) => { return (doc: T): boolean => subSelectorFunctions.every((f) => !f(doc)); }; -const $where = (selectorValue: string | Function): ((doc: T) => boolean) => { +const $where = (selectorValue: string | ((doc: T) => boolean)): ((doc: T) => boolean) => { const fn = selectorValue instanceof Function ? selectorValue : Function(`return ${selectorValue}`); return (doc: T): boolean => !!fn.call(doc); }; diff --git a/apps/meteor/client/lib/minimongo/types.ts b/apps/meteor/client/lib/minimongo/types.ts index 62fb17fbbb6..be63aca3726 100644 --- a/apps/meteor/client/lib/minimongo/types.ts +++ b/apps/meteor/client/lib/minimongo/types.ts @@ -48,13 +48,13 @@ export type FieldExpression = { $caseSensitive?: boolean; $diacriticSensitive?: boolean; }; - $where?: string | Function; + $where?: string | ((this: T) => boolean); $geoIntersects?: unknown; $geoWithin?: unknown; $near?: unknown; $nearSphere?: unknown; $all?: T[]; - $elemMatch?: T extends {} ? Query : FieldExpression; + $elemMatch?: T extends Record ? Query : FieldExpression; $size?: number; $bitsAllClear?: unknown; $bitsAllSet?: unknown; @@ -67,11 +67,13 @@ export type Flatten = T extends unknown[] ? T[0] : T; export type Query = { [P in keyof T]?: Flatten | RegExp | FieldExpression>; +} & { + [P in keyof T as P extends string ? `${P}.${Extract}` : never]?: Flatten | RegExp | FieldExpression; } & { $or?: Query[]; $and?: Query[]; $nor?: Query[]; -} & Record>; +}; export type Sort = | (string | [string, 'asc' | 'desc'])[] diff --git a/apps/meteor/client/lib/portals/createEphemeralPortal.ts b/apps/meteor/client/lib/portals/createEphemeralPortal.ts index f58a7dbeac1..f40db4bf491 100644 --- a/apps/meteor/client/lib/portals/createEphemeralPortal.ts +++ b/apps/meteor/client/lib/portals/createEphemeralPortal.ts @@ -3,7 +3,7 @@ import type { ComponentType, PropsWithoutRef } from 'react'; import { createLazyPortal } from './createLazyPortal'; import { registerPortal } from './portalsSubscription'; -export const createEphemeralPortal = ( +export const createEphemeralPortal = ( factory: () => Promise<{ default: ComponentType }>, propsFn: () => PropsWithoutRef, container: Element, diff --git a/apps/meteor/client/lib/portals/createLazyElement.ts b/apps/meteor/client/lib/portals/createLazyElement.ts index 7b39e8f7838..6a3ca6ea3c6 100644 --- a/apps/meteor/client/lib/portals/createLazyElement.ts +++ b/apps/meteor/client/lib/portals/createLazyElement.ts @@ -1,7 +1,7 @@ import { Tracker } from 'meteor/tracker'; import { ComponentType, ReactElement, PropsWithoutRef, createElement, lazy, useEffect, useState, Suspense, FC } from 'react'; -export const createLazyElement = ( +export const createLazyElement = ( factory: () => Promise<{ default: ComponentType }>, getProps?: () => PropsWithoutRef | undefined, ): ReactElement => { diff --git a/apps/meteor/client/lib/portals/createLazyPortal.ts b/apps/meteor/client/lib/portals/createLazyPortal.ts index 74038022ca0..997ecf1c734 100644 --- a/apps/meteor/client/lib/portals/createLazyPortal.ts +++ b/apps/meteor/client/lib/portals/createLazyPortal.ts @@ -3,7 +3,7 @@ import { createPortal } from 'react-dom'; import { createLazyElement } from './createLazyElement'; -export const createLazyPortal = ( +export const createLazyPortal = ( factory: () => Promise<{ default: ComponentType }>, getProps: () => PropsWithoutRef | undefined, container: Element, diff --git a/apps/meteor/client/lib/portals/createTemplateForComponent.ts b/apps/meteor/client/lib/portals/createTemplateForComponent.ts index d125fe2c269..1e067bc94c7 100644 --- a/apps/meteor/client/lib/portals/createTemplateForComponent.ts +++ b/apps/meteor/client/lib/portals/createTemplateForComponent.ts @@ -7,7 +7,7 @@ import type { ComponentType, PropsWithoutRef } from 'react'; import { blazePortals } from './blazePortals'; import { createLazyPortal } from './createLazyPortal'; -export const createTemplateForComponent = ( +export const createTemplateForComponent = ( name: string, factory: () => Promise<{ default: ComponentType }>, options: diff --git a/apps/meteor/client/lib/rooms/roomTypes/livechat.ts b/apps/meteor/client/lib/rooms/roomTypes/livechat.ts index 812527b2eda..8b4c10644d1 100644 --- a/apps/meteor/client/lib/rooms/roomTypes/livechat.ts +++ b/apps/meteor/client/lib/rooms/roomTypes/livechat.ts @@ -71,7 +71,7 @@ roomCoordinator.add(LivechatRoomType, { getUserStatus(rid) { const room = Session.get(`roomData${rid}`); if (room) { - return room.v && room.v.status; + return room.v?.status; } const inquiry = LivechatInquiry.findOne({ rid }); return inquiry?.v?.status; diff --git a/apps/meteor/client/lib/utils/callWithErrorHandling.ts b/apps/meteor/client/lib/utils/callWithErrorHandling.ts index 49f72871139..960b9d0d7b9 100644 --- a/apps/meteor/client/lib/utils/callWithErrorHandling.ts +++ b/apps/meteor/client/lib/utils/callWithErrorHandling.ts @@ -10,7 +10,7 @@ export const callWithErrorHandling = async ( try { return await call(method, ...params); } catch (error) { - handleError(error instanceof Error ? error : String(error)); + handleError(error instanceof Error ? error : new Error(String(error))); throw error; } }; diff --git a/apps/meteor/client/lib/utils/handleError.ts b/apps/meteor/client/lib/utils/handleError.ts index 1e1370c03de..1f9b797fbaf 100644 --- a/apps/meteor/client/lib/utils/handleError.ts +++ b/apps/meteor/client/lib/utils/handleError.ts @@ -3,23 +3,23 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import { dispatchToastMessage } from '../toast'; -const hasXHR = (error: {}): error is { xhr: JQuery.jqXHR } => 'xhr' in error; +const hasXHR = (error: object): error is { xhr: JQuery.jqXHR } => 'xhr' in error; -const hasDetails = (error: {}): error is { details: Record } => +const hasDetails = (error: object): error is { details: Record } => 'details' in error && typeof (error as { details: unknown }).details === 'object'; -const hasToastrShowed = (error: {}): error is { toastrShowed: true } => +const hasToastrShowed = (error: object): error is { toastrShowed: true } => 'toastrShowed' in error && (error as { toastrShowed: unknown }).toastrShowed === true; -const hasError = (error: {}): error is { error: string } => 'error' in error && typeof (error as { error: unknown }).error === 'string'; +const hasError = (error: object): error is { error: string } => 'error' in error && typeof (error as { error: unknown }).error === 'string'; -const hasMessage = (error: {}): error is { message: string } => +const hasMessage = (error: object): error is { message: string } => 'error' in error && typeof (error as { message: unknown }).message === 'string'; const hasErrorTitle = (details: Record): details is Record & { errorTitle: string } => 'errorTitle' in details && typeof (details as Record & { errorTitle: unknown }) === 'string'; -export const handleError = (error: {}, useToastr = true): JQuery | string | undefined => { +export const handleError = (error: object, useToastr = true): JQuery | string | undefined => { if (hasXHR(error) && error.xhr.responseJSON) { return handleError(error.xhr.responseJSON, useToastr); } diff --git a/apps/meteor/client/polyfills/cssVars.ts b/apps/meteor/client/polyfills/cssVars.ts index e020e3206d4..a8dd9bdcbbd 100644 --- a/apps/meteor/client/polyfills/cssVars.ts +++ b/apps/meteor/client/polyfills/cssVars.ts @@ -99,7 +99,7 @@ const waitAndInitialize = (): void => { }; ((): void => { - if (window.CSS && window.CSS.supports && window.CSS.supports('(--foo: red)')) { + if (window.CSS?.supports?.('(--foo: red)')) { return; } diff --git a/apps/meteor/client/providers/ServerProvider.tsx b/apps/meteor/client/providers/ServerProvider.tsx index 8861acfbf50..471545ecf52 100644 --- a/apps/meteor/client/providers/ServerProvider.tsx +++ b/apps/meteor/client/providers/ServerProvider.tsx @@ -48,7 +48,13 @@ const callEndpoint = >( const uploadToEndpoint = (endpoint: PathFor<'POST'>, formData: any): Promise => APIClient.post(endpoint as any, formData); -const getStream = (streamName: string, options: {} = {}): ((eventName: string, callback: (data: T) => void) => () => void) => { +const getStream = ( + streamName: string, + options?: { + retransmit?: boolean | undefined; + retransmitToSelf?: boolean | undefined; + }, +): ((eventName: string, callback: (data: T) => void) => () => void) => { const streamer = Meteor.StreamerCentral.instances[streamName] ? Meteor.StreamerCentral.instances[streamName] : new Meteor.Streamer(streamName, options); diff --git a/apps/meteor/client/startup/messageTypes.ts b/apps/meteor/client/startup/messageTypes.ts index b39a91c66e1..fc087ebc412 100644 --- a/apps/meteor/client/startup/messageTypes.ts +++ b/apps/meteor/client/startup/messageTypes.ts @@ -12,7 +12,7 @@ Meteor.startup(() => { message: 'room_changed_privacy', data(message: IMessage) { return { - user_by: message.u && message.u.username, + user_by: message.u?.username, room_type: t(message.msg), }; }, @@ -24,7 +24,7 @@ Meteor.startup(() => { message: 'room_changed_topic', data(message: IMessage) { return { - user_by: message.u && message.u.username, + user_by: message.u?.username, room_topic: escapeHTML(message.msg || `(${t('None').toLowerCase()})`), }; }, @@ -36,7 +36,7 @@ Meteor.startup(() => { message: 'room_changed_avatar', data(message: IMessage) { return { - user_by: message.u && message.u.username, + user_by: message.u?.username, }; }, }); @@ -47,7 +47,7 @@ Meteor.startup(() => { message: 'room_changed_announcement', data(message: IMessage) { return { - user_by: message.u && message.u.username, + user_by: message.u?.username, room_announcement: escapeHTML(message.msg || `(${t('None').toLowerCase()})`), }; }, @@ -59,7 +59,7 @@ Meteor.startup(() => { message: 'room_changed_description', data(message: IMessage) { return { - user_by: message.u && message.u.username, + user_by: message.u?.username, room_description: escapeHTML(message.msg || `(${t('None').toLowerCase()})`), }; }, diff --git a/apps/meteor/client/startup/renderMessage/mentionsMessage.ts b/apps/meteor/client/startup/renderMessage/mentionsMessage.ts index 0caecf8c4df..9dc4f572673 100644 --- a/apps/meteor/client/startup/renderMessage/mentionsMessage.ts +++ b/apps/meteor/client/startup/renderMessage/mentionsMessage.ts @@ -9,7 +9,7 @@ Meteor.startup(() => { Tracker.autorun(() => { const uid = Meteor.userId(); const options = { - me: uid && (Users.findOne(uid, { fields: { username: 1 } }) || {}).username, + me: uid && Users.findOne(uid, { fields: { username: 1 } })?.username, pattern: settings.get('UTF8_User_Names_Validation'), useRealName: settings.get('UI_Use_Real_Name'), }; diff --git a/apps/meteor/client/stories/contexts/ServerContextMock.tsx b/apps/meteor/client/stories/contexts/ServerContextMock.tsx index be29bb78172..0794a47b7a6 100644 --- a/apps/meteor/client/stories/contexts/ServerContextMock.tsx +++ b/apps/meteor/client/stories/contexts/ServerContextMock.tsx @@ -12,7 +12,13 @@ const randomDelay = (): Promise => new Promise((resolve) => setTim const uploadToEndpoint = (endpoint: PathFor<'POST'>, formData: any): Promise => Promise.resolve(logAction('uploadToEndpoint', endpoint, formData)).then(randomDelay); -const getStream = (streamName: string, options: {} = {}): ((eventName: string, callback: (data: T) => void) => () => void) => { +const getStream = ( + streamName: string, + options: { + retransmit?: boolean | undefined; + retransmitToSelf?: boolean | undefined; + } = {}, +): ((eventName: string, callback: (data: T) => void) => () => void) => { logAction('getStream', streamName, options); return (eventName, callback): (() => void) => { diff --git a/apps/meteor/client/views/admin/apps/helpers.ts b/apps/meteor/client/views/admin/apps/helpers.ts index bf44e5ebd37..58706e00df1 100644 --- a/apps/meteor/client/views/admin/apps/helpers.ts +++ b/apps/meteor/client/views/admin/apps/helpers.ts @@ -19,14 +19,14 @@ const appErroredStatuses = [ export const apiCurlGetter = (absoluteUrl: (path: string) => string) => (method: string, api: IApiEndpointMetadata): string[] => { - const example = (api.examples && api.examples[method]) || {}; + const example = api.examples?.[method]; return Utilities.curl({ url: absoluteUrl(api.computedPath), method, - params: example.params, - query: example.query, - content: example.content, - headers: example.headers, + params: example?.params, + query: example?.query, + content: example?.content, + headers: example?.headers, auth: '', }).split('\n'); }; @@ -71,7 +71,7 @@ export const handleAPIError = (error: { xhr: { responseJSON: { status: any; messages: any; error: any; payload?: any } }; message: string; }): void => { - const message = (error.xhr && error.xhr.responseJSON && error.xhr.responseJSON.error) || error.message; + const message = error.xhr?.responseJSON?.error ?? error.message; if (shouldHandleErrorAsWarning(message)) { dispatchToastMessage({ type: 'warning', message }); diff --git a/apps/meteor/client/views/banners/UiKitBanner.tsx b/apps/meteor/client/views/banners/UiKitBanner.tsx index a814fd34a07..df4280e9042 100644 --- a/apps/meteor/client/views/banners/UiKitBanner.tsx +++ b/apps/meteor/client/views/banners/UiKitBanner.tsx @@ -1,13 +1,8 @@ -/* eslint-disable new-cap */ -import { UiKitBannerProps, UiKitBannerPayload } from '@rocket.chat/core-typings'; +import { UIKitActionEvent, UiKitBannerProps } from '@rocket.chat/core-typings'; import { Banner, Icon } from '@rocket.chat/fuselage'; -import { - kitContext, - // @ts-ignore - bannerParser, - UiKitBanner as renderUiKitBannerBlocks, -} from '@rocket.chat/fuselage-ui-kit'; -import React, { Context, FC, useMemo, ReactNode, ComponentProps } from 'react'; +import { kitContext, bannerParser, UiKitBanner as renderUiKitBannerBlocks } from '@rocket.chat/fuselage-ui-kit'; +import { LayoutBlock } from '@rocket.chat/ui-kit'; +import React, { FC, useMemo, ComponentProps, ReactElement, ContextType } from 'react'; import { useUIKitHandleAction } from '../../UIKit/hooks/useUIKitHandleAction'; import { useUIKitHandleClose } from '../../UIKit/hooks/useUIKitHandleClose'; @@ -16,12 +11,10 @@ import MarkdownText from '../../components/MarkdownText'; import * as banners from '../../lib/banners'; // TODO: move this to fuselage-ui-kit itself -const mrkdwn = ({ text }: { text: string } = { text: '' }): ReactNode => ; - -bannerParser.mrkdwn = mrkdwn; +bannerParser.mrkdwn = ({ text }): ReactElement => ; const UiKitBanner: FC = ({ payload }) => { - const state = useUIKitStateManager(payload); + const state = useUIKitStateManager(payload); const icon = useMemo(() => { if (state.icon) { @@ -35,21 +28,27 @@ const UiKitBanner: FC = ({ payload }) => { const action = useUIKitHandleAction(state); - const contextValue = useMemo ? V : never>( + const contextValue = useMemo>( () => ({ - action: async (...args): Promise => { - await action(...args); + action: async (event): Promise => { + if (!event.viewId) { + return; + } + await action(event as UIKitActionEvent); banners.closeById(state.viewId); }, state: (): void => undefined, appId: state.appId, + values: {}, }), [action, state.appId, state.viewId], ); return ( - {renderUiKitBannerBlocks(state.blocks, { engine: 'rocket.chat' })} + + {renderUiKitBannerBlocks(state.blocks as LayoutBlock[], { engine: 'rocket.chat' })} + ); }; diff --git a/apps/meteor/client/views/room/MessageList/hooks/useParsedMessage.ts b/apps/meteor/client/views/room/MessageList/hooks/useParsedMessage.ts index 941dd6808f8..63bcba91e7b 100644 --- a/apps/meteor/client/views/room/MessageList/hooks/useParsedMessage.ts +++ b/apps/meteor/client/views/room/MessageList/hooks/useParsedMessage.ts @@ -12,6 +12,8 @@ export function useParsedMessage(message: IMessage & Partial const katexParenthesisSyntax = useSetting('Katex_Parenthesis_Syntax') as boolean; const autoTranslateLanguage = useAutotranslateLanguage(message.rid); const translated = useShowTranslated({ message }); + const translations = isTranslatedMessage(message) ? message.translations : undefined; + const { md, msg } = message; return useMemo(() => { const parseOptions = { @@ -23,17 +25,17 @@ export function useParsedMessage(message: IMessage & Partial }, }; - if (translated && autoTranslateLanguage && isTranslatedMessage(message)) { - return parse(message.translations[autoTranslateLanguage], parseOptions); + if (translated && autoTranslateLanguage && translations) { + return parse(translations[autoTranslateLanguage], parseOptions); } - if (message.md) { - return message.md; + if (md) { + return md; } - if (!message.msg) { + if (!msg) { return []; } - return parse(message.msg, parseOptions); - }, [colors, katexDollarSyntax, katexParenthesisSyntax, autoTranslateLanguage, message.md, message.msg, message.translations]); + return parse(msg, parseOptions); + }, [colors, katexDollarSyntax, katexParenthesisSyntax, autoTranslateLanguage, md, msg, translated, translations]); } diff --git a/apps/meteor/client/views/room/Room/Room.tsx b/apps/meteor/client/views/room/Room/Room.tsx index 8771ba582fe..1fc23b9b0f9 100644 --- a/apps/meteor/client/views/room/Room/Room.tsx +++ b/apps/meteor/client/views/room/Room/Room.tsx @@ -1,7 +1,7 @@ import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; import { ErrorBoundary } from '@rocket.chat/ui-client'; import { useUserPreference, useTranslation } from '@rocket.chat/ui-contexts'; -import React, { useMemo, FC } from 'react'; +import React, { useMemo, ReactElement } from 'react'; import { useEmbeddedLayout } from '../../../hooks/useEmbeddedLayout'; import Announcement from '../Announcement'; @@ -16,7 +16,7 @@ import { SelectedMessagesProvider } from '../providers/SelectedMessagesProvider' import { useTab, useTabBarOpen, useTabBarClose, useTabBarOpenUserInfo } from '../providers/ToolboxProvider'; import LazyComponent from './LazyComponent'; -export const Room: FC<{}> = () => { +export const Room = (): ReactElement => { const room = useRoom(); const t = useTranslation(); const tab = useTab(); diff --git a/apps/meteor/client/views/room/contextualBar/Apps/Apps.tsx b/apps/meteor/client/views/room/contextualBar/Apps/Apps.tsx index 01197d0cbc5..2bbbc730ca7 100644 --- a/apps/meteor/client/views/room/contextualBar/Apps/Apps.tsx +++ b/apps/meteor/client/views/room/contextualBar/Apps/Apps.tsx @@ -1,6 +1,7 @@ import { IUIKitSurface } from '@rocket.chat/apps-engine/definition/uikit'; import { ButtonGroup, Button, Box, Avatar } from '@rocket.chat/fuselage'; import { UiKitComponent, UiKitModal } from '@rocket.chat/fuselage-ui-kit'; +import { LayoutBlock } from '@rocket.chat/ui-kit'; import React from 'react'; import { getURL } from '../../../../../app/utils/lib/getURL'; @@ -24,7 +25,7 @@ const Apps = ({ view, onSubmit, onClose, onCancel, appInfo }: AppsProps): JSX.El - + diff --git a/apps/meteor/client/views/room/contextualBar/Apps/AppsWithData.tsx b/apps/meteor/client/views/room/contextualBar/Apps/AppsWithData.tsx index 3e96ab62584..9f7a3b35fd2 100644 --- a/apps/meteor/client/views/room/contextualBar/Apps/AppsWithData.tsx +++ b/apps/meteor/client/views/room/contextualBar/Apps/AppsWithData.tsx @@ -12,7 +12,7 @@ import { import { UIKitIncomingInteractionContainerType } from '@rocket.chat/apps-engine/definition/uikit/UIKitIncomingInteractionContainer'; import { useDebouncedCallback, useMutableCallback } from '@rocket.chat/fuselage-hooks'; import { kitContext } from '@rocket.chat/fuselage-ui-kit'; -import React, { memo, useState, useEffect, useReducer, Dispatch, SyntheticEvent } from 'react'; +import React, { memo, useState, useEffect, useReducer, Dispatch, SyntheticEvent, ContextType } from 'react'; import { triggerBlockAction, triggerCancel, triggerSubmitView, on, off } from '../../../../../app/ui-message/client/ActionManager'; import { App } from '../../../admin/apps/types'; @@ -153,7 +153,7 @@ const AppsWithData = ({ }); }, 700); - const context = { + const context: ContextType = { action: async ({ actionId, appId, value, blockId, dispatchActionConfig }: ActionParams): Promise => { if (Array.isArray(dispatchActionConfig) && dispatchActionConfig.includes(InputElementDispatchAction.ON_CHARACTER_ENTERED)) { await debouncedBlockAction({ actionId, appId, value, blockId }); @@ -182,7 +182,7 @@ const AppsWithData = ({ }, ...state, values, - }; + } as ContextType; const handleSubmit = useMutableCallback((e) => { prevent(e); diff --git a/apps/meteor/client/views/room/contextualBar/Threads/Row.tsx b/apps/meteor/client/views/room/contextualBar/Threads/Row.tsx index 33816cb3730..b6d074dee60 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/Row.tsx +++ b/apps/meteor/client/views/room/contextualBar/Threads/Row.tsx @@ -52,7 +52,7 @@ const Row: FC = memo(function Row({ thread, showRealNames, unrea unread={unread.includes(thread._id)} mention={unreadUser.includes(thread._id)} all={unreadGroup.includes(thread._id)} - following={thread.replies && thread.replies.includes(userId)} + following={thread.replies?.includes(userId)} data-id={thread._id} msg={msg} t={t} diff --git a/apps/meteor/client/views/room/lib/QuickActions/QuickActionsContext.tsx b/apps/meteor/client/views/room/lib/QuickActions/QuickActionsContext.tsx index ba55a4f6396..44d5bf44510 100644 --- a/apps/meteor/client/views/room/lib/QuickActions/QuickActionsContext.tsx +++ b/apps/meteor/client/views/room/lib/QuickActions/QuickActionsContext.tsx @@ -5,7 +5,7 @@ import { actions, listen, QuickActionsActionConfig, QuickActionsAction, Events } import './defaultActions'; -export type QuickActionsEventHandler = (handler: EventHandlerOf) => Function; +export type QuickActionsEventHandler = (handler: EventHandlerOf) => unknown; export type QuickActionsContext = { actions: Map; diff --git a/apps/meteor/client/views/room/lib/Toolbox/ToolboxContext.tsx b/apps/meteor/client/views/room/lib/Toolbox/ToolboxContext.tsx index acb851c4fc2..a038e5a8430 100644 --- a/apps/meteor/client/views/room/lib/Toolbox/ToolboxContext.tsx +++ b/apps/meteor/client/views/room/lib/Toolbox/ToolboxContext.tsx @@ -6,14 +6,14 @@ import { createContext, useContext } from 'react'; import { actions, listen, ToolboxActionConfig, ToolboxAction, Events } from '.'; import './defaultActions'; -export type ToolboxEventHandler = (handler: EventHandlerOf) => Function; +export type ToolboxEventHandler = (handler: EventHandlerOf) => () => void; export type ToolboxContextValue = { actions: Map; listen: ToolboxEventHandler; tabBar?: any; context?: any; - open: Function; + open: (actionId: string, context?: string) => void; openUserInfo: (username: string) => void; close: () => void; activeTabBar?: ToolboxActionConfig; diff --git a/apps/meteor/client/views/room/lib/Toolbox/generator.tsx b/apps/meteor/client/views/room/lib/Toolbox/generator.tsx index e98cee20420..5e6ee5889ef 100644 --- a/apps/meteor/client/views/room/lib/Toolbox/generator.tsx +++ b/apps/meteor/client/views/room/lib/Toolbox/generator.tsx @@ -10,7 +10,7 @@ export const generator = function generator(name?: string): { store: Store; add: (id: string, action: T) => Store; remove: (id: string) => boolean; - listen: (handler: EventHandlerOf, 'change'>) => Function; + listen: (handler: EventHandlerOf, 'change'>) => () => void; name: string | undefined; } { const store: Store = new Map(); @@ -28,7 +28,7 @@ export const generator = function generator(name?: string): { return result; }; - const listen = (handler: EventHandlerOf, 'change'>): Function => emitter.on('change', handler); + const listen = (handler: EventHandlerOf, 'change'>): (() => void) => emitter.on('change', handler); return Object.freeze({ store, diff --git a/apps/meteor/client/views/room/providers/ToolboxProvider.tsx b/apps/meteor/client/views/room/providers/ToolboxProvider.tsx index 51168345992..58cf23eed12 100644 --- a/apps/meteor/client/views/room/providers/ToolboxProvider.tsx +++ b/apps/meteor/client/views/room/providers/ToolboxProvider.tsx @@ -51,14 +51,15 @@ const ToolboxProvider = ({ children, room }: { children: ReactNode; room: IRoom }); }); - const open = useMutableCallback((actionId, context) => { + const open = useMutableCallback((actionId: string, context?: string) => { if (actionId === activeTabBar[0]?.id && context === undefined) { return close(); } + router.push({ ...params, tab: actionId, - context, + context: context ?? '', }); }); @@ -121,8 +122,8 @@ const ToolboxProvider = ({ children, room }: { children: ReactNode; room: IRoom export const useTabContext = (): unknown | undefined => useContext(ToolboxContext).context; export const useTab = (): ToolboxActionConfig | undefined => useContext(ToolboxContext).activeTabBar; -export const useTabBarOpen = (): Function => useContext(ToolboxContext).open; +export const useTabBarOpen = (): ((actionId: string, context?: string) => void) => useContext(ToolboxContext).open; export const useTabBarClose = (): (() => void) => useContext(ToolboxContext).close; -export const useTabBarOpenUserInfo = (): Function => useContext(ToolboxContext).openUserInfo; +export const useTabBarOpenUserInfo = (): ((username: string) => void) => useContext(ToolboxContext).openUserInfo; export default ToolboxProvider; diff --git a/apps/meteor/client/views/room/providers/VirtualAction.tsx b/apps/meteor/client/views/room/providers/VirtualAction.tsx index 1960a46d5c8..e735ea3e1f1 100644 --- a/apps/meteor/client/views/room/providers/VirtualAction.tsx +++ b/apps/meteor/client/views/room/providers/VirtualAction.tsx @@ -35,7 +35,7 @@ const VirtualAction = ({ id: string; action: ToolboxAction; room: IRoom; - handleChange: Function; + handleChange: (callback: (list: Store) => void) => void; }): null => { const config = typeof action === 'function' ? action({ room }) : action; diff --git a/apps/meteor/client/views/setupWizard/contexts/SetupWizardContext.tsx b/apps/meteor/client/views/setupWizard/contexts/SetupWizardContext.tsx index 5af38aa3fe4..98205e3033a 100644 --- a/apps/meteor/client/views/setupWizard/contexts/SetupWizardContext.tsx +++ b/apps/meteor/client/views/setupWizard/contexts/SetupWizardContext.tsx @@ -53,7 +53,7 @@ export const SetupWizardContext = createContext({ }, registrationData: { cloudEmail: '', user_code: '', device_code: '' }, }, - setSetupWizardData: (data: {}) => data, + setSetupWizardData: (data) => data, loaded: false, settings: [], skipCloudRegistration: false, diff --git a/apps/meteor/definition/externals/express.d.ts b/apps/meteor/definition/externals/express.d.ts index c2f3d93b269..73ab7b5a5a2 100644 --- a/apps/meteor/definition/externals/express.d.ts +++ b/apps/meteor/definition/externals/express.d.ts @@ -1,6 +1,6 @@ import 'express'; -import { IUser } from '@rocket.chat/core-typings'; +import type { IUser } from '@rocket.chat/core-typings'; declare module 'express' { export interface Request { diff --git a/apps/meteor/definition/externals/global.d.ts b/apps/meteor/definition/externals/global.d.ts index bd0cf7ca1eb..6d491ff900c 100644 --- a/apps/meteor/definition/externals/global.d.ts +++ b/apps/meteor/definition/externals/global.d.ts @@ -1,24 +1,35 @@ -interface Navigator { - /** @deprecated */ - readonly userLanguage?: string; -} +// eslint-disable-next-line @typescript-eslint/consistent-type-imports +import { Server } from 'net'; -interface Window { - setLanguage?: (language: string) => void; - defaultUserLanguage?: () => string; - DISABLE_ANIMATION?: boolean; - lastMessageWindow?: Record; - lastMessageWindowHistory?: Record; - favico?: any; - USE_REST_FOR_DDP_CALLS?: boolean; - ECDH_Enabled?: boolean; - __meteor_runtime_config__: { - ROOT_URL_PATH_PREFIX: string; - ROOT_URL: string; - }; -} +declare global { + interface Navigator { + /** @deprecated */ + readonly userLanguage?: string; + } + + interface Window { + setLanguage?: (language: string) => void; + defaultUserLanguage?: () => string; + DISABLE_ANIMATION?: boolean; + lastMessageWindow?: Record; + lastMessageWindowHistory?: Record; + favico?: any; + USE_REST_FOR_DDP_CALLS?: boolean; + ECDH_Enabled?: boolean; + __meteor_runtime_config__: { + ROOT_URL_PATH_PREFIX: string; + ROOT_URL: string; + }; + } + + interface PromiseConstructor { + await(promise: Promise): T; + await(value: T): T; + } -interface PromiseConstructor { - await(promise: Promise): T; - await(value: T): T; + namespace NodeJS { + interface Process { + emit(event: 'message', message: any, sendHandle?: Server | Socket): boolean; + } + } } diff --git a/apps/meteor/definition/externals/meteor/accounts-base.d.ts b/apps/meteor/definition/externals/meteor/accounts-base.d.ts index a3f6e3151bb..6cd2a9e8e9e 100644 --- a/apps/meteor/definition/externals/meteor/accounts-base.d.ts +++ b/apps/meteor/definition/externals/meteor/accounts-base.d.ts @@ -1,5 +1,16 @@ declare module 'meteor/accounts-base' { namespace Accounts { + function createUser( + options: { + username?: string; + email?: string; + password?: string; + profile?: Record; + joinDefaultChannelsSilenced?: boolean; + }, + callback?: (error?: Error | Meteor.Error | Meteor.TypedError) => void, + ): string; + function _bcryptRounds(): number; function _getLoginToken(connectionId: string): string | undefined; @@ -10,7 +21,7 @@ declare module 'meteor/accounts-base' { function _insertLoginToken(userId: string, token: { token: string; when: Date }): void; - function _runLoginHandlers(methodInvocation: Function, loginRequest: Record): Record | undefined; + function _runLoginHandlers(methodInvocation: T, loginRequest: Record): Record | undefined; export class ConfigError extends Error {} diff --git a/apps/meteor/definition/externals/meteor/kadira-flow-router.d.ts b/apps/meteor/definition/externals/meteor/kadira-flow-router.d.ts index e9c2e8c6bf6..db38dbb6edf 100644 --- a/apps/meteor/definition/externals/meteor/kadira-flow-router.d.ts +++ b/apps/meteor/definition/externals/meteor/kadira-flow-router.d.ts @@ -1,5 +1,5 @@ declare module 'meteor/kadira:flow-router' { - import { Subscription } from 'meteor/meteor'; + import type { Subscription } from 'meteor/meteor'; type Context = { params: Record; @@ -29,7 +29,7 @@ declare module 'meteor/kadira:flow-router' { clearSubscriptions(): void; - register(name: string, sub: Subscription, options?: {}): void; + register(name: string, sub: Subscription, options?: never): void; // `options` is unused in FlowRouter code getSubscription(name: string): Subscription; @@ -116,9 +116,9 @@ declare module 'meteor/kadira:flow-router' { subsReady(): boolean; - withReplaceState(fn: Function): Router; + withReplaceState(fn: () => void): Router; - withTrailingSlash(fn: Function): Router; + withTrailingSlash(fn: () => void): Router; initialize(options?: RouterOptions): void; diff --git a/apps/meteor/definition/externals/meteor/littledata-synced-cron.d.ts b/apps/meteor/definition/externals/meteor/littledata-synced-cron.d.ts index 412fa6f60d7..d8c159eadc3 100644 --- a/apps/meteor/definition/externals/meteor/littledata-synced-cron.d.ts +++ b/apps/meteor/definition/externals/meteor/littledata-synced-cron.d.ts @@ -1,6 +1,8 @@ declare module 'meteor/littledata:synced-cron' { + import type { ParseStatic, ScheduleData } from 'later'; + namespace SyncedCron { - function add(params: { name: string; schedule: Function; job: Function }): string; + function add(params: { name: string; schedule: (parser: ParseStatic) => ScheduleData; job: () => void }): string; function remove(name: string): string; function nextScheduledAtDate(name: string): Date | number | undefined; } diff --git a/apps/meteor/definition/externals/meteor/meteor.d.ts b/apps/meteor/definition/externals/meteor/meteor.d.ts index da19dbb9469..2e57625bd54 100644 --- a/apps/meteor/definition/externals/meteor/meteor.d.ts +++ b/apps/meteor/definition/externals/meteor/meteor.d.ts @@ -1,5 +1,5 @@ import 'meteor/meteor'; -import { IStreamerConstructor, IStreamer } from 'meteor/rocketchat:streamer'; +import type { IStreamerConstructor, IStreamer } from 'meteor/rocketchat:streamer'; declare module 'meteor/meteor' { namespace Meteor { @@ -26,7 +26,7 @@ declare module 'meteor/meteor' { const server: any; - const runAsUser: (userId: string, scope: Function) => any; + const runAsUser: (userId: string, scope: () => T) => T; interface MethodThisType { twoFactorChecked: boolean | undefined; diff --git a/apps/meteor/definition/externals/meteor/mongo.d.ts b/apps/meteor/definition/externals/meteor/mongo.d.ts index ab1fb26c195..d56ddfd38e4 100644 --- a/apps/meteor/definition/externals/meteor/mongo.d.ts +++ b/apps/meteor/definition/externals/meteor/mongo.d.ts @@ -1,4 +1,4 @@ -import * as mongodb from 'mongodb'; +import type * as mongodb from 'mongodb'; declare module 'meteor/mongo' { interface RemoteCollectionDriver { @@ -7,8 +7,8 @@ declare module 'meteor/mongo' { interface OplogHandle { stop(): void; - onOplogEntry(trigger: Record, callback: Function): void; - onSkippedEntries(callback: Function): void; + onOplogEntry(trigger: Record, callback: (notification: unknown) => void): void; + onSkippedEntries(callback: () => void): void; waitUntilCaughtUp(): void; _defineTooFarBehind(value: number): void; _entryQueue?: unknown[]; @@ -35,7 +35,7 @@ declare module 'meteor/mongo' { options?: { connection?: object | null; idGeneration?: string; - transform?: Function | null; + transform?: ((doc: T) => T) | null; }, ): Collection; } diff --git a/apps/meteor/definition/externals/meteor/oauth.d.ts b/apps/meteor/definition/externals/meteor/oauth.d.ts index fa952d236b8..b296a981a69 100644 --- a/apps/meteor/definition/externals/meteor/oauth.d.ts +++ b/apps/meteor/definition/externals/meteor/oauth.d.ts @@ -1,6 +1,6 @@ declare module 'meteor/oauth' { - import { Mongo } from 'meteor/mongo'; - import { IRocketChatRecord } from '@rocket.chat/core-typings'; + import type { Mongo } from 'meteor/mongo'; + import type { IRocketChatRecord } from '@rocket.chat/core-typings'; interface IOauthCredentials extends IRocketChatRecord { key: string; diff --git a/apps/meteor/definition/externals/meteor/oauth2server.d.ts b/apps/meteor/definition/externals/meteor/oauth2server.d.ts index 7fb1f963b9b..98f11400edf 100644 --- a/apps/meteor/definition/externals/meteor/oauth2server.d.ts +++ b/apps/meteor/definition/externals/meteor/oauth2server.d.ts @@ -1,7 +1,7 @@ declare module 'meteor/rocketchat:oauth2-server' { - import { Mongo } from 'meteor/mongo'; - import { HandleFunction } from 'connect'; - import { Request, Response } from 'express'; + import type { Mongo } from 'meteor/mongo'; + import type { HandleFunction } from 'connect'; + import type { Request, Response } from 'express'; export class OAuth2Server { constructor(opts: { diff --git a/apps/meteor/definition/externals/meteor/rocketchat-streamer.d.ts b/apps/meteor/definition/externals/meteor/rocketchat-streamer.d.ts index b71a118e2ad..0121e9fb7c7 100644 --- a/apps/meteor/definition/externals/meteor/rocketchat-streamer.d.ts +++ b/apps/meteor/definition/externals/meteor/rocketchat-streamer.d.ts @@ -1,27 +1,23 @@ declare module 'meteor/rocketchat:streamer' { - type Connection = any; + import type { Subscription } from 'meteor/meteor'; - type Client = { - meteorClient: boolean; - ws: any; - userId?: string; - send: Function; - }; + type Connection = any; - interface IPublication { - onStop: Function; - stop: Function; + interface IPublication extends Subscription { connection: Connection; _session: { sendAdded(publicationName: string, id: string, fields: Record): void; userId?: string; socket?: { - send: Function; + send: (payload: string) => void; }; }; - ready: Function; - userId: string | undefined; - client: Client; + client: { + meteorClient: boolean; + ws: any; + userId?: string; + send: (payload: string) => void; + }; } type Rule = (this: IPublication, eventName: string, ...args: any) => Promise; diff --git a/apps/meteor/definition/externals/meteor/rocketchat-tap-i18n.d.ts b/apps/meteor/definition/externals/meteor/rocketchat-tap-i18n.d.ts index bb1c393a29b..931c2305066 100644 --- a/apps/meteor/definition/externals/meteor/rocketchat-tap-i18n.d.ts +++ b/apps/meteor/definition/externals/meteor/rocketchat-tap-i18n.d.ts @@ -1,6 +1,6 @@ declare module 'meteor/rocketchat:tap-i18n' { - import { Tracker } from 'meteor/tracker'; - import i18next from 'i18next'; + import type { Tracker } from 'meteor/tracker'; + import type i18next from 'i18next'; namespace TAPi18n { function __( @@ -14,7 +14,7 @@ declare module 'meteor/rocketchat:tap-i18n' { postProcess: 'sprintf'; sprintf: (boolean | number | string)[]; } - | {} + | Record ), lang?: string, ): string; diff --git a/apps/meteor/definition/externals/meteor/webapp-hashing.d.ts b/apps/meteor/definition/externals/meteor/webapp-hashing.d.ts index 845923093f2..c411144e452 100644 --- a/apps/meteor/definition/externals/meteor/webapp-hashing.d.ts +++ b/apps/meteor/definition/externals/meteor/webapp-hashing.d.ts @@ -1,5 +1,11 @@ declare module 'meteor/webapp-hashing' { + import type { IRocketChatAssetCache } from '@rocket.chat/core-typings'; + namespace WebAppHashing { - function calculateClientHash(manifest: Record, includeFilter: Function, runtimeConfigOverride: any): string; + function calculateClientHash( + manifest: IRocketChatAssetCache[], + includeFilter?: (type: IRocketChatAssetCache['type'], replaceable: boolean) => boolean, + runtimeConfigOverride?: unknown, + ): string; } } diff --git a/apps/meteor/definition/externals/rocket.chat/fuselage-ui-kit.d.ts b/apps/meteor/definition/externals/rocket.chat/fuselage-ui-kit.d.ts deleted file mode 100644 index c144ab4b9e7..00000000000 --- a/apps/meteor/definition/externals/rocket.chat/fuselage-ui-kit.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -declare module '@rocket.chat/fuselage-ui-kit' { - import { - IDividerBlock, - ISectionBlock, - IActionsBlock, - IContextBlock, - IInputBlock, - } from '@rocket.chat/apps-engine/definition/uikit/blocks/Blocks'; - import { IBlock } from '@rocket.chat/ui-kit'; - import { Context, FC, ReactChildren } from 'react'; - - export const kitContext: Context<{ - action: (action: { blockId: string; appId: string; actionId: string; value: unknown; viewId: string }) => void | Promise; - state?: (state: { blockId: string; appId: string; actionId: string; value: unknown }) => void | Promise; - appId: string; - errors?: { - [fieldName: string]: string; - }; - }>; - - type UiKitComponentProps = { - render: (blocks: IBlock[]) => ReactChildren; - blocks: IBlock[]; - }; - export const UiKitComponent: FC; - - type BannerBlocks = IDividerBlock | ISectionBlock | IActionsBlock | IContextBlock | IInputBlock; - - export const UiKitBanner: (blocks: BannerBlocks[], conditions?: { [param: string]: unknown }) => ReactChildren; - export const UiKitMessage: (blocks: IBlock[], conditions?: { [param: string]: unknown }) => ReactChildren; - export const UiKitModal: (blocks: IBlock[], conditions?: { [param: string]: unknown }) => ReactChildren; -} diff --git a/apps/meteor/definition/externals/webdav.d.ts b/apps/meteor/definition/externals/webdav.d.ts deleted file mode 100644 index c8eb78af345..00000000000 --- a/apps/meteor/definition/externals/webdav.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -declare module 'webdav' { - type Stat = { - filename: string; - basename: string; - lastmod: string | null; - size: number; - type: string; - mime: string; - etag: string | null; - props: Record; - }; - - type WebDavClient = { - copyFile(remotePath: string, targetRemotePath: string, options?: Record): Promise; - createDirectory(dirPath: string, options?: Record): Promise; - createReadStream(remoteFileName: string, options?: Record): ReadableStream; - createWriteStream(remoteFileName: string, options?: Record, callback?: Function): WritableStream; - customRequest(remotePath: string, requestOptions: Record, options?: Record): Promise; - deleteFile(remotePath: string, options?: Record): Promise; - exists(remotePath: string, options?: Record): Promise; - getDirectoryContents(remotePath: string, options?: Record): Promise>; - getFileContents(remoteFileName: string, options?: Record): Promise; - getFileDownloadLink(remoteFileName: string, options?: Record): string; - getFileUploadLink(remoteFileName: string, options?: Record): string; - getQuota(options?: Record): Promise; - moveFile(remotePath: string, targetRemotePath: string, options?: Record): Promise; - putFileContents(remoteFileName: string, data: string | Buffer, options?: Record): Promise; - stat(remotePath: string, options?: Record): Promise; - }; - - export function createClient(remoteURL: string, opts?: Record): WebDavClient; -} diff --git a/apps/meteor/definition/methods/omnichannel.ts b/apps/meteor/definition/methods/omnichannel.ts index 96c5caaee03..66039f02119 100644 --- a/apps/meteor/definition/methods/omnichannel.ts +++ b/apps/meteor/definition/methods/omnichannel.ts @@ -18,9 +18,9 @@ declare module '@rocket.chat/ui-contexts' { subscribed: boolean; id: string; }[]) - | ((...args: [{ action: 'subscribe' | 'unsubscribe'; page: string }]) => {}) + | ((...args: [{ action: 'subscribe' | 'unsubscribe'; page: string }]) => void) | ((...args: [{ action: 'enable' }]) => { url: string } | undefined) - | ((...args: [{ action: 'disable' }]) => {}); + | ((...args: [{ action: 'disable' }]) => void); 'livechat:getAgentOverviewData': (...args: any[]) => any; 'livechat:getAnalyticsChartData': (...args: any[]) => any; 'livechat:getAnalyticsOverviewData': (...args: any[]) => any; diff --git a/apps/meteor/ee/app/ecdh/Session.ts b/apps/meteor/ee/app/ecdh/Session.ts index 1716971faae..634818d9479 100644 --- a/apps/meteor/ee/app/ecdh/Session.ts +++ b/apps/meteor/ee/app/ecdh/Session.ts @@ -1,4 +1,5 @@ -import { SodiumPlus, X25519PublicKey, X25519SecretKey, CryptographyKey } from 'sodium-plus'; +import type { X25519SecretKey, CryptographyKey } from 'sodium-plus'; +import { SodiumPlus, X25519PublicKey } from 'sodium-plus'; let sodium: SodiumPlus; diff --git a/apps/meteor/ee/app/federation-v2/server/application/RoomServiceSender.ts b/apps/meteor/ee/app/federation-v2/server/application/RoomServiceSender.ts index 8097a93ed56..160fcbd015d 100644 --- a/apps/meteor/ee/app/federation-v2/server/application/RoomServiceSender.ts +++ b/apps/meteor/ee/app/federation-v2/server/application/RoomServiceSender.ts @@ -1,16 +1,16 @@ import { RoomType } from '@rocket.chat/apps-engine/definition/rooms'; -import { IRoom, IUser } from '@rocket.chat/core-typings'; +import type { IRoom, IUser } from '@rocket.chat/core-typings'; import { FederationRoomServiceSender } from '../../../../../app/federation-v2/server/application/RoomServiceSender'; import { FederatedUser } from '../../../../../app/federation-v2/server/domain/FederatedUser'; -import { RocketChatSettingsAdapter } from '../../../../../app/federation-v2/server/infrastructure/rocket-chat/adapters/Settings'; +import type { RocketChatSettingsAdapter } from '../../../../../app/federation-v2/server/infrastructure/rocket-chat/adapters/Settings'; import { FederatedRoomEE } from '../domain/FederatedRoom'; import { FederatedUserEE } from '../domain/FederatedUser'; -import { IFederationBridgeEE } from '../domain/IFederationBridge'; -import { RocketChatNotificationAdapter } from '../infrastructure/rocket-chat/adapters/Notification'; -import { RocketChatRoomAdapterEE } from '../infrastructure/rocket-chat/adapters/Room'; -import { RocketChatUserAdapterEE } from '../infrastructure/rocket-chat/adapters/User'; -import { +import type { IFederationBridgeEE } from '../domain/IFederationBridge'; +import type { RocketChatNotificationAdapter } from '../infrastructure/rocket-chat/adapters/Notification'; +import type { RocketChatRoomAdapterEE } from '../infrastructure/rocket-chat/adapters/Room'; +import type { RocketChatUserAdapterEE } from '../infrastructure/rocket-chat/adapters/User'; +import type { FederationBeforeAddUserToARoomDto, FederationBeforeDirectMessageRoomCreationDto, FederationCreateDirectMessageDto, diff --git a/apps/meteor/ee/app/federation-v2/server/domain/FederatedRoom.ts b/apps/meteor/ee/app/federation-v2/server/domain/FederatedRoom.ts index a7c55f9261e..62e6ebf114a 100644 --- a/apps/meteor/ee/app/federation-v2/server/domain/FederatedRoom.ts +++ b/apps/meteor/ee/app/federation-v2/server/domain/FederatedRoom.ts @@ -1,9 +1,9 @@ import { RoomType } from '@rocket.chat/apps-engine/definition/rooms'; -import { IRoom, IUser } from '@rocket.chat/core-typings'; +import type { IRoom, IUser } from '@rocket.chat/core-typings'; import { FederatedRoom } from '../../../../../app/federation-v2/server/domain/FederatedRoom'; -import { FederatedUser } from '../../../../../app/federation-v2/server/domain/FederatedUser'; -import { FederatedUserEE } from './FederatedUser'; +import type { FederatedUser } from '../../../../../app/federation-v2/server/domain/FederatedUser'; +import type { FederatedUserEE } from './FederatedUser'; export class FederatedRoomEE extends FederatedRoom { public externalId: string; diff --git a/apps/meteor/ee/app/federation-v2/server/domain/IFederationBridge.ts b/apps/meteor/ee/app/federation-v2/server/domain/IFederationBridge.ts index d8c8da1e52f..0b703835095 100644 --- a/apps/meteor/ee/app/federation-v2/server/domain/IFederationBridge.ts +++ b/apps/meteor/ee/app/federation-v2/server/domain/IFederationBridge.ts @@ -1,6 +1,6 @@ -import { RoomType } from '@rocket.chat/apps-engine/definition/rooms'; +import type { RoomType } from '@rocket.chat/apps-engine/definition/rooms'; -import { IFederationBridge } from '../../../../../app/federation-v2/server/domain/IFederationBridge'; +import type { IFederationBridge } from '../../../../../app/federation-v2/server/domain/IFederationBridge'; export interface IFederationBridgeEE extends IFederationBridge { createRoom(externalCreatorId: string, roomType: RoomType, roomName: string, roomTopic?: string): Promise; diff --git a/apps/meteor/ee/app/federation-v2/server/index.ts b/apps/meteor/ee/app/federation-v2/server/index.ts index 4c7314eae94..3537cf26d60 100644 --- a/apps/meteor/ee/app/federation-v2/server/index.ts +++ b/apps/meteor/ee/app/federation-v2/server/index.ts @@ -21,7 +21,7 @@ const runFederationEE = async (): Promise => { await federationEE.start(); }; -let cancelSettingsObserverEE: Function; +let cancelSettingsObserverEE: () => void; onToggledFeature('federation', { up: async () => { diff --git a/apps/meteor/ee/app/federation-v2/server/infrastructure/Factory.ts b/apps/meteor/ee/app/federation-v2/server/infrastructure/Factory.ts index 470a4a76bb1..b923a178542 100644 --- a/apps/meteor/ee/app/federation-v2/server/infrastructure/Factory.ts +++ b/apps/meteor/ee/app/federation-v2/server/infrastructure/Factory.ts @@ -1,9 +1,9 @@ -import { IRoom, IUser } from '@rocket.chat/core-typings'; +import type { IRoom, IUser } from '@rocket.chat/core-typings'; -import { InMemoryQueue } from '../../../../../app/federation-v2/server/infrastructure/queue/InMemoryQueue'; -import { RocketChatSettingsAdapter } from '../../../../../app/federation-v2/server/infrastructure/rocket-chat/adapters/Settings'; +import type { InMemoryQueue } from '../../../../../app/federation-v2/server/infrastructure/queue/InMemoryQueue'; +import type { RocketChatSettingsAdapter } from '../../../../../app/federation-v2/server/infrastructure/rocket-chat/adapters/Settings'; import { FederationRoomServiceSenderEE } from '../application/RoomServiceSender'; -import { IFederationBridgeEE } from '../domain/IFederationBridge'; +import type { IFederationBridgeEE } from '../domain/IFederationBridge'; import { MatrixBridgeEE } from './matrix/Bridge'; import { RocketChatNotificationAdapter } from './rocket-chat/adapters/Notification'; import { RocketChatRoomAdapterEE } from './rocket-chat/adapters/Room'; diff --git a/apps/meteor/ee/app/federation-v2/server/infrastructure/matrix/Bridge.ts b/apps/meteor/ee/app/federation-v2/server/infrastructure/matrix/Bridge.ts index 3fda8b66201..f26c5003a69 100644 --- a/apps/meteor/ee/app/federation-v2/server/infrastructure/matrix/Bridge.ts +++ b/apps/meteor/ee/app/federation-v2/server/infrastructure/matrix/Bridge.ts @@ -1,9 +1,10 @@ -import { RoomType } from '@rocket.chat/apps-engine/definition/rooms'; +import type { RoomType } from '@rocket.chat/apps-engine/definition/rooms'; import { MatrixBridge } from '../../../../../../app/federation-v2/server/infrastructure/matrix/Bridge'; import { MatrixEventType } from '../../../../../../app/federation-v2/server/infrastructure/matrix/definitions/MatrixEventType'; import { MatrixRoomVisibility } from '../../../../../../app/federation-v2/server/infrastructure/matrix/definitions/MatrixRoomVisibility'; -import { IFederationBridgeEE } from '../../domain/IFederationBridge'; +import type { IFederationBridgeEE } from '../../domain/IFederationBridge'; +import type { IMatrixEvent } from '../../../../../../app/federation-v2/server/infrastructure/matrix/definitions/IMatrixEvent'; export class MatrixBridgeEE extends MatrixBridge implements IFederationBridgeEE { constructor( @@ -13,7 +14,7 @@ export class MatrixBridgeEE extends MatrixBridge implements IFederationBridgeEE protected bridgeUrl: string, protected bridgePort: number, protected homeServerRegistrationFile: Record, - protected eventHandler: Function, + protected eventHandler: (event: IMatrixEvent) => void, ) { super(appServiceId, homeServerUrl, homeServerDomain, bridgeUrl, bridgePort, homeServerRegistrationFile, eventHandler); this.logInfo(); diff --git a/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/adapters/Room.ts b/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/adapters/Room.ts index 32d89521b35..f95e2f5b988 100644 --- a/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/adapters/Room.ts +++ b/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/adapters/Room.ts @@ -1,4 +1,4 @@ -import { ICreatedRoom, IRoom } from '@rocket.chat/core-typings'; +import type { ICreatedRoom, IRoom } from '@rocket.chat/core-typings'; import { Rooms } from '@rocket.chat/models'; import { RocketChatRoomAdapter } from '../../../../../../../app/federation-v2/server/infrastructure/rocket-chat/adapters/Room'; diff --git a/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/adapters/User.ts b/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/adapters/User.ts index 4e3759e9a69..549ff2e2a26 100644 --- a/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/adapters/User.ts +++ b/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/adapters/User.ts @@ -1,7 +1,7 @@ import { Users } from '@rocket.chat/models'; import { RocketChatUserAdapter } from '../../../../../../../app/federation-v2/server/infrastructure/rocket-chat/adapters/User'; -import { FederatedUserEE } from '../../../domain/FederatedUser'; +import type { FederatedUserEE } from '../../../domain/FederatedUser'; export class RocketChatUserAdapterEE extends RocketChatUserAdapter { public async createLocalUser(federatedUser: FederatedUserEE): Promise { diff --git a/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/converters/RoomSender.ts b/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/converters/RoomSender.ts index 74c71e1cf7f..2b7fdf20de3 100644 --- a/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/converters/RoomSender.ts +++ b/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/converters/RoomSender.ts @@ -1,7 +1,7 @@ -import { IRoom, IUser } from '@rocket.chat/core-typings'; +import type { IRoom, IUser } from '@rocket.chat/core-typings'; +import type { FederationBeforeAddUserToARoomDto } from '../../../application/input/RoomSenderDto'; import { - FederationBeforeAddUserToARoomDto, FederationBeforeDirectMessageRoomCreationDto, FederationCreateDirectMessageDto, FederationOnDirectMessageRoomCreationDto, diff --git a/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/hooks/index.ts b/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/hooks/index.ts index 36adfc16298..87f8f73bb7a 100644 --- a/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/hooks/index.ts +++ b/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/hooks/index.ts @@ -1,9 +1,9 @@ -import { IRoom, IUser } from '@rocket.chat/core-typings'; +import type { IRoom, IUser } from '@rocket.chat/core-typings'; import { callbacks } from '../../../../../../../lib/callbacks'; export class FederationHooksEE { - public static onFederatedRoomCreated(callback: Function): void { + public static onFederatedRoomCreated(callback: (room: IRoom, owner: IUser, originalMemberList: string[]) => void): void { callbacks.add( 'federation.afterCreateFederatedRoom', (room: IRoom, { owner, originalMemberList }): void => { @@ -17,7 +17,7 @@ export class FederationHooksEE { ); } - public static onUsersAddedToARoom(callback: Function): void { + public static onUsersAddedToARoom(callback: (room: IRoom, inviter: IUser, users: IUser[]) => void): void { callbacks.add( 'afterAddedToRoom', (params: { user: IUser; inviter: IUser }, room: IRoom): void => { @@ -31,7 +31,7 @@ export class FederationHooksEE { ); } - public static onDirectMessageRoomCreated(callback: Function): void { + public static onDirectMessageRoomCreated(callback: (room: IRoom, creatorId: string, members: IUser[]) => void): void { callbacks.add( 'afterCreateDirectRoom', (room: IRoom, second: { members: IUser[]; creatorId: IUser['_id'] }): void => @@ -41,7 +41,7 @@ export class FederationHooksEE { ); } - public static beforeDirectMessageRoomCreate(callback: Function): void { + public static beforeDirectMessageRoomCreate(callback: (members: IUser[]) => void): void { callbacks.add( 'beforeCreateDirectRoom', (members: IUser[]): void => Promise.await(callback(members)), @@ -50,7 +50,7 @@ export class FederationHooksEE { ); } - public static beforeAddUserToARoom(callback: Function): void { + public static beforeAddUserToARoom(callback: (user: IUser | string, room: IRoom) => void): void { callbacks.add( 'federation.beforeAddUserAToRoom', (params: { user: IUser | string }, room: IRoom): void => { @@ -64,7 +64,7 @@ export class FederationHooksEE { ); } - public static afterRoomNameChanged(callback: Function): void { + public static afterRoomNameChanged(callback: (roomId: IRoom['_id'], name: string) => void): void { callbacks.add( 'afterRoomNameChange', ({ rid: roomId, name }: Record): void => { @@ -75,7 +75,7 @@ export class FederationHooksEE { ); } - public static afterRoomTopicChanged(callback: Function): void { + public static afterRoomTopicChanged(callback: (roomId: IRoom['_id'], topic: string) => void): void { callbacks.add( 'afterRoomTopicChange', ({ rid: roomId, topic }: Record): void => { diff --git a/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/slash-commands/index.ts b/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/slash-commands/index.ts index 4dc015a3900..773b2492fd9 100644 --- a/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/slash-commands/index.ts +++ b/apps/meteor/ee/app/federation-v2/server/infrastructure/rocket-chat/slash-commands/index.ts @@ -26,7 +26,7 @@ const executeSlashCommand = async ( providedCommand: string, stringParams: string | undefined, item: Record, - commands: Record, + commands: Record void>, ): Promise => { if (providedCommand !== 'federation' || !stringParams) { return; diff --git a/apps/meteor/ee/app/license/definitions/ILicense.ts b/apps/meteor/ee/app/license/definitions/ILicense.ts index d64ba55401c..668866b5cc4 100644 --- a/apps/meteor/ee/app/license/definitions/ILicense.ts +++ b/apps/meteor/ee/app/license/definitions/ILicense.ts @@ -1,4 +1,4 @@ -import { ILicenseTag } from './ILicenseTag'; +import type { ILicenseTag } from './ILicenseTag'; export interface ILicense { url: string; diff --git a/apps/meteor/ee/app/license/server/license.internalService.ts b/apps/meteor/ee/app/license/server/license.internalService.ts index 8561cca6066..973657566c6 100644 --- a/apps/meteor/ee/app/license/server/license.internalService.ts +++ b/apps/meteor/ee/app/license/server/license.internalService.ts @@ -1,7 +1,7 @@ import { debounce } from 'underscore'; import { api } from '../../../../server/sdk/api'; -import { ILicense } from '../../../../server/sdk/types/ILicense'; +import type { ILicense } from '../../../../server/sdk/types/ILicense'; import { ServiceClassInternal } from '../../../../server/sdk/types/ServiceClass'; import { guestPermissions } from '../../authorization/lib/guestPermissions'; import { resetEnterprisePermissions } from '../../authorization/server/resetEnterprisePermissions'; diff --git a/apps/meteor/ee/app/license/server/license.ts b/apps/meteor/ee/app/license/server/license.ts index a4da074e3e8..ca8d59cfdbb 100644 --- a/apps/meteor/ee/app/license/server/license.ts +++ b/apps/meteor/ee/app/license/server/license.ts @@ -1,11 +1,12 @@ import { EventEmitter } from 'events'; import { Users } from '../../../../app/models/server'; -import { getBundleModules, isBundle, getBundleFromModule, BundleFeature } from './bundles'; +import type { BundleFeature } from './bundles'; +import { getBundleModules, isBundle, getBundleFromModule } from './bundles'; import decrypt from './decrypt'; import { getTagColor } from './getTagColor'; -import { ILicense } from '../definitions/ILicense'; -import { ILicenseTag } from '../definitions/ILicenseTag'; +import type { ILicense } from '../definitions/ILicense'; +import type { ILicenseTag } from '../definitions/ILicenseTag'; const EnterpriseLicenses = new EventEmitter(); diff --git a/apps/meteor/ee/app/license/server/maxSeatsBanners.ts b/apps/meteor/ee/app/license/server/maxSeatsBanners.ts index 74272587177..312dd69525d 100644 --- a/apps/meteor/ee/app/license/server/maxSeatsBanners.ts +++ b/apps/meteor/ee/app/license/server/maxSeatsBanners.ts @@ -2,7 +2,8 @@ import { Meteor } from 'meteor/meteor'; import { BlockType } from '@rocket.chat/apps-engine/definition/uikit/blocks/Blocks'; import { TextObjectType } from '@rocket.chat/apps-engine/definition/uikit/blocks/Objects'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; -import { IBanner, BannerPlatform } from '@rocket.chat/core-typings'; +import type { IBanner } from '@rocket.chat/core-typings'; +import { BannerPlatform } from '@rocket.chat/core-typings'; import { Banner } from '../../../../server/sdk'; diff --git a/apps/meteor/ee/app/livechat-enterprise/client/components/modals/PlaceChatOnHoldModal.tsx b/apps/meteor/ee/app/livechat-enterprise/client/components/modals/PlaceChatOnHoldModal.tsx index 20e954db249..1bb558b5443 100644 --- a/apps/meteor/ee/app/livechat-enterprise/client/components/modals/PlaceChatOnHoldModal.tsx +++ b/apps/meteor/ee/app/livechat-enterprise/client/components/modals/PlaceChatOnHoldModal.tsx @@ -1,5 +1,6 @@ import { Box, Button, ButtonGroup, Icon, Modal } from '@rocket.chat/fuselage'; -import React, { FC } from 'react'; +import type { FC } from 'react'; +import React from 'react'; import { useTranslation } from '@rocket.chat/ui-contexts'; type PlaceChatOnHoldModalProps = { diff --git a/apps/meteor/ee/app/livechat-enterprise/client/startup.ts b/apps/meteor/ee/app/livechat-enterprise/client/startup.ts index 37b6fd29e3e..8b4f7154986 100644 --- a/apps/meteor/ee/app/livechat-enterprise/client/startup.ts +++ b/apps/meteor/ee/app/livechat-enterprise/client/startup.ts @@ -3,7 +3,7 @@ import { Meteor } from 'meteor/meteor'; import { MultipleBusinessHoursBehavior } from './views/business-hours/Multiple'; import { settings } from '../../../../app/settings/client'; import { businessHourManager } from '../../../../app/livechat/client/views/app/business-hours/BusinessHours'; -import { IBusinessHourBehavior } from '../../../../app/livechat/client/views/app/business-hours/IBusinessHourBehavior'; +import type { IBusinessHourBehavior } from '../../../../app/livechat/client/views/app/business-hours/IBusinessHourBehavior'; import { EESingleBusinessHourBehaviour } from './SingleBusinessHour'; import { hasLicense } from '../../license/client'; diff --git a/apps/meteor/ee/app/livechat-enterprise/client/views/business-hours/Multiple.ts b/apps/meteor/ee/app/livechat-enterprise/client/views/business-hours/Multiple.ts index 64db07a4261..cbe3fe9088f 100644 --- a/apps/meteor/ee/app/livechat-enterprise/client/views/business-hours/Multiple.ts +++ b/apps/meteor/ee/app/livechat-enterprise/client/views/business-hours/Multiple.ts @@ -1,6 +1,7 @@ -import { ILivechatBusinessHour, LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; +import type { ILivechatBusinessHour } from '@rocket.chat/core-typings'; +import { LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; -import { IBusinessHourBehavior } from '../../../../../../app/livechat/client/views/app/business-hours/IBusinessHourBehavior'; +import type { IBusinessHourBehavior } from '../../../../../../app/livechat/client/views/app/business-hours/IBusinessHourBehavior'; export class MultipleBusinessHoursBehavior implements IBusinessHourBehavior { getView(): string { diff --git a/apps/meteor/ee/app/livechat-enterprise/server/api/lib/priorities.ts b/apps/meteor/ee/app/livechat-enterprise/server/api/lib/priorities.ts index 4006f3d80e3..e79c2dfa031 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/api/lib/priorities.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/api/lib/priorities.ts @@ -1,6 +1,6 @@ import { escapeRegExp } from '@rocket.chat/string-helpers'; import { LivechatPriority } from '@rocket.chat/models'; -import { ILivechatPriority } from '@rocket.chat/core-typings'; +import type { ILivechatPriority } from '@rocket.chat/core-typings'; import type { FindOptions } from 'mongodb'; import { hasPermissionAsync } from '../../../../../../app/authorization/server/functions/hasPermission'; diff --git a/apps/meteor/ee/app/livechat-enterprise/server/api/lib/tags.ts b/apps/meteor/ee/app/livechat-enterprise/server/api/lib/tags.ts index 7f431fdf37e..82816f66e1c 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/api/lib/tags.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/api/lib/tags.ts @@ -1,6 +1,6 @@ import { escapeRegExp } from '@rocket.chat/string-helpers'; import { LivechatTag } from '@rocket.chat/models'; -import { ILivechatTag } from '@rocket.chat/core-typings'; +import type { ILivechatTag } from '@rocket.chat/core-typings'; import type { FindOptions } from 'mongodb'; import { hasPermissionAsync } from '../../../../../../app/authorization/server/functions/hasPermission'; diff --git a/apps/meteor/ee/app/livechat-enterprise/server/api/monitors.ts b/apps/meteor/ee/app/livechat-enterprise/server/api/monitors.ts index 578c3a71d09..d28622fbfcb 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/api/monitors.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/api/monitors.ts @@ -1,4 +1,4 @@ -import { ILivechatMonitor } from '@rocket.chat/core-typings'; +import type { ILivechatMonitor } from '@rocket.chat/core-typings'; import { API } from '../../../../../app/api/server'; import { findMonitors, findMonitorByUsername } from './lib/monitors'; diff --git a/apps/meteor/ee/app/livechat-enterprise/server/business-hour/Custom.ts b/apps/meteor/ee/app/livechat-enterprise/server/business-hour/Custom.ts index f53c1418a52..f0cf4aac6db 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/business-hour/Custom.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/business-hour/Custom.ts @@ -1,7 +1,9 @@ -import { ILivechatBusinessHour, LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; +import type { ILivechatBusinessHour } from '@rocket.chat/core-typings'; +import { LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; import { LivechatDepartment, LivechatDepartmentAgents } from '@rocket.chat/models'; -import { AbstractBusinessHourType, IBusinessHourType } from '../../../../../app/livechat/server/business-hour/AbstractBusinessHour'; +import type { IBusinessHourType } from '../../../../../app/livechat/server/business-hour/AbstractBusinessHour'; +import { AbstractBusinessHourType } from '../../../../../app/livechat/server/business-hour/AbstractBusinessHour'; import { businessHourManager } from '../../../../../app/livechat/server/business-hour'; type IBusinessHoursExtraProperties = { diff --git a/apps/meteor/ee/app/livechat-enterprise/server/business-hour/Helper.ts b/apps/meteor/ee/app/livechat-enterprise/server/business-hour/Helper.ts index 42fb1d12a51..00c61dcda7f 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/business-hour/Helper.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/business-hour/Helper.ts @@ -1,6 +1,7 @@ import { Meteor } from 'meteor/meteor'; import moment from 'moment-timezone'; -import { ILivechatBusinessHour, LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; +import type { ILivechatBusinessHour } from '@rocket.chat/core-typings'; +import { LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; import { LivechatBusinessHours, LivechatDepartment, LivechatDepartmentAgents, Users } from '@rocket.chat/models'; const getAllAgentIdsWithoutDepartment = async (): Promise => { 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 8a1784ee72f..3458ef9423c 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 @@ -1,9 +1,10 @@ import moment from 'moment'; -import { ILivechatBusinessHour, LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; -import type { ILivechatDepartment } from '@rocket.chat/core-typings'; +import { LivechatBusinessHourTypes } from '@rocket.chat/core-typings'; +import type { ILivechatDepartment, ILivechatBusinessHour } from '@rocket.chat/core-typings'; import { LivechatDepartment, LivechatDepartmentAgents } from '@rocket.chat/models'; -import { AbstractBusinessHourBehavior, IBusinessHourBehavior } from '../../../../../app/livechat/server/business-hour/AbstractBusinessHour'; +import type { IBusinessHourBehavior } from '../../../../../app/livechat/server/business-hour/AbstractBusinessHour'; +import { AbstractBusinessHourBehavior } from '../../../../../app/livechat/server/business-hour/AbstractBusinessHour'; import { filterBusinessHoursThatMustBeOpened } from '../../../../../app/livechat/server/business-hour/Helper'; import { closeBusinessHour, openBusinessHour, removeBusinessHourByAgentIds } from './Helper'; import { bhLogger } from '../lib/logger'; diff --git a/apps/meteor/ee/app/livechat-enterprise/server/business-hour/lib/business-hour.ts b/apps/meteor/ee/app/livechat-enterprise/server/business-hour/lib/business-hour.ts index c3a739e1d02..216a345a7ee 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/business-hour/lib/business-hour.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/business-hour/lib/business-hour.ts @@ -3,7 +3,7 @@ import type { ILivechatBusinessHour } from '@rocket.chat/core-typings'; import { LivechatBusinessHours } from '@rocket.chat/models'; import { hasPermissionAsync } from '../../../../../../app/authorization/server/functions/hasPermission'; -import { IPaginatedResponse, IPagination } from '../../api/lib/definition'; +import type { IPaginatedResponse, IPagination } from '../../api/lib/definition'; interface IResponse extends IPaginatedResponse { businessHours: ILivechatBusinessHour[]; diff --git a/apps/meteor/ee/app/livechat-enterprise/server/hooks/applyDepartmentRestrictions.ts b/apps/meteor/ee/app/livechat-enterprise/server/hooks/applyDepartmentRestrictions.ts index 121b7b784d5..0f08891e5df 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/hooks/applyDepartmentRestrictions.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/hooks/applyDepartmentRestrictions.ts @@ -1,3 +1,6 @@ +import type { FilterOperators } from 'mongodb'; +import type { ILivechatDepartmentRecord } from '@rocket.chat/core-typings'; + import { callbacks } from '../../../../../lib/callbacks'; import { addQueryRestrictionsToDepartmentsModel } from '../lib/query.helper'; import { hasRole } from '../../../../../app/authorization/server/functions/hasRole'; @@ -5,7 +8,7 @@ import { cbLogger } from '../lib/logger'; callbacks.add( 'livechat.applyDepartmentRestrictions', - (originalQuery: {} = {}, { userId }: { userId?: string | null } = { userId: null }) => { + (originalQuery: FilterOperators = {}, { userId }: { userId?: string | null } = { userId: null }) => { if (!userId || !hasRole(userId, 'livechat-monitor')) { cbLogger.debug('Skipping callback. No user id provided or user is not a monitor'); return originalQuery; diff --git a/apps/meteor/ee/app/livechat-enterprise/server/hooks/beforeJoinRoom.ts b/apps/meteor/ee/app/livechat-enterprise/server/hooks/beforeJoinRoom.ts index d7e3abf260e..efb6d620c9d 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/hooks/beforeJoinRoom.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/hooks/beforeJoinRoom.ts @@ -1,6 +1,6 @@ import { Meteor } from 'meteor/meteor'; -import { isOmnichannelRoom, IRoom } from '@rocket.chat/core-typings'; -import type { IUser } from '@rocket.chat/core-typings'; +import { isOmnichannelRoom } from '@rocket.chat/core-typings'; +import type { IUser, IRoom } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; import { callbacks } from '../../../../../lib/callbacks'; diff --git a/apps/meteor/ee/app/livechat-enterprise/server/hooks/onTransferFailure.ts b/apps/meteor/ee/app/livechat-enterprise/server/hooks/onTransferFailure.ts index 52826103330..5db19247131 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/hooks/onTransferFailure.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/hooks/onTransferFailure.ts @@ -33,7 +33,7 @@ callbacks.add( if (forwardSuccess) { const { _id, username } = transferData.transferredBy; // The property is injected dynamically on ee folder - // @ts-expect-error + // @ts-expect-error Property 'createTransferFailedHistoryMessage' does not exist on type 'Messages'. Messages.createTransferFailedHistoryMessage(room._id, '', { _id, username }, { transferData: transferDataFallback }); } diff --git a/apps/meteor/ee/app/livechat-enterprise/server/hooks/scheduleAutoTransfer.ts b/apps/meteor/ee/app/livechat-enterprise/server/hooks/scheduleAutoTransfer.ts index 1182c46bba4..fe5aa9b437a 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/hooks/scheduleAutoTransfer.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/hooks/scheduleAutoTransfer.ts @@ -1,4 +1,4 @@ -import { IMessage, IRoom } from '@rocket.chat/core-typings'; +import type { IMessage, IRoom } from '@rocket.chat/core-typings'; import { AutoTransferChatScheduler } from '../lib/AutoTransferChatScheduler'; import { callbacks } from '../../../../../lib/callbacks'; diff --git a/apps/meteor/ee/app/livechat-enterprise/server/lib/AutoTransferChatScheduler.ts b/apps/meteor/ee/app/livechat-enterprise/server/lib/AutoTransferChatScheduler.ts index cf4e8db3387..dca87efc646 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/lib/AutoTransferChatScheduler.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/lib/AutoTransferChatScheduler.ts @@ -1,6 +1,7 @@ import { Agenda } from '@rocket.chat/agenda'; import { MongoInternals } from 'meteor/mongo'; import { Meteor } from 'meteor/meteor'; +import type { IUser } from '@rocket.chat/core-typings'; import { LivechatRooms, Users } from '../../../../../app/models/server'; import { Livechat } from '../../../../../app/livechat/server'; @@ -15,7 +16,7 @@ class AutoTransferChatSchedulerClass { running: boolean; - user: {}; + user: IUser; public init(): void { if (this.running) { diff --git a/apps/meteor/ee/app/livechat-enterprise/server/lib/QueueInactivityMonitor.ts b/apps/meteor/ee/app/livechat-enterprise/server/lib/QueueInactivityMonitor.ts index 333924d3bc7..f9962cdaaff 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/lib/QueueInactivityMonitor.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/lib/QueueInactivityMonitor.ts @@ -1,4 +1,4 @@ -import { Db } from 'mongodb'; +import type { Db } from 'mongodb'; import { Agenda } from '@rocket.chat/agenda'; import { MongoInternals } from 'meteor/mongo'; import { Meteor } from 'meteor/meteor'; diff --git a/apps/meteor/ee/app/livechat-enterprise/server/lib/routing/LoadRotation.ts b/apps/meteor/ee/app/livechat-enterprise/server/lib/routing/LoadRotation.ts index 6fb10763173..a3e24296b29 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/lib/routing/LoadRotation.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/lib/routing/LoadRotation.ts @@ -2,7 +2,7 @@ import type { IOmnichannelCustomAgent } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; import { RoutingManager } from '../../../../../../app/livechat/server/lib/RoutingManager'; -import { IRoutingManagerConfig } from '../../../../../../definition/IRoutingManagerConfig'; +import type { IRoutingManagerConfig } from '../../../../../../definition/IRoutingManagerConfig'; /* Load Rotation Queuing method: * Routing method where the agent with the oldest routing time is the next agent to serve incoming chats diff --git a/apps/meteor/ee/app/livechat-enterprise/server/methods/resumeOnHold.ts b/apps/meteor/ee/app/livechat-enterprise/server/methods/resumeOnHold.ts index 716a4babaf6..a7ac1aa6903 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/methods/resumeOnHold.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/methods/resumeOnHold.ts @@ -1,6 +1,6 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; -import { ILivechatVisitor } from '@rocket.chat/core-typings'; +import type { ILivechatVisitor } from '@rocket.chat/core-typings'; import { LivechatVisitors } from '@rocket.chat/models'; import { LivechatRooms, LivechatInquiry, Messages, Users } from '../../../../../app/models/server'; diff --git a/apps/meteor/ee/app/models/server/models/Users.ts b/apps/meteor/ee/app/models/server/models/Users.ts index 04d092489b1..6bf132782a4 100644 --- a/apps/meteor/ee/app/models/server/models/Users.ts +++ b/apps/meteor/ee/app/models/server/models/Users.ts @@ -12,7 +12,7 @@ type AgentMetadata = { // get next agent ignoring the ones reached the max amount of active chats const getUnavailableAgents = function (_: any, departmentId: string, customFilter: { [k: string]: any }[]): Promise { - // @ts-expect-error + // @ts-expect-error 'this' implicitly has type 'any' because it does not have a type annotation. const col = this.model.rawCollection() as any; // if department is provided, remove the agents that are not from the selected department diff --git a/apps/meteor/ee/app/settings/server/settings.internalService.ts b/apps/meteor/ee/app/settings/server/settings.internalService.ts index 9b0d366d6c4..92324829313 100644 --- a/apps/meteor/ee/app/settings/server/settings.internalService.ts +++ b/apps/meteor/ee/app/settings/server/settings.internalService.ts @@ -1,7 +1,7 @@ import type { ISetting } from '@rocket.chat/core-typings'; import { ServiceClassInternal } from '../../../../server/sdk/types/ServiceClass'; -import { IEnterpriseSettings } from '../../../../server/sdk/types/IEnterpriseSettings'; +import type { IEnterpriseSettings } from '../../../../server/sdk/types/IEnterpriseSettings'; import { changeSettingValue } from './settings'; export class EnterpriseSettings extends ServiceClassInternal implements IEnterpriseSettings { diff --git a/apps/meteor/ee/app/settings/server/settings.ts b/apps/meteor/ee/app/settings/server/settings.ts index 7f0558e2c8d..be723efe513 100644 --- a/apps/meteor/ee/app/settings/server/settings.ts +++ b/apps/meteor/ee/app/settings/server/settings.ts @@ -1,5 +1,5 @@ import { Meteor } from 'meteor/meteor'; -import { ISetting, SettingValue } from '@rocket.chat/core-typings'; +import type { ISetting, SettingValue } from '@rocket.chat/core-typings'; import { Settings } from '@rocket.chat/models'; import { isEnterprise, hasLicense, onValidateLicenses } from '../../license/server/license'; diff --git a/apps/meteor/ee/app/voip-enterprise/server/lib/calculateOnHoldTimeForRoom.ts b/apps/meteor/ee/app/voip-enterprise/server/lib/calculateOnHoldTimeForRoom.ts index 13acce606de..0a17efc19b8 100644 --- a/apps/meteor/ee/app/voip-enterprise/server/lib/calculateOnHoldTimeForRoom.ts +++ b/apps/meteor/ee/app/voip-enterprise/server/lib/calculateOnHoldTimeForRoom.ts @@ -1,4 +1,4 @@ -import { IVoipRoom } from '@rocket.chat/core-typings'; +import type { IVoipRoom } from '@rocket.chat/core-typings'; import { PbxEvents } from '@rocket.chat/models'; export const calculateOnHoldTimeForRoom = async (room: IVoipRoom, closedAt: Date): Promise => { diff --git a/apps/meteor/ee/app/voip-enterprise/server/services/voipService.ts b/apps/meteor/ee/app/voip-enterprise/server/services/voipService.ts index 9f1442735bf..a9cd20fc8ea 100644 --- a/apps/meteor/ee/app/voip-enterprise/server/services/voipService.ts +++ b/apps/meteor/ee/app/voip-enterprise/server/services/voipService.ts @@ -1,6 +1,6 @@ -import { ILivechatAgent, ILivechatVisitor, IRoomClosingInfo, IUser, IVoipRoom } from '@rocket.chat/core-typings'; +import type { ILivechatAgent, ILivechatVisitor, IRoomClosingInfo, IUser, IVoipRoom } from '@rocket.chat/core-typings'; -import { IOmniRoomClosingMessage } from '../../../../../server/services/omnichannel-voip/internalTypes'; +import type { IOmniRoomClosingMessage } from '../../../../../server/services/omnichannel-voip/internalTypes'; import { OmnichannelVoipService } from '../../../../../server/services/omnichannel-voip/service'; import { overwriteClassOnLicense } from '../../../license/server'; import { calculateOnHoldTimeForRoom } from '../lib/calculateOnHoldTimeForRoom'; diff --git a/apps/meteor/ee/server/NetworkBroker.ts b/apps/meteor/ee/server/NetworkBroker.ts index 711e587d33c..3083613183b 100644 --- a/apps/meteor/ee/server/NetworkBroker.ts +++ b/apps/meteor/ee/server/NetworkBroker.ts @@ -1,9 +1,9 @@ -import { ServiceBroker, Context, ServiceSchema } from 'moleculer'; +import type { ServiceBroker, Context, ServiceSchema } from 'moleculer'; import { asyncLocalStorage } from '../../server/sdk'; -import { IBroker, IBrokerNode, IServiceMetrics } from '../../server/sdk/types/IBroker'; -import { ServiceClass } from '../../server/sdk/types/ServiceClass'; -import { EventSignatures } from '../../server/sdk/lib/Events'; +import type { IBroker, IBrokerNode, IServiceMetrics } from '../../server/sdk/types/IBroker'; +import type { ServiceClass } from '../../server/sdk/types/ServiceClass'; +import type { EventSignatures } from '../../server/sdk/lib/Events'; const events: { [k: string]: string } = { onNodeConnected: '$node.connected', @@ -109,7 +109,7 @@ export class NetworkBroker implements IBroker { name, actions: {}, ...dependencies, - events: instance.getEvents().reduce>((map, eventName) => { + events: instance.getEvents().reduce void>>((map, eventName) => { map[eventName] = /^\$/.test(eventName) ? (ctx: Context): void => { // internal events params are not an array diff --git a/apps/meteor/ee/server/api/api.ts b/apps/meteor/ee/server/api/api.ts index d48fa583a85..ec9e2a8e144 100644 --- a/apps/meteor/ee/server/api/api.ts +++ b/apps/meteor/ee/server/api/api.ts @@ -1,4 +1,5 @@ -import { API, Options, NonEnterpriseTwoFactorOptions } from '../../../app/api/server/api'; +import type { Options, NonEnterpriseTwoFactorOptions } from '../../../app/api/server/api'; +import { API } from '../../../app/api/server/api'; import { use } from '../../../app/settings/server/Middleware'; import { isEnterprise } from '../../app/license/server/license'; diff --git a/apps/meteor/ee/server/api/licenses.ts b/apps/meteor/ee/server/api/licenses.ts index 5e3f8eb25d7..b11504605b6 100644 --- a/apps/meteor/ee/server/api/licenses.ts +++ b/apps/meteor/ee/server/api/licenses.ts @@ -5,7 +5,7 @@ import { getLicenses, validateFormat, flatModules, getMaxActiveUsers, isEnterpri import { Users } from '../../../app/models/server'; import { API } from '../../../app/api/server/api'; import { hasPermission } from '../../../app/authorization/server'; -import { ILicense } from '../../app/license/definitions/ILicense'; +import type { ILicense } from '../../app/license/definitions/ILicense'; function licenseTransform(license: ILicense): ILicense { return { diff --git a/apps/meteor/ee/server/api/sessions.ts b/apps/meteor/ee/server/api/sessions.ts index 7cc9b2df9d5..f7ea263171b 100644 --- a/apps/meteor/ee/server/api/sessions.ts +++ b/apps/meteor/ee/server/api/sessions.ts @@ -1,5 +1,5 @@ import { Users, Sessions } from '@rocket.chat/models'; -import { IUser } from '@rocket.chat/core-typings'; +import type { IUser } from '@rocket.chat/core-typings'; import { escapeRegExp } from '@rocket.chat/string-helpers'; import { isSessionsPaginateProps, isSessionsProps } from '../../definition/rest/v1/sessions'; diff --git a/apps/meteor/ee/server/configuration/ldap.ts b/apps/meteor/ee/server/configuration/ldap.ts index e9e4e2b369a..c75878d9fd5 100644 --- a/apps/meteor/ee/server/configuration/ldap.ts +++ b/apps/meteor/ee/server/configuration/ldap.ts @@ -3,7 +3,7 @@ import type { IImportUser, ILDAPEntry, IUser } from '@rocket.chat/core-typings'; import { LDAPEE } from '../sdk'; import { settings } from '../../../app/settings/server'; -import { LDAPConnection } from '../../../server/lib/ldap/Connection'; +import type { LDAPConnection } from '../../../server/lib/ldap/Connection'; import { logger } from '../../../server/lib/ldap/Logger'; import { cronJobs } from '../../../app/utils/server/lib/cron/Cronjobs'; import { LDAPEEManager } from '../lib/ldap/Manager'; @@ -16,7 +16,7 @@ Meteor.startup(() => addSettings(); // Configure background sync cronjob - function configureBackgroundSync(jobName: string, enableSetting: string, intervalSetting: string, cb: () => {}): () => void { + function configureBackgroundSync(jobName: string, enableSetting: string, intervalSetting: string, cb: () => void): () => void { let lastSchedule: string; return function addCronJobDebounced(): void { if (settings.get('LDAP_Enable') !== true || settings.get(enableSetting) !== true) { diff --git a/apps/meteor/ee/server/lib/deviceManagement/session.ts b/apps/meteor/ee/server/lib/deviceManagement/session.ts index 1f73d6ca636..8396ad4ba5d 100644 --- a/apps/meteor/ee/server/lib/deviceManagement/session.ts +++ b/apps/meteor/ee/server/lib/deviceManagement/session.ts @@ -1,7 +1,7 @@ import { Meteor } from 'meteor/meteor'; import { Accounts } from 'meteor/accounts-base'; import { UAParser } from 'ua-parser-js'; -import { ISocketConnection, IUser } from '@rocket.chat/core-typings'; +import type { ISocketConnection, IUser } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; import * as Mailer from '../../../../app/mailer'; diff --git a/apps/meteor/ee/server/lib/engagementDashboard/messages.ts b/apps/meteor/ee/server/lib/engagementDashboard/messages.ts index 85588965f4d..3a07ce20df0 100644 --- a/apps/meteor/ee/server/lib/engagementDashboard/messages.ts +++ b/apps/meteor/ee/server/lib/engagementDashboard/messages.ts @@ -89,8 +89,8 @@ export const findWeeklyMessagesSentData = async ({ end: convertDateToInt(endOfLastWeek), options: { count: daysBetweenDates, sort: { _id: -1 } }, }).toArray(); - const yesterdayMessages = (currentPeriodMessages.find((item) => item._id === yesterday) || {}).messages || 0; - const todayMessages = (currentPeriodMessages.find((item) => item._id === today) || {}).messages || 0; + const yesterdayMessages = currentPeriodMessages.find((item) => item._id === yesterday)?.messages || 0; + const todayMessages = currentPeriodMessages.find((item) => item._id === today)?.messages || 0; const currentPeriodTotalOfMessages = getTotalOfWeekItems(currentPeriodMessages, 'messages'); const lastPeriodTotalOfMessages = getTotalOfWeekItems(lastPeriodMessages, 'messages'); return { diff --git a/apps/meteor/ee/server/lib/engagementDashboard/users.ts b/apps/meteor/ee/server/lib/engagementDashboard/users.ts index b3fa8ec144b..64000e0e45e 100644 --- a/apps/meteor/ee/server/lib/engagementDashboard/users.ts +++ b/apps/meteor/ee/server/lib/engagementDashboard/users.ts @@ -74,8 +74,8 @@ export const findWeeklyUsersRegisteredData = async ({ end: convertDateToInt(endOfLastWeek), options: { count: daysBetweenDates, sort: { _id: -1 } }, }).toArray(); - const yesterdayUsers = (currentPeriodUsers.find((item) => item._id === yesterday) || {}).users || 0; - const todayUsers = (currentPeriodUsers.find((item) => item._id === today) || {}).users || 0; + const yesterdayUsers = currentPeriodUsers.find((item) => item._id === yesterday)?.users || 0; + const todayUsers = currentPeriodUsers.find((item) => item._id === today)?.users || 0; const currentPeriodTotalUsers = getTotalOfWeekItems(currentPeriodUsers, 'users'); const lastPeriodTotalUsers = getTotalOfWeekItems(lastPeriodUsers, 'users'); return { diff --git a/apps/meteor/ee/server/lib/ldap/Manager.ts b/apps/meteor/ee/server/lib/ldap/Manager.ts index a4fe52b781c..c6b481340ef 100644 --- a/apps/meteor/ee/server/lib/ldap/Manager.ts +++ b/apps/meteor/ee/server/lib/ldap/Manager.ts @@ -1,10 +1,9 @@ import _ from 'underscore'; import type ldapjs from 'ldapjs'; -import { ILDAPEntry } from '@rocket.chat/core-typings'; -import type { IUser, IRoom, ICreatedRoom, IRole, IImportUser } from '@rocket.chat/core-typings'; +import type { ILDAPEntry, IUser, IRoom, ICreatedRoom, IRole, IImportUser } from '@rocket.chat/core-typings'; import { Users as UsersRaw, Roles, Subscriptions as SubscriptionsRaw } from '@rocket.chat/models'; -import { ImporterAfterImportCallback } from '../../../../app/importer/server/definitions/IConversionCallbacks'; +import type { ImporterAfterImportCallback } from '../../../../app/importer/server/definitions/IConversionCallbacks'; import { settings } from '../../../../app/settings/server'; import { Rooms } from '../../../../app/models/server'; import { LDAPDataConverter } from '../../../../server/lib/ldap/DataConverter'; diff --git a/apps/meteor/ee/server/local-services/ldap/service.ts b/apps/meteor/ee/server/local-services/ldap/service.ts index 8d9a15d0a96..8cdd2e5463c 100644 --- a/apps/meteor/ee/server/local-services/ldap/service.ts +++ b/apps/meteor/ee/server/local-services/ldap/service.ts @@ -1,5 +1,5 @@ import { LDAPEEManager } from '../../lib/ldap/Manager'; -import { ILDAPEEService } from '../../sdk/types/ILDAPEEService'; +import type { ILDAPEEService } from '../../sdk/types/ILDAPEEService'; import { ServiceClassInternal } from '../../../../server/sdk/types/ServiceClass'; export class LDAPEEService extends ServiceClassInternal implements ILDAPEEService { diff --git a/apps/meteor/ee/server/requestSeatsRoute.ts b/apps/meteor/ee/server/requestSeatsRoute.ts index 8c9e09f21eb..69db2143bbd 100644 --- a/apps/meteor/ee/server/requestSeatsRoute.ts +++ b/apps/meteor/ee/server/requestSeatsRoute.ts @@ -1,4 +1,4 @@ -import { IncomingMessage, ServerResponse } from 'http'; +import type { IncomingMessage, ServerResponse } from 'http'; import { Meteor } from 'meteor/meteor'; import { WebApp } from 'meteor/webapp'; diff --git a/apps/meteor/ee/server/sdk/index.ts b/apps/meteor/ee/server/sdk/index.ts index 1af781c63fe..bff3a66f12b 100644 --- a/apps/meteor/ee/server/sdk/index.ts +++ b/apps/meteor/ee/server/sdk/index.ts @@ -1,4 +1,4 @@ -import { ILDAPEEService } from './types/ILDAPEEService'; +import type { ILDAPEEService } from './types/ILDAPEEService'; import { proxifyWithWait } from '../../../server/sdk/lib/proxify'; export const LDAPEE = proxifyWithWait('ldap-enterprise'); diff --git a/apps/meteor/ee/server/services/account/Account.ts b/apps/meteor/ee/server/services/account/Account.ts index 3ceeaccc6e9..4b2ba3ffbba 100644 --- a/apps/meteor/ee/server/services/account/Account.ts +++ b/apps/meteor/ee/server/services/account/Account.ts @@ -1,16 +1,10 @@ import type { IUser } from '@rocket.chat/core-typings'; -import { - _generateStampedLoginToken, - _hashStampedToken, - _hashLoginToken, - _tokenExpiration, - validatePassword, - IHashedStampedToken, -} from './lib/utils'; +import type { IHashedStampedToken } from './lib/utils'; +import { _generateStampedLoginToken, _hashStampedToken, _hashLoginToken, _tokenExpiration, validatePassword } from './lib/utils'; import { getCollection, Collections } from '../mongo'; import { ServiceClass } from '../../../../server/sdk/types/ServiceClass'; -import { IAccount, ILoginResult } from '../../../../server/sdk/types/IAccount'; +import type { IAccount, ILoginResult } from '../../../../server/sdk/types/IAccount'; import { MeteorError } from '../../../../server/sdk/errors'; const saveSession = async (uid: string, newToken: IHashedStampedToken): Promise => { diff --git a/apps/meteor/ee/server/services/ecdh-proxy/lib/server.ts b/apps/meteor/ee/server/services/ecdh-proxy/lib/server.ts index 55bdc3d13d9..0381418155a 100644 --- a/apps/meteor/ee/server/services/ecdh-proxy/lib/server.ts +++ b/apps/meteor/ee/server/services/ecdh-proxy/lib/server.ts @@ -1,10 +1,12 @@ -import http, { RequestOptions } from 'http'; +import type { RequestOptions } from 'http'; +import http from 'http'; import url from 'url'; -import { Readable } from 'stream'; +import type { Readable } from 'stream'; import WebSocket from 'ws'; import cookie from 'cookie'; -import express, { Request, Response } from 'express'; +import type { Request, Response } from 'express'; +import express from 'express'; import cookieParser from 'cookie-parser'; import mem from 'mem'; diff --git a/apps/meteor/ee/server/services/presence/Presence.ts b/apps/meteor/ee/server/services/presence/Presence.ts index 3f101123add..b84625bbbb1 100755 --- a/apps/meteor/ee/server/services/presence/Presence.ts +++ b/apps/meteor/ee/server/services/presence/Presence.ts @@ -1,4 +1,4 @@ -import { UserStatus } from '@rocket.chat/core-typings'; +import type { UserStatus } from '@rocket.chat/core-typings'; import { newConnection } from './actions/newConnection'; import { removeConnection } from './actions/removeConnection'; @@ -6,8 +6,8 @@ import { removeLostConnections } from './actions/removeLostConnections'; import { setStatus, setConnectionStatus } from './actions/setStatus'; import { updateUserPresence } from './actions/updateUserPresence'; import { ServiceClass } from '../../../../server/sdk/types/ServiceClass'; -import { IPresence } from '../../../../server/sdk/types/IPresence'; -import { IBrokerNode } from '../../../../server/sdk/types/IBroker'; +import type { IPresence } from '../../../../server/sdk/types/IPresence'; +import type { IBrokerNode } from '../../../../server/sdk/types/IBroker'; export class Presence extends ServiceClass implements IPresence { protected name = 'presence'; diff --git a/apps/meteor/ee/server/services/presence/actions/newConnection.ts b/apps/meteor/ee/server/services/presence/actions/newConnection.ts index 5a5d12fcfa1..241f7187e2c 100755 --- a/apps/meteor/ee/server/services/presence/actions/newConnection.ts +++ b/apps/meteor/ee/server/services/presence/actions/newConnection.ts @@ -1,5 +1,5 @@ import { getCollection, Collections } from '../../mongo'; -import { IServiceContext } from '../../../../../server/sdk/types/ServiceClass'; +import type { IServiceContext } from '../../../../../server/sdk/types/ServiceClass'; const status = 'online'; diff --git a/apps/meteor/ee/server/services/presence/actions/removeLostConnections.ts b/apps/meteor/ee/server/services/presence/actions/removeLostConnections.ts index 5c613dacd8b..d2b54d805bf 100755 --- a/apps/meteor/ee/server/services/presence/actions/removeLostConnections.ts +++ b/apps/meteor/ee/server/services/presence/actions/removeLostConnections.ts @@ -1,8 +1,8 @@ -import { Collection } from 'mongodb'; -import { IUserSession } from '@rocket.chat/core-typings'; +import type { Collection } from 'mongodb'; +import type { IUserSession } from '@rocket.chat/core-typings'; import { getCollection, Collections } from '../../mongo'; -import { IServiceContext } from '../../../../../server/sdk/types/ServiceClass'; +import type { IServiceContext } from '../../../../../server/sdk/types/ServiceClass'; async function getAffectedUsers(model: Collection, query: object): Promise { const list = await model.find<{ _id: string }>(query, { projection: { _id: 1 } }).toArray(); diff --git a/apps/meteor/ee/server/services/presence/actions/setStatus.ts b/apps/meteor/ee/server/services/presence/actions/setStatus.ts index 20b1100f266..b8711ac1923 100755 --- a/apps/meteor/ee/server/services/presence/actions/setStatus.ts +++ b/apps/meteor/ee/server/services/presence/actions/setStatus.ts @@ -1,5 +1,4 @@ -import type { IUser, IUserSession } from '@rocket.chat/core-typings'; -import { UserStatus } from '@rocket.chat/core-typings'; +import type { IUser, IUserSession, UserStatus } from '@rocket.chat/core-typings'; import { getCollection, Collections } from '../../mongo'; import { processPresenceAndStatus } from '../lib/processConnectionStatus'; diff --git a/apps/meteor/ee/server/services/stream-hub/StreamHub.ts b/apps/meteor/ee/server/services/stream-hub/StreamHub.ts index 72b19e8e362..99d2f076adf 100755 --- a/apps/meteor/ee/server/services/stream-hub/StreamHub.ts +++ b/apps/meteor/ee/server/services/stream-hub/StreamHub.ts @@ -1,4 +1,5 @@ -import { ServiceClass, IServiceClass } from '../../../../server/sdk/types/ServiceClass'; +import type { IServiceClass } from '../../../../server/sdk/types/ServiceClass'; +import { ServiceClass } from '../../../../server/sdk/types/ServiceClass'; import { getConnection } from '../mongo'; import { initWatchers } from '../../../../server/modules/watchers/watchers.module'; import { api } from '../../../../server/sdk/api'; diff --git a/apps/meteor/ee/server/startup/broker.ts b/apps/meteor/ee/server/startup/broker.ts index dfdded9c872..48e5330b7f1 100644 --- a/apps/meteor/ee/server/startup/broker.ts +++ b/apps/meteor/ee/server/startup/broker.ts @@ -32,7 +32,8 @@ const { SKIP_PROCESS_EVENT_REGISTRATION = 'false', } = process.env; -const Base = Serializers.Base as unknown as new () => {}; +const { Base } = Serializers; + class CustomRegenerator extends Errors.Regenerator { restoreCustomError(plainError: any): Error | undefined { const { message, reason, details, errorType, isClientSafe } = plainError; @@ -62,7 +63,7 @@ class CustomRegenerator extends Errors.Regenerator { } class EJSONSerializer extends Base { - serialize(obj: {}): Buffer { + serialize(obj: any): Buffer { return Buffer.from(EJSON.stringify(obj)); } diff --git a/apps/meteor/lib/callbacks.ts b/apps/meteor/lib/callbacks.ts index cf72047907e..1ff914a3f22 100644 --- a/apps/meteor/lib/callbacks.ts +++ b/apps/meteor/lib/callbacks.ts @@ -1,4 +1,4 @@ -import Url from 'url'; +import type Url from 'url'; import { Meteor } from 'meteor/meteor'; import type { FilterOperators } from 'mongodb'; @@ -20,7 +20,7 @@ import type { import type { Logger } from '../app/logger/server'; import type { IBusinessHourBehavior } from '../app/livechat/server/business-hour/AbstractBusinessHour'; import { getRandomId } from './random'; -import { ILoginAttempt } from '../app/authentication/server/ILoginAttempt'; +import type { ILoginAttempt } from '../app/authentication/server/ILoginAttempt'; enum CallbackPriority { HIGH = -1000, diff --git a/apps/meteor/lib/rooms/coordinator.ts b/apps/meteor/lib/rooms/coordinator.ts index 2be52c2c365..dcdf6304914 100644 --- a/apps/meteor/lib/rooms/coordinator.ts +++ b/apps/meteor/lib/rooms/coordinator.ts @@ -2,7 +2,7 @@ import { FlowRouter } from 'meteor/kadira:flow-router'; import type { RouteOptions } from 'meteor/kadira:flow-router'; import type { SettingValue, RoomType } from '@rocket.chat/core-typings'; -import { +import type { IRoomTypeConfig, IRoomTypeRouteConfig, IRoomTypeClientDirectives, @@ -90,7 +90,7 @@ export abstract class RoomCoordinator { this.roomTypes[roomConfig.identifier] = { config: roomConfig, directives }; - if (roomConfig.route && roomConfig.route.path && roomConfig.route.name && roomConfig.route.action) { + if (roomConfig.route?.path && roomConfig.route.name && roomConfig.route.action) { const routeConfig = { name: roomConfig.route.name, action: roomConfig.route.action, diff --git a/apps/meteor/lib/rooms/roomTypes/conversation.ts b/apps/meteor/lib/rooms/roomTypes/conversation.ts index ebf367f57a6..14c475e7c3d 100644 --- a/apps/meteor/lib/rooms/roomTypes/conversation.ts +++ b/apps/meteor/lib/rooms/roomTypes/conversation.ts @@ -1,4 +1,4 @@ -import { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; +import type { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; import type { RoomCoordinator } from '../coordinator'; export function getConversationRoomType(_coordinator: RoomCoordinator): IRoomTypeConfig { diff --git a/apps/meteor/lib/rooms/roomTypes/direct.ts b/apps/meteor/lib/rooms/roomTypes/direct.ts index d5fbe04a3a2..abbd641171e 100644 --- a/apps/meteor/lib/rooms/roomTypes/direct.ts +++ b/apps/meteor/lib/rooms/roomTypes/direct.ts @@ -1,4 +1,4 @@ -import { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; +import type { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; import type { RoomCoordinator } from '../coordinator'; export function getDirectMessageRoomType(coordinator: RoomCoordinator): IRoomTypeConfig { diff --git a/apps/meteor/lib/rooms/roomTypes/discussion.ts b/apps/meteor/lib/rooms/roomTypes/discussion.ts index 6fe7f2111b8..02bb6760013 100644 --- a/apps/meteor/lib/rooms/roomTypes/discussion.ts +++ b/apps/meteor/lib/rooms/roomTypes/discussion.ts @@ -1,4 +1,4 @@ -import { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; +import type { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; import type { RoomCoordinator } from '../coordinator'; export function getDiscussionRoomType(_coordinator: RoomCoordinator): IRoomTypeConfig { diff --git a/apps/meteor/lib/rooms/roomTypes/favorite.ts b/apps/meteor/lib/rooms/roomTypes/favorite.ts index bd04347852a..368cb769a58 100644 --- a/apps/meteor/lib/rooms/roomTypes/favorite.ts +++ b/apps/meteor/lib/rooms/roomTypes/favorite.ts @@ -1,4 +1,4 @@ -import { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; +import type { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; import type { RoomCoordinator } from '../coordinator'; export function getFavoriteRoomType(_coordinator: RoomCoordinator): IRoomTypeConfig { diff --git a/apps/meteor/lib/rooms/roomTypes/livechat.ts b/apps/meteor/lib/rooms/roomTypes/livechat.ts index b24ab1694f9..da9632839bd 100644 --- a/apps/meteor/lib/rooms/roomTypes/livechat.ts +++ b/apps/meteor/lib/rooms/roomTypes/livechat.ts @@ -1,4 +1,4 @@ -import { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; +import type { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; import type { RoomCoordinator } from '../coordinator'; export function getLivechatRoomType(coordinator: RoomCoordinator): IRoomTypeConfig { diff --git a/apps/meteor/lib/rooms/roomTypes/public.ts b/apps/meteor/lib/rooms/roomTypes/public.ts index 7b1a7c560e0..f75bbcdbaf2 100644 --- a/apps/meteor/lib/rooms/roomTypes/public.ts +++ b/apps/meteor/lib/rooms/roomTypes/public.ts @@ -1,4 +1,4 @@ -import { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; +import type { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; import type { RoomCoordinator } from '../coordinator'; export function getPublicRoomType(coordinator: RoomCoordinator): IRoomTypeConfig { diff --git a/apps/meteor/lib/rooms/roomTypes/unread.ts b/apps/meteor/lib/rooms/roomTypes/unread.ts index 0f928f8c779..115773fcc80 100644 --- a/apps/meteor/lib/rooms/roomTypes/unread.ts +++ b/apps/meteor/lib/rooms/roomTypes/unread.ts @@ -1,4 +1,4 @@ -import { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; +import type { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; import type { RoomCoordinator } from '../coordinator'; export function getUnreadRoomType(_coordinator: RoomCoordinator): IRoomTypeConfig { diff --git a/apps/meteor/lib/rooms/roomTypes/voip.ts b/apps/meteor/lib/rooms/roomTypes/voip.ts index 9e2b019eb78..e90d048fa3d 100644 --- a/apps/meteor/lib/rooms/roomTypes/voip.ts +++ b/apps/meteor/lib/rooms/roomTypes/voip.ts @@ -1,4 +1,4 @@ -import { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; +import type { IRoomTypeConfig } from '../../../definition/IRoomTypeConfig'; import type { RoomCoordinator } from '../coordinator'; export function getVoipRoomType(coordinator: RoomCoordinator): IRoomTypeConfig { diff --git a/apps/meteor/lib/typedJSONParse.ts b/apps/meteor/lib/typedJSONParse.ts index 520bbd7166a..bf8c7937b15 100644 --- a/apps/meteor/lib/typedJSONParse.ts +++ b/apps/meteor/lib/typedJSONParse.ts @@ -1,4 +1,4 @@ -import { Jsonify } from '@rocket.chat/core-typings'; +import type { Jsonify } from '@rocket.chat/core-typings'; export const typedJsonParse = (str: string): Jsonify => { return JSON.parse(JSON.stringify(str)); diff --git a/apps/meteor/package.json b/apps/meteor/package.json index e4c4e0c3862..d9fb3b4f98e 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -105,6 +105,7 @@ "@types/jsdom": "^16.2.14", "@types/jsdom-global": "^3.0.2", "@types/jsrsasign": "^9.0.3", + "@types/later": "^1.2.7", "@types/ldapjs": "^2.2.2", "@types/less": "^3.0.3", "@types/lodash.get": "^4.4.7", diff --git a/apps/meteor/playwright.config.ts b/apps/meteor/playwright.config.ts index 16dccee0aad..6df6dbbf187 100644 --- a/apps/meteor/playwright.config.ts +++ b/apps/meteor/playwright.config.ts @@ -1,4 +1,4 @@ -import { PlaywrightTestConfig } from '@playwright/test'; +import type { PlaywrightTestConfig } from '@playwright/test'; import * as constants from './tests/e2e/config/constants'; diff --git a/apps/meteor/server/cron/federation.ts b/apps/meteor/server/cron/federation.ts index bedebb434fe..6395e39391e 100644 --- a/apps/meteor/server/cron/federation.ts +++ b/apps/meteor/server/cron/federation.ts @@ -1,4 +1,4 @@ -import { SettingValue } from '@rocket.chat/core-typings'; +import type { SettingValue } from '@rocket.chat/core-typings'; import { Users, Settings } from '@rocket.chat/models'; import { resolveSRV, resolveTXT } from '../../app/federation/server/functions/resolveDNS'; diff --git a/apps/meteor/server/cron/videoConferences.ts b/apps/meteor/server/cron/videoConferences.ts index 24a8c9b8c25..2d77c4c6fa6 100644 --- a/apps/meteor/server/cron/videoConferences.ts +++ b/apps/meteor/server/cron/videoConferences.ts @@ -1,5 +1,6 @@ import type { SyncedCron } from 'meteor/littledata:synced-cron'; -import { VideoConference, VideoConferenceStatus } from '@rocket.chat/core-typings'; +import type { VideoConference } from '@rocket.chat/core-typings'; +import { VideoConferenceStatus } from '@rocket.chat/core-typings'; import { VideoConference as VideoConferenceModel } from '@rocket.chat/models'; import { VideoConf } from '../sdk'; diff --git a/apps/meteor/server/database/DatabaseWatcher.ts b/apps/meteor/server/database/DatabaseWatcher.ts index 94f6c0416e3..7ad97410387 100644 --- a/apps/meteor/server/database/DatabaseWatcher.ts +++ b/apps/meteor/server/database/DatabaseWatcher.ts @@ -1,6 +1,6 @@ import EventEmitter from 'events'; -import { IRocketChatRecord } from '@rocket.chat/core-typings'; +import type { IRocketChatRecord } from '@rocket.chat/core-typings'; import type { Timestamp, Db, ChangeStreamDeleteDocument, ChangeStreamInsertDocument, ChangeStreamUpdateDocument } from 'mongodb'; import { escapeRegExp } from '@rocket.chat/string-helpers'; import { MongoClient } from 'mongodb'; diff --git a/apps/meteor/server/database/convertOplogPayload.ts b/apps/meteor/server/database/convertOplogPayload.ts index 80ad82b01a5..5cdb151e619 100644 --- a/apps/meteor/server/database/convertOplogPayload.ts +++ b/apps/meteor/server/database/convertOplogPayload.ts @@ -1,4 +1,4 @@ -import { IRocketChatRecord } from '@rocket.chat/core-typings'; +import type { IRocketChatRecord } from '@rocket.chat/core-typings'; import type { RealTimeData } from './DatabaseWatcher'; diff --git a/apps/meteor/server/database/readSecondaryPreferred.ts b/apps/meteor/server/database/readSecondaryPreferred.ts index 734047cfd9f..0b9f7af1500 100644 --- a/apps/meteor/server/database/readSecondaryPreferred.ts +++ b/apps/meteor/server/database/readSecondaryPreferred.ts @@ -1,4 +1,5 @@ -import { ReadPreference, Db, ReadPreferenceLike } from 'mongodb'; +import type { Db, ReadPreferenceLike } from 'mongodb'; +import { ReadPreference } from 'mongodb'; export function readSecondaryPreferred(db: Db, tags: any[] = []): ReadPreferenceLike { const { readPreference } = db.options || {}; diff --git a/apps/meteor/server/email/IMAPInterceptor.ts b/apps/meteor/server/email/IMAPInterceptor.ts index 739850294e0..5806ab79de8 100644 --- a/apps/meteor/server/email/IMAPInterceptor.ts +++ b/apps/meteor/server/email/IMAPInterceptor.ts @@ -2,7 +2,8 @@ import { EventEmitter } from 'events'; import IMAP from 'imap'; import type Connection from 'imap'; -import { simpleParser, ParsedMail } from 'mailparser'; +import type { ParsedMail } from 'mailparser'; +import { simpleParser } from 'mailparser'; type IMAPOptions = { deleteAfterRead: boolean; @@ -13,7 +14,6 @@ type IMAPOptions = { export declare interface IMAPInterceptor { on(event: 'email', listener: (email: ParsedMail) => void): this; - on(event: string, listener: Function): this; } export class IMAPInterceptor extends EventEmitter { @@ -78,7 +78,7 @@ export class IMAPInterceptor extends EventEmitter { } isActive(): boolean { - if (this.imap && this.imap.state && this.imap.state === 'disconnected') { + if (this.imap?.state && this.imap.state === 'disconnected') { return false; } diff --git a/apps/meteor/server/features/EmailInbox/EmailInbox.ts b/apps/meteor/server/features/EmailInbox/EmailInbox.ts index ee865f70d77..12e122a56ba 100644 --- a/apps/meteor/server/features/EmailInbox/EmailInbox.ts +++ b/apps/meteor/server/features/EmailInbox/EmailInbox.ts @@ -1,6 +1,6 @@ import { Meteor } from 'meteor/meteor'; import nodemailer from 'nodemailer'; -import Mail from 'nodemailer/lib/mailer'; +import type Mail from 'nodemailer/lib/mailer'; import type { IEmailInbox } from '@rocket.chat/core-typings'; import { EmailInbox, EmailMessageHistory } from '@rocket.chat/models'; diff --git a/apps/meteor/server/features/EmailInbox/EmailInbox_Incoming.ts b/apps/meteor/server/features/EmailInbox/EmailInbox_Incoming.ts index 3581d37e28a..f2bad29a632 100644 --- a/apps/meteor/server/features/EmailInbox/EmailInbox_Incoming.ts +++ b/apps/meteor/server/features/EmailInbox/EmailInbox_Incoming.ts @@ -1,8 +1,9 @@ import stripHtml from 'string-strip-html'; import { Random } from 'meteor/random'; -import { ParsedMail, Attachment } from 'mailparser'; +import type { ParsedMail, Attachment } from 'mailparser'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; -import { ILivechatVisitor, OmnichannelSourceType } from '@rocket.chat/core-typings'; +import type { ILivechatVisitor } from '@rocket.chat/core-typings'; +import { OmnichannelSourceType } from '@rocket.chat/core-typings'; import { LivechatVisitors } from '@rocket.chat/models'; import { Livechat } from '../../../app/livechat/server/lib/Livechat'; diff --git a/apps/meteor/server/features/EmailInbox/EmailInbox_Outgoing.ts b/apps/meteor/server/features/EmailInbox/EmailInbox_Outgoing.ts index c20bbae1492..97a2e711531 100644 --- a/apps/meteor/server/features/EmailInbox/EmailInbox_Outgoing.ts +++ b/apps/meteor/server/features/EmailInbox/EmailInbox_Outgoing.ts @@ -1,4 +1,4 @@ -import Mail from 'nodemailer/lib/mailer'; +import type Mail from 'nodemailer/lib/mailer'; import { Match } from 'meteor/check'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import type { IEmailInbox, IUser, IMessage } from '@rocket.chat/core-typings'; @@ -8,7 +8,8 @@ import { callbacks } from '../../../lib/callbacks'; import { FileUpload } from '../../../app/file-upload/server'; import { slashCommands } from '../../../app/utils/server'; import { Messages, Rooms, Users } from '../../../app/models/server'; -import { Inbox, inboxes } from './EmailInbox'; +import type { Inbox } from './EmailInbox'; +import { inboxes } from './EmailInbox'; import { sendMessage } from '../../../app/lib/server/functions/sendMessage'; import { settings } from '../../../app/settings/server'; diff --git a/apps/meteor/server/hooks/sauMonitorHooks.ts b/apps/meteor/server/hooks/sauMonitorHooks.ts index 3766c2e59ec..47f88f6727f 100644 --- a/apps/meteor/server/hooks/sauMonitorHooks.ts +++ b/apps/meteor/server/hooks/sauMonitorHooks.ts @@ -5,7 +5,7 @@ import { Accounts } from 'meteor/accounts-base'; import { Meteor } from 'meteor/meteor'; import { sauEvents } from '../services/sauMonitor/events'; -import { ILoginAttempt } from '../../app/authentication/server/ILoginAttempt'; +import type { ILoginAttempt } from '../../app/authentication/server/ILoginAttempt'; import { deviceManagementEvents } from '../services/device-management/events'; Accounts.onLogin((info: ILoginAttempt) => { diff --git a/apps/meteor/server/lib/http/fetch.ts b/apps/meteor/server/lib/http/fetch.ts index eb2dfacd0d4..c5296e564a1 100644 --- a/apps/meteor/server/lib/http/fetch.ts +++ b/apps/meteor/server/lib/http/fetch.ts @@ -2,8 +2,10 @@ import http from 'http'; import https from 'https'; import { fetch as nodeFetch } from 'meteor/fetch'; -import { default as createHttpProxyAgent, HttpProxyAgent } from 'http-proxy-agent'; -import { default as createHttpsProxyAgent, HttpsProxyAgent } from 'https-proxy-agent'; +import type { HttpProxyAgent } from 'http-proxy-agent'; +import { default as createHttpProxyAgent } from 'http-proxy-agent'; +import type { HttpsProxyAgent } from 'https-proxy-agent'; +import { default as createHttpsProxyAgent } from 'https-proxy-agent'; import { getProxyForUrl } from 'proxy-from-env'; export function getFetchAgent( diff --git a/apps/meteor/server/lib/ldap/Connection.ts b/apps/meteor/server/lib/ldap/Connection.ts index cfe6ea06e81..4e242f70952 100644 --- a/apps/meteor/server/lib/ldap/Connection.ts +++ b/apps/meteor/server/lib/ldap/Connection.ts @@ -499,7 +499,7 @@ export class LDAPConnection { } private processSearchPage( - { entries, title, end, next }: { entries: T[]; title: string; end: boolean; next?: Function }, + { entries, title, end, next }: { entries: T[]; title: string; end: boolean; next?: () => void }, callback: ILDAPPageCallback, ): void { searchLogger.info(title); diff --git a/apps/meteor/server/lib/ldap/Manager.ts b/apps/meteor/server/lib/ldap/Manager.ts index ba694b752f6..01e31bac8ed 100644 --- a/apps/meteor/server/lib/ldap/Manager.ts +++ b/apps/meteor/server/lib/ldap/Manager.ts @@ -5,8 +5,7 @@ import { Meteor } from 'meteor/meteor'; import { Accounts } from 'meteor/accounts-base'; import ldapEscape from 'ldap-escape'; import _ from 'underscore'; -import { ILDAPEntry, LDAPLoginResult, ILDAPUniqueIdentifierField, IUser, LoginUsername } from '@rocket.chat/core-typings'; -import type { IImportUser } from '@rocket.chat/core-typings'; +import type { ILDAPEntry, LDAPLoginResult, ILDAPUniqueIdentifierField, IUser, LoginUsername, IImportUser } from '@rocket.chat/core-typings'; import { Users as UsersRaw } from '@rocket.chat/models'; import { settings } from '../../../app/settings/server'; @@ -383,7 +382,7 @@ export class LDAPManager { return [`${username}@${settings.get('LDAP_Default_Domain')}`]; } - if (ldapUser.mail && ldapUser.mail.includes('@')) { + if (ldapUser.mail?.includes('@')) { return [ldapUser.mail]; } diff --git a/apps/meteor/server/lib/logger/Logger.ts b/apps/meteor/server/lib/logger/Logger.ts index a6d84f0e183..3d49f62f3b7 100644 --- a/apps/meteor/server/lib/logger/Logger.ts +++ b/apps/meteor/server/lib/logger/Logger.ts @@ -1,6 +1,7 @@ import type { MainLogger } from './getPino'; import { getPino } from './getPino'; -import { logLevel, LogLevelSetting } from './logLevel'; +import type { LogLevelSetting } from './logLevel'; +import { logLevel } from './logLevel'; const getLevel = (level: LogLevelSetting): string => { switch (level) { diff --git a/apps/meteor/server/lib/logger/startup.ts b/apps/meteor/server/lib/logger/startup.ts index 97d18252cea..1c8f1d47de0 100644 --- a/apps/meteor/server/lib/logger/startup.ts +++ b/apps/meteor/server/lib/logger/startup.ts @@ -1,5 +1,6 @@ import { settings } from '../../../app/settings/server'; -import { logLevel, LogLevelSetting } from './logLevel'; +import type { LogLevelSetting } from './logLevel'; +import { logLevel } from './logLevel'; import { setQueueLimit } from './logQueue'; settings.watch('Log_Level', (value) => { diff --git a/apps/meteor/server/lib/migrations.ts b/apps/meteor/server/lib/migrations.ts index 137b4d2d9c2..57cb680455a 100644 --- a/apps/meteor/server/lib/migrations.ts +++ b/apps/meteor/server/lib/migrations.ts @@ -16,8 +16,8 @@ type IControl = { export type IMigration = { name?: string; version: number; - up: Function; - down?: Function; + up: (migration: IMigration) => void; + down?: (migration: IMigration) => void; }; const log = new Logger('Migrations'); diff --git a/apps/meteor/server/lib/rooms/roomCoordinator.ts b/apps/meteor/server/lib/rooms/roomCoordinator.ts index 02371ab1887..ba2c2f59362 100644 --- a/apps/meteor/server/lib/rooms/roomCoordinator.ts +++ b/apps/meteor/server/lib/rooms/roomCoordinator.ts @@ -1,8 +1,7 @@ import type { IRoom, RoomType, IUser, IMessage, ReadReceipt, IRocketChatRecord, ValueOf, AtLeast } from '@rocket.chat/core-typings'; -import type { IRoomTypeConfig, IRoomTypeServerDirectives } from '../../../definition/IRoomTypeConfig'; +import type { IRoomTypeConfig, IRoomTypeServerDirectives, RoomSettingsEnum, RoomMemberActions } from '../../../definition/IRoomTypeConfig'; import { Users } from '../../../app/models/server'; -import { RoomSettingsEnum, RoomMemberActions } from '../../../definition/IRoomTypeConfig'; import { RoomCoordinator } from '../../../lib/rooms/coordinator'; import { settings } from '../../../app/settings/server'; diff --git a/apps/meteor/server/lib/rooms/roomTypes/direct.ts b/apps/meteor/server/lib/rooms/roomTypes/direct.ts index 4b5b6832739..0f4a05144fd 100644 --- a/apps/meteor/server/lib/rooms/roomTypes/direct.ts +++ b/apps/meteor/server/lib/rooms/roomTypes/direct.ts @@ -1,5 +1,6 @@ import { Meteor } from 'meteor/meteor'; -import { IRoom, AtLeast, isRoomFederated } from '@rocket.chat/core-typings'; +import type { IRoom, AtLeast } from '@rocket.chat/core-typings'; +import { isRoomFederated } from '@rocket.chat/core-typings'; import { settings } from '../../../../app/settings/server'; import type { IRoomTypeServerDirectives } from '../../../../definition/IRoomTypeConfig'; diff --git a/apps/meteor/server/lib/rooms/roomTypes/private.ts b/apps/meteor/server/lib/rooms/roomTypes/private.ts index a65cced578a..20204f55d54 100644 --- a/apps/meteor/server/lib/rooms/roomTypes/private.ts +++ b/apps/meteor/server/lib/rooms/roomTypes/private.ts @@ -1,4 +1,5 @@ -import { IRoom, isRoomFederated } from '@rocket.chat/core-typings'; +import type { IRoom } from '@rocket.chat/core-typings'; +import { isRoomFederated } from '@rocket.chat/core-typings'; import { Federation } from '../../../../app/federation-v2/server/infrastructure/rocket-chat/Federation'; import { settings } from '../../../../app/settings/server'; diff --git a/apps/meteor/server/lib/rooms/roomTypes/public.ts b/apps/meteor/server/lib/rooms/roomTypes/public.ts index 8777f012bfd..cffa83b9a2b 100644 --- a/apps/meteor/server/lib/rooms/roomTypes/public.ts +++ b/apps/meteor/server/lib/rooms/roomTypes/public.ts @@ -1,4 +1,5 @@ -import { AtLeast, IRoom, isRoomFederated } from '@rocket.chat/core-typings'; +import type { AtLeast, IRoom } from '@rocket.chat/core-typings'; +import { isRoomFederated } from '@rocket.chat/core-typings'; import { Federation } from '../../../../app/federation-v2/server/infrastructure/rocket-chat/Federation'; import { settings } from '../../../../app/settings/server'; diff --git a/apps/meteor/server/lib/sendMessagesToAdmins.ts b/apps/meteor/server/lib/sendMessagesToAdmins.ts index c26adaa8888..c74b97d4ea1 100644 --- a/apps/meteor/server/lib/sendMessagesToAdmins.ts +++ b/apps/meteor/server/lib/sendMessagesToAdmins.ts @@ -15,7 +15,7 @@ type Banner = { link: string; }; -const getData = (param: T[] | Function, adminUser: IUser): T[] => { +const getData = (param: T[] | ((params: { adminUser: IUser }) => T[]), adminUser: IUser): T[] => { const result = typeof param === 'function' ? param({ adminUser }) : param; if (!Array.isArray(result)) { @@ -33,8 +33,8 @@ export async function sendMessagesToAdmins({ }: { fromId?: string; checkFrom?: boolean; - msgs?: Partial[] | (({ adminUser }: { adminUser: IUser }) => Partial[]); - banners?: Banner[] | Function; + msgs?: Partial[] | ((params: { adminUser: IUser }) => Partial[]); + banners?: Banner[] | ((params: { adminUser: IUser }) => Banner[]); }): Promise { const fromUser = checkFrom ? await Users.findOneById(fromId, { projection: { _id: 1 } }) : true; diff --git a/apps/meteor/server/lib/videoConfProviders.ts b/apps/meteor/server/lib/videoConfProviders.ts index 4c26f8065f6..74374822e05 100644 --- a/apps/meteor/server/lib/videoConfProviders.ts +++ b/apps/meteor/server/lib/videoConfProviders.ts @@ -1,4 +1,4 @@ -import { VideoConferenceCapabilities } from '@rocket.chat/core-typings'; +import type { VideoConferenceCapabilities } from '@rocket.chat/core-typings'; import { settings } from '../../app/settings/server'; diff --git a/apps/meteor/server/models/raw/Banners.ts b/apps/meteor/server/models/raw/Banners.ts index a13aff236c0..74ce5abf50e 100644 --- a/apps/meteor/server/models/raw/Banners.ts +++ b/apps/meteor/server/models/raw/Banners.ts @@ -1,4 +1,5 @@ -import { BannerPlatform, IBanner, RocketChatRecordDeleted } from '@rocket.chat/core-typings'; +import type { IBanner, RocketChatRecordDeleted } from '@rocket.chat/core-typings'; +import { BannerPlatform } from '@rocket.chat/core-typings'; import type { IBannersModel } from '@rocket.chat/model-typings'; import type { Collection, FindCursor, Db, FindOptions, IndexDescription, InsertOneResult, UpdateResult } from 'mongodb'; diff --git a/apps/meteor/server/models/raw/BaseRaw.ts b/apps/meteor/server/models/raw/BaseRaw.ts index 4cc0b152747..cfa97c239f2 100644 --- a/apps/meteor/server/models/raw/BaseRaw.ts +++ b/apps/meteor/server/models/raw/BaseRaw.ts @@ -1,4 +1,4 @@ -import { +import type { BulkWriteOptions, ChangeStream, Collection, @@ -9,7 +9,6 @@ import { IndexDescription, InsertOneOptions, ModifyResult, - ObjectId, OptionalUnlessRequiredId, UpdateFilter, WithId, @@ -23,6 +22,7 @@ import { DeleteResult, DeleteOptions, } from 'mongodb'; +import { ObjectId } from 'mongodb'; import type { IRocketChatRecord, RocketChatRecordDeleted } from '@rocket.chat/core-typings'; import type { IBaseModel, DefaultFields, ResultFields, FindPaginated, InsertionModel } from '@rocket.chat/model-typings'; import { getCollectionName } from '@rocket.chat/models'; diff --git a/apps/meteor/server/models/raw/InstanceStatus.ts b/apps/meteor/server/models/raw/InstanceStatus.ts index b0b537a6759..6c7eea58f5a 100644 --- a/apps/meteor/server/models/raw/InstanceStatus.ts +++ b/apps/meteor/server/models/raw/InstanceStatus.ts @@ -1,6 +1,6 @@ import type { IInstanceStatus } from '@rocket.chat/core-typings'; import type { IInstanceStatusModel } from '@rocket.chat/model-typings'; -import { Db } from 'mongodb'; +import type { Db } from 'mongodb'; import { BaseRaw } from './BaseRaw'; diff --git a/apps/meteor/server/models/raw/LoginServiceConfiguration.ts b/apps/meteor/server/models/raw/LoginServiceConfiguration.ts index fb09735bf1a..a0db761ee5b 100644 --- a/apps/meteor/server/models/raw/LoginServiceConfiguration.ts +++ b/apps/meteor/server/models/raw/LoginServiceConfiguration.ts @@ -1,6 +1,6 @@ import type { ILoginServiceConfiguration, RocketChatRecordDeleted } from '@rocket.chat/core-typings'; import type { ILoginServiceConfigurationModel } from '@rocket.chat/model-typings'; -import { Collection, Db } from 'mongodb'; +import type { Collection, Db } from 'mongodb'; import { BaseRaw } from './BaseRaw'; diff --git a/apps/meteor/server/modules/core-apps/banner.module.ts b/apps/meteor/server/modules/core-apps/banner.module.ts index f43a7515ca1..b5fec72162d 100644 --- a/apps/meteor/server/modules/core-apps/banner.module.ts +++ b/apps/meteor/server/modules/core-apps/banner.module.ts @@ -1,4 +1,4 @@ -import { IUiKitCoreApp } from '../../sdk/types/IUiKitCoreApp'; +import type { IUiKitCoreApp } from '../../sdk/types/IUiKitCoreApp'; import { Banner } from '../../sdk'; export class BannerModule implements IUiKitCoreApp { diff --git a/apps/meteor/server/modules/core-apps/nps.module.ts b/apps/meteor/server/modules/core-apps/nps.module.ts index 1ae04dd0b86..2bc5eb601fe 100644 --- a/apps/meteor/server/modules/core-apps/nps.module.ts +++ b/apps/meteor/server/modules/core-apps/nps.module.ts @@ -1,4 +1,4 @@ -import { IUiKitCoreApp } from '../../sdk/types/IUiKitCoreApp'; +import type { IUiKitCoreApp } from '../../sdk/types/IUiKitCoreApp'; import { Banner, NPS } from '../../sdk'; import { createModal } from './nps/createModal'; diff --git a/apps/meteor/server/modules/core-apps/videoconf.module.ts b/apps/meteor/server/modules/core-apps/videoconf.module.ts index 87f0ca009da..f9133625e49 100644 --- a/apps/meteor/server/modules/core-apps/videoconf.module.ts +++ b/apps/meteor/server/modules/core-apps/videoconf.module.ts @@ -1,4 +1,4 @@ -import { IUiKitCoreApp } from '../../sdk/types/IUiKitCoreApp'; +import type { IUiKitCoreApp } from '../../sdk/types/IUiKitCoreApp'; import { VideoConf } from '../../sdk'; export class VideoConfModule implements IUiKitCoreApp { diff --git a/apps/meteor/server/modules/listeners/listeners.module.ts b/apps/meteor/server/modules/listeners/listeners.module.ts index 722ba410c4d..fec901cee2e 100644 --- a/apps/meteor/server/modules/listeners/listeners.module.ts +++ b/apps/meteor/server/modules/listeners/listeners.module.ts @@ -1,8 +1,8 @@ import { UserStatus, isSettingColor } from '@rocket.chat/core-typings'; import { parse } from '@rocket.chat/message-parser'; -import { IServiceClass } from '../../sdk/types/ServiceClass'; -import { NotificationsModule } from '../notifications/notifications.module'; +import type { IServiceClass } from '../../sdk/types/ServiceClass'; +import type { NotificationsModule } from '../notifications/notifications.module'; import { EnterpriseSettings } from '../../sdk/index'; import { settings } from '../../../app/settings/server/cached'; diff --git a/apps/meteor/server/modules/notifications/notifications.module.ts b/apps/meteor/server/modules/notifications/notifications.module.ts index 11ec6ed94e0..5da8d00d757 100644 --- a/apps/meteor/server/modules/notifications/notifications.module.ts +++ b/apps/meteor/server/modules/notifications/notifications.module.ts @@ -238,7 +238,7 @@ export class NotificationsModule { return false; } - if (!(await canType({ extraData, rid, username, userId: this.userId }))) { + if (!(await canType({ extraData, rid, username, userId: this.userId ?? undefined }))) { return false; } diff --git a/apps/meteor/server/modules/watchers/watchers.module.ts b/apps/meteor/server/modules/watchers/watchers.module.ts index 18724a5da34..1903fe818b0 100644 --- a/apps/meteor/server/modules/watchers/watchers.module.ts +++ b/apps/meteor/server/modules/watchers/watchers.module.ts @@ -38,9 +38,9 @@ import { } from '@rocket.chat/models'; import { subscriptionFields, roomFields } from './publishFields'; -import { EventSignatures } from '../../sdk/lib/Events'; +import type { EventSignatures } from '../../sdk/lib/Events'; import { isPresenceMonitorEnabled } from '../../lib/isPresenceMonitorEnabled'; -import { DatabaseWatcher } from '../../database/DatabaseWatcher'; +import type { DatabaseWatcher } from '../../database/DatabaseWatcher'; type BroadcastCallback = (event: T, ...args: Parameters) => Promise; diff --git a/apps/meteor/server/publications/settings/index.ts b/apps/meteor/server/publications/settings/index.ts index 20eb314823d..f1aacabfe13 100644 --- a/apps/meteor/server/publications/settings/index.ts +++ b/apps/meteor/server/publications/settings/index.ts @@ -53,7 +53,7 @@ Meteor.methods({ const bypass = (settings: T): T => settings; - const applyFilter = (fn: Function, args: any[]): any => fn(args); + const applyFilter = (fn: (args: T) => U, args: T): U => fn(args); const getAuthorizedSettingsFiltered = (settings: ISetting[]): ISetting[] => settings.filter((record) => hasPermission(uid, getSettingPermissionId(record._id))); diff --git a/apps/meteor/server/routes/i18n.ts b/apps/meteor/server/routes/i18n.ts index 292688aa3e3..c0c352157b2 100644 --- a/apps/meteor/server/routes/i18n.ts +++ b/apps/meteor/server/routes/i18n.ts @@ -1,7 +1,7 @@ -import { ServerResponse } from 'http'; +import type { ServerResponse } from 'http'; import { match } from 'path-to-regexp'; -import { IncomingMessage } from 'connect'; +import type { IncomingMessage } from 'connect'; import { Meteor } from 'meteor/meteor'; import { WebApp } from 'meteor/webapp'; diff --git a/apps/meteor/server/sdk/index.ts b/apps/meteor/server/sdk/index.ts index ab82adff964..42724b8bc3e 100644 --- a/apps/meteor/server/sdk/index.ts +++ b/apps/meteor/server/sdk/index.ts @@ -1,24 +1,24 @@ -import { IServiceContext } from './types/ServiceClass'; +import type { IServiceContext } from './types/ServiceClass'; import { proxify, proxifyWithWait } from './lib/proxify'; -import { IAuthorization } from './types/IAuthorization'; -import { IPresence } from './types/IPresence'; -import { IAccount } from './types/IAccount'; -import { ILicense } from './types/ILicense'; -import { IMeteor } from './types/IMeteor'; -import { IUiKitCoreAppService } from './types/IUiKitCoreApp'; -import { IEnterpriseSettings } from './types/IEnterpriseSettings'; -import { IBannerService } from './types/IBannerService'; -import { INPSService } from './types/INPSService'; -import { ITeamService } from './types/ITeamService'; -import { IRoomService } from './types/IRoomService'; -import { IMediaService } from './types/IMediaService'; -import { IVoipService } from './types/IVoipService'; -import { IOmnichannelVoipService } from './types/IOmnichannelVoipService'; -import { IAnalyticsService } from './types/IAnalyticsService'; -import { ILDAPService } from './types/ILDAPService'; -import { IVideoConfService } from './types/IVideoConfService'; -import { ISAUMonitorService } from './types/ISAUMonitorService'; -import { IDeviceManagementService } from './types/IDeviceManagementService'; +import type { IAuthorization } from './types/IAuthorization'; +import type { IPresence } from './types/IPresence'; +import type { IAccount } from './types/IAccount'; +import type { ILicense } from './types/ILicense'; +import type { IMeteor } from './types/IMeteor'; +import type { IUiKitCoreAppService } from './types/IUiKitCoreApp'; +import type { IEnterpriseSettings } from './types/IEnterpriseSettings'; +import type { IBannerService } from './types/IBannerService'; +import type { INPSService } from './types/INPSService'; +import type { ITeamService } from './types/ITeamService'; +import type { IRoomService } from './types/IRoomService'; +import type { IMediaService } from './types/IMediaService'; +import type { IVoipService } from './types/IVoipService'; +import type { IOmnichannelVoipService } from './types/IOmnichannelVoipService'; +import type { IAnalyticsService } from './types/IAnalyticsService'; +import type { ILDAPService } from './types/ILDAPService'; +import type { IVideoConfService } from './types/IVideoConfService'; +import type { ISAUMonitorService } from './types/ISAUMonitorService'; +import type { IDeviceManagementService } from './types/IDeviceManagementService'; import { FibersContextStore } from './lib/ContextStore'; // TODO think in a way to not have to pass the service name to proxify here as well diff --git a/apps/meteor/server/sdk/lib/Api.ts b/apps/meteor/server/sdk/lib/Api.ts index 9669b0fa5a1..c650e6e3daa 100644 --- a/apps/meteor/server/sdk/lib/Api.ts +++ b/apps/meteor/server/sdk/lib/Api.ts @@ -1,7 +1,7 @@ // import { BaseBroker } from './BaseBroker'; -import { IBroker } from '../types/IBroker'; -import { ServiceClass } from '../types/ServiceClass'; -import { EventSignatures } from './Events'; +import type { IBroker } from '../types/IBroker'; +import type { ServiceClass } from '../types/ServiceClass'; +import type { EventSignatures } from './Events'; import { LocalBroker } from './LocalBroker'; export class Api { diff --git a/apps/meteor/server/sdk/lib/Events.ts b/apps/meteor/server/sdk/lib/Events.ts index 686ad20931a..a853ff1b976 100644 --- a/apps/meteor/server/sdk/lib/Events.ts +++ b/apps/meteor/server/sdk/lib/Events.ts @@ -1,4 +1,4 @@ -import { IUIKitInteraction } from '@rocket.chat/apps-engine/definition/uikit'; +import type { IUIKitInteraction } from '@rocket.chat/apps-engine/definition/uikit'; import type { IEmailInbox, IEmoji, @@ -25,7 +25,7 @@ import type { VoipEventDataSignature, } from '@rocket.chat/core-typings'; -import { AutoUpdateRecord } from '../types/IMeteor'; +import type { AutoUpdateRecord } from '../types/IMeteor'; type ClientAction = 'inserted' | 'updated' | 'removed' | 'changed'; diff --git a/apps/meteor/server/sdk/lib/LocalBroker.ts b/apps/meteor/server/sdk/lib/LocalBroker.ts index 33dfd979135..13ab33de044 100644 --- a/apps/meteor/server/sdk/lib/LocalBroker.ts +++ b/apps/meteor/server/sdk/lib/LocalBroker.ts @@ -1,13 +1,13 @@ import { EventEmitter } from 'events'; -import { IBroker, IBrokerNode } from '../types/IBroker'; -import { ServiceClass } from '../types/ServiceClass'; +import type { IBroker, IBrokerNode } from '../types/IBroker'; +import type { ServiceClass } from '../types/ServiceClass'; import { asyncLocalStorage } from '..'; -import { EventSignatures } from './Events'; +import type { EventSignatures } from './Events'; import { StreamerCentral } from '../../modules/streamer/streamer.module'; export class LocalBroker implements IBroker { - private methods = new Map(); + private methods = new Map any>(); private events = new EventEmitter(); diff --git a/apps/meteor/server/sdk/lib/proxify.ts b/apps/meteor/server/sdk/lib/proxify.ts index fa4c1dc6f4b..2d712b8fd14 100644 --- a/apps/meteor/server/sdk/lib/proxify.ts +++ b/apps/meteor/server/sdk/lib/proxify.ts @@ -1,7 +1,7 @@ import { api } from '../api'; type Prom = { - [K in keyof T as T[K] extends Function ? K : never]: T[K] extends (...params: any) => Promise + [K in keyof T as T[K] extends (...params: any) => any ? K : never]: T[K] extends (...params: any) => Promise ? T[K] : T[K] extends (...params: infer P) => infer R ? (...params: P) => Promise @@ -9,7 +9,7 @@ type Prom = { }; type PromOrError = { - [K in keyof T as T[K] extends Function ? K : never]: T[K] extends (...params: any) => Promise + [K in keyof T as T[K] extends (...params: any) => any ? K : never]: T[K] extends (...params: any) => Promise ? T[K] : T[K] extends (...params: infer P) => infer R ? (...params: P) => Promise diff --git a/apps/meteor/server/sdk/types/IAccount.ts b/apps/meteor/server/sdk/types/IAccount.ts index a03b03ced2f..4242c4d39c2 100644 --- a/apps/meteor/server/sdk/types/IAccount.ts +++ b/apps/meteor/server/sdk/types/IAccount.ts @@ -1,4 +1,4 @@ -import { IServiceClass } from './ServiceClass'; +import type { IServiceClass } from './ServiceClass'; export interface ILoginResult { uid: string; diff --git a/apps/meteor/server/sdk/types/IAnalyticsService.ts b/apps/meteor/server/sdk/types/IAnalyticsService.ts index b23ba14c8ad..5896fa032e0 100644 --- a/apps/meteor/server/sdk/types/IAnalyticsService.ts +++ b/apps/meteor/server/sdk/types/IAnalyticsService.ts @@ -1,4 +1,4 @@ -import { IServiceClass } from './ServiceClass'; +import type { IServiceClass } from './ServiceClass'; export interface IAnalyticsService extends IServiceClass { saveSeatRequest(): Promise; diff --git a/apps/meteor/server/sdk/types/IAuthorizationVoip.ts b/apps/meteor/server/sdk/types/IAuthorizationVoip.ts index b3d39caee73..036fa5741b0 100644 --- a/apps/meteor/server/sdk/types/IAuthorizationVoip.ts +++ b/apps/meteor/server/sdk/types/IAuthorizationVoip.ts @@ -1,4 +1,4 @@ -import { RoomAccessValidator } from './IAuthorization'; +import type { RoomAccessValidator } from './IAuthorization'; export interface IAuthorizationVoip { canAccessRoom: RoomAccessValidator; diff --git a/apps/meteor/server/sdk/types/IBannerService.ts b/apps/meteor/server/sdk/types/IBannerService.ts index 2bfab086df9..1035bdd5951 100644 --- a/apps/meteor/server/sdk/types/IBannerService.ts +++ b/apps/meteor/server/sdk/types/IBannerService.ts @@ -1,4 +1,4 @@ -import { BannerPlatform, IBanner, Optional } from '@rocket.chat/core-typings'; +import type { BannerPlatform, IBanner, Optional } from '@rocket.chat/core-typings'; export interface IBannerService { getBannersForUser(userId: string, platform: BannerPlatform, bannerId?: string): Promise; diff --git a/apps/meteor/server/sdk/types/IBroker.ts b/apps/meteor/server/sdk/types/IBroker.ts index c1621a2f2ea..dcb561e5148 100644 --- a/apps/meteor/server/sdk/types/IBroker.ts +++ b/apps/meteor/server/sdk/types/IBroker.ts @@ -1,5 +1,5 @@ -import { ServiceClass } from './ServiceClass'; -import { EventSignatures } from '../lib/Events'; +import type { ServiceClass } from './ServiceClass'; +import type { EventSignatures } from '../lib/Events'; export interface IBrokerNode { id: string; diff --git a/apps/meteor/server/sdk/types/IDeviceManagementService.ts b/apps/meteor/server/sdk/types/IDeviceManagementService.ts index 1dde81866ef..72da0189e22 100644 --- a/apps/meteor/server/sdk/types/IDeviceManagementService.ts +++ b/apps/meteor/server/sdk/types/IDeviceManagementService.ts @@ -1,3 +1,3 @@ -import { IServiceClass } from './ServiceClass'; +import type { IServiceClass } from './ServiceClass'; export type IDeviceManagementService = IServiceClass; diff --git a/apps/meteor/server/sdk/types/IEnterpriseSettings.ts b/apps/meteor/server/sdk/types/IEnterpriseSettings.ts index 772f983ad47..be5d71fa657 100644 --- a/apps/meteor/server/sdk/types/IEnterpriseSettings.ts +++ b/apps/meteor/server/sdk/types/IEnterpriseSettings.ts @@ -1,6 +1,6 @@ import type { ISetting } from '@rocket.chat/core-typings'; -import { IServiceClass } from './ServiceClass'; +import type { IServiceClass } from './ServiceClass'; export interface IEnterpriseSettings extends IServiceClass { changeSettingValue(record: ISetting): undefined | ISetting['value']; diff --git a/apps/meteor/server/sdk/types/ILicense.ts b/apps/meteor/server/sdk/types/ILicense.ts index 4ac2f5fe580..7b89a006bfc 100644 --- a/apps/meteor/server/sdk/types/ILicense.ts +++ b/apps/meteor/server/sdk/types/ILicense.ts @@ -1,4 +1,4 @@ -import { IServiceClass } from './ServiceClass'; +import type { IServiceClass } from './ServiceClass'; export interface ILicense extends IServiceClass { hasLicense(feature: string): boolean; diff --git a/apps/meteor/server/sdk/types/IMediaService.ts b/apps/meteor/server/sdk/types/IMediaService.ts index 6caadba8812..f155e360e0e 100644 --- a/apps/meteor/server/sdk/types/IMediaService.ts +++ b/apps/meteor/server/sdk/types/IMediaService.ts @@ -1,6 +1,6 @@ -import { Readable, Stream } from 'stream'; +import type { Readable, Stream } from 'stream'; -import sharp from 'sharp'; +import type sharp from 'sharp'; export type ResizeResult = { data: Buffer; diff --git a/apps/meteor/server/sdk/types/IMeteor.ts b/apps/meteor/server/sdk/types/IMeteor.ts index a21dd0a11c4..a9a619d3c6b 100644 --- a/apps/meteor/server/sdk/types/IMeteor.ts +++ b/apps/meteor/server/sdk/types/IMeteor.ts @@ -1,5 +1,5 @@ -import { IRoutingManagerConfig } from '../../../definition/IRoutingManagerConfig'; -import { IServiceClass } from './ServiceClass'; +import type { IRoutingManagerConfig } from '../../../definition/IRoutingManagerConfig'; +import type { IServiceClass } from './ServiceClass'; export type AutoUpdateRecord = { _id: string; diff --git a/apps/meteor/server/sdk/types/IOmnichannelVoipService.ts b/apps/meteor/server/sdk/types/IOmnichannelVoipService.ts index 2bcaa609ebd..a224adbbbb5 100644 --- a/apps/meteor/server/sdk/types/IOmnichannelVoipService.ts +++ b/apps/meteor/server/sdk/types/IOmnichannelVoipService.ts @@ -1,4 +1,4 @@ -import { FindOptions } from 'mongodb'; +import type { FindOptions } from 'mongodb'; import type { IAgentExtensionMap, IRoomCreationResponse, @@ -8,11 +8,11 @@ import type { IUser, IVoipExtensionWithAgentInfo, ILivechatAgent, + VoipClientEvents, } from '@rocket.chat/core-typings'; -import { VoipClientEvents } from '@rocket.chat/core-typings'; import type { PaginatedResult } from '@rocket.chat/rest-typings'; -import { FindVoipRoomsParams } from '../../services/omnichannel-voip/internalTypes'; +import type { FindVoipRoomsParams } from '../../services/omnichannel-voip/internalTypes'; export interface IOmnichannelVoipService { getFreeExtensions(): Promise; diff --git a/apps/meteor/server/sdk/types/IPresence.ts b/apps/meteor/server/sdk/types/IPresence.ts index 227ed3807aa..c495580a214 100644 --- a/apps/meteor/server/sdk/types/IPresence.ts +++ b/apps/meteor/server/sdk/types/IPresence.ts @@ -1,6 +1,6 @@ -import { UserStatus } from '@rocket.chat/core-typings'; +import type { UserStatus } from '@rocket.chat/core-typings'; -import { IServiceClass } from './ServiceClass'; +import type { IServiceClass } from './ServiceClass'; export interface IPresence extends IServiceClass { newConnection(uid: string, session: string): Promise<{ uid: string; connectionId: string } | undefined>; diff --git a/apps/meteor/server/sdk/types/IPushService.ts b/apps/meteor/server/sdk/types/IPushService.ts index d19a04926bd..72ed75a82b7 100644 --- a/apps/meteor/server/sdk/types/IPushService.ts +++ b/apps/meteor/server/sdk/types/IPushService.ts @@ -1,3 +1,3 @@ -import { IServiceClass } from './ServiceClass'; +import type { IServiceClass } from './ServiceClass'; export type IPushService = IServiceClass; diff --git a/apps/meteor/server/sdk/types/ISAUMonitorService.ts b/apps/meteor/server/sdk/types/ISAUMonitorService.ts index 6f90212f1a7..e39630da417 100644 --- a/apps/meteor/server/sdk/types/ISAUMonitorService.ts +++ b/apps/meteor/server/sdk/types/ISAUMonitorService.ts @@ -1,3 +1,3 @@ -import { IServiceClass } from './ServiceClass'; +import type { IServiceClass } from './ServiceClass'; export type ISAUMonitorService = IServiceClass; diff --git a/apps/meteor/server/sdk/types/ITeamService.ts b/apps/meteor/server/sdk/types/ITeamService.ts index da5339c1a92..f7c9455fa72 100644 --- a/apps/meteor/server/sdk/types/ITeamService.ts +++ b/apps/meteor/server/sdk/types/ITeamService.ts @@ -1,8 +1,18 @@ -import { IPaginationOptions, IQueryOptions, IRecordsWithTotal, ITeam, ITeamMember, ITeamStats, TEAM_TYPE } from '@rocket.chat/core-typings'; -import { Filter, FindOptions } from 'mongodb'; -import type { IRoom, IUser, IRole } from '@rocket.chat/core-typings'; +import type { + IPaginationOptions, + IQueryOptions, + IRecordsWithTotal, + ITeam, + ITeamMember, + ITeamStats, + TEAM_TYPE, + IRoom, + IUser, + IRole, +} from '@rocket.chat/core-typings'; +import type { Filter, FindOptions } from 'mongodb'; -import { ICreateRoomParams } from './IRoomService'; +import type { ICreateRoomParams } from './IRoomService'; export interface ITeamCreateRoom extends Omit { id?: string; diff --git a/apps/meteor/server/sdk/types/IUiKitCoreApp.ts b/apps/meteor/server/sdk/types/IUiKitCoreApp.ts index 75af099f39b..92c7b7bd738 100644 --- a/apps/meteor/server/sdk/types/IUiKitCoreApp.ts +++ b/apps/meteor/server/sdk/types/IUiKitCoreApp.ts @@ -1,4 +1,4 @@ -import { IServiceClass } from './ServiceClass'; +import type { IServiceClass } from './ServiceClass'; export interface IUiKitCoreApp { appId: string; diff --git a/apps/meteor/server/sdk/types/IVoipService.ts b/apps/meteor/server/sdk/types/IVoipService.ts index 8f91a7c2a1e..95f2e2cbb03 100644 --- a/apps/meteor/server/sdk/types/IVoipService.ts +++ b/apps/meteor/server/sdk/types/IVoipService.ts @@ -1,5 +1,11 @@ -import { IVoipCallServerConfig, IVoipManagementServerConfig, ServerType, IRegistrationInfo } from '@rocket.chat/core-typings'; -import type { IVoipConnectorResult, IManagementServerConnectionStatus } from '@rocket.chat/core-typings'; +import type { + IVoipCallServerConfig, + IVoipManagementServerConfig, + ServerType, + IRegistrationInfo, + IVoipConnectorResult, + IManagementServerConnectionStatus, +} from '@rocket.chat/core-typings'; import type { CommandHandler } from '../../services/voip/connector/asterisk/CommandHandler'; diff --git a/apps/meteor/server/sdk/types/ServiceClass.ts b/apps/meteor/server/sdk/types/ServiceClass.ts index 88de362841d..23d0f835769 100644 --- a/apps/meteor/server/sdk/types/ServiceClass.ts +++ b/apps/meteor/server/sdk/types/ServiceClass.ts @@ -1,8 +1,8 @@ import { EventEmitter } from 'events'; import { asyncLocalStorage } from '..'; -import { IBroker, IBrokerNode } from './IBroker'; -import { EventSignatures } from '../lib/Events'; +import type { IBroker, IBrokerNode } from './IBroker'; +import type { EventSignatures } from '../lib/Events'; export interface IServiceContext { id: string; // Context ID diff --git a/apps/meteor/server/services/analytics/service.ts b/apps/meteor/server/services/analytics/service.ts index 993db2ef59c..06e7b63ee46 100644 --- a/apps/meteor/server/services/analytics/service.ts +++ b/apps/meteor/server/services/analytics/service.ts @@ -2,7 +2,7 @@ import type { IAnalyticsSeatRequest } from '@rocket.chat/core-typings'; import { Analytics } from '@rocket.chat/models'; import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import { IAnalyticsService } from '../../sdk/types/IAnalyticsService'; +import type { IAnalyticsService } from '../../sdk/types/IAnalyticsService'; export class AnalyticsService extends ServiceClassInternal implements IAnalyticsService { protected name = 'analytics'; diff --git a/apps/meteor/server/services/authorization/canAccessRoom.ts b/apps/meteor/server/services/authorization/canAccessRoom.ts index 3d1c0c6b114..d2876ac7dc1 100644 --- a/apps/meteor/server/services/authorization/canAccessRoom.ts +++ b/apps/meteor/server/services/authorization/canAccessRoom.ts @@ -1,9 +1,9 @@ -import { TEAM_TYPE, ITeam } from '@rocket.chat/core-typings'; -import type { IUser } from '@rocket.chat/core-typings'; +import { TEAM_TYPE } from '@rocket.chat/core-typings'; +import type { IUser, ITeam } from '@rocket.chat/core-typings'; import { Subscriptions, Rooms, Settings, TeamMember, Team } from '@rocket.chat/models'; import { Authorization } from '../../sdk'; -import { RoomAccessValidator } from '../../sdk/types/IAuthorization'; +import type { RoomAccessValidator } from '../../sdk/types/IAuthorization'; import { canAccessRoomLivechat } from './canAccessRoomLivechat'; import { canAccessRoomVoip } from './canAccessRoomVoip'; diff --git a/apps/meteor/server/services/authorization/canAccessRoomLivechat.ts b/apps/meteor/server/services/authorization/canAccessRoomLivechat.ts index 5b0ec051543..e9a0ae3bd45 100644 --- a/apps/meteor/server/services/authorization/canAccessRoomLivechat.ts +++ b/apps/meteor/server/services/authorization/canAccessRoomLivechat.ts @@ -1,9 +1,9 @@ import type { IOmnichannelRoom } from '@rocket.chat/core-typings'; import { Rooms } from '@rocket.chat/models'; -import { IAuthorizationLivechat } from '../../sdk/types/IAuthorizationLivechat'; +import type { IAuthorizationLivechat } from '../../sdk/types/IAuthorizationLivechat'; import { proxifyWithWait } from '../../sdk/lib/proxify'; -import { RoomAccessValidator } from '../../sdk/types/IAuthorization'; +import type { RoomAccessValidator } from '../../sdk/types/IAuthorization'; export const AuthorizationLivechat = proxifyWithWait('authorization-livechat'); diff --git a/apps/meteor/server/services/authorization/canAccessRoomVoip.ts b/apps/meteor/server/services/authorization/canAccessRoomVoip.ts index 88be9789565..fc2ea3aa54b 100644 --- a/apps/meteor/server/services/authorization/canAccessRoomVoip.ts +++ b/apps/meteor/server/services/authorization/canAccessRoomVoip.ts @@ -1,8 +1,8 @@ import { Rooms } from '@rocket.chat/models'; -import { IAuthorizationVoip } from '../../sdk/types/IAuthorizationVoip'; +import type { IAuthorizationVoip } from '../../sdk/types/IAuthorizationVoip'; import { proxifyWithWait } from '../../sdk/lib/proxify'; -import { RoomAccessValidator } from '../../sdk/types/IAuthorization'; +import type { RoomAccessValidator } from '../../sdk/types/IAuthorization'; export const AuthorizationVoip = proxifyWithWait('authorization-livechat'); diff --git a/apps/meteor/server/services/authorization/service.ts b/apps/meteor/server/services/authorization/service.ts index c05ce96bbcf..00d140377f1 100644 --- a/apps/meteor/server/services/authorization/service.ts +++ b/apps/meteor/server/services/authorization/service.ts @@ -1,9 +1,9 @@ -import { Db, Collection } from 'mongodb'; +import type { Db, Collection } from 'mongodb'; import mem from 'mem'; import type { IUser, IRole, IRoom, ISubscription } from '@rocket.chat/core-typings'; import { Subscriptions, Rooms, Users, Roles } from '@rocket.chat/models'; -import { IAuthorization, RoomAccessValidator } from '../../sdk/types/IAuthorization'; +import type { IAuthorization, RoomAccessValidator } from '../../sdk/types/IAuthorization'; import { ServiceClass } from '../../sdk/types/ServiceClass'; import { AuthorizationUtils } from '../../../app/authorization/lib/AuthorizationUtils'; import { canAccessRoom } from './canAccessRoom'; diff --git a/apps/meteor/server/services/banner/service.ts b/apps/meteor/server/services/banner/service.ts index b3702d9e03a..d45933376d0 100644 --- a/apps/meteor/server/services/banner/service.ts +++ b/apps/meteor/server/services/banner/service.ts @@ -1,10 +1,9 @@ import { v4 as uuidv4 } from 'uuid'; -import { BannerPlatform, IBanner, IBannerDismiss, Optional } from '@rocket.chat/core-typings'; -import type { IUser } from '@rocket.chat/core-typings'; +import type { BannerPlatform, IBanner, IBannerDismiss, Optional, IUser } from '@rocket.chat/core-typings'; import { Banners, BannersDismiss, Users } from '@rocket.chat/models'; import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import { IBannerService } from '../../sdk/types/IBannerService'; +import type { IBannerService } from '../../sdk/types/IBannerService'; import { api } from '../../sdk/api'; export class BannerService extends ServiceClassInternal implements IBannerService { diff --git a/apps/meteor/server/services/device-management/service.ts b/apps/meteor/server/services/device-management/service.ts index d91e5155a6f..1b620ce2e69 100644 --- a/apps/meteor/server/services/device-management/service.ts +++ b/apps/meteor/server/services/device-management/service.ts @@ -1,4 +1,4 @@ -import { IDeviceManagementService } from '../../sdk/types/IDeviceManagementService'; +import type { IDeviceManagementService } from '../../sdk/types/IDeviceManagementService'; import { deviceManagementEvents } from './events'; import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; diff --git a/apps/meteor/server/services/image/service.ts b/apps/meteor/server/services/image/service.ts index 910742b0fb9..e5fd9682f76 100644 --- a/apps/meteor/server/services/image/service.ts +++ b/apps/meteor/server/services/image/service.ts @@ -1,11 +1,12 @@ -import stream, { Readable } from 'stream'; +import type { Readable } from 'stream'; +import stream from 'stream'; import ft from 'file-type'; import sharp from 'sharp'; import isSvg from 'is-svg'; import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import { IMediaService, ResizeResult } from '../../sdk/types/IMediaService'; +import type { IMediaService, ResizeResult } from '../../sdk/types/IMediaService'; /* eslint-disable @typescript-eslint/no-var-requires */ const ExifTransformer = require('exif-be-gone'); diff --git a/apps/meteor/server/services/ldap/service.ts b/apps/meteor/server/services/ldap/service.ts index cdbf1ba4f76..b420c25b840 100644 --- a/apps/meteor/server/services/ldap/service.ts +++ b/apps/meteor/server/services/ldap/service.ts @@ -1,7 +1,7 @@ -import { LDAPLoginResult } from '@rocket.chat/core-typings'; +import type { LDAPLoginResult } from '@rocket.chat/core-typings'; import { LDAPManager } from '../../lib/ldap/Manager'; -import { ILDAPService } from '../../sdk/types/ILDAPService'; +import type { ILDAPService } from '../../sdk/types/ILDAPService'; import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; export class LDAPService extends ServiceClassInternal implements ILDAPService { diff --git a/apps/meteor/server/services/meteor/service.ts b/apps/meteor/server/services/meteor/service.ts index 41165ee9554..bea9d21f891 100644 --- a/apps/meteor/server/services/meteor/service.ts +++ b/apps/meteor/server/services/meteor/service.ts @@ -7,7 +7,7 @@ import { Users } from '@rocket.chat/models'; import { metrics } from '../../../app/metrics'; import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import { AutoUpdateRecord, IMeteor } from '../../sdk/types/IMeteor'; +import type { AutoUpdateRecord, IMeteor } from '../../sdk/types/IMeteor'; import { api } from '../../sdk/api'; import { Livechat } from '../../../app/livechat/server'; import { settings } from '../../../app/settings/server'; @@ -21,7 +21,7 @@ import notifications from '../../../app/notifications/server/lib/Notifications'; import { configureEmailInboxes } from '../../features/EmailInbox/EmailInbox'; import { isPresenceMonitorEnabled } from '../../lib/isPresenceMonitorEnabled'; import { use } from '../../../app/settings/server/Middleware'; -import { IRoutingManagerConfig } from '../../../definition/IRoutingManagerConfig'; +import type { IRoutingManagerConfig } from '../../../definition/IRoutingManagerConfig'; type Callbacks = { added(id: string, record: object): void; diff --git a/apps/meteor/server/services/nps/getAndCreateNpsSurvey.ts b/apps/meteor/server/services/nps/getAndCreateNpsSurvey.ts index 5c7efb8d802..c62e30c205d 100644 --- a/apps/meteor/server/services/nps/getAndCreateNpsSurvey.ts +++ b/apps/meteor/server/services/nps/getAndCreateNpsSurvey.ts @@ -1,6 +1,6 @@ import { HTTP } from 'meteor/http'; import { Meteor } from 'meteor/meteor'; -import { UiKitBannerPayload, IBanner, BannerPlatform } from '@rocket.chat/core-typings'; +import type { UiKitBannerPayload, IBanner, BannerPlatform } from '@rocket.chat/core-typings'; import { settings } from '../../../app/settings/server'; import { getWorkspaceAccessToken } from '../../../app/cloud/server'; diff --git a/apps/meteor/server/services/nps/notification.ts b/apps/meteor/server/services/nps/notification.ts index 33c617bef63..216825e718b 100644 --- a/apps/meteor/server/services/nps/notification.ts +++ b/apps/meteor/server/services/nps/notification.ts @@ -3,7 +3,8 @@ import { TextObjectType } from '@rocket.chat/apps-engine/definition/uikit/blocks import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import moment from 'moment'; -import { IBanner, BannerPlatform } from '@rocket.chat/core-typings'; +import type { IBanner } from '@rocket.chat/core-typings'; +import { BannerPlatform } from '@rocket.chat/core-typings'; import { settings } from '../../../app/settings/server'; import { sendMessagesToAdmins } from '../../lib/sendMessagesToAdmins'; diff --git a/apps/meteor/server/services/nps/service.ts b/apps/meteor/server/services/nps/service.ts index f3432b6daa4..4c0110b65b9 100644 --- a/apps/meteor/server/services/nps/service.ts +++ b/apps/meteor/server/services/nps/service.ts @@ -1,9 +1,10 @@ import { createHash } from 'crypto'; -import { NPSStatus, INpsVoteStatus, INpsVote, INps } from '@rocket.chat/core-typings'; +import type { INpsVote, INps } from '@rocket.chat/core-typings'; +import { NPSStatus, INpsVoteStatus } from '@rocket.chat/core-typings'; import { Nps, NpsVote, Settings } from '@rocket.chat/models'; -import { INPSService, NPSVotePayload, NPSCreatePayload } from '../../sdk/types/INPSService'; +import type { INPSService, NPSVotePayload, NPSCreatePayload } from '../../sdk/types/INPSService'; import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; import { Banner, NPS } from '../../sdk'; import { sendNpsResults } from './sendNpsResults'; diff --git a/apps/meteor/server/services/omnichannel-voip/internalTypes.ts b/apps/meteor/server/services/omnichannel-voip/internalTypes.ts index bd98ad54c29..704af7bd7a6 100644 --- a/apps/meteor/server/services/omnichannel-voip/internalTypes.ts +++ b/apps/meteor/server/services/omnichannel-voip/internalTypes.ts @@ -1,5 +1,5 @@ -import { IVoipRoom, IMessage } from '@rocket.chat/core-typings'; -import { FindOptions } from 'mongodb'; +import type { IVoipRoom, IMessage } from '@rocket.chat/core-typings'; +import type { FindOptions } from 'mongodb'; export type FindVoipRoomsParams = { agents?: string[]; diff --git a/apps/meteor/server/services/omnichannel-voip/service.ts b/apps/meteor/server/services/omnichannel-voip/service.ts index 7fbadd75a66..1559a5640b6 100644 --- a/apps/meteor/server/services/omnichannel-voip/service.ts +++ b/apps/meteor/server/services/omnichannel-voip/service.ts @@ -1,4 +1,4 @@ -import { FindOptions } from 'mongodb'; +import type { FindOptions } from 'mongodb'; import _ from 'underscore'; import type { IVoipExtensionBase, @@ -7,25 +7,20 @@ import type { IRoomCreationResponse, IUser, ILivechatAgent, -} from '@rocket.chat/core-typings'; -import { ILivechatVisitor, - isILivechatVisitor, IVoipRoom, IRoomClosingInfo, - OmnichannelSourceType, - isVoipRoom, - VoipClientEvents, } from '@rocket.chat/core-typings'; +import { isILivechatVisitor, OmnichannelSourceType, isVoipRoom, VoipClientEvents } from '@rocket.chat/core-typings'; import type { PaginatedResult } from '@rocket.chat/rest-typings'; import { Users, VoipRoom, PbxEvents } from '@rocket.chat/models'; -import { IOmnichannelVoipService } from '../../sdk/types/IOmnichannelVoipService'; +import type { IOmnichannelVoipService } from '../../sdk/types/IOmnichannelVoipService'; import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; import { Logger } from '../../lib/logger/Logger'; import { Voip } from '../../sdk'; import { sendMessage } from '../../../app/lib/server/functions/sendMessage'; -import { FindVoipRoomsParams, IOmniRoomClosingMessage } from './internalTypes'; +import type { FindVoipRoomsParams, IOmniRoomClosingMessage } from './internalTypes'; import { api } from '../../sdk/api'; export class OmnichannelVoipService extends ServiceClassInternal implements IOmnichannelVoipService { diff --git a/apps/meteor/server/services/push/service.ts b/apps/meteor/server/services/push/service.ts index c62c9f09990..c123d2a4b94 100644 --- a/apps/meteor/server/services/push/service.ts +++ b/apps/meteor/server/services/push/service.ts @@ -1,6 +1,6 @@ import { PushToken } from '@rocket.chat/models'; -import { IPushService } from '../../sdk/types/IPushService'; +import type { IPushService } from '../../sdk/types/IPushService'; import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; export class PushService extends ServiceClassInternal implements IPushService { diff --git a/apps/meteor/server/services/room/service.ts b/apps/meteor/server/services/room/service.ts index 3c5741ae36e..b1c880d7f79 100644 --- a/apps/meteor/server/services/room/service.ts +++ b/apps/meteor/server/services/room/service.ts @@ -2,7 +2,7 @@ import type { IRoom, IUser } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import { ICreateRoomParams, IRoomService } from '../../sdk/types/IRoomService'; +import type { ICreateRoomParams, IRoomService } from '../../sdk/types/IRoomService'; import { Authorization } from '../../sdk'; import { createRoom } from '../../../app/lib/server/functions/createRoom'; // TODO remove this import diff --git a/apps/meteor/server/services/sauMonitor/service.ts b/apps/meteor/server/services/sauMonitor/service.ts index 007c5317a1c..a7cc83531ea 100644 --- a/apps/meteor/server/services/sauMonitor/service.ts +++ b/apps/meteor/server/services/sauMonitor/service.ts @@ -1,7 +1,7 @@ // import type { Db } from 'mongodb'; import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import { ISAUMonitorService } from '../../sdk/types/ISAUMonitorService'; +import type { ISAUMonitorService } from '../../sdk/types/ISAUMonitorService'; import { sauEvents } from './events'; export class SAUMonitorService extends ServiceClassInternal implements ISAUMonitorService { diff --git a/apps/meteor/server/services/team/service.ts b/apps/meteor/server/services/team/service.ts index 92f44e4242c..38792baa256 100644 --- a/apps/meteor/server/services/team/service.ts +++ b/apps/meteor/server/services/team/service.ts @@ -1,7 +1,17 @@ -import { FindOptions, Filter } from 'mongodb'; +import type { FindOptions, Filter } from 'mongodb'; import { escapeRegExp } from '@rocket.chat/string-helpers'; -import type { IRoom, IUser, ISubscription } from '@rocket.chat/core-typings'; -import { IPaginationOptions, IQueryOptions, IRecordsWithTotal, ITeam, ITeamMember, ITeamStats, TEAM_TYPE } from '@rocket.chat/core-typings'; +import type { + IRoom, + IUser, + ISubscription, + IPaginationOptions, + IQueryOptions, + IRecordsWithTotal, + ITeam, + ITeamMember, + ITeamStats, +} from '@rocket.chat/core-typings'; +import { TEAM_TYPE } from '@rocket.chat/core-typings'; import { Team, Rooms, Subscriptions, Users, TeamMember } from '@rocket.chat/models'; import type { InsertionModel } from '@rocket.chat/model-typings'; @@ -11,7 +21,7 @@ import { removeUserFromRoom } from '../../../app/lib/server/functions/removeUser import { getSubscribedRoomsForUserWithDetails } from '../../../app/lib/server/functions/getRoomsWithSingleOwner'; import { Messages } from '../../../app/models/server'; import { Room, Authorization } from '../../sdk'; -import { +import type { IListRoomsFilter, ITeamAutocompleteResult, ITeamCreateParams, diff --git a/apps/meteor/server/services/uikit-core-app/service.ts b/apps/meteor/server/services/uikit-core-app/service.ts index c1da2df7f1d..4eef47aa0a0 100644 --- a/apps/meteor/server/services/uikit-core-app/service.ts +++ b/apps/meteor/server/services/uikit-core-app/service.ts @@ -1,5 +1,5 @@ import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import { IUiKitCoreApp, IUiKitCoreAppService } from '../../sdk/types/IUiKitCoreApp'; +import type { IUiKitCoreApp, IUiKitCoreAppService } from '../../sdk/types/IUiKitCoreApp'; const registeredApps = new Map(); diff --git a/apps/meteor/server/services/voip/connector/asterisk/Command.ts b/apps/meteor/server/services/voip/connector/asterisk/Command.ts index eb0c5ddebb1..d22fc133663 100644 --- a/apps/meteor/server/services/voip/connector/asterisk/Command.ts +++ b/apps/meteor/server/services/voip/connector/asterisk/Command.ts @@ -1,7 +1,7 @@ -import { Db } from 'mongodb'; +import type { Db } from 'mongodb'; import type { IVoipConnectorResult } from '@rocket.chat/core-typings'; -import { IConnection } from './IConnection'; +import type { IConnection } from './IConnection'; /** * This class serves as a a base class for the different kind of call server objects diff --git a/apps/meteor/server/services/voip/connector/asterisk/CommandHandler.ts b/apps/meteor/server/services/voip/connector/asterisk/CommandHandler.ts index 28a9b314754..9facdd09fd5 100644 --- a/apps/meteor/server/services/voip/connector/asterisk/CommandHandler.ts +++ b/apps/meteor/server/services/voip/connector/asterisk/CommandHandler.ts @@ -13,14 +13,14 @@ * We shall be using only AMI interface in the for now. Other interfaces will be * added as and when required. */ -import { Db } from 'mongodb'; -import type { IVoipConnectorResult, IManagementServerConnectionStatus } from '@rocket.chat/core-typings'; -import { IManagementConfigData } from '@rocket.chat/core-typings'; +import type { Db } from 'mongodb'; +import type { IVoipConnectorResult, IManagementServerConnectionStatus, IManagementConfigData } from '@rocket.chat/core-typings'; import { Commands } from './Commands'; -import { IConnection } from './IConnection'; +import type { IConnection } from './IConnection'; import { Logger } from '../../../../lib/logger/Logger'; -import { Command, CommandType } from './Command'; +import type { Command } from './Command'; +import { CommandType } from './Command'; import { AMIConnection } from './ami/AMIConnection'; import { CommandFactory } from './ami/CommandFactory'; import { WebsocketConnection } from '../websocket/WebsocketConnection'; diff --git a/apps/meteor/server/services/voip/connector/asterisk/IConnection.ts b/apps/meteor/server/services/voip/connector/asterisk/IConnection.ts index f18a7cc6446..c46d6403540 100644 --- a/apps/meteor/server/services/voip/connector/asterisk/IConnection.ts +++ b/apps/meteor/server/services/voip/connector/asterisk/IConnection.ts @@ -1,5 +1,5 @@ -import { Command } from './Command'; -import { ICallbackContext } from './ICallbackContext'; +import type { Command } from './Command'; +import type { ICallbackContext } from './ICallbackContext'; /** * Delegate interface for Asterisk management connection. * @remarks diff --git a/apps/meteor/server/services/voip/connector/asterisk/ami/ACDQueue.ts b/apps/meteor/server/services/voip/connector/asterisk/ami/ACDQueue.ts index 96355547ce0..b2db1f41cdf 100644 --- a/apps/meteor/server/services/voip/connector/asterisk/ami/ACDQueue.ts +++ b/apps/meteor/server/services/voip/connector/asterisk/ami/ACDQueue.ts @@ -2,7 +2,7 @@ * This class is responsible for handling ACD Queue summary * @remarks */ -import { Db } from 'mongodb'; +import type { Db } from 'mongodb'; import type { IVoipConnectorResult } from '@rocket.chat/core-typings'; import { Command, CommandType } from '../Command'; diff --git a/apps/meteor/server/services/voip/connector/asterisk/ami/AMIConnection.ts b/apps/meteor/server/services/voip/connector/asterisk/ami/AMIConnection.ts index aa119cd1d30..e17d042eedb 100644 --- a/apps/meteor/server/services/voip/connector/asterisk/ami/AMIConnection.ts +++ b/apps/meteor/server/services/voip/connector/asterisk/ami/AMIConnection.ts @@ -9,10 +9,10 @@ * happens in /etc/asterisk/manager.conf file. * */ -import { IConnection } from '../IConnection'; +import type { IConnection } from '../IConnection'; import { Logger } from '../../../../../lib/logger/Logger'; -import { Command } from '../Command'; -import { CallbackContext } from './CallbackContext'; +import type { Command } from '../Command'; +import type { CallbackContext } from './CallbackContext'; /** * Note : asterisk-manager does not provide any types. diff --git a/apps/meteor/server/services/voip/connector/asterisk/ami/CallbackContext.ts b/apps/meteor/server/services/voip/connector/asterisk/ami/CallbackContext.ts index b1430774cec..03085e464b4 100644 --- a/apps/meteor/server/services/voip/connector/asterisk/ami/CallbackContext.ts +++ b/apps/meteor/server/services/voip/connector/asterisk/ami/CallbackContext.ts @@ -2,8 +2,8 @@ * This class is a callback context for AMI event handlers. */ -import { Command } from '../Command'; -import { ICallbackContext } from '../ICallbackContext'; +import type { Command } from '../Command'; +import type { ICallbackContext } from '../ICallbackContext'; export class CallbackContext implements ICallbackContext { private callback: (event: any) => void; diff --git a/apps/meteor/server/services/voip/connector/asterisk/ami/CommandFactory.ts b/apps/meteor/server/services/voip/connector/asterisk/ami/CommandFactory.ts index 56b4109814f..67f359535d7 100644 --- a/apps/meteor/server/services/voip/connector/asterisk/ami/CommandFactory.ts +++ b/apps/meteor/server/services/voip/connector/asterisk/ami/CommandFactory.ts @@ -6,7 +6,7 @@ * e.g even though extension_info and extension_list are two different commands, * they will be executed by |PJSIPEndpoint| class. */ -import { Db } from 'mongodb'; +import type { Db } from 'mongodb'; import { Command } from '../Command'; import { Commands } from '../Commands'; diff --git a/apps/meteor/server/services/voip/connector/asterisk/ami/ContinuousMonitor.ts b/apps/meteor/server/services/voip/connector/asterisk/ami/ContinuousMonitor.ts index 397b84b0d3d..6a89b4ded0b 100644 --- a/apps/meteor/server/services/voip/connector/asterisk/ami/ContinuousMonitor.ts +++ b/apps/meteor/server/services/voip/connector/asterisk/ami/ContinuousMonitor.ts @@ -12,11 +12,10 @@ * (AgentConnect.calleridnum, connectedlinenum, queue) to signify which agent ansered the call from which queue. * */ -import { Db } from 'mongodb'; -import { +import type { Db } from 'mongodb'; +import type { IPbxEvent, IQueueDetails, - isIDialingEvent, IAgentCalledEvent, IAgentConnectEvent, IEventBase, @@ -25,6 +24,14 @@ import { IQueueEvent, IQueueMemberAdded, IQueueMemberRemoved, + ICallOnHold, + ICallUnHold, + IContactStatus, + ICallHangup, + IDialingEvent, +} from '@rocket.chat/core-typings'; +import { + isIDialingEvent, isIAgentCalledEvent, isIAgentConnectEvent, isIQueueCallerAbandonEvent, @@ -33,13 +40,8 @@ import { isIQueueMemberRemovedEvent, isICallOnHoldEvent, isICallUnHoldEvent, - ICallOnHold, - ICallUnHold, isIContactStatusEvent, - IContactStatus, isICallHangupEvent, - ICallHangup, - IDialingEvent, } from '@rocket.chat/core-typings'; import { Users, PbxEvents } from '@rocket.chat/models'; diff --git a/apps/meteor/server/services/voip/connector/asterisk/ami/PJSIPEndpoint.ts b/apps/meteor/server/services/voip/connector/asterisk/ami/PJSIPEndpoint.ts index 79fcc21b910..7b08508c121 100644 --- a/apps/meteor/server/services/voip/connector/asterisk/ami/PJSIPEndpoint.ts +++ b/apps/meteor/server/services/voip/connector/asterisk/ami/PJSIPEndpoint.ts @@ -29,9 +29,9 @@ * have same actionid, which is received by this class as a successful execution of a command in actionResultCallback. */ import _ from 'underscore'; -import { Db } from 'mongodb'; -import { EndpointState, IExtensionDetails } from '@rocket.chat/core-typings'; -import type { IVoipConnectorResult } from '@rocket.chat/core-typings'; +import type { Db } from 'mongodb'; +import { EndpointState } from '@rocket.chat/core-typings'; +import type { IVoipConnectorResult, IExtensionDetails } from '@rocket.chat/core-typings'; import { Command, CommandType } from '../Command'; import { Logger } from '../../../../../lib/logger/Logger'; diff --git a/apps/meteor/server/services/voip/connector/websocket/WebsocketConnection.ts b/apps/meteor/server/services/voip/connector/websocket/WebsocketConnection.ts index c98530ffe7c..0e3431bb90b 100644 --- a/apps/meteor/server/services/voip/connector/websocket/WebsocketConnection.ts +++ b/apps/meteor/server/services/voip/connector/websocket/WebsocketConnection.ts @@ -10,10 +10,10 @@ */ import WebSocket from 'ws'; -import { IConnection } from '../asterisk/IConnection'; +import type { IConnection } from '../asterisk/IConnection'; import { Logger } from '../../../../lib/logger/Logger'; -import { Command } from '../asterisk/Command'; -import { CallbackContext } from '../asterisk/ami/CallbackContext'; +import type { Command } from '../asterisk/Command'; +import type { CallbackContext } from '../asterisk/ami/CallbackContext'; export class WebsocketConnection implements IConnection { connection: WebSocket; diff --git a/apps/meteor/server/services/voip/lib/Helper.ts b/apps/meteor/server/services/voip/lib/Helper.ts index 4de70c7527c..2d9ed1f7a6f 100644 --- a/apps/meteor/server/services/voip/lib/Helper.ts +++ b/apps/meteor/server/services/voip/lib/Helper.ts @@ -1,4 +1,5 @@ -import { ServerType, IVoipManagementServerConfig, IVoipCallServerConfig } from '@rocket.chat/core-typings'; +import type { IVoipManagementServerConfig, IVoipCallServerConfig } from '@rocket.chat/core-typings'; +import { ServerType } from '@rocket.chat/core-typings'; import { settings } from '../../../../app/settings/server/cached'; diff --git a/apps/meteor/server/services/voip/service.ts b/apps/meteor/server/services/voip/service.ts index dd462a917fc..4e892735009 100644 --- a/apps/meteor/server/services/voip/service.ts +++ b/apps/meteor/server/services/voip/service.ts @@ -1,18 +1,19 @@ -import { Db } from 'mongodb'; +import type { Db } from 'mongodb'; import mem from 'mem'; -import { - ServerType, - isICallServerConfigData, +import { ServerType, isICallServerConfigData, isIExtensionDetails } from '@rocket.chat/core-typings'; +import type { + IVoipConnectorResult, + IQueueDetails, + IQueueSummary, + IManagementServerConnectionStatus, IVoipCallServerConfig, IVoipManagementServerConfig, IQueueMembershipDetails, IQueueMembershipSubscription, IRegistrationInfo, - isIExtensionDetails, } from '@rocket.chat/core-typings'; -import type { IVoipConnectorResult, IQueueDetails, IQueueSummary, IManagementServerConnectionStatus } from '@rocket.chat/core-typings'; -import { IVoipService } from '../../sdk/types/IVoipService'; +import type { IVoipService } from '../../sdk/types/IVoipService'; import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; import { Logger } from '../../lib/logger/Logger'; import { CommandHandler } from './connector/asterisk/CommandHandler'; diff --git a/apps/meteor/server/startup/migrations/v252.ts b/apps/meteor/server/startup/migrations/v252.ts index b02211a9506..ca6298f7015 100644 --- a/apps/meteor/server/startup/migrations/v252.ts +++ b/apps/meteor/server/startup/migrations/v252.ts @@ -1,4 +1,5 @@ -import { IOmnichannelRoom, OmnichannelSourceType } from '@rocket.chat/core-typings'; +import type { IOmnichannelRoom } from '@rocket.chat/core-typings'; +import { OmnichannelSourceType } from '@rocket.chat/core-typings'; import { Rooms } from '@rocket.chat/models'; import { addMigration } from '../../lib/migrations'; diff --git a/apps/meteor/server/startup/migrations/v260.ts b/apps/meteor/server/startup/migrations/v260.ts index 2f29aea538e..c6186048d87 100644 --- a/apps/meteor/server/startup/migrations/v260.ts +++ b/apps/meteor/server/startup/migrations/v260.ts @@ -1,5 +1,5 @@ -import { ILivechatVisitor } from '@rocket.chat/core-typings'; -import { AnyBulkWriteOperation, FindCursor } from 'mongodb'; +import type { ILivechatVisitor } from '@rocket.chat/core-typings'; +import type { AnyBulkWriteOperation, FindCursor } from 'mongodb'; import { LivechatVisitors } from '@rocket.chat/models'; import { addMigration } from '../../lib/migrations'; diff --git a/apps/meteor/tests/e2e/fixtures/collections/users.ts b/apps/meteor/tests/e2e/fixtures/collections/users.ts index 926f28c2a41..563566d4a76 100644 --- a/apps/meteor/tests/e2e/fixtures/collections/users.ts +++ b/apps/meteor/tests/e2e/fixtures/collections/users.ts @@ -1,4 +1,4 @@ -import { IUser } from '@rocket.chat/core-typings'; +import type { IUser } from '@rocket.chat/core-typings'; import { faker } from '@faker-js/faker'; type UserFixture = IUser & { diff --git a/apps/meteor/tests/e2e/messaging.spec.ts b/apps/meteor/tests/e2e/messaging.spec.ts index 2b4f25b89b6..27c474a1530 100644 --- a/apps/meteor/tests/e2e/messaging.spec.ts +++ b/apps/meteor/tests/e2e/messaging.spec.ts @@ -1,4 +1,4 @@ -import { Browser, Page } from '@playwright/test'; +import type { Browser, Page } from '@playwright/test'; import { expect, test } from './utils/test'; import { HomeChannel } from './page-objects'; diff --git a/apps/meteor/tests/e2e/page-objects/account-profile.ts b/apps/meteor/tests/e2e/page-objects/account-profile.ts index 242a0b5d10b..3d1377d63f1 100644 --- a/apps/meteor/tests/e2e/page-objects/account-profile.ts +++ b/apps/meteor/tests/e2e/page-objects/account-profile.ts @@ -1,4 +1,4 @@ -import { Locator, Page } from '@playwright/test'; +import type { Locator, Page } from '@playwright/test'; import { AccountSidenav } from './fragments/account-sidenav'; diff --git a/apps/meteor/tests/e2e/page-objects/admin.ts b/apps/meteor/tests/e2e/page-objects/admin.ts index 58c24df6a03..2dc803706d5 100644 --- a/apps/meteor/tests/e2e/page-objects/admin.ts +++ b/apps/meteor/tests/e2e/page-objects/admin.ts @@ -1,4 +1,4 @@ -import { Locator, Page } from '@playwright/test'; +import type { Locator, Page } from '@playwright/test'; import { AdminSidenav } from './fragments'; import { AdminFlextab } from './fragments/admin-flextab'; diff --git a/apps/meteor/tests/e2e/page-objects/auth.ts b/apps/meteor/tests/e2e/page-objects/auth.ts index 79ca1c16580..3b304ae7ca9 100644 --- a/apps/meteor/tests/e2e/page-objects/auth.ts +++ b/apps/meteor/tests/e2e/page-objects/auth.ts @@ -1,4 +1,4 @@ -import { Locator, Page } from '@playwright/test'; +import type { Locator, Page } from '@playwright/test'; export class Auth { private readonly page: Page; diff --git a/apps/meteor/tests/e2e/page-objects/fragments/account-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/account-sidenav.ts index 714adab52a1..30298619b4b 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/account-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/account-sidenav.ts @@ -1,4 +1,4 @@ -import { Locator, Page } from '@playwright/test'; +import type { Locator, Page } from '@playwright/test'; export class AccountSidenav { private readonly page: Page; diff --git a/apps/meteor/tests/e2e/page-objects/fragments/admin-flextab-users.ts b/apps/meteor/tests/e2e/page-objects/fragments/admin-flextab-users.ts index 0c657e4a098..c508f8ad08c 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/admin-flextab-users.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/admin-flextab-users.ts @@ -1,4 +1,4 @@ -import { Locator, Page } from '@playwright/test'; +import type { Locator, Page } from '@playwright/test'; export class AdminFlextabUsers { private readonly page: Page; diff --git a/apps/meteor/tests/e2e/page-objects/fragments/admin-flextab.ts b/apps/meteor/tests/e2e/page-objects/fragments/admin-flextab.ts index 1c87924b405..df85e91ac64 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/admin-flextab.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/admin-flextab.ts @@ -1,4 +1,4 @@ -import { Page } from '@playwright/test'; +import type { Page } from '@playwright/test'; import { AdminFlextabUsers } from './admin-flextab-users'; diff --git a/apps/meteor/tests/e2e/page-objects/fragments/admin-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/admin-sidenav.ts index ffa12ef7fc8..f6196787d88 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/admin-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/admin-sidenav.ts @@ -1,4 +1,4 @@ -import { Locator, Page } from '@playwright/test'; +import type { Locator, Page } from '@playwright/test'; export class AdminSidenav { private readonly page: Page; diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-content.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-content.ts index a10e0128dc6..d9f1ea7210d 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-content.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-content.ts @@ -1,6 +1,6 @@ import fs from 'fs/promises'; -import { Locator, Page } from '@playwright/test'; +import type { Locator, Page } from '@playwright/test'; export class HomeContent { private readonly page: Page; diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-flextab-members.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-flextab-members.ts index 1f0c506654e..71c44b446a4 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-flextab-members.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-flextab-members.ts @@ -1,4 +1,4 @@ -import { Page } from '@playwright/test'; +import type { Page } from '@playwright/test'; export class HomeFlextabMembers { private readonly page: Page; diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-flextab-room.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-flextab-room.ts index 6cb79da8314..82de9a6007c 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-flextab-room.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-flextab-room.ts @@ -1,4 +1,4 @@ -import { Page } from '@playwright/test'; +import type { Page } from '@playwright/test'; export class HomeFlextabRoom { private readonly page: Page; diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-flextab.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-flextab.ts index 5b4c470e5b8..10e74dbe53d 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-flextab.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-flextab.ts @@ -1,4 +1,4 @@ -import { Locator, Page } from '@playwright/test'; +import type { Locator, Page } from '@playwright/test'; import { HomeFlextabMembers } from './home-flextab-members'; import { HomeFlextabRoom } from './home-flextab-room'; diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts index 084926a3eb6..8de1c5f1d19 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts @@ -1,4 +1,4 @@ -import { Locator, Page } from '@playwright/test'; +import type { Locator, Page } from '@playwright/test'; export class HomeSidenav { private readonly page: Page; diff --git a/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-sidenav.ts index 60018a15f78..5e9a92be3c0 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-sidenav.ts @@ -1,4 +1,4 @@ -import { Locator, Page } from '@playwright/test'; +import type { Locator, Page } from '@playwright/test'; export class OmnichannelSidenav { private readonly page: Page; diff --git a/apps/meteor/tests/e2e/page-objects/home-channel.ts b/apps/meteor/tests/e2e/page-objects/home-channel.ts index 3d6380352a5..786bb41df83 100644 --- a/apps/meteor/tests/e2e/page-objects/home-channel.ts +++ b/apps/meteor/tests/e2e/page-objects/home-channel.ts @@ -1,4 +1,4 @@ -import { Locator, Page } from '@playwright/test'; +import type { Locator, Page } from '@playwright/test'; import { HomeContent, HomeSidenav, HomeFlextab } from './fragments'; diff --git a/apps/meteor/tests/e2e/page-objects/home-discussion.ts b/apps/meteor/tests/e2e/page-objects/home-discussion.ts index f17879fc89d..dc055df73bc 100644 --- a/apps/meteor/tests/e2e/page-objects/home-discussion.ts +++ b/apps/meteor/tests/e2e/page-objects/home-discussion.ts @@ -1,4 +1,4 @@ -import { Locator, Page } from '@playwright/test'; +import type { Locator, Page } from '@playwright/test'; import { HomeContent, HomeSidenav, HomeFlextab } from './fragments'; diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-agents.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-agents.ts index 29c97954870..6bc5875628d 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-agents.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-agents.ts @@ -1,4 +1,4 @@ -import { Locator, Page } from '@playwright/test'; +import type { Locator, Page } from '@playwright/test'; import { OmnichannelSidenav } from './fragments'; diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-departaments.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-departaments.ts index 3ecabe1bcf6..b087e5ab193 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-departaments.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-departaments.ts @@ -1,4 +1,4 @@ -import { Page } from '@playwright/test'; +import type { Page } from '@playwright/test'; import { OmnichannelSidenav } from './fragments'; diff --git a/apps/meteor/tests/e2e/utils/create-target-channel.ts b/apps/meteor/tests/e2e/utils/create-target-channel.ts index 0918305dcb4..bc0a784365f 100644 --- a/apps/meteor/tests/e2e/utils/create-target-channel.ts +++ b/apps/meteor/tests/e2e/utils/create-target-channel.ts @@ -1,6 +1,6 @@ import faker from '@faker-js/faker'; -import { BaseTest } from './test'; +import type { BaseTest } from './test'; /** * createTargetChannel: diff --git a/apps/meteor/tests/e2e/utils/test.ts b/apps/meteor/tests/e2e/utils/test.ts index 1da94570dc8..ca6cd428861 100644 --- a/apps/meteor/tests/e2e/utils/test.ts +++ b/apps/meteor/tests/e2e/utils/test.ts @@ -2,7 +2,8 @@ import * as fs from 'fs'; import * as path from 'path'; import { v4 as uuid } from 'uuid'; -import { APIResponse, test as baseTest } from '@playwright/test'; +import type { APIResponse } from '@playwright/test'; +import { test as baseTest } from '@playwright/test'; import { BASE_API_URL, ADMIN_CREDENTIALS } from '../config/constants'; @@ -19,7 +20,6 @@ export type BaseTest = { }; }; -// @ts-ignore export const test = baseTest.extend({ context: async ({ context }, use) => { if (!process.env.E2E_COVERAGE) { diff --git a/apps/meteor/tests/end-to-end/api/import.spec.ts b/apps/meteor/tests/end-to-end/api/import.spec.ts index 31e73eed45f..60d5566d4d0 100644 --- a/apps/meteor/tests/end-to-end/api/import.spec.ts +++ b/apps/meteor/tests/end-to-end/api/import.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { Response } from 'supertest'; +import type { Response } from 'supertest'; import { getCredentials, api, request, credentials } from '../../data/api-data.js'; diff --git a/apps/meteor/tests/end-to-end/api/livechat/00-rooms.ts b/apps/meteor/tests/end-to-end/api/livechat/00-rooms.ts index 04736b6d70d..308f7a61fb0 100644 --- a/apps/meteor/tests/end-to-end/api/livechat/00-rooms.ts +++ b/apps/meteor/tests/end-to-end/api/livechat/00-rooms.ts @@ -4,8 +4,8 @@ import fs from 'fs'; import path from 'path'; import { expect } from 'chai'; -import { IOmnichannelRoom, ILivechatVisitor } from '@rocket.chat/core-typings'; -import { Response } from 'supertest'; +import type { IOmnichannelRoom, ILivechatVisitor } from '@rocket.chat/core-typings'; +import type { Response } from 'supertest'; import { getCredentials, api, request, credentials } from '../../../data/api-data'; import { createVisitor, createLivechatRoom, createAgent, makeAgentAvailable } from '../../../data/livechat/rooms'; diff --git a/apps/meteor/tests/end-to-end/api/livechat/01-agents.ts b/apps/meteor/tests/end-to-end/api/livechat/01-agents.ts index 6ea8baaf66d..74cbeb9cf92 100644 --- a/apps/meteor/tests/end-to-end/api/livechat/01-agents.ts +++ b/apps/meteor/tests/end-to-end/api/livechat/01-agents.ts @@ -2,7 +2,7 @@ import type { ILivechatAgent, ILivechatDepartment } from '@rocket.chat/core-typings'; import { expect } from 'chai'; -import { Response } from 'supertest'; +import type { Response } from 'supertest'; import { getCredentials, api, request, credentials } from '../../../data/api-data'; import { createAgent, createManager } from '../../../data/livechat/rooms'; diff --git a/apps/meteor/tests/end-to-end/api/livechat/02-appearance.ts b/apps/meteor/tests/end-to-end/api/livechat/02-appearance.ts index f7526bb2641..82b102ffeff 100644 --- a/apps/meteor/tests/end-to-end/api/livechat/02-appearance.ts +++ b/apps/meteor/tests/end-to-end/api/livechat/02-appearance.ts @@ -1,7 +1,7 @@ /* eslint-env mocha */ import { expect } from 'chai'; -import { Response } from 'supertest'; +import type { Response } from 'supertest'; import { getCredentials, api, request, credentials } from '../../../data/api-data'; import { updatePermission, updateSetting } from '../../../data/permissions.helper'; diff --git a/apps/meteor/tests/end-to-end/api/livechat/03-custom-fields.ts b/apps/meteor/tests/end-to-end/api/livechat/03-custom-fields.ts index 7327b1e10c3..c80d05599aa 100644 --- a/apps/meteor/tests/end-to-end/api/livechat/03-custom-fields.ts +++ b/apps/meteor/tests/end-to-end/api/livechat/03-custom-fields.ts @@ -1,7 +1,7 @@ /* eslint-env mocha */ import { expect } from 'chai'; -import { Response } from 'supertest'; +import type { Response } from 'supertest'; import { getCredentials, api, request, credentials } from '../../../data/api-data'; import { updatePermission, updateSetting } from '../../../data/permissions.helper'; diff --git a/apps/meteor/tests/end-to-end/api/livechat/04-dashboards.ts b/apps/meteor/tests/end-to-end/api/livechat/04-dashboards.ts index a6e0888aa87..5678a933516 100644 --- a/apps/meteor/tests/end-to-end/api/livechat/04-dashboards.ts +++ b/apps/meteor/tests/end-to-end/api/livechat/04-dashboards.ts @@ -1,7 +1,7 @@ /* eslint-env mocha */ import { expect } from 'chai'; -import { Response } from 'supertest'; +import type { Response } from 'supertest'; import { getCredentials, api, request, credentials } from '../../../data/api-data'; import { updatePermission, updateSetting } from '../../../data/permissions.helper'; diff --git a/apps/meteor/tests/end-to-end/api/livechat/05-inquiries.ts b/apps/meteor/tests/end-to-end/api/livechat/05-inquiries.ts index 450b7050b73..b954b223040 100644 --- a/apps/meteor/tests/end-to-end/api/livechat/05-inquiries.ts +++ b/apps/meteor/tests/end-to-end/api/livechat/05-inquiries.ts @@ -1,7 +1,7 @@ /* eslint-env mocha */ import { expect } from 'chai'; -import { Response } from 'supertest'; +import type { Response } from 'supertest'; import { getCredentials, api, request, credentials } from '../../../data/api-data'; import { createAgent, createLivechatRoom, createVisitor, fetchInquiry, makeAgentAvailable } from '../../../data/livechat/rooms'; diff --git a/apps/meteor/tests/end-to-end/api/livechat/06-integrations.ts b/apps/meteor/tests/end-to-end/api/livechat/06-integrations.ts index 0afbe236a02..fd5b9fb315e 100644 --- a/apps/meteor/tests/end-to-end/api/livechat/06-integrations.ts +++ b/apps/meteor/tests/end-to-end/api/livechat/06-integrations.ts @@ -1,7 +1,7 @@ /* eslint-env mocha */ import { expect } from 'chai'; -import { Response } from 'supertest'; +import type { Response } from 'supertest'; import { getCredentials, api, request, credentials } from '../../../data/api-data'; import { updatePermission, updateSetting } from '../../../data/permissions.helper'; diff --git a/apps/meteor/tests/end-to-end/api/livechat/07-queue.ts b/apps/meteor/tests/end-to-end/api/livechat/07-queue.ts index 5841ee89bd6..d8212e05162 100644 --- a/apps/meteor/tests/end-to-end/api/livechat/07-queue.ts +++ b/apps/meteor/tests/end-to-end/api/livechat/07-queue.ts @@ -1,7 +1,7 @@ /* eslint-env mocha */ import { expect } from 'chai'; -import { Response } from 'supertest'; +import type { Response } from 'supertest'; import { getCredentials, api, request, credentials } from '../../../data/api-data'; import { updatePermission, updateSetting } from '../../../data/permissions.helper'; diff --git a/apps/meteor/tests/end-to-end/api/livechat/08-triggers.ts b/apps/meteor/tests/end-to-end/api/livechat/08-triggers.ts index 894577d1dde..2c81a4b068a 100644 --- a/apps/meteor/tests/end-to-end/api/livechat/08-triggers.ts +++ b/apps/meteor/tests/end-to-end/api/livechat/08-triggers.ts @@ -1,7 +1,7 @@ /* eslint-env mocha */ import { expect } from 'chai'; -import { Response } from 'supertest'; +import type { Response } from 'supertest'; import { getCredentials, api, request, credentials } from '../../../data/api-data'; import { updatePermission, updateSetting } from '../../../data/permissions.helper'; diff --git a/apps/meteor/tests/end-to-end/api/livechat/09-visitors.ts b/apps/meteor/tests/end-to-end/api/livechat/09-visitors.ts index 3f700b8b089..4e9e570e23c 100644 --- a/apps/meteor/tests/end-to-end/api/livechat/09-visitors.ts +++ b/apps/meteor/tests/end-to-end/api/livechat/09-visitors.ts @@ -2,7 +2,7 @@ import { expect } from 'chai'; import type { ILivechatAgent, ILivechatVisitor, IOmnichannelRoom } from '@rocket.chat/core-typings'; -import { Response } from 'supertest'; +import type { Response } from 'supertest'; import { getCredentials, api, request, credentials } from '../../../data/api-data'; import { updatePermission, updateSetting } from '../../../data/permissions.helper'; diff --git a/apps/meteor/tests/end-to-end/api/livechat/10-departments.ts b/apps/meteor/tests/end-to-end/api/livechat/10-departments.ts index 1b68f69d3db..df182eee81c 100644 --- a/apps/meteor/tests/end-to-end/api/livechat/10-departments.ts +++ b/apps/meteor/tests/end-to-end/api/livechat/10-departments.ts @@ -1,7 +1,7 @@ /* eslint-env mocha */ import { expect } from 'chai'; import type { ILivechatAgent, ILivechatDepartment } from '@rocket.chat/core-typings'; -import { Response } from 'supertest'; +import type { Response } from 'supertest'; import { getCredentials, api, request, credentials } from '../../../data/api-data'; import { updatePermission, updateSetting } from '../../../data/permissions.helper'; diff --git a/apps/meteor/tests/mocks/client/RouterContextMock.tsx b/apps/meteor/tests/mocks/client/RouterContextMock.tsx index ec99fa8eec9..093dae64a87 100644 --- a/apps/meteor/tests/mocks/client/RouterContextMock.tsx +++ b/apps/meteor/tests/mocks/client/RouterContextMock.tsx @@ -1,4 +1,5 @@ -import React, { ContextType, ReactElement, ReactNode, useMemo } from 'react'; +import type { ContextType, ReactElement, ReactNode } from 'react'; +import React, { useMemo } from 'react'; import { RouterContext } from '@rocket.chat/ui-contexts'; type RouterContextMockProps = { @@ -30,8 +31,11 @@ const RouterContextMock = ({ children, pushRoute, replaceRoute }: RouterContextM ], queryCurrentRoute: (): [ subscribe: (onStoreChange: () => void) => () => void, - getSnapshot: () => [undefined?, {}?, {}?, undefined?], - ] => [() => (): void => undefined, (): [undefined, {}, {}, undefined] => [undefined, {}, {}, undefined]], + getSnapshot: () => [undefined?, Record?, Record?, undefined?], + ] => [ + () => (): void => undefined, + (): [undefined, Record, Record, undefined] => [undefined, {}, {}, undefined], + ], }), [pushRoute, replaceRoute], ); diff --git a/apps/meteor/tests/unit/app/federation-v2/server/unit/infrastructure/queue/InMemoryQueue.spec.ts b/apps/meteor/tests/unit/app/federation-v2/server/unit/infrastructure/queue/InMemoryQueue.spec.ts index cb34c4db3ce..a99f99e14d8 100644 --- a/apps/meteor/tests/unit/app/federation-v2/server/unit/infrastructure/queue/InMemoryQueue.spec.ts +++ b/apps/meteor/tests/unit/app/federation-v2/server/unit/infrastructure/queue/InMemoryQueue.spec.ts @@ -1,12 +1,15 @@ import { expect, spy } from 'chai'; import mock from 'mock-require'; +import type fastq from 'fastq'; import { InMemoryQueue } from '../../../../../../../../app/federation-v2/server/infrastructure/queue/InMemoryQueue'; mock('fastq', { - promise: (handler: Function) => ({ - push: async (task: any): Promise => handler(task), - }), + promise(this: C, handler: fastq.asyncWorker): Pick, 'push'> { + return { + push: (task) => handler.call(this, task), + }; + }, }); describe('Federation - Infrastructure - Queue - InMemoryQueue', () => { @@ -18,7 +21,7 @@ describe('Federation - Infrastructure - Queue - InMemoryQueue', () => { }); it('should push the task to the queue instance to be handled when the instance was properly defined', () => { - const spiedCb = spy(); + const spiedCb = spy(async () => undefined); const concurrency = 1; queue.setHandler(spiedCb, concurrency); queue.addToQueue({ task: 'my-task' }); diff --git a/apps/meteor/tests/unit/app/federation-v2/server/unit/infrastructure/rocket-chat/converters/RoomSender.spec.ts b/apps/meteor/tests/unit/app/federation-v2/server/unit/infrastructure/rocket-chat/converters/RoomSender.spec.ts index c81a32dc084..b16963668c2 100644 --- a/apps/meteor/tests/unit/app/federation-v2/server/unit/infrastructure/rocket-chat/converters/RoomSender.spec.ts +++ b/apps/meteor/tests/unit/app/federation-v2/server/unit/infrastructure/rocket-chat/converters/RoomSender.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { IMessage } from '@rocket.chat/core-typings'; +import type { IMessage } from '@rocket.chat/core-typings'; import { FederationRoomSenderConverter } from '../../../../../../../../../app/federation-v2/server/infrastructure/rocket-chat/converters/RoomSender'; import { diff --git a/apps/meteor/tests/unit/app/meteor-accounts-saml/server.tests.ts b/apps/meteor/tests/unit/app/meteor-accounts-saml/server.tests.ts index a5f830176d2..35fa300a1fb 100644 --- a/apps/meteor/tests/unit/app/meteor-accounts-saml/server.tests.ts +++ b/apps/meteor/tests/unit/app/meteor-accounts-saml/server.tests.ts @@ -1,6 +1,5 @@ import { expect } from 'chai'; -import '../lib/server.mocks'; import { AuthorizeRequest } from '../../../../app/meteor-accounts-saml/server/lib/generators/AuthorizeRequest'; import { LogoutRequest } from '../../../../app/meteor-accounts-saml/server/lib/generators/LogoutRequest'; import { LogoutResponse } from '../../../../app/meteor-accounts-saml/server/lib/generators/LogoutResponse'; @@ -35,6 +34,8 @@ import { privateKeyCert, privateKey, } from './data'; +import { isTruthy } from '../../../../lib/isTruthy'; +import '../lib/server.mocks'; describe('SAML', () => { describe('[AuthorizeRequest]', () => { @@ -855,8 +856,7 @@ describe('SAML', () => { // Workaround because chai doesn't handle Maps very well for (const [key, value] of userObject.attributeList) { - // @ts-ignore - expect(value).to.be.equal(profile[key]); + expect(value).to.be.equal(profile[key as keyof typeof profile]); } }); @@ -933,7 +933,10 @@ describe('SAML', () => { SAMLUtils.updateGlobalSettings(globalSettings); SAMLUtils.relayState = '[RelayState]'; - // @ts-ignore + if (!isTruthy(profile)) { + throw new Error('Profile is null'); + } + const userObject = SAMLUtils.mapProfileToUserObject(profile); expect(userObject).to.be.an('object'); diff --git a/apps/meteor/tests/unit/client/views/admin/apps/helpers/filterAppsByCategories.test.ts b/apps/meteor/tests/unit/client/views/admin/apps/helpers/filterAppsByCategories.test.ts index 95c1c87a482..ac54933f3cf 100644 --- a/apps/meteor/tests/unit/client/views/admin/apps/helpers/filterAppsByCategories.test.ts +++ b/apps/meteor/tests/unit/client/views/admin/apps/helpers/filterAppsByCategories.test.ts @@ -1,7 +1,7 @@ /* eslint-env mocha */ import { expect } from 'chai'; -import { App } from '../../../../../../../client/views/admin/apps/types'; +import type { App } from '../../../../../../../client/views/admin/apps/types'; import { filterAppsByCategories } from '../../../../../../../client/views/admin/apps/helpers/filterAppsByCategories'; describe('filterAppsByCategories', () => { diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json index ba56fd4bd9c..e4e5ff881d9 100644 --- a/ee/apps/ddp-streamer/package.json +++ b/ee/apps/ddp-streamer/package.json @@ -6,6 +6,7 @@ "scripts": { "build": "tsc -p tsconfig.json", "test": "echo \"Error: no test specified\" && exit 1", + "lint": "eslint src", "typecheck": "tsc --noEmit --skipLibCheck -p tsconfig.json" }, "keywords": [ @@ -38,11 +39,13 @@ "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", "@types/ejson": "^2.2.0", + "@types/eslint": "^8", "@types/meteor": "2.7.1", "@types/node": "^14.18.21", "@types/sharp": "^0.30.4", "@types/uuid": "^8.3.4", "@types/ws": "^8.5.3", + "eslint": "^8.21.0", "pino-pretty": "^7.6.1", "typescript": "~4.5.5" }, diff --git a/ee/apps/ddp-streamer/src/Client.ts b/ee/apps/ddp-streamer/src/Client.ts index 7a98f5e79ad..41e710b9b7a 100644 --- a/ee/apps/ddp-streamer/src/Client.ts +++ b/ee/apps/ddp-streamer/src/Client.ts @@ -2,13 +2,13 @@ import { EventEmitter } from 'events'; import type { IncomingMessage } from 'http'; import { v1 as uuidv1 } from 'uuid'; -import WebSocket from 'ws'; +import type WebSocket from 'ws'; import type { ISocketConnection } from '@rocket.chat/core-typings'; import { DDP_EVENTS, WS_ERRORS, WS_ERRORS_MESSAGES, TIMEOUT } from './constants'; import { SERVER_ID } from './Server'; import { server } from './configureServer'; -import { IPacket } from './types/IPacket'; +import type { IPacket } from './types/IPacket'; // TODO why localhost not as 127.0.0.1? // based on Meteor's implementation (link) diff --git a/ee/apps/ddp-streamer/src/DDPStreamer.ts b/ee/apps/ddp-streamer/src/DDPStreamer.ts index cec718f4772..4cd35dd398e 100644 --- a/ee/apps/ddp-streamer/src/DDPStreamer.ts +++ b/ee/apps/ddp-streamer/src/DDPStreamer.ts @@ -1,4 +1,5 @@ -import http, { IncomingMessage, RequestOptions, ServerResponse } from 'http'; +import type { IncomingMessage, RequestOptions, ServerResponse } from 'http'; +import http from 'http'; import url from 'url'; import WebSocket from 'ws'; diff --git a/ee/apps/ddp-streamer/src/Publication.ts b/ee/apps/ddp-streamer/src/Publication.ts index c590f28b418..18174f72fd2 100644 --- a/ee/apps/ddp-streamer/src/Publication.ts +++ b/ee/apps/ddp-streamer/src/Publication.ts @@ -2,9 +2,9 @@ import { EventEmitter } from 'events'; import type { IPublication } from 'meteor/rocketchat:streamer'; -import { Server } from './Server'; -import { Client } from './Client'; -import { IPacket } from './types/IPacket'; +import type { Server } from './Server'; +import type { Client } from './Client'; +import type { IPacket } from './types/IPacket'; export class Publication extends EventEmitter implements IPublication { _session: IPublication['_session']; @@ -27,6 +27,14 @@ export class Publication extends EventEmitter implements IPublication { this.connection = client.connection; } + error(_error: Error): void { + throw new Error('Method not implemented.'); + } + + unblock(): void { + throw new Error('Method not implemented.'); + } + ready(): void { return this.server.ready(this.client, this.packet); } @@ -52,7 +60,7 @@ export class Publication extends EventEmitter implements IPublication { this.server.removed(this.client, collection, id); } - get userId(): string | undefined { - return this.client.userId; + get userId() { + return this.client.userId ?? null; } } diff --git a/ee/apps/ddp-streamer/src/Server.ts b/ee/apps/ddp-streamer/src/Server.ts index 19d9bd48580..84ba8511e1a 100644 --- a/ee/apps/ddp-streamer/src/Server.ts +++ b/ee/apps/ddp-streamer/src/Server.ts @@ -6,8 +6,8 @@ import { v1 as uuidv1 } from 'uuid'; import { DDP_EVENTS } from './constants'; import { Publication } from './Publication'; -import { Client } from './Client'; -import { IPacket } from './types/IPacket'; +import type { Client } from './Client'; +import type { IPacket } from './types/IPacket'; import { MeteorService } from '../../../../apps/meteor/server/sdk'; import { isMeteorError, MeteorError } from '../../../../apps/meteor/server/sdk/errors'; import { Logger } from '../../../../apps/meteor/server/lib/logger/Logger'; diff --git a/ee/apps/ddp-streamer/src/lib/Autoupdate.ts b/ee/apps/ddp-streamer/src/lib/Autoupdate.ts index da74752c6f8..206e9a93b32 100644 --- a/ee/apps/ddp-streamer/src/lib/Autoupdate.ts +++ b/ee/apps/ddp-streamer/src/lib/Autoupdate.ts @@ -1,6 +1,6 @@ import { EventEmitter } from 'events'; -import { AutoUpdateRecord } from '../../../../../apps/meteor/server/sdk/types/IMeteor'; +import type { AutoUpdateRecord } from '../../../../../apps/meteor/server/sdk/types/IMeteor'; class AutoupdateSingleton extends EventEmitter { private versions = new Map>(); diff --git a/packages/agenda/src/Agenda.ts b/packages/agenda/src/Agenda.ts index ac5f0c0ce4c..61f808ee3c6 100644 --- a/packages/agenda/src/Agenda.ts +++ b/packages/agenda/src/Agenda.ts @@ -122,9 +122,9 @@ export class Agenda extends EventEmitter { if (config.mongo) { this.mongo(config.mongo, config.db ? config.db.collection : undefined, cb); - // @ts-expect-error + // @ts-ignore if (config.mongo.s && config.mongo.topology && config.mongo.topology.s) { - // @ts-expect-error + // @ts-ignore this._mongoUseUnifiedTopology = Boolean(config.mongo?.topology?.s?.options?.useUnifiedTopology); } } else if (config.db) { diff --git a/packages/cas-validate/src/validate.ts b/packages/cas-validate/src/validate.ts index cb01aa16c3c..fcf57ccef14 100644 --- a/packages/cas-validate/src/validate.ts +++ b/packages/cas-validate/src/validate.ts @@ -2,7 +2,8 @@ import https from 'https'; import url from 'url'; import type { IncomingMessage } from 'http'; -import { load, Cheerio, CheerioAPI } from 'cheerio'; +import type { Cheerio, CheerioAPI } from 'cheerio'; +import { load } from 'cheerio'; export type CasOptions = { // eslint-disable-next-line @typescript-eslint/naming-convention diff --git a/packages/core-typings/src/ICronJobs.ts b/packages/core-typings/src/ICronJobs.ts index cbd83ecbe07..7539da6ea53 100644 --- a/packages/core-typings/src/ICronJobs.ts +++ b/packages/core-typings/src/ICronJobs.ts @@ -1,7 +1,7 @@ export type ScheduleType = 'cron' | 'text'; export interface ICronJobs { - add(name: string, schedule: string, callback: Function, scheduleType?: ScheduleType): void; + add(name: string, schedule: string, callback: (day: string, hour: string) => void, scheduleType?: ScheduleType): void; remove(name: string): void; nextScheduledAtDate(name: string): Date | number | undefined; } diff --git a/packages/core-typings/src/IImportRecord.ts b/packages/core-typings/src/IImportRecord.ts index 730e36de83b..c6212f2d7de 100644 --- a/packages/core-typings/src/IImportRecord.ts +++ b/packages/core-typings/src/IImportRecord.ts @@ -9,7 +9,7 @@ export interface IImportRecord { data: IImportData; dataType: IImportRecordType; _id: string; - options?: {}; + options?: Record; errors?: Array<{ message: string; stack?: string; diff --git a/packages/core-typings/src/IRocketChatAssets.ts b/packages/core-typings/src/IRocketChatAssets.ts index b0a3c50f3ec..a7ce8ccbcdd 100644 --- a/packages/core-typings/src/IRocketChatAssets.ts +++ b/packages/core-typings/src/IRocketChatAssets.ts @@ -15,12 +15,12 @@ export interface IRocketChatAssetCache { cacheable: boolean; where: string; type: string; - content: Buffer; - extension: string; + content?: Buffer; + extension?: string; url: string; - size: number; - uploadDate: Date; - contentType: string; + size?: number; + uploadDate?: Date; + contentType?: string; hash: string; sourceMapUrl?: string; } diff --git a/packages/core-typings/src/ldap/ILDAPCallback.ts b/packages/core-typings/src/ldap/ILDAPCallback.ts index 1b4a87b45e4..0c47c88f428 100644 --- a/packages/core-typings/src/ldap/ILDAPCallback.ts +++ b/packages/core-typings/src/ldap/ILDAPCallback.ts @@ -4,7 +4,7 @@ export interface ILDAPCallback { export interface ILDAPPageData { end: boolean; - next: Function | undefined; + next?: (count: number) => void; } export interface ILDAPPageCallback { diff --git a/packages/eslint-config/standard/index.js b/packages/eslint-config/standard/index.js index e3a98d95e60..a7c833bb629 100644 --- a/packages/eslint-config/standard/index.js +++ b/packages/eslint-config/standard/index.js @@ -37,6 +37,7 @@ module.exports = { rules: { '@typescript-eslint/ban-types': 'warn', '@typescript-eslint/ban-ts-comment': 'warn', + '@typescript-eslint/consistent-type-imports': 'error', '@typescript-eslint/naming-convention': [ 'error', { selector: 'variableLike', format: ['camelCase'], leadingUnderscore: 'allow' }, @@ -81,6 +82,7 @@ module.exports = { 'indent': 'off', 'jsx-quotes': ['error', 'prefer-single'], 'no-dupe-class-members': 'off', + 'no-empty-function': 'off', 'no-redeclare': 'off', 'no-spaced-func': 'off', 'no-undef': 'off', diff --git a/packages/favicon/src/index.ts b/packages/favicon/src/index.ts index 9ebcfb6977f..ec7a77abf81 100644 --- a/packages/favicon/src/index.ts +++ b/packages/favicon/src/index.ts @@ -1,4 +1,5 @@ -import { Badge, drawBadge } from './badge'; +import type { Badge } from './badge'; +import { drawBadge } from './badge'; const getFavicons = () => { const favicons = Array.from(document.head.getElementsByTagName('link')).filter((link) => diff --git a/packages/model-typings/src/models/IBaseModel.ts b/packages/model-typings/src/models/IBaseModel.ts index 8a46b87ac0a..9639e4bd8a7 100644 --- a/packages/model-typings/src/models/IBaseModel.ts +++ b/packages/model-typings/src/models/IBaseModel.ts @@ -28,8 +28,8 @@ type EnhancedOmit = string | number extends keyof T : never; type ExtractIdType = TSchema extends { _id: infer U } // user has defined a type for _id - ? {} extends U - ? Exclude + ? Record extends U + ? Exclude> : unknown extends U ? ObjectId : U diff --git a/packages/models/src/proxify.ts b/packages/models/src/proxify.ts index 17b9571c1a9..e81c97e6743 100644 --- a/packages/models/src/proxify.ts +++ b/packages/models/src/proxify.ts @@ -10,7 +10,7 @@ function handler(namespace: string): ProxyHandler { models.set(namespace, (lazyModels.get(namespace) as () => IBaseModel)()); } - // @ts-expect-error + // @ts-ignore return models.get(namespace)[prop]; }, }; diff --git a/packages/rest-typings/src/helpers/PaginatedRequest.ts b/packages/rest-typings/src/helpers/PaginatedRequest.ts index ad46563e82d..b8dce3484e3 100644 --- a/packages/rest-typings/src/helpers/PaginatedRequest.ts +++ b/packages/rest-typings/src/helpers/PaginatedRequest.ts @@ -1,4 +1,4 @@ -export type PaginatedRequest = { +export type PaginatedRequest, S extends string = string> = { count?: number; offset?: number; sort?: `{ "${S}": ${1 | -1} }` | string; diff --git a/packages/rest-typings/src/helpers/PaginatedResult.ts b/packages/rest-typings/src/helpers/PaginatedResult.ts index ea153093cee..ed8f3a8cb68 100644 --- a/packages/rest-typings/src/helpers/PaginatedResult.ts +++ b/packages/rest-typings/src/helpers/PaginatedResult.ts @@ -1,4 +1,4 @@ -export type PaginatedResult = { +export type PaginatedResult> = { count: number; offset: number; total: number; diff --git a/packages/rest-typings/src/helpers/WithItemCount.ts b/packages/rest-typings/src/helpers/WithItemCount.ts index 012206e476b..47f14d57868 100644 --- a/packages/rest-typings/src/helpers/WithItemCount.ts +++ b/packages/rest-typings/src/helpers/WithItemCount.ts @@ -1,3 +1,3 @@ -export type WithItemCount = T & { +export type WithItemCount> = T & { count: { total: number }[]; }; diff --git a/packages/rest-typings/src/v1/assets.ts b/packages/rest-typings/src/v1/assets.ts index fc318f63ba4..e076c2b0771 100644 --- a/packages/rest-typings/src/v1/assets.ts +++ b/packages/rest-typings/src/v1/assets.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; import type { IRocketChatAssets } from '@rocket.chat/core-typings'; export type AssetsUnsetAssetProps = { assetName: keyof IRocketChatAssets; refreshAllClients?: boolean }; diff --git a/packages/rest-typings/src/v1/channels/channels.ts b/packages/rest-typings/src/v1/channels/channels.ts index eb1ab118a02..46f6436cd39 100644 --- a/packages/rest-typings/src/v1/channels/channels.ts +++ b/packages/rest-typings/src/v1/channels/channels.ts @@ -77,34 +77,38 @@ export type ChannelsEndpoints = { }; }; '/v1/channels.close': { - POST: (params: { roomId: string } | { roomName: string }) => {}; + POST: (params: { roomId: string } | { roomName: string }) => void; }; '/v1/channels.kick': { - POST: (params: { roomId: string; userId: string } | { roomName: string; userId: string }) => {}; + POST: (params: { roomId: string; userId: string } | { roomName: string; userId: string }) => { + channel: IRoom; + }; }; '/v1/channels.delete': { POST: (params: ChannelsDeleteProps) => void; }; '/v1/channels.leave': { - POST: (params: { roomId: string } | { roomName: string }) => {}; + POST: (params: { roomId: string } | { roomName: string }) => { + channel: IRoom; + }; }; '/v1/channels.addModerator': { - POST: (params: { roomId: string; userId: string } | { roomName: string; userId: string }) => {}; + POST: (params: { roomId: string; userId: string } | { roomName: string; userId: string }) => void; }; '/v1/channels.removeModerator': { - POST: (params: { roomId: string; userId: string } | { roomName: string; userId: string }) => {}; + POST: (params: { roomId: string; userId: string } | { roomName: string; userId: string }) => void; }; '/v1/channels.addOwner': { - POST: (params: { roomId: string; userId: string } | { roomName: string; userId: string }) => {}; + POST: (params: { roomId: string; userId: string } | { roomName: string; userId: string }) => void; }; '/v1/channels.removeOwner': { - POST: (params: { roomId: string; userId: string } | { roomName: string; userId: string }) => {}; + POST: (params: { roomId: string; userId: string } | { roomName: string; userId: string }) => void; }; '/v1/channels.addLeader': { - POST: (params: { roomId: string; userId: string } | { roomName: string; userId: string }) => {}; + POST: (params: { roomId: string; userId: string } | { roomName: string; userId: string }) => void; }; '/v1/channels.removeLeader': { - POST: (params: { roomId: string; userId: string } | { roomName: string; userId: string }) => {}; + POST: (params: { roomId: string; userId: string } | { roomName: string; userId: string }) => void; }; '/v1/channels.roles': { GET: (params: { roomId: string } | { roomName: string }) => { roles: IGetRoomRoles[] }; @@ -133,7 +137,9 @@ export type ChannelsEndpoints = { }>; }; '/v1/channels.setAnnouncement': { - POST: (params: ChannelsSetAnnouncementProps) => {}; + POST: (params: ChannelsSetAnnouncementProps) => { + announcement: string; + }; }; '/v1/channels.getAllUserMentionsByChannel': { GET: (params: ChannelsGetAllUserMentionsByChannelProps) => PaginatedResult<{ diff --git a/packages/rest-typings/src/v1/chat.ts b/packages/rest-typings/src/v1/chat.ts index c9185c99df5..0995896edcf 100644 --- a/packages/rest-typings/src/v1/chat.ts +++ b/packages/rest-typings/src/v1/chat.ts @@ -466,7 +466,7 @@ export type ChatEndpoints = { POST: (params: ChatReact) => void; }; '/v1/chat.ignoreUser': { - GET: (params: ChatIgnoreUser) => {}; + GET: (params: ChatIgnoreUser) => void; }; '/v1/chat.search': { GET: (params: ChatSearch) => { diff --git a/packages/rest-typings/src/v1/directory.ts b/packages/rest-typings/src/v1/directory.ts index 4a44f6539bf..9c8ce3bcea6 100644 --- a/packages/rest-typings/src/v1/directory.ts +++ b/packages/rest-typings/src/v1/directory.ts @@ -8,7 +8,7 @@ const ajv = new Ajv({ coerceTypes: true, }); -type DirectoryProps = PaginatedRequest<{}>; +type DirectoryProps = PaginatedRequest; const DirectorySchema = { type: 'object', diff --git a/packages/rest-typings/src/v1/dm/DmKickProps.ts b/packages/rest-typings/src/v1/dm/DmKickProps.ts index eb56b52a3cd..16dbd696906 100644 --- a/packages/rest-typings/src/v1/dm/DmKickProps.ts +++ b/packages/rest-typings/src/v1/dm/DmKickProps.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; const ajv = new Ajv({ coerceTypes: true, diff --git a/packages/rest-typings/src/v1/groups.ts b/packages/rest-typings/src/v1/groups.ts index 9ab08be043d..edbac14c33e 100644 --- a/packages/rest-typings/src/v1/groups.ts +++ b/packages/rest-typings/src/v1/groups.ts @@ -362,16 +362,16 @@ export type GroupsEndpoints = { }; }; '/v1/groups.close': { - POST: (params: GroupsCloseProps) => {}; + POST: (params: GroupsCloseProps) => void; }; '/v1/groups.kick': { - POST: (params: GroupsKickProps) => {}; + POST: (params: GroupsKickProps) => void; }; '/v1/groups.delete': { - POST: (params: GroupsDeleteProps) => {}; + POST: (params: GroupsDeleteProps) => void; }; '/v1/groups.leave': { - POST: (params: GroupsLeaveProps) => {}; + POST: (params: GroupsLeaveProps) => void; }; '/v1/groups.roles': { GET: (params: GroupsRolesProps) => { roles: IGetRoomRoles[] }; @@ -382,21 +382,21 @@ export type GroupsEndpoints = { }>; }; '/v1/groups.addModerator': { - POST: (params: { roomId: string; userId: string }) => {}; + POST: (params: { roomId: string; userId: string }) => void; }; '/v1/groups.removeModerator': { - POST: (params: { roomId: string; userId: string }) => {}; + POST: (params: { roomId: string; userId: string }) => void; }; '/v1/groups.addOwner': { - POST: (params: { roomId: string; userId: string }) => {}; + POST: (params: { roomId: string; userId: string }) => void; }; '/v1/groups.removeOwner': { - POST: (params: { roomId: string; userId: string }) => {}; + POST: (params: { roomId: string; userId: string }) => void; }; '/v1/groups.addLeader': { - POST: (params: { roomId: string; userId: string }) => {}; + POST: (params: { roomId: string; userId: string }) => void; }; '/v1/groups.removeLeader': { - POST: (params: { roomId: string; userId: string }) => {}; + POST: (params: { roomId: string; userId: string }) => void; }; }; diff --git a/packages/rest-typings/src/v1/import/DownloadPendingAvatarsParamsPOST.ts b/packages/rest-typings/src/v1/import/DownloadPendingAvatarsParamsPOST.ts index dfb14b3fdba..7ea2b264fe3 100644 --- a/packages/rest-typings/src/v1/import/DownloadPendingAvatarsParamsPOST.ts +++ b/packages/rest-typings/src/v1/import/DownloadPendingAvatarsParamsPOST.ts @@ -4,7 +4,7 @@ const ajv = new Ajv({ coerceTypes: true, }); -export type DownloadPendingAvatarsParamsPOST = {}; +export type DownloadPendingAvatarsParamsPOST = Record; const DownloadPendingAvatarsParamsPOSTSchema = { type: 'object', diff --git a/packages/rest-typings/src/v1/import/GetCurrentImportOperationParamsGET.ts b/packages/rest-typings/src/v1/import/GetCurrentImportOperationParamsGET.ts index eb43327c5c0..6ee8f72d5e2 100644 --- a/packages/rest-typings/src/v1/import/GetCurrentImportOperationParamsGET.ts +++ b/packages/rest-typings/src/v1/import/GetCurrentImportOperationParamsGET.ts @@ -4,7 +4,7 @@ const ajv = new Ajv({ coerceTypes: true, }); -export type GetCurrentImportOperationParamsGET = {}; +export type GetCurrentImportOperationParamsGET = Record; const GetCurrentImportOperationParamsGETSchema = { type: 'object', diff --git a/packages/rest-typings/src/v1/import/GetImportProgressParamsGET.ts b/packages/rest-typings/src/v1/import/GetImportProgressParamsGET.ts index c497bf41d86..80b01ec2e15 100644 --- a/packages/rest-typings/src/v1/import/GetImportProgressParamsGET.ts +++ b/packages/rest-typings/src/v1/import/GetImportProgressParamsGET.ts @@ -4,7 +4,7 @@ const ajv = new Ajv({ coerceTypes: true, }); -export type GetImportProgressParamsGET = {}; +export type GetImportProgressParamsGET = Record; const GetImportProgressParamsGETSchema = { type: 'object', diff --git a/packages/rest-typings/src/v1/import/GetLatestImportOperationsParamsGET.ts b/packages/rest-typings/src/v1/import/GetLatestImportOperationsParamsGET.ts index 90fe1545e45..3e071498eb9 100644 --- a/packages/rest-typings/src/v1/import/GetLatestImportOperationsParamsGET.ts +++ b/packages/rest-typings/src/v1/import/GetLatestImportOperationsParamsGET.ts @@ -4,7 +4,7 @@ const ajv = new Ajv({ coerceTypes: true, }); -export type GetLatestImportOperationsParamsGET = {}; +export type GetLatestImportOperationsParamsGET = Record; const GetLatestImportOperationsParamsGETSchema = { type: 'object', diff --git a/packages/rest-typings/src/v1/import/StartImportParamsPOST.ts b/packages/rest-typings/src/v1/import/StartImportParamsPOST.ts index 300079addeb..7a3f0bf5d7a 100644 --- a/packages/rest-typings/src/v1/import/StartImportParamsPOST.ts +++ b/packages/rest-typings/src/v1/import/StartImportParamsPOST.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; const ajv = new Ajv({ coerceTypes: true, diff --git a/packages/rest-typings/src/v1/integrations/integrations.ts b/packages/rest-typings/src/v1/integrations/integrations.ts index 9c496b3446d..ab825c9cb85 100644 --- a/packages/rest-typings/src/v1/integrations/integrations.ts +++ b/packages/rest-typings/src/v1/integrations/integrations.ts @@ -21,7 +21,7 @@ export type IntegrationsEndpoints = { }; 'integrations.list': { - GET: (params: PaginatedRequest<{}>) => PaginatedResult<{ + GET: (params: PaginatedRequest) => PaginatedResult<{ integrations: IIntegration[]; items: number; }>; diff --git a/packages/rest-typings/src/v1/me.ts b/packages/rest-typings/src/v1/me.ts index 9a4b9697d68..3e7c05c6bd9 100644 --- a/packages/rest-typings/src/v1/me.ts +++ b/packages/rest-typings/src/v1/me.ts @@ -39,7 +39,7 @@ export type MeEndpoints = { GET: (params?: { fields: Record | Record; user: IUser }) => IUser & { email?: string; settings: { - profile: {}; + profile: Record; preferences: unknown; }; avatarUrl: string; diff --git a/packages/rest-typings/src/v1/omnichannel.ts b/packages/rest-typings/src/v1/omnichannel.ts index eb09cadfc81..a0314de8c41 100644 --- a/packages/rest-typings/src/v1/omnichannel.ts +++ b/packages/rest-typings/src/v1/omnichannel.ts @@ -540,7 +540,7 @@ const LivechatDepartmentsByUnitSchema = { export const isLivechatDepartmentsByUnitProps = ajv.compile(LivechatDepartmentsByUnitSchema); -type LivechatDepartmentsByUnitIdProps = PaginatedRequest<{}>; +type LivechatDepartmentsByUnitIdProps = PaginatedRequest; const LivechatDepartmentsByUnitIdSchema = { type: 'object', diff --git a/packages/rest-typings/src/v1/teams/TeamsAddMembersProps.ts b/packages/rest-typings/src/v1/teams/TeamsAddMembersProps.ts index 95cc3be9197..b6dbdbf4807 100644 --- a/packages/rest-typings/src/v1/teams/TeamsAddMembersProps.ts +++ b/packages/rest-typings/src/v1/teams/TeamsAddMembersProps.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; import type { ITeamMemberParams } from './ITeamMemberParams'; diff --git a/packages/rest-typings/src/v1/teams/TeamsConvertToChannelProps.ts b/packages/rest-typings/src/v1/teams/TeamsConvertToChannelProps.ts index 53455e98662..0b36167b2c6 100644 --- a/packages/rest-typings/src/v1/teams/TeamsConvertToChannelProps.ts +++ b/packages/rest-typings/src/v1/teams/TeamsConvertToChannelProps.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; const ajv = new Ajv(); diff --git a/packages/rest-typings/src/v1/teams/TeamsDeleteProps.ts b/packages/rest-typings/src/v1/teams/TeamsDeleteProps.ts index 8e194032746..e517056e29a 100644 --- a/packages/rest-typings/src/v1/teams/TeamsDeleteProps.ts +++ b/packages/rest-typings/src/v1/teams/TeamsDeleteProps.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; const ajv = new Ajv(); diff --git a/packages/rest-typings/src/v1/teams/TeamsLeaveProps.ts b/packages/rest-typings/src/v1/teams/TeamsLeaveProps.ts index edda273d93c..11880b580b4 100644 --- a/packages/rest-typings/src/v1/teams/TeamsLeaveProps.ts +++ b/packages/rest-typings/src/v1/teams/TeamsLeaveProps.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; const ajv = new Ajv(); diff --git a/packages/rest-typings/src/v1/teams/TeamsRemoveMemberProps.ts b/packages/rest-typings/src/v1/teams/TeamsRemoveMemberProps.ts index 04de75b1d3f..54927ca6ef3 100644 --- a/packages/rest-typings/src/v1/teams/TeamsRemoveMemberProps.ts +++ b/packages/rest-typings/src/v1/teams/TeamsRemoveMemberProps.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; const ajv = new Ajv(); diff --git a/packages/rest-typings/src/v1/teams/TeamsRemoveRoomProps.ts b/packages/rest-typings/src/v1/teams/TeamsRemoveRoomProps.ts index 9c214701270..7568025aea1 100644 --- a/packages/rest-typings/src/v1/teams/TeamsRemoveRoomProps.ts +++ b/packages/rest-typings/src/v1/teams/TeamsRemoveRoomProps.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; import type { IRoom } from '@rocket.chat/core-typings'; const ajv = new Ajv(); diff --git a/packages/rest-typings/src/v1/teams/TeamsUpdateMemberProps.ts b/packages/rest-typings/src/v1/teams/TeamsUpdateMemberProps.ts index 0615f3f3076..eddd5c17972 100644 --- a/packages/rest-typings/src/v1/teams/TeamsUpdateMemberProps.ts +++ b/packages/rest-typings/src/v1/teams/TeamsUpdateMemberProps.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; import type { ITeamMemberParams } from './ITeamMemberParams'; diff --git a/packages/rest-typings/src/v1/teams/TeamsUpdateProps.ts b/packages/rest-typings/src/v1/teams/TeamsUpdateProps.ts index 2a1349767f0..8d1bea01682 100644 --- a/packages/rest-typings/src/v1/teams/TeamsUpdateProps.ts +++ b/packages/rest-typings/src/v1/teams/TeamsUpdateProps.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; import { TEAM_TYPE } from '@rocket.chat/core-typings'; const ajv = new Ajv(); diff --git a/packages/rest-typings/src/v1/teams/index.ts b/packages/rest-typings/src/v1/teams/index.ts index f5aabd3acc3..efaf8238a08 100644 --- a/packages/rest-typings/src/v1/teams/index.ts +++ b/packages/rest-typings/src/v1/teams/index.ts @@ -134,7 +134,7 @@ export type TeamsEndpoints = { }; '/v1/teams.info': { - GET: (params: ({ teamId: string } | { teamName: string }) & {}) => { + GET: (params: ({ teamId: string } | { teamName: string }) & Record) => { teamInfo: Partial; }; }; diff --git a/packages/rest-typings/src/v1/users/UsersUpdateOwnBasicInfoParamsPOST.ts b/packages/rest-typings/src/v1/users/UsersUpdateOwnBasicInfoParamsPOST.ts index 90f80dedc13..cff6fee56bf 100644 --- a/packages/rest-typings/src/v1/users/UsersUpdateOwnBasicInfoParamsPOST.ts +++ b/packages/rest-typings/src/v1/users/UsersUpdateOwnBasicInfoParamsPOST.ts @@ -14,7 +14,7 @@ export type UsersUpdateOwnBasicInfoParamsPOST = { currentPassword?: string; newPassword?: string; }; - customFields?: {}; + customFields?: Record; }; const UsersUpdateOwnBasicInfoParamsPostSchema = { diff --git a/packages/rest-typings/src/v1/users/UsersUpdateParamsPOST.ts b/packages/rest-typings/src/v1/users/UsersUpdateParamsPOST.ts index b9c60cd91cc..4d0b94fbdfb 100644 --- a/packages/rest-typings/src/v1/users/UsersUpdateParamsPOST.ts +++ b/packages/rest-typings/src/v1/users/UsersUpdateParamsPOST.ts @@ -21,7 +21,7 @@ export type UsersUpdateParamsPOST = { setRandomPassword?: boolean; sendWelcomeEmail?: boolean; verified?: boolean; - customFields?: {}; + customFields?: Record; status?: string; }; confirmRelinquish?: boolean; diff --git a/packages/rest-typings/src/v1/videoConference/VideoConfCancelProps.ts b/packages/rest-typings/src/v1/videoConference/VideoConfCancelProps.ts index 656345a4ad3..6da08bf55b2 100644 --- a/packages/rest-typings/src/v1/videoConference/VideoConfCancelProps.ts +++ b/packages/rest-typings/src/v1/videoConference/VideoConfCancelProps.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; const ajv = new Ajv(); diff --git a/packages/rest-typings/src/v1/videoConference/VideoConfInfoProps.ts b/packages/rest-typings/src/v1/videoConference/VideoConfInfoProps.ts index 01c0d88163b..3bed2038bb2 100644 --- a/packages/rest-typings/src/v1/videoConference/VideoConfInfoProps.ts +++ b/packages/rest-typings/src/v1/videoConference/VideoConfInfoProps.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; const ajv = new Ajv(); diff --git a/packages/rest-typings/src/v1/videoConference/VideoConfJoinProps.ts b/packages/rest-typings/src/v1/videoConference/VideoConfJoinProps.ts index ae2abf0285c..3816cad839a 100644 --- a/packages/rest-typings/src/v1/videoConference/VideoConfJoinProps.ts +++ b/packages/rest-typings/src/v1/videoConference/VideoConfJoinProps.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; const ajv = new Ajv(); diff --git a/packages/rest-typings/src/v1/videoConference/VideoConfListProps.ts b/packages/rest-typings/src/v1/videoConference/VideoConfListProps.ts index b30c79cf58b..2944e18aeb8 100644 --- a/packages/rest-typings/src/v1/videoConference/VideoConfListProps.ts +++ b/packages/rest-typings/src/v1/videoConference/VideoConfListProps.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; const ajv = new Ajv(); diff --git a/packages/rest-typings/src/v1/videoConference/VideoConfStartProps.ts b/packages/rest-typings/src/v1/videoConference/VideoConfStartProps.ts index 795db6bfeb7..2a9ad7482a3 100644 --- a/packages/rest-typings/src/v1/videoConference/VideoConfStartProps.ts +++ b/packages/rest-typings/src/v1/videoConference/VideoConfStartProps.ts @@ -1,4 +1,5 @@ -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; const ajv = new Ajv(); diff --git a/packages/rest-typings/src/v1/voip.ts b/packages/rest-typings/src/v1/voip.ts index 56b7b02c6d3..2e95d15b2d5 100644 --- a/packages/rest-typings/src/v1/voip.ts +++ b/packages/rest-typings/src/v1/voip.ts @@ -10,7 +10,8 @@ import type { IRegistrationInfo, } from '@rocket.chat/core-typings'; import { VoipClientEvents } from '@rocket.chat/core-typings'; -import Ajv, { JSONSchemaType } from 'ajv'; +import type { JSONSchemaType } from 'ajv'; +import Ajv from 'ajv'; import type { PaginatedRequest } from '../helpers/PaginatedRequest'; import type { PaginatedResult } from '../helpers/PaginatedResult'; diff --git a/packages/ui-contexts/src/ModalContext.ts b/packages/ui-contexts/src/ModalContext.ts index 983c9c6d0dc..e7a032bc4ab 100644 --- a/packages/ui-contexts/src/ModalContext.ts +++ b/packages/ui-contexts/src/ModalContext.ts @@ -1,4 +1,5 @@ -import { createContext, ReactNode } from 'react'; +import type { ReactNode } from 'react'; +import { createContext } from 'react'; type ModalConfiguration = { type?: 'rc-game' | 'success' | 'input' | 'warning' | 'error' | false; diff --git a/packages/ui-contexts/src/RouterContext.ts b/packages/ui-contexts/src/RouterContext.ts index 6fd12b67e41..4b1685d712f 100644 --- a/packages/ui-contexts/src/RouterContext.ts +++ b/packages/ui-contexts/src/RouterContext.ts @@ -42,5 +42,8 @@ export const RouterContext = createContext({ replaceRoute: () => undefined, queryRouteParameter: () => [() => (): void => undefined, (): undefined => undefined], queryQueryStringParameter: () => [() => (): void => undefined, (): undefined => undefined], - queryCurrentRoute: () => [() => (): void => undefined, (): [undefined, {}, {}, undefined] => [undefined, {}, {}, undefined]], + queryCurrentRoute: () => [ + () => (): void => undefined, + (): [undefined, RouteParameters, QueryStringParameters, undefined] => [undefined, {}, {}, undefined], + ], }); diff --git a/packages/ui-contexts/src/ServerContext/ServerContext.ts b/packages/ui-contexts/src/ServerContext/ServerContext.ts index 08455d79cbb..00df4161200 100644 --- a/packages/ui-contexts/src/ServerContext/ServerContext.ts +++ b/packages/ui-contexts/src/ServerContext/ServerContext.ts @@ -30,7 +30,13 @@ export type ServerContextValue = { | { promise: Promise; }; - getStream: (streamName: string, options?: {}) => (eventName: string, callback: (data: T) => void) => () => void; + getStream: ( + streamName: string, + options?: { + retransmit?: boolean | undefined; + retransmitToSelf?: boolean | undefined; + }, + ) => (eventName: string, callback: (data: T) => void) => () => void; }; export const ServerContext = createContext({ diff --git a/packages/ui-contexts/src/TooltipContext.ts b/packages/ui-contexts/src/TooltipContext.ts index b6e39f67b4c..41cc7c26625 100644 --- a/packages/ui-contexts/src/TooltipContext.ts +++ b/packages/ui-contexts/src/TooltipContext.ts @@ -1,4 +1,5 @@ -import { createContext, ReactElement } from 'react'; +import type { ReactElement } from 'react'; +import { createContext } from 'react'; type TooltipPayload = ReactElement; diff --git a/packages/ui-contexts/src/hooks/useAvailableDevices.ts b/packages/ui-contexts/src/hooks/useAvailableDevices.ts index 59f43db533f..0211376be6b 100644 --- a/packages/ui-contexts/src/hooks/useAvailableDevices.ts +++ b/packages/ui-contexts/src/hooks/useAvailableDevices.ts @@ -1,6 +1,7 @@ import { useContext } from 'react'; -import { DeviceContext, Device, isDeviceContextEnabled } from '../DeviceContext'; +import type { Device } from '../DeviceContext'; +import { DeviceContext, isDeviceContextEnabled } from '../DeviceContext'; type AvailableDevices = { audioInput?: Device[]; diff --git a/packages/ui-contexts/src/hooks/useConnectionStatus.ts b/packages/ui-contexts/src/hooks/useConnectionStatus.ts index f944038b105..0c1b88c20cd 100644 --- a/packages/ui-contexts/src/hooks/useConnectionStatus.ts +++ b/packages/ui-contexts/src/hooks/useConnectionStatus.ts @@ -1,5 +1,6 @@ import { useContext } from 'react'; -import { ConnectionStatusContext, ConnectionStatusContextValue } from '../ConnectionStatusContext'; +import type { ConnectionStatusContextValue } from '../ConnectionStatusContext'; +import { ConnectionStatusContext } from '../ConnectionStatusContext'; export const useConnectionStatus = (): ConnectionStatusContextValue => useContext(ConnectionStatusContext); diff --git a/packages/ui-contexts/src/hooks/useCurrentModal.ts b/packages/ui-contexts/src/hooks/useCurrentModal.ts index 692c6d7e024..537fc53af19 100644 --- a/packages/ui-contexts/src/hooks/useCurrentModal.ts +++ b/packages/ui-contexts/src/hooks/useCurrentModal.ts @@ -1,6 +1,7 @@ import { useContext } from 'react'; -import { ModalContext, ModalContextValue } from '../ModalContext'; +import type { ModalContextValue } from '../ModalContext'; +import { ModalContext } from '../ModalContext'; /** * Similar to useModal this hook return the current modal from the context value diff --git a/packages/ui-contexts/src/hooks/useCurrentRoute.ts b/packages/ui-contexts/src/hooks/useCurrentRoute.ts index b7cc0e15f08..99ea13c66b9 100644 --- a/packages/ui-contexts/src/hooks/useCurrentRoute.ts +++ b/packages/ui-contexts/src/hooks/useCurrentRoute.ts @@ -1,7 +1,8 @@ import { useContext, useMemo } from 'react'; import { useSyncExternalStore } from 'use-sync-external-store/shim'; -import { QueryStringParameters, RouteGroupName, RouteName, RouteParameters, RouterContext } from '../RouterContext'; +import type { QueryStringParameters, RouteGroupName, RouteName, RouteParameters } from '../RouterContext'; +import { RouterContext } from '../RouterContext'; export const useCurrentRoute = (): [RouteName?, RouteParameters?, QueryStringParameters?, RouteGroupName?] => { const { queryCurrentRoute } = useContext(RouterContext); diff --git a/packages/ui-contexts/src/hooks/useCustomSound.ts b/packages/ui-contexts/src/hooks/useCustomSound.ts index a22f3738dd0..a58ce2984fd 100644 --- a/packages/ui-contexts/src/hooks/useCustomSound.ts +++ b/packages/ui-contexts/src/hooks/useCustomSound.ts @@ -1,5 +1,6 @@ import { useContext } from 'react'; -import { CustomSoundContext, CustomSoundContextValue } from '../CustomSoundContext'; +import type { CustomSoundContextValue } from '../CustomSoundContext'; +import { CustomSoundContext } from '../CustomSoundContext'; export const useCustomSound = (): CustomSoundContextValue => useContext(CustomSoundContext); diff --git a/packages/ui-contexts/src/hooks/useLanguage.ts b/packages/ui-contexts/src/hooks/useLanguage.ts index a7615ae97f5..508f1507251 100644 --- a/packages/ui-contexts/src/hooks/useLanguage.ts +++ b/packages/ui-contexts/src/hooks/useLanguage.ts @@ -1,5 +1,6 @@ import { useContext } from 'react'; -import { TranslationContext, TranslationContextValue } from '../TranslationContext'; +import type { TranslationContextValue } from '../TranslationContext'; +import { TranslationContext } from '../TranslationContext'; export const useLanguage = (): TranslationContextValue['language'] => useContext(TranslationContext).language; diff --git a/packages/ui-contexts/src/hooks/useLanguages.ts b/packages/ui-contexts/src/hooks/useLanguages.ts index 3cfbf7b9050..947bcf3b472 100644 --- a/packages/ui-contexts/src/hooks/useLanguages.ts +++ b/packages/ui-contexts/src/hooks/useLanguages.ts @@ -1,5 +1,6 @@ import { useContext } from 'react'; -import { TranslationContext, TranslationContextValue } from '../TranslationContext'; +import type { TranslationContextValue } from '../TranslationContext'; +import { TranslationContext } from '../TranslationContext'; export const useLanguages = (): TranslationContextValue['languages'] => useContext(TranslationContext).languages; diff --git a/packages/ui-contexts/src/hooks/useLayout.ts b/packages/ui-contexts/src/hooks/useLayout.ts index 3811ac26ec5..5b3f96d5d44 100644 --- a/packages/ui-contexts/src/hooks/useLayout.ts +++ b/packages/ui-contexts/src/hooks/useLayout.ts @@ -1,5 +1,6 @@ import { useContext } from 'react'; -import { LayoutContext, LayoutContextValue } from '../LayoutContext'; +import type { LayoutContextValue } from '../LayoutContext'; +import { LayoutContext } from '../LayoutContext'; export const useLayout = (): LayoutContextValue => useContext(LayoutContext); diff --git a/packages/ui-contexts/src/hooks/useLayoutContextualBarPosition.ts b/packages/ui-contexts/src/hooks/useLayoutContextualBarPosition.ts index a279d76e005..077c3364898 100644 --- a/packages/ui-contexts/src/hooks/useLayoutContextualBarPosition.ts +++ b/packages/ui-contexts/src/hooks/useLayoutContextualBarPosition.ts @@ -1,6 +1,7 @@ import { useContext } from 'react'; -import { LayoutContext, LayoutContextValue } from '../LayoutContext'; +import type { LayoutContextValue } from '../LayoutContext'; +import { LayoutContext } from '../LayoutContext'; export const useLayoutContextualBarPosition = (): LayoutContextValue['contextualBarPosition'] => useContext(LayoutContext).contextualBarPosition; diff --git a/packages/ui-contexts/src/hooks/useLayoutSizes.ts b/packages/ui-contexts/src/hooks/useLayoutSizes.ts index 664c8668c3f..bf85d75427d 100644 --- a/packages/ui-contexts/src/hooks/useLayoutSizes.ts +++ b/packages/ui-contexts/src/hooks/useLayoutSizes.ts @@ -1,5 +1,6 @@ import { useContext } from 'react'; -import { LayoutContext, LayoutContextValue } from '../LayoutContext'; +import type { LayoutContextValue } from '../LayoutContext'; +import { LayoutContext } from '../LayoutContext'; export const useLayoutSizes = (): LayoutContextValue['size'] => useContext(LayoutContext).size; diff --git a/packages/ui-contexts/src/hooks/useLoadLanguage.ts b/packages/ui-contexts/src/hooks/useLoadLanguage.ts index f2791be94ad..497d3572206 100644 --- a/packages/ui-contexts/src/hooks/useLoadLanguage.ts +++ b/packages/ui-contexts/src/hooks/useLoadLanguage.ts @@ -1,5 +1,6 @@ import { useContext } from 'react'; -import { TranslationContext, TranslationContextValue } from '../TranslationContext'; +import type { TranslationContextValue } from '../TranslationContext'; +import { TranslationContext } from '../TranslationContext'; export const useLoadLanguage = (): TranslationContextValue['loadLanguage'] => useContext(TranslationContext).loadLanguage; diff --git a/packages/ui-contexts/src/hooks/useModal.ts b/packages/ui-contexts/src/hooks/useModal.ts index b2b0ea26ca5..b5f11de2986 100644 --- a/packages/ui-contexts/src/hooks/useModal.ts +++ b/packages/ui-contexts/src/hooks/useModal.ts @@ -1,6 +1,7 @@ import { useContext } from 'react'; -import { ModalContext, ModalContextValue } from '../ModalContext'; +import type { ModalContextValue } from '../ModalContext'; +import { ModalContext } from '../ModalContext'; /** * Consider using useCurrentModal to get the current modal diff --git a/packages/ui-contexts/src/hooks/useRolesDescription.ts b/packages/ui-contexts/src/hooks/useRolesDescription.ts index 4cdc13983c7..ef6fe4de6f0 100644 --- a/packages/ui-contexts/src/hooks/useRolesDescription.ts +++ b/packages/ui-contexts/src/hooks/useRolesDescription.ts @@ -1,7 +1,8 @@ import { useCallback, useContext, useMemo } from 'react'; import { useSyncExternalStore } from 'use-sync-external-store/shim'; -import { AuthorizationContext, IRoles } from '../AuthorizationContext'; +import type { IRoles } from '../AuthorizationContext'; +import { AuthorizationContext } from '../AuthorizationContext'; export const useRolesDescription = (): ((ids: Array) => [string]) => { const { roleStore } = useContext(AuthorizationContext); diff --git a/packages/ui-contexts/src/hooks/useRoute.ts b/packages/ui-contexts/src/hooks/useRoute.ts index 5b48d9225c1..bff39360145 100644 --- a/packages/ui-contexts/src/hooks/useRoute.ts +++ b/packages/ui-contexts/src/hooks/useRoute.ts @@ -1,6 +1,7 @@ import { useContext, useMemo } from 'react'; -import { QueryStringParameters, RouteParameters, RouterContext } from '../RouterContext'; +import type { QueryStringParameters, RouteParameters } from '../RouterContext'; +import { RouterContext } from '../RouterContext'; type Route = { getPath: (parameters?: RouteParameters, queryStringParameters?: QueryStringParameters) => string | undefined; diff --git a/packages/ui-contexts/src/hooks/useRoutePath.ts b/packages/ui-contexts/src/hooks/useRoutePath.ts index f159b1fa8b5..2bbe1ce45d2 100644 --- a/packages/ui-contexts/src/hooks/useRoutePath.ts +++ b/packages/ui-contexts/src/hooks/useRoutePath.ts @@ -1,7 +1,8 @@ import { useContext, useMemo } from 'react'; import { useSyncExternalStore } from 'use-sync-external-store/shim'; -import { QueryStringParameters, RouteParameters, RouterContext } from '../RouterContext'; +import type { QueryStringParameters, RouteParameters } from '../RouterContext'; +import { RouterContext } from '../RouterContext'; export const useRoutePath = ( name: string, diff --git a/packages/ui-contexts/src/hooks/useRouteUrl.ts b/packages/ui-contexts/src/hooks/useRouteUrl.ts index 9d1f8908710..f067f776ddf 100644 --- a/packages/ui-contexts/src/hooks/useRouteUrl.ts +++ b/packages/ui-contexts/src/hooks/useRouteUrl.ts @@ -1,7 +1,8 @@ import { useContext, useMemo } from 'react'; import { useSyncExternalStore } from 'use-sync-external-store/shim'; -import { QueryStringParameters, RouteParameters, RouterContext } from '../RouterContext'; +import type { QueryStringParameters, RouteParameters } from '../RouterContext'; +import { RouterContext } from '../RouterContext'; export const useRouteUrl = ( name: string, diff --git a/packages/ui-contexts/src/hooks/useSelectedDevices.ts b/packages/ui-contexts/src/hooks/useSelectedDevices.ts index 2a682d4ce8d..038513146d2 100644 --- a/packages/ui-contexts/src/hooks/useSelectedDevices.ts +++ b/packages/ui-contexts/src/hooks/useSelectedDevices.ts @@ -1,6 +1,7 @@ import { useContext } from 'react'; -import { DeviceContext, Device, isDeviceContextEnabled } from '../DeviceContext'; +import type { Device } from '../DeviceContext'; +import { DeviceContext, isDeviceContextEnabled } from '../DeviceContext'; type SelectedDevices = { audioInput?: Device; diff --git a/packages/ui-contexts/src/hooks/useSetInputMediaDevice.ts b/packages/ui-contexts/src/hooks/useSetInputMediaDevice.ts index 619c1899054..2e0f1603969 100644 --- a/packages/ui-contexts/src/hooks/useSetInputMediaDevice.ts +++ b/packages/ui-contexts/src/hooks/useSetInputMediaDevice.ts @@ -1,6 +1,7 @@ import { useContext } from 'react'; -import { DeviceContext, Device, isDeviceContextEnabled } from '../DeviceContext'; +import type { Device } from '../DeviceContext'; +import { DeviceContext, isDeviceContextEnabled } from '../DeviceContext'; type setInputMediaDevice = (inputDevice: Device) => void; diff --git a/packages/ui-contexts/src/hooks/useSetOutputMediaDevice.ts b/packages/ui-contexts/src/hooks/useSetOutputMediaDevice.ts index a7832b52bc5..7a68d7b10e0 100644 --- a/packages/ui-contexts/src/hooks/useSetOutputMediaDevice.ts +++ b/packages/ui-contexts/src/hooks/useSetOutputMediaDevice.ts @@ -1,6 +1,7 @@ import { useContext } from 'react'; -import { DeviceContext, Device, IExperimentalHTMLAudioElement, isDeviceContextEnabled } from '../DeviceContext'; +import type { Device, IExperimentalHTMLAudioElement } from '../DeviceContext'; +import { DeviceContext, isDeviceContextEnabled } from '../DeviceContext'; // This allows different places to set the output device by providing a HTMLAudioElement diff --git a/packages/ui-contexts/src/hooks/useSettings.ts b/packages/ui-contexts/src/hooks/useSettings.ts index e2839a2ae56..61bb5edee4c 100644 --- a/packages/ui-contexts/src/hooks/useSettings.ts +++ b/packages/ui-contexts/src/hooks/useSettings.ts @@ -2,7 +2,8 @@ import type { ISetting } from '@rocket.chat/core-typings'; import { useContext, useMemo } from 'react'; import { useSyncExternalStore } from 'use-sync-external-store/shim'; -import { SettingsContext, SettingsContextQuery } from '../SettingsContext'; +import type { SettingsContextQuery } from '../SettingsContext'; +import { SettingsContext } from '../SettingsContext'; export const useSettings = (query?: SettingsContextQuery): ISetting[] => { const { querySettings } = useContext(SettingsContext); diff --git a/packages/ui-contexts/src/hooks/useStream.ts b/packages/ui-contexts/src/hooks/useStream.ts index c8d569e4038..7e9d0461667 100644 --- a/packages/ui-contexts/src/hooks/useStream.ts +++ b/packages/ui-contexts/src/hooks/useStream.ts @@ -2,7 +2,13 @@ import { useContext, useMemo } from 'react'; import { ServerContext } from '../ServerContext'; -export const useStream = (streamName: string, options?: {}): ((eventName: string, callback: (data: T) => void) => () => void) => { +export const useStream = ( + streamName: string, + options?: { + retransmit?: boolean | undefined; + retransmitToSelf?: boolean | undefined; + }, +): ((eventName: string, callback: (data: T) => void) => () => void) => { const { getStream } = useContext(ServerContext); return useMemo(() => getStream(streamName, options), [getStream, streamName, options]); }; diff --git a/packages/ui-contexts/src/hooks/useToastMessageDispatch.ts b/packages/ui-contexts/src/hooks/useToastMessageDispatch.ts index d5793a933de..7fb2a177859 100644 --- a/packages/ui-contexts/src/hooks/useToastMessageDispatch.ts +++ b/packages/ui-contexts/src/hooks/useToastMessageDispatch.ts @@ -1,5 +1,6 @@ import { useContext } from 'react'; -import { ToastMessagesContext, ToastMessagesContextValue } from '../ToastMessagesContext'; +import type { ToastMessagesContextValue } from '../ToastMessagesContext'; +import { ToastMessagesContext } from '../ToastMessagesContext'; export const useToastMessageDispatch = (): ToastMessagesContextValue['dispatch'] => useContext(ToastMessagesContext).dispatch; diff --git a/packages/ui-contexts/src/hooks/useTooltipClose.ts b/packages/ui-contexts/src/hooks/useTooltipClose.ts index 31b1cee6cf5..19888fe4083 100644 --- a/packages/ui-contexts/src/hooks/useTooltipClose.ts +++ b/packages/ui-contexts/src/hooks/useTooltipClose.ts @@ -1,5 +1,6 @@ import { useContext } from 'react'; -import { TooltipContext, TooltipContextValue } from '../TooltipContext'; +import type { TooltipContextValue } from '../TooltipContext'; +import { TooltipContext } from '../TooltipContext'; export const useTooltipClose = (): TooltipContextValue['close'] => useContext(TooltipContext).close; diff --git a/packages/ui-contexts/src/hooks/useTooltipOpen.ts b/packages/ui-contexts/src/hooks/useTooltipOpen.ts index 7c462770618..6405efa6696 100644 --- a/packages/ui-contexts/src/hooks/useTooltipOpen.ts +++ b/packages/ui-contexts/src/hooks/useTooltipOpen.ts @@ -1,5 +1,6 @@ import { useContext } from 'react'; -import { TooltipContext, TooltipContextValue } from '../TooltipContext'; +import type { TooltipContextValue } from '../TooltipContext'; +import { TooltipContext } from '../TooltipContext'; export const useTooltipOpen = (): TooltipContextValue['open'] => useContext(TooltipContext).open; diff --git a/packages/ui-contexts/src/hooks/useTranslation.ts b/packages/ui-contexts/src/hooks/useTranslation.ts index adf3d8aadf7..281a834189f 100644 --- a/packages/ui-contexts/src/hooks/useTranslation.ts +++ b/packages/ui-contexts/src/hooks/useTranslation.ts @@ -1,5 +1,6 @@ import { useContext } from 'react'; -import { TranslationContext, TranslationContextValue } from '../TranslationContext'; +import type { TranslationContextValue } from '../TranslationContext'; +import { TranslationContext } from '../TranslationContext'; export const useTranslation = (): TranslationContextValue['translate'] => useContext(TranslationContext).translate; diff --git a/packages/ui-contexts/src/hooks/useUpload.ts b/packages/ui-contexts/src/hooks/useUpload.ts index 97bd4970361..98c6706133c 100644 --- a/packages/ui-contexts/src/hooks/useUpload.ts +++ b/packages/ui-contexts/src/hooks/useUpload.ts @@ -1,7 +1,8 @@ import type { PathFor } from '@rocket.chat/rest-typings'; import { useCallback, useContext } from 'react'; -import { ServerContext, UploadResult } from '../ServerContext'; +import type { UploadResult } from '../ServerContext'; +import { ServerContext } from '../ServerContext'; export const useUpload = (endpoint: PathFor<'POST'>): ((formData: any) => Promise | { promise: Promise }) => { const { uploadToEndpoint } = useContext(ServerContext); diff --git a/packages/ui-contexts/src/hooks/useUserRoom.ts b/packages/ui-contexts/src/hooks/useUserRoom.ts index f67a63eb07d..f614929a240 100644 --- a/packages/ui-contexts/src/hooks/useUserRoom.ts +++ b/packages/ui-contexts/src/hooks/useUserRoom.ts @@ -2,7 +2,8 @@ import type { IRoom } from '@rocket.chat/core-typings'; import { useContext, useMemo } from 'react'; import { useSyncExternalStore } from 'use-sync-external-store/shim'; -import { Fields, UserContext } from '../UserContext'; +import type { Fields } from '../UserContext'; +import { UserContext } from '../UserContext'; export const useUserRoom = (rid: string, fields?: Fields): IRoom | undefined => { const { queryRoom } = useContext(UserContext); diff --git a/packages/ui-contexts/src/hooks/useUserSubscription.ts b/packages/ui-contexts/src/hooks/useUserSubscription.ts index c5643c7432c..5bc9a728272 100644 --- a/packages/ui-contexts/src/hooks/useUserSubscription.ts +++ b/packages/ui-contexts/src/hooks/useUserSubscription.ts @@ -2,7 +2,8 @@ import type { ISubscription } from '@rocket.chat/core-typings'; import { useContext, useMemo } from 'react'; import { useSyncExternalStore } from 'use-sync-external-store/shim'; -import { Fields, UserContext } from '../UserContext'; +import type { Fields } from '../UserContext'; +import { UserContext } from '../UserContext'; export const useUserSubscription = (rid: string, fields?: Fields): ISubscription | undefined => { const { querySubscription } = useContext(UserContext); diff --git a/packages/ui-contexts/src/hooks/useUserSubscriptionByName.ts b/packages/ui-contexts/src/hooks/useUserSubscriptionByName.ts index 5768113fc2f..29de25b2915 100644 --- a/packages/ui-contexts/src/hooks/useUserSubscriptionByName.ts +++ b/packages/ui-contexts/src/hooks/useUserSubscriptionByName.ts @@ -2,7 +2,8 @@ import type { ISubscription } from '@rocket.chat/core-typings'; import { useContext, useMemo } from 'react'; import { useSyncExternalStore } from 'use-sync-external-store/shim'; -import { Fields, Sort, UserContext } from '../UserContext'; +import type { Fields, Sort } from '../UserContext'; +import { UserContext } from '../UserContext'; export const useUserSubscriptionByName = (name: string, fields?: Fields, sort?: Sort): ISubscription | undefined => { const { querySubscription } = useContext(UserContext); diff --git a/packages/ui-contexts/src/hooks/useUserSubscriptions.ts b/packages/ui-contexts/src/hooks/useUserSubscriptions.ts index 1eee0cb2f6f..69ae14e5d75 100644 --- a/packages/ui-contexts/src/hooks/useUserSubscriptions.ts +++ b/packages/ui-contexts/src/hooks/useUserSubscriptions.ts @@ -2,7 +2,8 @@ import { useContext, useMemo } from 'react'; import { useSyncExternalStore } from 'use-sync-external-store/shim'; import type { ISubscription } from '@rocket.chat/core-typings'; -import { FindOptions, SubscriptionQuery, UserContext } from '../UserContext'; +import type { FindOptions, SubscriptionQuery } from '../UserContext'; +import { UserContext } from '../UserContext'; export const useUserSubscriptions = (query: SubscriptionQuery, options?: FindOptions): Array | [] => { const { querySubscriptions } = useContext(UserContext); diff --git a/yarn.lock b/yarn.lock index 07f2cd7efd3..f2897a62a55 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2524,6 +2524,17 @@ __metadata: languageName: node linkType: hard +"@humanwhocodes/config-array@npm:^0.10.4": + version: 0.10.4 + resolution: "@humanwhocodes/config-array@npm:0.10.4" + dependencies: + "@humanwhocodes/object-schema": ^1.2.1 + debug: ^4.1.1 + minimatch: ^3.0.4 + checksum: d480e5d57e6d787565b6cff78e27c3d1b380692d4ffb0ada7d7f5957a56c9032f034da05a3e443065dbd0671ebf4d859036ced34e96b325bbc1badbae3c05300 + languageName: node + linkType: hard + "@humanwhocodes/config-array@npm:^0.5.0": version: 0.5.0 resolution: "@humanwhocodes/config-array@npm:0.5.0" @@ -2546,6 +2557,13 @@ __metadata: languageName: node linkType: hard +"@humanwhocodes/gitignore-to-minimatch@npm:^1.0.2": + version: 1.0.2 + resolution: "@humanwhocodes/gitignore-to-minimatch@npm:1.0.2" + checksum: aba5c40c9e3770ed73a558b0bfb53323842abfc2ce58c91d7e8b1073995598e6374456d38767be24ab6176915f0a8d8b23eaae5c85e2b488c0dccca6d795e2ad + languageName: node + linkType: hard + "@humanwhocodes/object-schema@npm:^1.2.0, @humanwhocodes/object-schema@npm:^1.2.1": version: 1.2.1 resolution: "@humanwhocodes/object-schema@npm:1.2.1" @@ -3789,6 +3807,7 @@ __metadata: "@rocket.chat/string-helpers": next "@rocket.chat/ui-contexts": "workspace:^" "@types/ejson": ^2.2.0 + "@types/eslint": ^8 "@types/meteor": 2.7.1 "@types/node": ^14.18.21 "@types/sharp": ^0.30.4 @@ -3796,6 +3815,7 @@ __metadata: "@types/ws": ^8.5.3 colorette: ^1.4.0 ejson: ^2.2.2 + eslint: ^8.21.0 eventemitter3: ^4.0.7 fibers: ^5.0.1 jaeger-client: ^3.19.0 @@ -4276,6 +4296,7 @@ __metadata: "@types/jsdom-global": ^3.0.2 "@types/jsrsasign": ^9.0.3 "@types/katex": ^0.14.0 + "@types/later": ^1.2.7 "@types/ldapjs": ^2.2.2 "@types/less": ^3.0.3 "@types/lodash": ^4.14.182 @@ -6468,6 +6489,16 @@ __metadata: languageName: node linkType: hard +"@types/eslint@npm:^8": + version: 8.4.5 + resolution: "@types/eslint@npm:8.4.5" + dependencies: + "@types/estree": "*" + "@types/json-schema": "*" + checksum: 428b0c971a50adb0d08621e76f21b284580a0052a31341a0e6d553f72b54cd0142d549aa1497c7e3bc56e9f6bcc27286e66e0216e1ba76d1a5ecd2279c40bc8c + languageName: node + linkType: hard + "@types/estree@npm:*, @types/estree@npm:^0.0.51": version: 0.0.51 resolution: "@types/estree@npm:0.0.51" @@ -6706,6 +6737,13 @@ __metadata: languageName: node linkType: hard +"@types/later@npm:^1.2.7": + version: 1.2.7 + resolution: "@types/later@npm:1.2.7" + checksum: 247f10e3e39bf50d78cdeb95f854e73b8378fdb2de542a0b632d892377098b438c2596dd99657d2ca0ca9370b07a2c112b29e5fbde636c91e4292f9a82b04572 + languageName: node + linkType: hard + "@types/ldapjs@npm:^2.2.2": version: 2.2.2 resolution: "@types/ldapjs@npm:2.2.2" @@ -8108,6 +8146,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.8.0": + version: 8.8.0 + resolution: "acorn@npm:8.8.0" + bin: + acorn: bin/acorn + checksum: 7270ca82b242eafe5687a11fea6e088c960af712683756abf0791b68855ea9cace3057bd5e998ffcef50c944810c1e0ca1da526d02b32110e13c722aa959afdc + languageName: node + linkType: hard + "add-px-to-style@npm:1.0.0": version: 1.0.0 resolution: "add-px-to-style@npm:1.0.0" @@ -14164,6 +14211,55 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^8.21.0": + version: 8.21.0 + resolution: "eslint@npm:8.21.0" + dependencies: + "@eslint/eslintrc": ^1.3.0 + "@humanwhocodes/config-array": ^0.10.4 + "@humanwhocodes/gitignore-to-minimatch": ^1.0.2 + ajv: ^6.10.0 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.3.2 + doctrine: ^3.0.0 + escape-string-regexp: ^4.0.0 + eslint-scope: ^7.1.1 + eslint-utils: ^3.0.0 + eslint-visitor-keys: ^3.3.0 + espree: ^9.3.3 + esquery: ^1.4.0 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^6.0.1 + find-up: ^5.0.0 + functional-red-black-tree: ^1.0.1 + glob-parent: ^6.0.1 + globals: ^13.15.0 + globby: ^11.1.0 + grapheme-splitter: ^1.0.4 + ignore: ^5.2.0 + import-fresh: ^3.0.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + js-yaml: ^4.1.0 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.1 + regexpp: ^3.2.0 + strip-ansi: ^6.0.1 + strip-json-comments: ^3.1.0 + text-table: ^0.2.0 + v8-compile-cache: ^2.0.3 + bin: + eslint: bin/eslint.js + checksum: 1d39ddb08772ea230cb7d74f7f81f85b9d46965d3600725c7eb39a27bcdaf28cb2a780dacf6cfa1cfbf2da606b57a5e7e3ab373ab474cbcf0ba042076821f501 + languageName: node + linkType: hard + "espree@npm:^7.3.0, espree@npm:^7.3.1": version: 7.3.1 resolution: "espree@npm:7.3.1" @@ -14186,6 +14282,17 @@ __metadata: languageName: node linkType: hard +"espree@npm:^9.3.3": + version: 9.3.3 + resolution: "espree@npm:9.3.3" + dependencies: + acorn: ^8.8.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^3.3.0 + checksum: 33e8a36fc15d082e68672e322e22a53856b564d60aad8f291a667bfc21b2c900c42412d37dd3c7a0f18b9d0d8f8858dabe8776dbd4b4c2f72c5cf4d6afeabf65 + languageName: node + linkType: hard + "esprima@npm:^4.0.0, esprima@npm:^4.0.1": version: 4.0.1 resolution: "esprima@npm:4.0.1"