From 9647793404ec0c2fd1e11cbf36eda422316ad09a Mon Sep 17 00:00:00 2001 From: Diego Sampaio <chinello@gmail.com> Date: Mon, 26 Dec 2022 18:14:43 -0800 Subject: [PATCH] Chore: Move service definitions to core services package (#27546) --- _templates/package/new/tsconfig.json.ejs.t | 2 +- _templates/service/new/package.json.ejs.t | 1 + _templates/service/new/service.ejs.t | 2 +- _templates/service/new/servicesClass.ejs.t | 2 +- .../app/api/server/lib/getUploadFormData.ts | 3 +- apps/meteor/app/api/server/v1/banners.ts | 2 +- apps/meteor/app/api/server/v1/channels.js | 2 +- apps/meteor/app/api/server/v1/channels.ts | 2 +- apps/meteor/app/api/server/v1/emoji-custom.ts | 2 +- apps/meteor/app/api/server/v1/groups.js | 2 +- apps/meteor/app/api/server/v1/ldap.ts | 2 +- apps/meteor/app/api/server/v1/roles.ts | 2 +- apps/meteor/app/api/server/v1/rooms.js | 2 +- apps/meteor/app/api/server/v1/teams.ts | 2 +- apps/meteor/app/api/server/v1/users.ts | 3 +- .../app/api/server/v1/videoConference.ts | 2 +- apps/meteor/app/api/server/v1/voip/events.ts | 2 +- .../app/api/server/v1/voip/extensions.ts | 2 +- .../app/api/server/v1/voip/omnichannel.ts | 2 +- apps/meteor/app/api/server/v1/voip/queues.ts | 2 +- apps/meteor/app/api/server/v1/voip/rooms.ts | 2 +- .../api/server/v1/voip/server-connection.ts | 2 +- .../app/apple/server/AppleCustomOAuth.ts | 2 +- .../app/apps/server/bridges/messages.ts | 2 +- .../app/apps/server/bridges/uiInteraction.ts | 2 +- .../apps/server/bridges/videoConferences.ts | 2 +- .../app/apps/server/communication/uikit.ts | 2 +- .../server/converters/videoConferences.ts | 3 +- .../server/functions/canAccessRoom.ts | 4 +- .../server/functions/hasPermission.ts | 3 +- .../server/methods/addUserToRole.ts | 2 +- .../server/methods/removeUserFromRole.ts | 2 +- .../server/methods/saveRoomSettings.js | 2 +- .../cloud/server/functions/syncWorkspace.ts | 2 +- .../server/methods/deleteCustomSound.js | 2 +- .../server/methods/insertOrUpdateSound.js | 2 +- .../server/methods/uploadCustomSound.js | 2 +- apps/meteor/app/e2e/server/index.js | 3 +- .../server/methods/requestSubscriptionKeys.js | 2 +- .../server/methods/deleteEmojiCustom.js | 2 +- .../server/methods/insertOrUpdateEmoji.js | 2 +- .../server/methods/uploadEmojiCustom.js | 3 +- .../rocket-chat/adapters/Notification.ts | 2 +- .../federation/server/endpoints/dispatch.js | 2 +- .../server/functions/findOrCreateInvite.js | 2 +- .../app/lib/server/functions/addUserToRoom.ts | 2 +- .../functions/checkUsernameAvailability.ts | 2 +- .../lib/server/functions/cleanRoomHistory.ts | 2 +- .../lib/server/functions/createDirectRoom.ts | 2 +- .../app/lib/server/functions/createRoom.ts | 4 +- .../app/lib/server/functions/deleteMessage.ts | 2 +- .../app/lib/server/functions/deleteUser.ts | 2 +- .../server/functions/notifications/desktop.js | 3 +- .../server/functions/removeUserFromRoom.ts | 2 +- .../app/lib/server/functions/setRealName.ts | 2 +- .../app/lib/server/functions/setRoomAvatar.ts | 2 +- .../app/lib/server/functions/setStatusText.ts | 2 +- .../app/lib/server/functions/setUserAvatar.ts | 2 +- .../app/lib/server/functions/setUsername.ts | 2 +- .../app/lib/server/methods/addUsersToRoom.js | 2 +- .../app/lib/server/methods/filterATAllTag.js | 2 +- .../app/lib/server/methods/filterATHereTag.js | 2 +- .../app/lib/server/methods/getUserRoles.js | 3 +- .../app/lib/server/methods/sendMessage.js | 2 +- apps/meteor/app/livechat/server/lib/Helper.js | 2 +- .../app/livechat/server/lib/Livechat.js | 3 +- .../roomAccessValidator.internalService.ts | 4 +- apps/meteor/app/mentions/server/server.js | 2 +- .../notifications/server/lib/Notifications.ts | 2 +- .../app/reactions/server/setReaction.js | 2 +- .../search/server/search.internalService.ts | 4 +- .../server/server.ts | 2 +- .../app/slashcommands-create/server/server.ts | 2 +- .../app/slashcommands-help/server/server.ts | 2 +- .../app/slashcommands-hide/server/hide.ts | 2 +- .../app/slashcommands-invite/server/server.ts | 2 +- .../slashcommands-inviteall/server/server.ts | 2 +- .../app/slashcommands-join/server/server.ts | 2 +- .../app/slashcommands-kick/server/server.ts | 2 +- .../app/slashcommands-leave/server/leave.ts | 2 +- .../app/slashcommands-msg/server/server.ts | 2 +- .../app/slashcommands-mute/server/mute.ts | 2 +- .../app/slashcommands-mute/server/unmute.ts | 2 +- .../app/slashcommands-status/client/status.ts | 2 +- .../app/slashcommands-status/server/status.ts | 2 +- .../server/server.ts | 2 +- apps/meteor/app/sms/server/services/twilio.js | 2 +- .../app/sms/server/services/voxtelesys.js | 2 +- .../app/statistics/server/lib/statistics.ts | 2 +- .../statistics/server/lib/telemetryEvents.ts | 2 +- .../server/methods/deleteCustomUserStatus.js | 2 +- .../methods/insertOrUpdateUserStatus.js | 2 +- apps/meteor/app/voip/server/startup.ts | 3 +- .../webdav/server/methods/addWebdavAccount.ts | 2 +- .../server/methods/removeWebdavAccount.ts | 2 +- .../server/methods/uploadFileToWebdav.ts | 2 +- .../ee/app/license/server/getStatistics.ts | 2 +- .../license/server/license.internalService.ts | 5 +- .../ee/app/license/server/maxSeatsBanners.ts | 3 +- .../livechat-enterprise/server/lib/Helper.js | 2 +- .../server/settings.internalService.ts | 4 +- .../teams-mention/server/EEMentionQueries.js | 2 +- .../app/teams-mention/server/EESpotlight.js | 2 +- .../ee/app/teams-mention/server/index.ts | 2 +- apps/meteor/ee/server/NetworkBroker.ts | 16 ++- .../server/configuration/videoConference.ts | 2 +- apps/meteor/ee/server/lib/ldap/Manager.ts | 2 +- apps/meteor/ee/server/lib/syncUserRoles.ts | 2 +- .../ee/server/local-services/ldap/service.ts | 5 +- apps/meteor/ee/server/requestSeatsRoute.ts | 2 +- apps/meteor/ee/server/sdk/index.ts | 3 +- apps/meteor/ee/server/services/Dockerfile | 4 + .../server/services/ecdh-proxy/ECDHProxy.ts | 2 +- .../ee/server/services/ecdh-proxy/service.ts | 3 +- apps/meteor/ee/server/services/package.json | 1 + apps/meteor/ee/server/startup/broker.ts | 2 +- apps/meteor/ee/server/startup/index.ts | 3 +- apps/meteor/ee/server/startup/services.ts | 3 +- apps/meteor/package.json | 1 + apps/meteor/server/configuration/ldap.ts | 2 +- apps/meteor/server/cron/nps.js | 3 +- apps/meteor/server/cron/videoConferences.ts | 3 +- apps/meteor/server/lib/roles/addUserRoles.ts | 2 +- apps/meteor/server/lib/roles/insertRole.ts | 5 +- .../server/lib/roles/removeUserFromRoles.ts | 2 +- apps/meteor/server/lib/roles/updateRole.ts | 3 +- apps/meteor/server/methods/addRoomLeader.js | 3 +- .../meteor/server/methods/addRoomModerator.js | 3 +- apps/meteor/server/methods/addRoomOwner.js | 3 +- apps/meteor/server/methods/browseChannels.js | 2 +- apps/meteor/server/methods/eraseRoom.ts | 2 +- .../meteor/server/methods/removeRoomLeader.js | 3 +- .../server/methods/removeRoomModerator.js | 3 +- apps/meteor/server/methods/removeRoomOwner.ts | 3 +- .../server/methods/removeUserFromRoom.ts | 2 +- apps/meteor/server/methods/resetAvatar.js | 2 +- apps/meteor/server/methods/userPresence.ts | 3 +- .../server/modules/core-apps/banner.module.ts | 4 +- .../server/modules/core-apps/nps.module.ts | 5 +- .../modules/core-apps/videoconf.module.ts | 5 +- .../modules/listeners/listeners.module.ts | 5 +- .../notifications/notifications.module.ts | 2 +- .../modules/streamer/streamer.module.ts | 2 +- .../modules/watchers/watchers.module.ts | 2 +- apps/meteor/server/sdk/api.ts | 10 -- apps/meteor/server/sdk/index.ts | 50 ------- .../server/services/analytics/service.ts | 5 +- .../server/services/apps-engine/service.ts | 5 +- .../services/authorization/canAccessRoom.ts | 4 +- .../authorization/canAccessRoomLivechat.ts | 6 +- .../authorization/canAccessRoomVoip.ts | 6 +- .../server/services/authorization/service.ts | 5 +- apps/meteor/server/services/banner/service.ts | 6 +- .../services/device-management/service.ts | 5 +- .../server/services/federation/service.ts | 5 +- apps/meteor/server/services/image/service.ts | 5 +- apps/meteor/server/services/ldap/service.ts | 4 +- apps/meteor/server/services/meteor/service.ts | 14 +- .../services/nps/getAndCreateNpsSurvey.ts | 2 +- apps/meteor/server/services/nps/service.ts | 5 +- .../omnichannel-voip/internalTypes.ts | 21 +-- .../services/omnichannel-voip/service.ts | 8 +- .../server/services/omnichannel/service.ts | 5 +- apps/meteor/server/services/push/service.ts | 5 +- apps/meteor/server/services/room/service.ts | 5 +- .../server/services/sauMonitor/service.ts | 5 +- apps/meteor/server/services/startup.ts | 2 +- apps/meteor/server/services/team/service.ts | 17 ++- .../server/services/uikit-core-app/service.ts | 4 +- apps/meteor/server/services/upload/service.ts | 11 +- .../services/video-conference/service.ts | 5 +- .../asterisk/ami/ContinuousMonitor.ts | 2 +- apps/meteor/server/services/voip/service.ts | 9 +- apps/meteor/server/startup/index.ts | 1 + apps/meteor/server/startup/localServices.ts | 12 ++ apps/meteor/server/startup/presence.ts | 3 +- .../server/startup/presenceTroubleshoot.ts | 3 +- apps/meteor/server/startup/watchDb.ts | 2 +- .../tests/unit/server/sdk/errors.tests.ts | 3 +- ee/apps/account-service/Dockerfile | 6 + ee/apps/account-service/package.json | 1 + ee/apps/account-service/src/Account.ts | 4 +- .../account-service/src/lib/loginViaResume.ts | 4 +- .../src/lib/loginViaUsername.ts | 2 +- ee/apps/account-service/src/service.ts | 2 +- ee/apps/authorization-service/Dockerfile | 6 + ee/apps/authorization-service/package.json | 1 + ee/apps/authorization-service/src/service.ts | 2 +- ee/apps/ddp-streamer/Dockerfile | 6 + ee/apps/ddp-streamer/package.json | 1 + ee/apps/ddp-streamer/src/DDPStreamer.ts | 13 +- ee/apps/ddp-streamer/src/Server.ts | 3 +- ee/apps/ddp-streamer/src/Streamer.ts | 2 +- ee/apps/ddp-streamer/src/configureServer.ts | 3 +- ee/apps/ddp-streamer/src/lib/Autoupdate.ts | 2 +- ee/apps/ddp-streamer/src/service.ts | 2 +- ee/apps/presence-service/Dockerfile | 8 ++ ee/apps/presence-service/package.json | 1 + ee/apps/presence-service/src/service.ts | 2 +- ee/apps/stream-hub-service/Dockerfile | 6 + ee/apps/stream-hub-service/package.json | 1 + ee/apps/stream-hub-service/src/StreamHub.ts | 8 +- ee/apps/stream-hub-service/src/service.ts | 2 +- packages/core-services/.eslintrc.json | 12 ++ packages/core-services/package.json | 35 +++++ .../core-services/src}/Events.ts | 2 +- .../core-services/src}/LocalBroker.ts | 13 +- .../core-services/src/MeteorError.ts | 0 packages/core-services/src/api.ts | 4 + packages/core-services/src/index.ts | 126 ++++++++++++++++++ .../core-services/src}/lib/Api.ts | 19 +-- .../core-services/src}/lib/ContextStore.ts | 0 .../src/lib/asyncLocalStorage.ts | 5 + .../core-services/src}/lib/proxify.ts | 0 .../core-services/src}/types/IAccount.ts | 0 .../src}/types/IAnalyticsService.ts | 0 .../core-services/src}/types/IApiService.ts | 2 +- .../src}/types/IAppsEngineService.ts | 0 .../src}/types/IAuthorization.ts | 0 .../src}/types/IAuthorizationLivechat.ts | 0 .../src}/types/IAuthorizationVoip.ts | 0 .../src}/types/IBannerService.ts | 0 .../core-services/src}/types/IBroker.ts | 2 +- .../src}/types/IDeviceManagementService.ts | 0 .../src}/types/IEnterpriseSettings.ts | 0 .../src}/types/IFederationService.ts | 0 .../core-services/src}/types/ILDAPService.ts | 0 .../core-services/src}/types/ILicense.ts | 0 .../core-services/src}/types/IMediaService.ts | 0 .../core-services/src}/types/IMeteor.ts | 2 - .../core-services/src}/types/INPSService.ts | 0 .../src}/types/IOmnichannelService.ts | 0 .../src}/types/IOmnichannelVoipService.ts | 20 ++- .../core-services/src}/types/IPresence.ts | 0 .../core-services/src}/types/IPushService.ts | 0 .../core-services/src}/types/IRoomService.ts | 0 .../src}/types/ISAUMonitorService.ts | 0 .../core-services/src}/types/ITeamService.ts | 0 .../src}/types/ITelemetryEvent.ts | 0 .../core-services/src}/types/IUiKitCoreApp.ts | 0 .../src}/types/IUploadService.ts | 0 .../src}/types/IVideoConfService.ts | 0 .../core-services/src}/types/IVoipService.ts | 3 - .../core-services/src}/types/ServiceClass.ts | 12 +- packages/core-services/tsconfig.json | 9 ++ packages/presence/package.json | 5 +- packages/presence/src/Presence.ts | 9 +- packages/presence/tsconfig.json | 7 +- yarn.lock | 29 ++++ 249 files changed, 600 insertions(+), 420 deletions(-) delete mode 100644 apps/meteor/server/sdk/api.ts delete mode 100644 apps/meteor/server/sdk/index.ts create mode 100644 apps/meteor/server/startup/localServices.ts create mode 100644 packages/core-services/.eslintrc.json create mode 100644 packages/core-services/package.json rename {apps/meteor/server/sdk/lib => packages/core-services/src}/Events.ts (99%) rename {apps/meteor/server/sdk/lib => packages/core-services/src}/LocalBroker.ts (89%) rename apps/meteor/server/sdk/errors.ts => packages/core-services/src/MeteorError.ts (100%) create mode 100644 packages/core-services/src/api.ts create mode 100644 packages/core-services/src/index.ts rename {apps/meteor/server/sdk => packages/core-services/src}/lib/Api.ts (76%) rename {apps/meteor/server/sdk => packages/core-services/src}/lib/ContextStore.ts (100%) create mode 100644 packages/core-services/src/lib/asyncLocalStorage.ts rename {apps/meteor/server/sdk => packages/core-services/src}/lib/proxify.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IAccount.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IAnalyticsService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IApiService.ts (93%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IAppsEngineService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IAuthorization.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IAuthorizationLivechat.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IAuthorizationVoip.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IBannerService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IBroker.ts (97%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IDeviceManagementService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IEnterpriseSettings.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IFederationService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/ILDAPService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/ILicense.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IMediaService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IMeteor.ts (81%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/INPSService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IOmnichannelService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IOmnichannelVoipService.ts (78%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IPresence.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IPushService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IRoomService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/ISAUMonitorService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/ITeamService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/ITelemetryEvent.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IUiKitCoreApp.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IUploadService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IVideoConfService.ts (100%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/IVoipService.ts (90%) rename {apps/meteor/server/sdk => packages/core-services/src}/types/ServiceClass.ts (92%) create mode 100644 packages/core-services/tsconfig.json diff --git a/_templates/package/new/tsconfig.json.ejs.t b/_templates/package/new/tsconfig.json.ejs.t index 1b5cbc20b8e..3e192c674d1 100644 --- a/_templates/package/new/tsconfig.json.ejs.t +++ b/_templates/package/new/tsconfig.json.ejs.t @@ -2,7 +2,7 @@ to: packages/<%= name %>/tsconfig.json --- { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.base.client.json", "compilerOptions": { "rootDir": "./src", "outDir": "./dist" diff --git a/_templates/service/new/package.json.ejs.t b/_templates/service/new/package.json.ejs.t index 0b83e0d9b59..a985eb3c73f 100644 --- a/_templates/service/new/package.json.ejs.t +++ b/_templates/service/new/package.json.ejs.t @@ -18,6 +18,7 @@ to: ee/apps/<%= name %>/package.json ], "author": "Rocket.Chat", "dependencies": { + "@rocket.chat/core-services": "workspace:^", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/emitter": "0.31.22", "@rocket.chat/model-typings": "workspace:^", diff --git a/_templates/service/new/service.ejs.t b/_templates/service/new/service.ejs.t index 546151f65ea..5e8c7b769da 100644 --- a/_templates/service/new/service.ejs.t +++ b/_templates/service/new/service.ejs.t @@ -3,8 +3,8 @@ to: ee/apps/<%= name %>/src/service.ts --- import type { Document } from 'mongodb'; import polka from 'polka'; +import { api } from '@rocket.chat/core-services'; -import { api } from '../../../../apps/meteor/server/sdk/api'; import { broker } from '../../../../apps/meteor/ee/server/startup/broker'; import { Collections, getCollection, getConnection } from '../../../../apps/meteor/ee/server/services/mongo'; import { registerServiceModels } from '../../../../apps/meteor/ee/server/lib/registerServiceModels'; diff --git a/_templates/service/new/servicesClass.ejs.t b/_templates/service/new/servicesClass.ejs.t index 951207486f8..bd55d7032cc 100644 --- a/_templates/service/new/servicesClass.ejs.t +++ b/_templates/service/new/servicesClass.ejs.t @@ -1,7 +1,7 @@ --- to: ee/apps/<%= name %>/src/<%= h.changeCase.pascalCase(name) %>.ts --- -import { ServiceClass } from '../../../../apps/meteor/server/sdk/types/ServiceClass'; +import { ServiceClass } from '@rocket.chat/core-services'; export class <%= h.changeCase.pascalCase(name) %> extends ServiceClass { protected name = '<%= name %>'; diff --git a/apps/meteor/app/api/server/lib/getUploadFormData.ts b/apps/meteor/app/api/server/lib/getUploadFormData.ts index 1ac0c4a5b08..5df41638b90 100644 --- a/apps/meteor/app/api/server/lib/getUploadFormData.ts +++ b/apps/meteor/app/api/server/lib/getUploadFormData.ts @@ -3,8 +3,7 @@ import type { Readable } from 'stream'; import type { Request } from 'express'; import busboy from 'busboy'; import type { ValidateFunction } from 'ajv'; - -import { MeteorError } from '../../../../server/sdk/errors'; +import { MeteorError } from '@rocket.chat/core-services'; type UploadResult<K> = { file: Readable & { truncated: boolean }; diff --git a/apps/meteor/app/api/server/v1/banners.ts b/apps/meteor/app/api/server/v1/banners.ts index 4b979b376d9..deea03bccca 100644 --- a/apps/meteor/app/api/server/v1/banners.ts +++ b/apps/meteor/app/api/server/v1/banners.ts @@ -1,8 +1,8 @@ import { Match, check } from 'meteor/check'; import { BannerPlatform } from '@rocket.chat/core-typings'; +import { Banner } from '@rocket.chat/core-services'; import { API } from '../api'; -import { Banner } from '../../../../server/sdk'; /** * @deprecated diff --git a/apps/meteor/app/api/server/v1/channels.js b/apps/meteor/app/api/server/v1/channels.js index 6b5fb82a6e2..7497ed66cef 100644 --- a/apps/meteor/app/api/server/v1/channels.js +++ b/apps/meteor/app/api/server/v1/channels.js @@ -2,6 +2,7 @@ import { Meteor } from 'meteor/meteor'; import { Match, check } from 'meteor/check'; import _ from 'underscore'; import { Integrations, Uploads, Messages as MessagesRaw, Rooms as RoomsRaw, Subscriptions as SubscriptionsRaw } from '@rocket.chat/models'; +import { Team } from '@rocket.chat/core-services'; import { Rooms, Subscriptions, Messages, Users } from '../../../models/server'; import { canAccessRoom, hasPermission, hasAtLeastOnePermission } from '../../../authorization/server'; @@ -9,7 +10,6 @@ import { mountIntegrationQueryBasedOnPermissions } from '../../../integrations/s import { normalizeMessagesForUser } from '../../../utils/server/lib/normalizeMessagesForUser'; import { API } from '../api'; import { settings } from '../../../settings/server'; -import { Team } from '../../../../server/sdk'; import { findUsersOfRoom } from '../../../../server/lib/findUsersOfRoom'; import { addUserToFileObj } from '../helpers/addUserToFileObj'; diff --git a/apps/meteor/app/api/server/v1/channels.ts b/apps/meteor/app/api/server/v1/channels.ts index e55bb31e078..f727b7b501d 100644 --- a/apps/meteor/app/api/server/v1/channels.ts +++ b/apps/meteor/app/api/server/v1/channels.ts @@ -19,12 +19,12 @@ import { isChannelsDeleteProps, } from '@rocket.chat/rest-typings'; import { Messages } from '@rocket.chat/models'; +import { Team } from '@rocket.chat/core-services'; import { Rooms, Subscriptions } from '../../../models/server'; import { hasPermission } from '../../../authorization/server'; import { normalizeMessagesForUser } from '../../../utils/server/lib/normalizeMessagesForUser'; import { API } from '../api'; -import { Team } from '../../../../server/sdk'; // Returns the channel IF found otherwise it will return the failure of why it didn't. Check the `statusCode` property function findChannelByIdOrName({ diff --git a/apps/meteor/app/api/server/v1/emoji-custom.ts b/apps/meteor/app/api/server/v1/emoji-custom.ts index 1be07e459a5..c56ccb6169c 100644 --- a/apps/meteor/app/api/server/v1/emoji-custom.ts +++ b/apps/meteor/app/api/server/v1/emoji-custom.ts @@ -1,10 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { EmojiCustom } from '@rocket.chat/models'; +import { Media } from '@rocket.chat/core-services'; import { API } from '../api'; import { getUploadFormData } from '../lib/getUploadFormData'; import { findEmojisCustom } from '../lib/emoji-custom'; -import { Media } from '../../../../server/sdk'; import { SystemLogger } from '../../../../server/lib/logger/system'; import { settings } from '../../../settings/server'; diff --git a/apps/meteor/app/api/server/v1/groups.js b/apps/meteor/app/api/server/v1/groups.js index db2745df587..652e5dbeb52 100644 --- a/apps/meteor/app/api/server/v1/groups.js +++ b/apps/meteor/app/api/server/v1/groups.js @@ -2,6 +2,7 @@ import _ from 'underscore'; import { Meteor } from 'meteor/meteor'; import { Match, check } from 'meteor/check'; import { Integrations, Messages as MessagesRaw, Uploads, Rooms as RoomsRaw, Subscriptions as SubscriptionsRaw } from '@rocket.chat/models'; +import { Team } from '@rocket.chat/core-services'; import { mountIntegrationQueryBasedOnPermissions } from '../../../integrations/server/lib/mountQueriesBasedOnPermission'; import { Subscriptions, Rooms, Messages, Users } from '../../../models/server'; @@ -14,7 +15,6 @@ import { } from '../../../authorization/server'; import { normalizeMessagesForUser } from '../../../utils/server/lib/normalizeMessagesForUser'; import { API } from '../api'; -import { Team } from '../../../../server/sdk'; import { findUsersOfRoom } from '../../../../server/lib/findUsersOfRoom'; import { addUserToFileObj } from '../helpers/addUserToFileObj'; diff --git a/apps/meteor/app/api/server/v1/ldap.ts b/apps/meteor/app/api/server/v1/ldap.ts index aa4db389d84..8d8bd3a2f3e 100644 --- a/apps/meteor/app/api/server/v1/ldap.ts +++ b/apps/meteor/app/api/server/v1/ldap.ts @@ -1,10 +1,10 @@ import { Match, check } from 'meteor/check'; +import { LDAP } from '@rocket.chat/core-services'; import { hasPermission } from '../../../authorization/server'; import { settings } from '../../../settings/server'; import { API } from '../api'; import { SystemLogger } from '../../../../server/lib/logger/system'; -import { LDAP } from '../../../../server/sdk'; API.v1.addRoute( 'ldap.testConnection', diff --git a/apps/meteor/app/api/server/v1/roles.ts b/apps/meteor/app/api/server/v1/roles.ts index 252421d1a9b..2c33af9297a 100644 --- a/apps/meteor/app/api/server/v1/roles.ts +++ b/apps/meteor/app/api/server/v1/roles.ts @@ -9,13 +9,13 @@ import { } from '@rocket.chat/rest-typings'; import type { IRole } from '@rocket.chat/core-typings'; import { Roles } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { Users } from '../../../models/server'; import { API } from '../api'; import { hasRole } from '../../../authorization/server'; import { getUsersInRolePaginated } from '../../../authorization/server/functions/getUsersInRole'; import { settings } from '../../../settings/server/index'; -import { api } from '../../../../server/sdk/api'; import { apiDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger'; import { hasAnyRoleAsync } from '../../../authorization/server/functions/hasRole'; import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; diff --git a/apps/meteor/app/api/server/v1/rooms.js b/apps/meteor/app/api/server/v1/rooms.js index 76bf1e9267c..fe4ccd088ca 100644 --- a/apps/meteor/app/api/server/v1/rooms.js +++ b/apps/meteor/app/api/server/v1/rooms.js @@ -1,5 +1,6 @@ import { Meteor } from 'meteor/meteor'; import { Rooms as RoomsRaw } from '@rocket.chat/models'; +import { Media } from '@rocket.chat/core-services'; import { FileUpload } from '../../../file-upload'; import { Rooms, Messages } from '../../../models/server'; @@ -14,7 +15,6 @@ import { } from '../lib/rooms'; import * as dataExport from '../../../../server/lib/dataExport'; import { canAccessRoom, canAccessRoomId, hasPermission } from '../../../authorization/server'; -import { Media } from '../../../../server/sdk'; import { settings } from '../../../settings/server/index'; import { getUploadFormData } from '../lib/getUploadFormData'; diff --git a/apps/meteor/app/api/server/v1/teams.ts b/apps/meteor/app/api/server/v1/teams.ts index 6d570ae49b0..0c1689c630e 100644 --- a/apps/meteor/app/api/server/v1/teams.ts +++ b/apps/meteor/app/api/server/v1/teams.ts @@ -13,11 +13,11 @@ import { } from '@rocket.chat/rest-typings'; import type { ITeam } from '@rocket.chat/core-typings'; import { TEAM_TYPE } from '@rocket.chat/core-typings'; +import { Team } from '@rocket.chat/core-services'; import { removeUserFromRoom } from '../../../lib/server/functions/removeUserFromRoom'; import { Rooms, Users } from '../../../models/server'; import { canAccessRoom, hasAtLeastOnePermission, hasPermission } from '../../../authorization/server'; -import { Team } from '../../../../server/sdk'; import { API } from '../api'; API.v1.addRoute( diff --git a/apps/meteor/app/api/server/v1/users.ts b/apps/meteor/app/api/server/v1/users.ts index af74049434f..dd3b69e8498 100644 --- a/apps/meteor/app/api/server/v1/users.ts +++ b/apps/meteor/app/api/server/v1/users.ts @@ -21,6 +21,7 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import type { IExportOperation, IPersonalAccessToken, IUser } from '@rocket.chat/core-typings'; import { Users as UsersRaw } from '@rocket.chat/models'; import type { Filter } from 'mongodb'; +import { Team, api } from '@rocket.chat/core-services'; import { Users, Subscriptions } from '../../../models/server'; import { hasPermission } from '../../../authorization/server'; @@ -40,11 +41,9 @@ import { findUsersToAutocomplete, getInclusiveFields, getNonEmptyFields, getNonE import { getUserForCheck, emailCheck } from '../../../2fa/server/code'; import { resetUserE2EEncriptionKey } from '../../../../server/lib/resetUserE2EKey'; import { resetTOTP } from '../../../2fa/server/functions/resetTOTP'; -import { Team } from '../../../../server/sdk'; import { isValidQuery } from '../lib/isValidQuery'; import { getURL } from '../../../utils/server'; import { getUploadFormData } from '../lib/getUploadFormData'; -import { api } from '../../../../server/sdk/api'; API.v1.addRoute( 'users.getAvatar', diff --git a/apps/meteor/app/api/server/v1/videoConference.ts b/apps/meteor/app/api/server/v1/videoConference.ts index cefa7ffd85d..f945a49b497 100644 --- a/apps/meteor/app/api/server/v1/videoConference.ts +++ b/apps/meteor/app/api/server/v1/videoConference.ts @@ -6,11 +6,11 @@ import { isVideoConfInfoProps, isVideoConfListProps, } from '@rocket.chat/rest-typings'; +import { VideoConf } from '@rocket.chat/core-services'; import { API } from '../api'; import { canAccessRoomIdAsync } from '../../../authorization/server/functions/canAccessRoom'; import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { VideoConf } from '../../../../server/sdk'; import { videoConfProviders } from '../../../../server/lib/videoConfProviders'; import { availabilityErrors } from '../../../../lib/videoConference/constants'; diff --git a/apps/meteor/app/api/server/v1/voip/events.ts b/apps/meteor/app/api/server/v1/voip/events.ts index 426a1495a5e..5482d62041b 100644 --- a/apps/meteor/app/api/server/v1/voip/events.ts +++ b/apps/meteor/app/api/server/v1/voip/events.ts @@ -1,9 +1,9 @@ import { Match, check } from 'meteor/check'; import { VoipClientEvents } from '@rocket.chat/core-typings'; import { VoipRoom } from '@rocket.chat/models'; +import { LivechatVoip } from '@rocket.chat/core-services'; import { API } from '../../api'; -import { LivechatVoip } from '../../../../../server/sdk'; import { canAccessRoom } from '../../../../authorization/server'; API.v1.addRoute( diff --git a/apps/meteor/app/api/server/v1/voip/extensions.ts b/apps/meteor/app/api/server/v1/voip/extensions.ts index 598a8bce662..a3c29e99d1f 100644 --- a/apps/meteor/app/api/server/v1/voip/extensions.ts +++ b/apps/meteor/app/api/server/v1/voip/extensions.ts @@ -1,9 +1,9 @@ import { Match, check } from 'meteor/check'; import type { IVoipExtensionBase } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; +import { Voip } from '@rocket.chat/core-services'; import { API } from '../../api'; -import { Voip } from '../../../../../server/sdk'; import { generateJWT } from '../../../../utils/server/lib/JWTHelper'; import { settings } from '../../../../settings/server'; import { logger } from './logger'; diff --git a/apps/meteor/app/api/server/v1/voip/omnichannel.ts b/apps/meteor/app/api/server/v1/voip/omnichannel.ts index 06bcdfd6ee6..16e90f7be61 100644 --- a/apps/meteor/app/api/server/v1/voip/omnichannel.ts +++ b/apps/meteor/app/api/server/v1/voip/omnichannel.ts @@ -1,9 +1,9 @@ import { Match, check } from 'meteor/check'; import type { IUser, IVoipExtensionWithAgentInfo } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; +import { LivechatVoip } from '@rocket.chat/core-services'; import { API } from '../../api'; -import { LivechatVoip } from '../../../../../server/sdk'; import { logger } from './logger'; function filter( diff --git a/apps/meteor/app/api/server/v1/voip/queues.ts b/apps/meteor/app/api/server/v1/voip/queues.ts index 845b448b3fa..ce82150228f 100644 --- a/apps/meteor/app/api/server/v1/voip/queues.ts +++ b/apps/meteor/app/api/server/v1/voip/queues.ts @@ -1,7 +1,7 @@ import { Match, check } from 'meteor/check'; import type { IVoipConnectorResult, IQueueSummary, IQueueMembershipDetails, IQueueMembershipSubscription } from '@rocket.chat/core-typings'; +import { Voip } from '@rocket.chat/core-services'; -import { Voip } from '../../../../../server/sdk'; import { API } from '../../api'; API.v1.addRoute( diff --git a/apps/meteor/app/api/server/v1/voip/rooms.ts b/apps/meteor/app/api/server/v1/voip/rooms.ts index 1798591f57d..9feb74ead33 100644 --- a/apps/meteor/app/api/server/v1/voip/rooms.ts +++ b/apps/meteor/app/api/server/v1/voip/rooms.ts @@ -2,9 +2,9 @@ import { Random } from 'meteor/random'; import type { ILivechatAgent, IVoipRoom } from '@rocket.chat/core-typings'; import { isVoipRoomProps, isVoipRoomsProps, isVoipRoomCloseProps } from '@rocket.chat/rest-typings'; import { VoipRoom, LivechatVisitors, Users } from '@rocket.chat/models'; +import { LivechatVoip } from '@rocket.chat/core-services'; import { API } from '../../api'; -import { LivechatVoip } from '../../../../../server/sdk'; import { hasPermission } from '../../../../authorization/server'; import { typedJsonParse } from '../../../../../lib/typedJSONParse'; diff --git a/apps/meteor/app/api/server/v1/voip/server-connection.ts b/apps/meteor/app/api/server/v1/voip/server-connection.ts index d784a87e95f..e19e897b491 100644 --- a/apps/meteor/app/api/server/v1/voip/server-connection.ts +++ b/apps/meteor/app/api/server/v1/voip/server-connection.ts @@ -1,7 +1,7 @@ import { Match, check } from 'meteor/check'; +import { Voip } from '@rocket.chat/core-services'; import { API } from '../../api'; -import { Voip } from '../../../../../server/sdk'; API.v1.addRoute( 'voip/managementServer/checkConnection', diff --git a/apps/meteor/app/apple/server/AppleCustomOAuth.ts b/apps/meteor/app/apple/server/AppleCustomOAuth.ts index 7779f4f814c..70632236881 100644 --- a/apps/meteor/app/apple/server/AppleCustomOAuth.ts +++ b/apps/meteor/app/apple/server/AppleCustomOAuth.ts @@ -1,7 +1,7 @@ import { Accounts } from 'meteor/accounts-base'; +import { MeteorError } from '@rocket.chat/core-services'; import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server'; -import { MeteorError } from '../../../server/sdk/errors'; import { handleIdentityToken } from '../lib/handleIdentityToken'; export class AppleCustomOAuth extends CustomOAuth { diff --git a/apps/meteor/app/apps/server/bridges/messages.ts b/apps/meteor/app/apps/server/bridges/messages.ts index 935a10efbc1..4f905044b65 100644 --- a/apps/meteor/app/apps/server/bridges/messages.ts +++ b/apps/meteor/app/apps/server/bridges/messages.ts @@ -4,11 +4,11 @@ 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 { api } from '@rocket.chat/core-services'; import { Messages, Users, Subscriptions } from '../../../models/server'; 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 type { AppServerOrchestrator } from '../orchestrator'; diff --git a/apps/meteor/app/apps/server/bridges/uiInteraction.ts b/apps/meteor/app/apps/server/bridges/uiInteraction.ts index 15788ce4684..ad30dc57582 100644 --- a/apps/meteor/app/apps/server/bridges/uiInteraction.ts +++ b/apps/meteor/app/apps/server/bridges/uiInteraction.ts @@ -1,8 +1,8 @@ import { UiInteractionBridge as UiIntBridge } from '@rocket.chat/apps-engine/server/bridges/UiInteractionBridge'; import type { IUIKitInteraction } from '@rocket.chat/apps-engine/definition/uikit'; import type { IUser } from '@rocket.chat/apps-engine/definition/users'; +import { api } from '@rocket.chat/core-services'; -import { api } from '../../../../server/sdk/api'; import type { AppServerOrchestrator } from '../orchestrator'; export class UiInteractionBridge extends UiIntBridge { diff --git a/apps/meteor/app/apps/server/bridges/videoConferences.ts b/apps/meteor/app/apps/server/bridges/videoConferences.ts index d6ac7b62fb2..f022662566c 100644 --- a/apps/meteor/app/apps/server/bridges/videoConferences.ts +++ b/apps/meteor/app/apps/server/bridges/videoConferences.ts @@ -1,8 +1,8 @@ import { VideoConferenceBridge } from '@rocket.chat/apps-engine/server/bridges/VideoConferenceBridge'; import type { AppVideoConference, VideoConference } from '@rocket.chat/apps-engine/definition/videoConferences'; import type { IVideoConfProvider } from '@rocket.chat/apps-engine/definition/videoConfProviders'; +import { VideoConf } from '@rocket.chat/core-services'; -import { VideoConf } from '../../../../server/sdk'; 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/uikit.ts b/apps/meteor/app/apps/server/communication/uikit.ts index 46bae99c81c..d3fe99349da 100644 --- a/apps/meteor/app/apps/server/communication/uikit.ts +++ b/apps/meteor/app/apps/server/communication/uikit.ts @@ -6,11 +6,11 @@ import { Meteor } from 'meteor/meteor'; import { WebApp } from 'meteor/webapp'; import { UIKitIncomingInteractionType } from '@rocket.chat/apps-engine/definition/uikit'; import { AppInterface } from '@rocket.chat/apps-engine/definition/metadata'; +import { UiKitCoreApp } from '@rocket.chat/core-services'; import { settings } from '../../../settings/server'; import type { AppServerOrchestrator } from '../orchestrator'; import { Apps } from '../orchestrator'; -import { UiKitCoreApp } from '../../../../server/sdk'; import { authenticationMiddleware } from '../../../api/server/middlewares/authentication'; const apiServer = express(); diff --git a/apps/meteor/app/apps/server/converters/videoConferences.ts b/apps/meteor/app/apps/server/converters/videoConferences.ts index 77bc25e4cbe..0b0c0a573b7 100644 --- a/apps/meteor/app/apps/server/converters/videoConferences.ts +++ b/apps/meteor/app/apps/server/converters/videoConferences.ts @@ -1,7 +1,6 @@ import type { VideoConference } from '@rocket.chat/apps-engine/definition/videoConferences'; import type { IVideoConference } from '@rocket.chat/core-typings'; - -import { VideoConf } from '../../../../server/sdk'; +import { VideoConf } from '@rocket.chat/core-services'; export class AppVideoConferencesConverter { async convertById(callId: string): Promise<VideoConference | undefined> { diff --git a/apps/meteor/app/authorization/server/functions/canAccessRoom.ts b/apps/meteor/app/authorization/server/functions/canAccessRoom.ts index d82bed560d1..cd264e0ec7b 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 type { IAuthorization } from '../../../../server/sdk/types/IAuthorization'; +import { Authorization } from '@rocket.chat/core-services'; +import type { IAuthorization } from '@rocket.chat/core-services'; export const canAccessRoomAsync = Authorization.canAccessRoom; export const canAccessRoomIdAsync = Authorization.canAccessRoomId; diff --git a/apps/meteor/app/authorization/server/functions/hasPermission.ts b/apps/meteor/app/authorization/server/functions/hasPermission.ts index ae7edd333e9..41b5fb051ca 100644 --- a/apps/meteor/app/authorization/server/functions/hasPermission.ts +++ b/apps/meteor/app/authorization/server/functions/hasPermission.ts @@ -1,6 +1,5 @@ import type { IUser, IPermission, IRoom } from '@rocket.chat/core-typings'; - -import { Authorization } from '../../../../server/sdk'; +import { Authorization } from '@rocket.chat/core-services'; export const hasAllPermissionAsync = async ( userId: IUser['_id'], diff --git a/apps/meteor/app/authorization/server/methods/addUserToRole.ts b/apps/meteor/app/authorization/server/methods/addUserToRole.ts index c33f950e0db..23f8f3993ef 100644 --- a/apps/meteor/app/authorization/server/methods/addUserToRole.ts +++ b/apps/meteor/app/authorization/server/methods/addUserToRole.ts @@ -2,11 +2,11 @@ import { Meteor } from 'meteor/meteor'; import _ from 'underscore'; import type { IRole, IUser, IRoom } from '@rocket.chat/core-typings'; import { Roles } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { Users } from '../../../models/server'; import { settings } from '../../../settings/server'; import { hasPermission } from '../functions/hasPermission'; -import { api } from '../../../../server/sdk/api'; import { apiDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger'; Meteor.methods({ diff --git a/apps/meteor/app/authorization/server/methods/removeUserFromRole.ts b/apps/meteor/app/authorization/server/methods/removeUserFromRole.ts index 3eeda9c2c84..db69108b0b1 100644 --- a/apps/meteor/app/authorization/server/methods/removeUserFromRole.ts +++ b/apps/meteor/app/authorization/server/methods/removeUserFromRole.ts @@ -2,11 +2,11 @@ import { Meteor } from 'meteor/meteor'; import _ from 'underscore'; import type { IRole, IUser } from '@rocket.chat/core-typings'; import { Roles } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { Users } from '../../../models/server'; import { settings } from '../../../settings/server'; import { hasPermission } from '../functions/hasPermission'; -import { api } from '../../../../server/sdk/api'; import { apiDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger'; Meteor.methods({ diff --git a/apps/meteor/app/channel-settings/server/methods/saveRoomSettings.js b/apps/meteor/app/channel-settings/server/methods/saveRoomSettings.js index 7fc53109e3f..ed324d7b64c 100644 --- a/apps/meteor/app/channel-settings/server/methods/saveRoomSettings.js +++ b/apps/meteor/app/channel-settings/server/methods/saveRoomSettings.js @@ -1,6 +1,7 @@ import { Meteor } from 'meteor/meteor'; import { Match } from 'meteor/check'; import { TEAM_TYPE } from '@rocket.chat/core-typings'; +import { Team } from '@rocket.chat/core-services'; import { setRoomAvatar } from '../../../lib/server/functions/setRoomAvatar'; import { hasPermission } from '../../../authorization'; @@ -17,7 +18,6 @@ import { saveReactWhenReadOnly } from '../functions/saveReactWhenReadOnly'; import { saveRoomSystemMessages } from '../functions/saveRoomSystemMessages'; import { saveRoomEncrypted } from '../functions/saveRoomEncrypted'; import { saveStreamingOptions } from '../functions/saveStreamingOptions'; -import { Team } from '../../../../server/sdk'; import { roomCoordinator } from '../../../../server/lib/rooms/roomCoordinator'; import { RoomSettingsEnum } from '../../../../definition/IRoomTypeConfig'; diff --git a/apps/meteor/app/cloud/server/functions/syncWorkspace.ts b/apps/meteor/app/cloud/server/functions/syncWorkspace.ts index 5cc439a723c..01462542ebf 100644 --- a/apps/meteor/app/cloud/server/functions/syncWorkspace.ts +++ b/apps/meteor/app/cloud/server/functions/syncWorkspace.ts @@ -1,5 +1,6 @@ import { HTTP } from 'meteor/http'; import { Settings } from '@rocket.chat/models'; +import { NPS, Banner } from '@rocket.chat/core-services'; import { buildWorkspaceRegistrationData } from './buildRegistrationData'; import { retrieveRegistrationStatus } from './retrieveRegistrationStatus'; @@ -7,7 +8,6 @@ import { getWorkspaceAccessToken } from './getWorkspaceAccessToken'; import { getWorkspaceLicense } from './getWorkspaceLicense'; import { settings } from '../../../settings/server'; import { getAndCreateNpsSurvey } from '../../../../server/services/nps/getAndCreateNpsSurvey'; -import { NPS, Banner } from '../../../../server/sdk'; import { SystemLogger } from '../../../../server/lib/logger/system'; export async function syncWorkspace(reconnectCheck = false) { diff --git a/apps/meteor/app/custom-sounds/server/methods/deleteCustomSound.js b/apps/meteor/app/custom-sounds/server/methods/deleteCustomSound.js index 1a51820ec6e..3c21c4d89b9 100644 --- a/apps/meteor/app/custom-sounds/server/methods/deleteCustomSound.js +++ b/apps/meteor/app/custom-sounds/server/methods/deleteCustomSound.js @@ -1,8 +1,8 @@ import { Meteor } from 'meteor/meteor'; import { CustomSounds } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { hasPermission } from '../../../authorization/server'; -import { api } from '../../../../server/sdk/api'; import { RocketChatFileCustomSoundsInstance } from '../startup/custom-sounds'; Meteor.methods({ diff --git a/apps/meteor/app/custom-sounds/server/methods/insertOrUpdateSound.js b/apps/meteor/app/custom-sounds/server/methods/insertOrUpdateSound.js index d5cf8ae377b..d633202ede1 100644 --- a/apps/meteor/app/custom-sounds/server/methods/insertOrUpdateSound.js +++ b/apps/meteor/app/custom-sounds/server/methods/insertOrUpdateSound.js @@ -2,9 +2,9 @@ import { Meteor } from 'meteor/meteor'; import s from 'underscore.string'; import { check } from 'meteor/check'; import { CustomSounds } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { hasPermission } from '../../../authorization/server'; -import { api } from '../../../../server/sdk/api'; import { RocketChatFileCustomSoundsInstance } from '../startup/custom-sounds'; Meteor.methods({ diff --git a/apps/meteor/app/custom-sounds/server/methods/uploadCustomSound.js b/apps/meteor/app/custom-sounds/server/methods/uploadCustomSound.js index e87449c79c1..2d9dff22cdf 100644 --- a/apps/meteor/app/custom-sounds/server/methods/uploadCustomSound.js +++ b/apps/meteor/app/custom-sounds/server/methods/uploadCustomSound.js @@ -1,7 +1,7 @@ import { Meteor } from 'meteor/meteor'; +import { api } from '@rocket.chat/core-services'; import { hasPermission } from '../../../authorization/server'; -import { api } from '../../../../server/sdk/api'; import { RocketChatFile } from '../../../file/server'; import { RocketChatFileCustomSoundsInstance } from '../startup/custom-sounds'; diff --git a/apps/meteor/app/e2e/server/index.js b/apps/meteor/app/e2e/server/index.js index ad982fd196a..080a32d8119 100644 --- a/apps/meteor/app/e2e/server/index.js +++ b/apps/meteor/app/e2e/server/index.js @@ -1,5 +1,6 @@ +import { api } from '@rocket.chat/core-services'; + import { callbacks } from '../../../lib/callbacks'; -import { api } from '../../../server/sdk/api'; import './settings'; import './beforeCreateRoom'; diff --git a/apps/meteor/app/e2e/server/methods/requestSubscriptionKeys.js b/apps/meteor/app/e2e/server/methods/requestSubscriptionKeys.js index 76d28b27c59..2dea12b1e0c 100644 --- a/apps/meteor/app/e2e/server/methods/requestSubscriptionKeys.js +++ b/apps/meteor/app/e2e/server/methods/requestSubscriptionKeys.js @@ -1,7 +1,7 @@ import { Meteor } from 'meteor/meteor'; +import { api } from '@rocket.chat/core-services'; import { Subscriptions, Rooms } from '../../../models/server'; -import { api } from '../../../../server/sdk/api'; Meteor.methods({ 'e2e.requestSubscriptionKeys'() { diff --git a/apps/meteor/app/emoji-custom/server/methods/deleteEmojiCustom.js b/apps/meteor/app/emoji-custom/server/methods/deleteEmojiCustom.js index 4d26d9ca065..49732eed2b0 100644 --- a/apps/meteor/app/emoji-custom/server/methods/deleteEmojiCustom.js +++ b/apps/meteor/app/emoji-custom/server/methods/deleteEmojiCustom.js @@ -1,7 +1,7 @@ import { Meteor } from 'meteor/meteor'; import { EmojiCustom } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; -import { api } from '../../../../server/sdk/api'; import { hasPermission } from '../../../authorization'; import { RocketChatFileEmojiCustomInstance } from '../startup/emoji-custom'; diff --git a/apps/meteor/app/emoji-custom/server/methods/insertOrUpdateEmoji.js b/apps/meteor/app/emoji-custom/server/methods/insertOrUpdateEmoji.js index 96b95f3fbc6..5a22b2f6635 100644 --- a/apps/meteor/app/emoji-custom/server/methods/insertOrUpdateEmoji.js +++ b/apps/meteor/app/emoji-custom/server/methods/insertOrUpdateEmoji.js @@ -3,10 +3,10 @@ import _ from 'underscore'; import s from 'underscore.string'; import limax from 'limax'; import { EmojiCustom } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { hasPermission } from '../../../authorization'; import { RocketChatFileEmojiCustomInstance } from '../startup/emoji-custom'; -import { api } from '../../../../server/sdk/api'; Meteor.methods({ async insertOrUpdateEmoji(emojiData) { diff --git a/apps/meteor/app/emoji-custom/server/methods/uploadEmojiCustom.js b/apps/meteor/app/emoji-custom/server/methods/uploadEmojiCustom.js index 7269a36330f..51a2ef3c84d 100644 --- a/apps/meteor/app/emoji-custom/server/methods/uploadEmojiCustom.js +++ b/apps/meteor/app/emoji-custom/server/methods/uploadEmojiCustom.js @@ -1,12 +1,11 @@ import { Meteor } from 'meteor/meteor'; import limax from 'limax'; import sharp from 'sharp'; +import { api, Media } from '@rocket.chat/core-services'; import { hasPermission } from '../../../authorization'; import { RocketChatFile } from '../../../file'; import { RocketChatFileEmojiCustomInstance } from '../startup/emoji-custom'; -import { api } from '../../../../server/sdk/api'; -import { Media } from '../../../../server/sdk'; const getFile = async (file, extension) => { if (extension !== 'svg+xml') { diff --git a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Notification.ts b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Notification.ts index 43e712c46c4..e7eb8e5a816 100644 --- a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Notification.ts +++ b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Notification.ts @@ -1,7 +1,7 @@ import { Rooms } from '@rocket.chat/models'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; -import { api } from '../../../../../../server/sdk/api'; import notifications from '../../../../../notifications/server/lib/Notifications'; export class RocketChatNotificationAdapter { diff --git a/apps/meteor/app/federation/server/endpoints/dispatch.js b/apps/meteor/app/federation/server/endpoints/dispatch.js index 05179c53144..60880c51fba 100644 --- a/apps/meteor/app/federation/server/endpoints/dispatch.js +++ b/apps/meteor/app/federation/server/endpoints/dispatch.js @@ -1,5 +1,6 @@ import { EJSON } from 'meteor/ejson'; import { FederationServers } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { API } from '../../../api/server'; import { serverLogger } from '../lib/logger'; @@ -7,7 +8,6 @@ import { contextDefinitions, eventTypes } from '../../../models/server/models/Fe import { FederationRoomEvents, Messages, Rooms, Subscriptions, Users } from '../../../models/server'; import { normalizers } from '../normalizers'; import { deleteRoom } from '../../../lib/server/functions'; -import { api } from '../../../../server/sdk/api'; import { FileUpload } from '../../../file-upload'; import { getFederationDomain } from '../lib/getFederationDomain'; import { decryptIfNeeded } from '../lib/crypt'; diff --git a/apps/meteor/app/invites/server/functions/findOrCreateInvite.js b/apps/meteor/app/invites/server/functions/findOrCreateInvite.js index 7d17dfae9c2..438f8c8a932 100644 --- a/apps/meteor/app/invites/server/functions/findOrCreateInvite.js +++ b/apps/meteor/app/invites/server/functions/findOrCreateInvite.js @@ -1,9 +1,9 @@ import { Meteor } from 'meteor/meteor'; import { Random } from 'meteor/random'; import { Invites } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { hasPermission } from '../../../authorization/server'; -import { api } from '../../../../server/sdk/api'; import { Subscriptions, Rooms } from '../../../models/server'; import { settings } from '../../../settings/server'; import { getURL } from '../../../utils/lib/getURL'; diff --git a/apps/meteor/app/lib/server/functions/addUserToRoom.ts b/apps/meteor/app/lib/server/functions/addUserToRoom.ts index b0086de4b3f..fd5d29447fd 100644 --- a/apps/meteor/app/lib/server/functions/addUserToRoom.ts +++ b/apps/meteor/app/lib/server/functions/addUserToRoom.ts @@ -1,11 +1,11 @@ import { AppsEngineException } from '@rocket.chat/apps-engine/definition/exceptions'; import { Meteor } from 'meteor/meteor'; import type { IUser, IRoom } from '@rocket.chat/core-typings'; +import { Team } from '@rocket.chat/core-services'; import { AppEvents, Apps } from '../../../apps/server'; import { callbacks } from '../../../../lib/callbacks'; import { Messages, Rooms, Subscriptions, Users } from '../../../models/server'; -import { Team } from '../../../../server/sdk'; import { roomCoordinator } from '../../../../server/lib/rooms/roomCoordinator'; import { RoomMemberActions } from '../../../../definition/IRoomTypeConfig'; diff --git a/apps/meteor/app/lib/server/functions/checkUsernameAvailability.ts b/apps/meteor/app/lib/server/functions/checkUsernameAvailability.ts index f98414ea23e..7894566c527 100644 --- a/apps/meteor/app/lib/server/functions/checkUsernameAvailability.ts +++ b/apps/meteor/app/lib/server/functions/checkUsernameAvailability.ts @@ -2,9 +2,9 @@ import { Meteor } from 'meteor/meteor'; import s from 'underscore.string'; import _ from 'underscore'; import { escapeRegExp } from '@rocket.chat/string-helpers'; +import { Team } from '@rocket.chat/core-services'; import { settings } from '../../../settings/server'; -import { Team } from '../../../../server/sdk'; import { validateName } from './validateName'; let usernameBlackList: RegExp[] = []; diff --git a/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts b/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts index fa119c0f16f..c9280d06bd8 100644 --- a/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts +++ b/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts @@ -1,11 +1,11 @@ import type { FindCursor } from 'mongodb'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import type { IMessage, IMessageDiscussion } from '@rocket.chat/core-typings'; +import { api } from '@rocket.chat/core-services'; import { deleteRoom } from './deleteRoom'; import { FileUpload } from '../../../file-upload/server'; import { Messages, Rooms, Subscriptions } from '../../../models/server'; -import { api } from '../../../../server/sdk/api'; export const cleanRoomHistory = function ({ rid = '', diff --git a/apps/meteor/app/lib/server/functions/createDirectRoom.ts b/apps/meteor/app/lib/server/functions/createDirectRoom.ts index 78bcfb780a6..ac1ad5c75d5 100644 --- a/apps/meteor/app/lib/server/functions/createDirectRoom.ts +++ b/apps/meteor/app/lib/server/functions/createDirectRoom.ts @@ -4,13 +4,13 @@ import { Random } from 'meteor/random'; import type { ICreatedRoom, ISubscription, IUser } from '@rocket.chat/core-typings'; import { Subscriptions } from '@rocket.chat/models'; import type { MatchKeysAndValues } from 'mongodb'; +import type { ICreateRoomParams } from '@rocket.chat/core-services'; 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 type { ICreateRoomParams } from '../../../../server/sdk/types/IRoomService'; const generateSubscription = ( fname: string, diff --git a/apps/meteor/app/lib/server/functions/createRoom.ts b/apps/meteor/app/lib/server/functions/createRoom.ts index b0a228decd3..dce476a877d 100644 --- a/apps/meteor/app/lib/server/functions/createRoom.ts +++ b/apps/meteor/app/lib/server/functions/createRoom.ts @@ -3,6 +3,8 @@ import { Meteor } from 'meteor/meteor'; import _ from 'underscore'; import s from 'underscore.string'; import type { ICreatedRoom, IUser, IRoom, RoomType } from '@rocket.chat/core-typings'; +import { Team } from '@rocket.chat/core-services'; +import type { ICreateRoomParams, ISubscriptionExtraData } from '@rocket.chat/core-services'; import { Apps } from '../../../apps/server'; import { addUserRoles } from '../../../../server/lib/roles/addUserRoles'; @@ -10,8 +12,6 @@ import { callbacks } from '../../../../lib/callbacks'; import { Messages, Rooms, Subscriptions, Users } from '../../../models/server'; import { getValidRoomName } from '../../../utils/server'; import { createDirectRoom } from './createDirectRoom'; -import { Team } from '../../../../server/sdk'; -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/deleteMessage.ts b/apps/meteor/app/lib/server/functions/deleteMessage.ts index bdc3fb2c49f..7ec2b736388 100644 --- a/apps/meteor/app/lib/server/functions/deleteMessage.ts +++ b/apps/meteor/app/lib/server/functions/deleteMessage.ts @@ -1,11 +1,11 @@ import { Meteor } from 'meteor/meteor'; import type { IMessage, IUser } from '@rocket.chat/core-typings'; import { Uploads } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { FileUpload } from '../../../file-upload/server'; import { settings } from '../../../settings/server'; import { Messages, Rooms } from '../../../models/server'; -import { api } from '../../../../server/sdk/api'; import { callbacks } from '../../../../lib/callbacks'; import { Apps } from '../../../apps/server'; diff --git a/apps/meteor/app/lib/server/functions/deleteUser.ts b/apps/meteor/app/lib/server/functions/deleteUser.ts index ddd9aa0a819..6c3573def3d 100644 --- a/apps/meteor/app/lib/server/functions/deleteUser.ts +++ b/apps/meteor/app/lib/server/functions/deleteUser.ts @@ -2,6 +2,7 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import type { FileProp } from '@rocket.chat/core-typings'; import { Integrations, FederationServers, LivechatVisitors } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { FileUpload } from '../../../file-upload/server'; import { Users, Subscriptions, Messages, Rooms, LivechatDepartmentAgents } from '../../../models/server'; @@ -10,7 +11,6 @@ import { updateGroupDMsName } from './updateGroupDMsName'; import { relinquishRoomOwnerships } from './relinquishRoomOwnerships'; import { getSubscribedRoomsForUserWithDetails, shouldRemoveOrChangeOwner } from './getRoomsWithSingleOwner'; import { getUserSingleOwnedRooms } from './getUserSingleOwnedRooms'; -import { api } from '../../../../server/sdk/api'; import { LivechatUnitMonitors } from '../../../../ee/app/models/server'; export async function deleteUser(userId: string, confirmRelinquish = false): Promise<void> { diff --git a/apps/meteor/app/lib/server/functions/notifications/desktop.js b/apps/meteor/app/lib/server/functions/notifications/desktop.js index d5104312313..ee2e56cd993 100644 --- a/apps/meteor/app/lib/server/functions/notifications/desktop.js +++ b/apps/meteor/app/lib/server/functions/notifications/desktop.js @@ -1,5 +1,6 @@ +import { api } from '@rocket.chat/core-services'; + import { roomCoordinator } from '../../../../../server/lib/rooms/roomCoordinator'; -import { api } from '../../../../../server/sdk/api'; import { metrics } from '../../../../metrics/server'; import { settings } from '../../../../settings/server'; diff --git a/apps/meteor/app/lib/server/functions/removeUserFromRoom.ts b/apps/meteor/app/lib/server/functions/removeUserFromRoom.ts index ea71bb240ab..4e1327ad3a2 100644 --- a/apps/meteor/app/lib/server/functions/removeUserFromRoom.ts +++ b/apps/meteor/app/lib/server/functions/removeUserFromRoom.ts @@ -2,11 +2,11 @@ import { AppsEngineException } from '@rocket.chat/apps-engine/definition/exceptions'; import { Meteor } from 'meteor/meteor'; import type { IUser } from '@rocket.chat/core-typings'; +import { Team } from '@rocket.chat/core-services'; import { Rooms, Messages, Subscriptions } from '../../../models/server'; import { AppEvents, Apps } from '../../../apps/server'; import { callbacks } from '../../../../lib/callbacks'; -import { Team } from '../../../../server/sdk'; export const removeUserFromRoom = async function ( rid: string, diff --git a/apps/meteor/app/lib/server/functions/setRealName.ts b/apps/meteor/app/lib/server/functions/setRealName.ts index d9aa7a7b22a..b8f0dc53e9c 100644 --- a/apps/meteor/app/lib/server/functions/setRealName.ts +++ b/apps/meteor/app/lib/server/functions/setRealName.ts @@ -1,12 +1,12 @@ import { Meteor } from 'meteor/meteor'; import s from 'underscore.string'; import type { IUser } from '@rocket.chat/core-typings'; +import { api } from '@rocket.chat/core-services'; import { Users } from '../../../models/server'; import { settings } from '../../../settings/server'; import { hasPermission } from '../../../authorization/server'; import { RateLimiter } from '../lib'; -import { api } from '../../../../server/sdk/api'; export const _setRealName = function (userId: string, name: string, fullUser: IUser): IUser | undefined { name = s.trim(name); diff --git a/apps/meteor/app/lib/server/functions/setRoomAvatar.ts b/apps/meteor/app/lib/server/functions/setRoomAvatar.ts index 74ba8ebcb01..975bbb96adb 100644 --- a/apps/meteor/app/lib/server/functions/setRoomAvatar.ts +++ b/apps/meteor/app/lib/server/functions/setRoomAvatar.ts @@ -1,11 +1,11 @@ import { Meteor } from 'meteor/meteor'; import type { IUser } from '@rocket.chat/core-typings'; import { Avatars } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { RocketChatFile } from '../../../file'; import { FileUpload } from '../../../file-upload/server'; import { Rooms, Messages } from '../../../models/server'; -import { api } from '../../../../server/sdk/api'; export const setRoomAvatar = async function (rid: string, dataURI: string, user: IUser): Promise<void> { const fileStore = FileUpload.getStore('Avatars'); diff --git a/apps/meteor/app/lib/server/functions/setStatusText.ts b/apps/meteor/app/lib/server/functions/setStatusText.ts index 048d4c25353..a5beed59f1a 100644 --- a/apps/meteor/app/lib/server/functions/setStatusText.ts +++ b/apps/meteor/app/lib/server/functions/setStatusText.ts @@ -2,10 +2,10 @@ import { Meteor } from 'meteor/meteor'; import s from 'underscore.string'; import type { IUser } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { hasPermission } from '../../../authorization/server'; import { RateLimiter } from '../lib'; -import { api } from '../../../../server/sdk/api'; async function _setStatusTextPromise(userId: string, statusText: string): Promise<boolean> { if (!userId) { diff --git a/apps/meteor/app/lib/server/functions/setUserAvatar.ts b/apps/meteor/app/lib/server/functions/setUserAvatar.ts index 4718303b21c..f25745dc389 100644 --- a/apps/meteor/app/lib/server/functions/setUserAvatar.ts +++ b/apps/meteor/app/lib/server/functions/setUserAvatar.ts @@ -1,11 +1,11 @@ import { Meteor } from 'meteor/meteor'; import type { IUser } from '@rocket.chat/core-typings'; +import { api } from '@rocket.chat/core-services'; import { RocketChatFile } from '../../../file/server'; import { FileUpload } from '../../../file-upload/server'; import { Users } from '../../../models/server'; import { SystemLogger } from '../../../../server/lib/logger/system'; -import { api } from '../../../../server/sdk/api'; import { fetch } from '../../../../server/lib/http/fetch'; export function setUserAvatar( diff --git a/apps/meteor/app/lib/server/functions/setUsername.ts b/apps/meteor/app/lib/server/functions/setUsername.ts index 810dd9abf78..778a6e130e9 100644 --- a/apps/meteor/app/lib/server/functions/setUsername.ts +++ b/apps/meteor/app/lib/server/functions/setUsername.ts @@ -3,13 +3,13 @@ import s from 'underscore.string'; import { Accounts } from 'meteor/accounts-base'; import type { IUser } from '@rocket.chat/core-typings'; import { Invites } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { settings } from '../../../settings/server'; import { Users } from '../../../models/server'; import { hasPermission } from '../../../authorization/server'; import { RateLimiter } from '../lib'; import { addUserToRoom } from './addUserToRoom'; -import { api } from '../../../../server/sdk/api'; import { checkUsernameAvailability, setUserAvatar } from '.'; import { getAvatarSuggestionForUser } from './getAvatarSuggestionForUser'; import { SystemLogger } from '../../../../server/lib/logger/system'; diff --git a/apps/meteor/app/lib/server/methods/addUsersToRoom.js b/apps/meteor/app/lib/server/methods/addUsersToRoom.js index a0f53cf457c..164ed5a1ea3 100644 --- a/apps/meteor/app/lib/server/methods/addUsersToRoom.js +++ b/apps/meteor/app/lib/server/methods/addUsersToRoom.js @@ -1,11 +1,11 @@ import { Meteor } from 'meteor/meteor'; import { Match } from 'meteor/check'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import { Rooms, Subscriptions, Users } from '../../../models/server'; import { hasPermission } from '../../../authorization'; import { addUserToRoom } from '../functions'; -import { api } from '../../../../server/sdk/api'; import { Federation } from '../../../federation-v2/server/Federation'; Meteor.methods({ diff --git a/apps/meteor/app/lib/server/methods/filterATAllTag.js b/apps/meteor/app/lib/server/methods/filterATAllTag.js index 2c1d52a9509..f6d4627d9d6 100644 --- a/apps/meteor/app/lib/server/methods/filterATAllTag.js +++ b/apps/meteor/app/lib/server/methods/filterATAllTag.js @@ -2,11 +2,11 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import _ from 'underscore'; import moment from 'moment'; +import { api } from '@rocket.chat/core-services'; import { hasPermission } from '../../../authorization'; import { callbacks } from '../../../../lib/callbacks'; import { Users } from '../../../models/server'; -import { api } from '../../../../server/sdk/api'; callbacks.add( 'beforeSaveMessage', diff --git a/apps/meteor/app/lib/server/methods/filterATHereTag.js b/apps/meteor/app/lib/server/methods/filterATHereTag.js index 0978520e1cd..821b0f1c8ba 100644 --- a/apps/meteor/app/lib/server/methods/filterATHereTag.js +++ b/apps/meteor/app/lib/server/methods/filterATHereTag.js @@ -2,11 +2,11 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import _ from 'underscore'; import moment from 'moment'; +import { api } from '@rocket.chat/core-services'; import { hasPermission } from '../../../authorization'; import { callbacks } from '../../../../lib/callbacks'; import { Users } from '../../../models/server'; -import { api } from '../../../../server/sdk/api'; callbacks.add( 'beforeSaveMessage', diff --git a/apps/meteor/app/lib/server/methods/getUserRoles.js b/apps/meteor/app/lib/server/methods/getUserRoles.js index 4f5595efa07..813c3e2eea1 100644 --- a/apps/meteor/app/lib/server/methods/getUserRoles.js +++ b/apps/meteor/app/lib/server/methods/getUserRoles.js @@ -1,6 +1,5 @@ import { Meteor } from 'meteor/meteor'; - -import { Authorization } from '../../../../server/sdk'; +import { Authorization } from '@rocket.chat/core-services'; Meteor.methods({ async getUserRoles() { diff --git a/apps/meteor/app/lib/server/methods/sendMessage.js b/apps/meteor/app/lib/server/methods/sendMessage.js index f9a19d23e8d..9091a53f547 100644 --- a/apps/meteor/app/lib/server/methods/sendMessage.js +++ b/apps/meteor/app/lib/server/methods/sendMessage.js @@ -2,6 +2,7 @@ import { Meteor } from 'meteor/meteor'; import { check } from 'meteor/check'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import moment from 'moment'; +import { api } from '@rocket.chat/core-services'; import { hasPermission } from '../../../authorization'; import { metrics } from '../../../metrics'; @@ -12,7 +13,6 @@ import { sendMessage } from '../functions'; import { RateLimiter } from '../lib'; import { canSendMessage } from '../../../authorization/server'; import { SystemLogger } from '../../../../server/lib/logger/system'; -import { api } from '../../../../server/sdk/api'; export function executeSendMessage(uid, message) { if (message.tshow && !message.tmid) { diff --git a/apps/meteor/app/livechat/server/lib/Helper.js b/apps/meteor/app/livechat/server/lib/Helper.js index f26890c3565..407e967a1f1 100644 --- a/apps/meteor/app/livechat/server/lib/Helper.js +++ b/apps/meteor/app/livechat/server/lib/Helper.js @@ -3,6 +3,7 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import { Match, check } from 'meteor/check'; import { LivechatTransferEventType } from '@rocket.chat/apps-engine/definition/livechat'; import { OmnichannelSourceType } from '@rocket.chat/core-typings'; +import { api } from '@rocket.chat/core-services'; import { hasRole } from '../../../authorization'; import { @@ -25,7 +26,6 @@ import { sendNotification } from '../../../lib/server'; import { sendMessage } from '../../../lib/server/functions/sendMessage'; import { queueInquiry, saveQueueInquiry } from './QueueManager'; import { validateEmail as validatorFunc } from '../../../../lib/emailValidator'; -import { api } from '../../../../server/sdk/api'; const logger = new Logger('LivechatHelper'); diff --git a/apps/meteor/app/livechat/server/lib/Livechat.js b/apps/meteor/app/livechat/server/lib/Livechat.js index af5f779a214..47ae2de2955 100644 --- a/apps/meteor/app/livechat/server/lib/Livechat.js +++ b/apps/meteor/app/livechat/server/lib/Livechat.js @@ -10,6 +10,7 @@ import s from 'underscore.string'; import moment from 'moment-timezone'; import UAParser from 'ua-parser-js'; import { Users as UsersRaw, LivechatVisitors, LivechatCustomField, Settings } from '@rocket.chat/models'; +import { VideoConf, api } from '@rocket.chat/core-services'; import { QueueManager } from './QueueManager'; import { RoutingManager } from './RoutingManager'; @@ -39,8 +40,6 @@ import { Apps, AppEvents } from '../../../apps/server'; import { businessHourManager } from '../business-hour'; import { addUserRoles } from '../../../../server/lib/roles/addUserRoles'; import { removeUserFromRoles } from '../../../../server/lib/roles/removeUserFromRoles'; -import { VideoConf } from '../../../../server/sdk'; -import { api } from '../../../../server/sdk/api'; const logger = new Logger('Livechat'); diff --git a/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts b/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts index 3ab3c37843d..381a40d371f 100644 --- a/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts +++ b/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts @@ -1,7 +1,7 @@ import type { IUser, IOmnichannelRoom } from '@rocket.chat/core-typings'; +import type { IAuthorizationLivechat } from '@rocket.chat/core-services'; +import { ServiceClassInternal } from '@rocket.chat/core-services'; -import type { IAuthorizationLivechat } from '../../../server/sdk/types/IAuthorizationLivechat'; -import { ServiceClassInternal } from '../../../server/sdk/types/ServiceClass'; import { validators } from './roomAccessValidator.compatibility'; export class AuthorizationLivechat extends ServiceClassInternal implements IAuthorizationLivechat { diff --git a/apps/meteor/app/mentions/server/server.js b/apps/meteor/app/mentions/server/server.js index c82a7c3449e..ba4a8af718f 100644 --- a/apps/meteor/app/mentions/server/server.js +++ b/apps/meteor/app/mentions/server/server.js @@ -1,11 +1,11 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import MentionsServer from './Mentions'; import { settings } from '../../settings/server'; import { callbacks } from '../../../lib/callbacks'; import { Users, Subscriptions, Rooms } from '../../models/server'; -import { api } from '../../../server/sdk/api'; export class MentionQueries { getUsers(usernames) { diff --git a/apps/meteor/app/notifications/server/lib/Notifications.ts b/apps/meteor/app/notifications/server/lib/Notifications.ts index 67260293cdb..1b53a225a5a 100644 --- a/apps/meteor/app/notifications/server/lib/Notifications.ts +++ b/apps/meteor/app/notifications/server/lib/Notifications.ts @@ -1,9 +1,9 @@ import { Meteor } from 'meteor/meteor'; import { DDPCommon } from 'meteor/ddp-common'; +import { api } from '@rocket.chat/core-services'; import { NotificationsModule } from '../../../../server/modules/notifications/notifications.module'; import { Streamer } from '../../../../server/modules/streamer/streamer.module'; -import { api } from '../../../../server/sdk/api'; import './Presence'; export class Stream extends Streamer { diff --git a/apps/meteor/app/reactions/server/setReaction.js b/apps/meteor/app/reactions/server/setReaction.js index 310d0aefc8b..bc58c1ffc22 100644 --- a/apps/meteor/app/reactions/server/setReaction.js +++ b/apps/meteor/app/reactions/server/setReaction.js @@ -2,13 +2,13 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import _ from 'underscore'; import { EmojiCustom } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { Messages, Rooms } from '../../models/server'; import { callbacks } from '../../../lib/callbacks'; import { emoji } from '../../emoji/server'; import { isTheLastMessage, msgStream } from '../../lib/server'; import { canAccessRoom, hasPermission } from '../../authorization/server'; -import { api } from '../../../server/sdk/api'; import { AppEvents, Apps } from '../../apps/server/orchestrator'; const removeUserReaction = (message, reaction, username) => { diff --git a/apps/meteor/app/search/server/search.internalService.ts b/apps/meteor/app/search/server/search.internalService.ts index 03ed08742c0..b7077aa9746 100644 --- a/apps/meteor/app/search/server/search.internalService.ts +++ b/apps/meteor/app/search/server/search.internalService.ts @@ -1,8 +1,8 @@ +import { api, ServiceClassInternal } from '@rocket.chat/core-services'; + import { Users } from '../../models/server'; import { settings } from '../../settings/server'; import { searchProviderService } from './service/providerService'; -import { ServiceClassInternal } from '../../../server/sdk/types/ServiceClass'; -import { api } from '../../../server/sdk/api'; import { searchEventService } from './events/events'; class Search extends ServiceClassInternal { diff --git a/apps/meteor/app/slashcommands-archiveroom/server/server.ts b/apps/meteor/app/slashcommands-archiveroom/server/server.ts index 1fdfea6f524..bf7d2074d72 100644 --- a/apps/meteor/app/slashcommands-archiveroom/server/server.ts +++ b/apps/meteor/app/slashcommands-archiveroom/server/server.ts @@ -1,9 +1,9 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import { Rooms, Messages } from '../../models/server'; import { slashCommands } from '../../utils/lib/slashCommand'; -import { api } from '../../../server/sdk/api'; import { settings } from '../../settings/server'; slashCommands.add({ diff --git a/apps/meteor/app/slashcommands-create/server/server.ts b/apps/meteor/app/slashcommands-create/server/server.ts index 0ff5d17e36b..c89b2fd631b 100644 --- a/apps/meteor/app/slashcommands-create/server/server.ts +++ b/apps/meteor/app/slashcommands-create/server/server.ts @@ -1,10 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import { settings } from '../../settings/server'; import { Rooms } from '../../models/server'; import { slashCommands } from '../../utils/lib/slashCommand'; -import { api } from '../../../server/sdk/api'; slashCommands.add({ command: 'create', diff --git a/apps/meteor/app/slashcommands-help/server/server.ts b/apps/meteor/app/slashcommands-help/server/server.ts index 815f6df9323..612b3d7f5e0 100644 --- a/apps/meteor/app/slashcommands-help/server/server.ts +++ b/apps/meteor/app/slashcommands-help/server/server.ts @@ -1,9 +1,9 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import { settings } from '../../settings/server'; import { slashCommands } from '../../utils/lib/slashCommand'; -import { api } from '../../../server/sdk/api'; import { Users } from '../../models/server'; /* diff --git a/apps/meteor/app/slashcommands-hide/server/hide.ts b/apps/meteor/app/slashcommands-hide/server/hide.ts index dbe94d0d7d1..807ae8aa468 100644 --- a/apps/meteor/app/slashcommands-hide/server/hide.ts +++ b/apps/meteor/app/slashcommands-hide/server/hide.ts @@ -1,10 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import { settings } from '../../settings/server'; import { Rooms, Subscriptions, Users } from '../../models/server'; import { slashCommands } from '../../utils/server'; -import { api } from '../../../server/sdk/api'; /* * Hide is a named function that will replace /hide commands diff --git a/apps/meteor/app/slashcommands-invite/server/server.ts b/apps/meteor/app/slashcommands-invite/server/server.ts index 23b60387df2..24521bc6511 100644 --- a/apps/meteor/app/slashcommands-invite/server/server.ts +++ b/apps/meteor/app/slashcommands-invite/server/server.ts @@ -1,10 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import { settings } from '../../settings/server'; import { slashCommands } from '../../utils/lib/slashCommand'; import { Subscriptions } from '../../models/server'; -import { api } from '../../../server/sdk/api'; /* * Invite is a named function that will replace /invite commands diff --git a/apps/meteor/app/slashcommands-inviteall/server/server.ts b/apps/meteor/app/slashcommands-inviteall/server/server.ts index 3f5225a4a6c..6e65d241f96 100644 --- a/apps/meteor/app/slashcommands-inviteall/server/server.ts +++ b/apps/meteor/app/slashcommands-inviteall/server/server.ts @@ -6,11 +6,11 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import type { ISubscription, SlashCommand } from '@rocket.chat/core-typings'; +import { api } from '@rocket.chat/core-services'; import { Rooms, Subscriptions, Users } from '../../models/server'; import { slashCommands } from '../../utils/lib/slashCommand'; import { settings } from '../../settings/server'; -import { api } from '../../../server/sdk/api'; function inviteAll<T extends string>(type: T): SlashCommand<T>['callback'] { return function inviteAll(command: T, params: string, item): void { diff --git a/apps/meteor/app/slashcommands-join/server/server.ts b/apps/meteor/app/slashcommands-join/server/server.ts index 5ea5c5c0b9b..d4278df9ff6 100644 --- a/apps/meteor/app/slashcommands-join/server/server.ts +++ b/apps/meteor/app/slashcommands-join/server/server.ts @@ -1,10 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import { Rooms, Subscriptions } from '../../models/server'; import { settings } from '../../settings/server'; import { slashCommands } from '../../utils/lib/slashCommand'; -import { api } from '../../../server/sdk/api'; slashCommands.add({ command: 'join', diff --git a/apps/meteor/app/slashcommands-kick/server/server.ts b/apps/meteor/app/slashcommands-kick/server/server.ts index f385269cc4d..0d77877b6e3 100644 --- a/apps/meteor/app/slashcommands-kick/server/server.ts +++ b/apps/meteor/app/slashcommands-kick/server/server.ts @@ -1,11 +1,11 @@ // Kick is a named function that will replace /kick commands import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import { Users, Subscriptions } from '../../models/server'; import { settings } from '../../settings/server'; import { slashCommands } from '../../utils/lib/slashCommand'; -import { api } from '../../../server/sdk/api'; slashCommands.add({ command: 'kick', diff --git a/apps/meteor/app/slashcommands-leave/server/leave.ts b/apps/meteor/app/slashcommands-leave/server/leave.ts index 566de8295b2..636eb0463e2 100644 --- a/apps/meteor/app/slashcommands-leave/server/leave.ts +++ b/apps/meteor/app/slashcommands-leave/server/leave.ts @@ -1,10 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import type { SlashCommand } from '@rocket.chat/core-typings'; +import { api } from '@rocket.chat/core-services'; import { slashCommands } from '../../utils/lib/slashCommand'; import { settings } from '../../settings/server'; -import { api } from '../../../server/sdk/api'; import { Users } from '../../models/server'; /* diff --git a/apps/meteor/app/slashcommands-msg/server/server.ts b/apps/meteor/app/slashcommands-msg/server/server.ts index 1dc5313bfa1..65345cdfedd 100644 --- a/apps/meteor/app/slashcommands-msg/server/server.ts +++ b/apps/meteor/app/slashcommands-msg/server/server.ts @@ -1,11 +1,11 @@ import { Meteor } from 'meteor/meteor'; import { Random } from 'meteor/random'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import { slashCommands } from '../../utils/lib/slashCommand'; import { settings } from '../../settings/server'; import { Users } from '../../models/server'; -import { api } from '../../../server/sdk/api'; /* * Msg is a named function that will replace /msg commands diff --git a/apps/meteor/app/slashcommands-mute/server/mute.ts b/apps/meteor/app/slashcommands-mute/server/mute.ts index 5f9ab47c611..ebb6933321f 100644 --- a/apps/meteor/app/slashcommands-mute/server/mute.ts +++ b/apps/meteor/app/slashcommands-mute/server/mute.ts @@ -1,10 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import { slashCommands } from '../../utils/lib/slashCommand'; import { settings } from '../../settings/server'; import { Users, Subscriptions } from '../../models/server'; -import { api } from '../../../server/sdk/api'; /* * Mute is a named function that will replace /mute commands diff --git a/apps/meteor/app/slashcommands-mute/server/unmute.ts b/apps/meteor/app/slashcommands-mute/server/unmute.ts index 602268da65f..70ed145fd3a 100644 --- a/apps/meteor/app/slashcommands-mute/server/unmute.ts +++ b/apps/meteor/app/slashcommands-mute/server/unmute.ts @@ -1,10 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import { slashCommands } from '../../utils/lib/slashCommand'; import { Users, Subscriptions } from '../../models/server'; import { settings } from '../../settings/server'; -import { api } from '../../../server/sdk/api'; /* * Unmute is a named function that will replace /unmute commands diff --git a/apps/meteor/app/slashcommands-status/client/status.ts b/apps/meteor/app/slashcommands-status/client/status.ts index b3272c0f4d3..e6fd1205b0c 100644 --- a/apps/meteor/app/slashcommands-status/client/status.ts +++ b/apps/meteor/app/slashcommands-status/client/status.ts @@ -1,9 +1,9 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import { slashCommands } from '../../utils/lib/slashCommand'; import { settings } from '../../settings/server'; -import { api } from '../../../server/sdk/api'; import { dispatchToastMessage } from '../../../client/lib/toast'; slashCommands.add({ diff --git a/apps/meteor/app/slashcommands-status/server/status.ts b/apps/meteor/app/slashcommands-status/server/status.ts index d72687ceb33..4b92d3459ab 100644 --- a/apps/meteor/app/slashcommands-status/server/status.ts +++ b/apps/meteor/app/slashcommands-status/server/status.ts @@ -1,9 +1,9 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import { slashCommands } from '../../utils/lib/slashCommand'; import { settings } from '../../settings/server'; -import { api } from '../../../server/sdk/api'; import { Users } from '../../models/server'; slashCommands.add({ diff --git a/apps/meteor/app/slashcommands-unarchiveroom/server/server.ts b/apps/meteor/app/slashcommands-unarchiveroom/server/server.ts index fa74c5fd350..f3dee0943a9 100644 --- a/apps/meteor/app/slashcommands-unarchiveroom/server/server.ts +++ b/apps/meteor/app/slashcommands-unarchiveroom/server/server.ts @@ -1,10 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; +import { api } from '@rocket.chat/core-services'; import { Rooms, Messages } from '../../models/server'; import { slashCommands } from '../../utils/lib/slashCommand'; import { settings } from '../../settings/server'; -import { api } from '../../../server/sdk/api'; import { roomCoordinator } from '../../../server/lib/rooms/roomCoordinator'; import { RoomMemberActions } from '../../../definition/IRoomTypeConfig'; diff --git a/apps/meteor/app/sms/server/services/twilio.js b/apps/meteor/app/sms/server/services/twilio.js index c0213051b91..2b83b613e64 100644 --- a/apps/meteor/app/sms/server/services/twilio.js +++ b/apps/meteor/app/sms/server/services/twilio.js @@ -2,11 +2,11 @@ import { Meteor } from 'meteor/meteor'; import twilio from 'twilio'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import filesize from 'filesize'; +import { api } from '@rocket.chat/core-services'; import { settings } from '../../../settings/server'; import { SMS } from '../SMS'; import { fileUploadIsValidContentType } from '../../../utils/lib/fileUploadRestrictions'; -import { api } from '../../../../server/sdk/api'; import { SystemLogger } from '../../../../server/lib/logger/system'; const MAX_FILE_SIZE = 5242880; diff --git a/apps/meteor/app/sms/server/services/voxtelesys.js b/apps/meteor/app/sms/server/services/voxtelesys.js index 9fd526dd9a4..a4e75e12c9e 100644 --- a/apps/meteor/app/sms/server/services/voxtelesys.js +++ b/apps/meteor/app/sms/server/services/voxtelesys.js @@ -2,12 +2,12 @@ import { HTTP } from 'meteor/http'; import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import filesize from 'filesize'; +import { api } from '@rocket.chat/core-services'; import { settings } from '../../../settings/server'; import { SMS } from '../SMS'; import { fileUploadIsValidContentType } from '../../../utils/lib/fileUploadRestrictions'; import { mime } from '../../../utils/lib/mimeTypes'; -import { api } from '../../../../server/sdk/api'; import { SystemLogger } from '../../../../server/lib/logger/system'; const MAX_FILE_SIZE = 5242880; diff --git a/apps/meteor/app/statistics/server/lib/statistics.ts b/apps/meteor/app/statistics/server/lib/statistics.ts index 766c68b3290..96a02ab2524 100644 --- a/apps/meteor/app/statistics/server/lib/statistics.ts +++ b/apps/meteor/app/statistics/server/lib/statistics.ts @@ -23,6 +23,7 @@ import { InstanceStatus, Settings, } from '@rocket.chat/models'; +import { Analytics, Team, VideoConf } from '@rocket.chat/core-services'; import { Users, Rooms, Subscriptions, Messages } from '../../../models/server'; import { settings } from '../../../settings/server'; @@ -34,7 +35,6 @@ import { getAppsStatistics } from './getAppsStatistics'; import { getImporterStatistics } from './getImporterStatistics'; import { getServicesStatistics } from './getServicesStatistics'; import { getStatistics as getEnterpriseStatistics } from '../../../../ee/app/license/server'; -import { Analytics, Team, VideoConf } from '../../../../server/sdk'; import { getSettingsStatistics } from '../../../../server/lib/statistics/getSettingsStatistics'; import { getMatrixFederationStatistics } from '../../../federation-v2/server/infrastructure/rocket-chat/statistics'; import { isRunningMs } from '../../../../server/lib/isRunningMs'; diff --git a/apps/meteor/app/statistics/server/lib/telemetryEvents.ts b/apps/meteor/app/statistics/server/lib/telemetryEvents.ts index d217eae35da..347ca7e7d8e 100644 --- a/apps/meteor/app/statistics/server/lib/telemetryEvents.ts +++ b/apps/meteor/app/statistics/server/lib/telemetryEvents.ts @@ -1,4 +1,4 @@ -import type { TelemetryMap, ITelemetryEvent, TelemetryEvents } from '../../../../server/sdk/types/ITelemetryEvent'; +import type { TelemetryMap, ITelemetryEvent, TelemetryEvents } from '@rocket.chat/core-services'; type TelemetryEventResponse = Promise<any> | void; type TelemetryEventFunction<T extends TelemetryEvents> = (data: TelemetryMap[T]) => TelemetryEventResponse; diff --git a/apps/meteor/app/user-status/server/methods/deleteCustomUserStatus.js b/apps/meteor/app/user-status/server/methods/deleteCustomUserStatus.js index 8fa7e0cb4f9..d3452346de7 100644 --- a/apps/meteor/app/user-status/server/methods/deleteCustomUserStatus.js +++ b/apps/meteor/app/user-status/server/methods/deleteCustomUserStatus.js @@ -1,8 +1,8 @@ import { Meteor } from 'meteor/meteor'; import { CustomUserStatus } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { hasPermission } from '../../../authorization/server'; -import { api } from '../../../../server/sdk/api'; Meteor.methods({ async deleteCustomUserStatus(userStatusID) { diff --git a/apps/meteor/app/user-status/server/methods/insertOrUpdateUserStatus.js b/apps/meteor/app/user-status/server/methods/insertOrUpdateUserStatus.js index c27e657a03d..5ab5e486073 100644 --- a/apps/meteor/app/user-status/server/methods/insertOrUpdateUserStatus.js +++ b/apps/meteor/app/user-status/server/methods/insertOrUpdateUserStatus.js @@ -1,9 +1,9 @@ import { Meteor } from 'meteor/meteor'; import s from 'underscore.string'; import { CustomUserStatus } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { hasPermission } from '../../../authorization'; -import { api } from '../../../../server/sdk/api'; Meteor.methods({ async insertOrUpdateUserStatus(userStatusData) { diff --git a/apps/meteor/app/voip/server/startup.ts b/apps/meteor/app/voip/server/startup.ts index e57fa27f0dc..5a998298349 100644 --- a/apps/meteor/app/voip/server/startup.ts +++ b/apps/meteor/app/voip/server/startup.ts @@ -1,5 +1,6 @@ +import { Voip } from '@rocket.chat/core-services'; + import { settings } from '../../settings/server'; -import { Voip } from '../../../server/sdk'; settings.watch('VoIP_Enabled', async function (value: boolean) { try { diff --git a/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts b/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts index bfee8173194..6e934cef9fe 100644 --- a/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts +++ b/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts @@ -1,10 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { Match, check } from 'meteor/check'; import { WebdavAccounts } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { settings } from '../../../settings/server'; import { WebdavClientAdapter } from '../lib/webdavClientAdapter'; -import { api } from '../../../../server/sdk/api'; Meteor.methods({ async addWebdavAccount(formData) { diff --git a/apps/meteor/app/webdav/server/methods/removeWebdavAccount.ts b/apps/meteor/app/webdav/server/methods/removeWebdavAccount.ts index f5cad1a9d00..c20f201e497 100644 --- a/apps/meteor/app/webdav/server/methods/removeWebdavAccount.ts +++ b/apps/meteor/app/webdav/server/methods/removeWebdavAccount.ts @@ -1,8 +1,8 @@ import { Meteor } from 'meteor/meteor'; import { check } from 'meteor/check'; import { WebdavAccounts } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; -import { api } from '../../../../server/sdk/api'; import { methodDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger'; Meteor.methods({ diff --git a/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts b/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts index 6e30c57c3d8..9f6c2dd3d63 100644 --- a/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts +++ b/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts @@ -1,6 +1,6 @@ import { Meteor } from 'meteor/meteor'; +import { MeteorError } from '@rocket.chat/core-services'; -import { MeteorError } from '../../../../server/sdk/errors'; import { settings } from '../../../settings/server'; import { Logger } from '../../../logger/server'; import { uploadFileToWebdav } from '../lib/uploadFileToWebdav'; diff --git a/apps/meteor/ee/app/license/server/getStatistics.ts b/apps/meteor/ee/app/license/server/getStatistics.ts index 28d6b5c7100..e7c17b1f1f6 100644 --- a/apps/meteor/ee/app/license/server/getStatistics.ts +++ b/apps/meteor/ee/app/license/server/getStatistics.ts @@ -1,9 +1,9 @@ import { log } from 'console'; import { CannedResponse, LivechatPriority, LivechatTag, LivechatUnit } from '@rocket.chat/models'; +import { Analytics } from '@rocket.chat/core-services'; import { getModules, getTags, hasLicense } from './license'; -import { Analytics } from '../../../../server/sdk'; type ENTERPRISE_STATISTICS = GenericStats & Partial<EEOnlyStats>; diff --git a/apps/meteor/ee/app/license/server/license.internalService.ts b/apps/meteor/ee/app/license/server/license.internalService.ts index 973657566c6..b819e720eec 100644 --- a/apps/meteor/ee/app/license/server/license.internalService.ts +++ b/apps/meteor/ee/app/license/server/license.internalService.ts @@ -1,8 +1,7 @@ import { debounce } from 'underscore'; +import type { ILicense } from '@rocket.chat/core-services'; +import { api, ServiceClassInternal } from '@rocket.chat/core-services'; -import { api } from '../../../../server/sdk/api'; -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'; import { getModules, hasLicense, isEnterprise, onModule, onValidateLicenses } from './license'; diff --git a/apps/meteor/ee/app/license/server/maxSeatsBanners.ts b/apps/meteor/ee/app/license/server/maxSeatsBanners.ts index 312dd69525d..5a365c84a0d 100644 --- a/apps/meteor/ee/app/license/server/maxSeatsBanners.ts +++ b/apps/meteor/ee/app/license/server/maxSeatsBanners.ts @@ -4,8 +4,7 @@ import { TextObjectType } from '@rocket.chat/apps-engine/definition/uikit/blocks import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import type { IBanner } from '@rocket.chat/core-typings'; import { BannerPlatform } from '@rocket.chat/core-typings'; - -import { Banner } from '../../../../server/sdk'; +import { Banner } from '@rocket.chat/core-services'; const WARNING_BANNER_ID = 'closeToSeatsLimit'; const DANGER_BANNER_ID = 'reachedSeatsLimit'; diff --git a/apps/meteor/ee/app/livechat-enterprise/server/lib/Helper.js b/apps/meteor/ee/app/livechat-enterprise/server/lib/Helper.js index 532736d7932..fd59783ccfb 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/lib/Helper.js +++ b/apps/meteor/ee/app/livechat-enterprise/server/lib/Helper.js @@ -6,6 +6,7 @@ import { LivechatDepartment as LivechatDepartmentRaw, LivechatCustomField, } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { memoizeDebounce } from './debounceByParams'; import { Users, LivechatInquiry, LivechatRooms, Messages } from '../../../../../app/models/server'; @@ -14,7 +15,6 @@ import { RoutingManager } from '../../../../../app/livechat/server/lib/RoutingMa import { dispatchAgentDelegated } from '../../../../../app/livechat/server/lib/Helper'; import { logger, helperLogger } from './logger'; import { OmnichannelQueueInactivityMonitor } from './QueueInactivityMonitor'; -import { api } from '../../../../../server/sdk/api'; export const getMaxNumberSimultaneousChat = async ({ agentId, departmentId }) => { if (departmentId) { diff --git a/apps/meteor/ee/app/settings/server/settings.internalService.ts b/apps/meteor/ee/app/settings/server/settings.internalService.ts index 92324829313..5f27493a674 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 '@rocket.chat/core-services'; +import type { IEnterpriseSettings } from '@rocket.chat/core-services'; -import { ServiceClassInternal } from '../../../../server/sdk/types/ServiceClass'; -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/teams-mention/server/EEMentionQueries.js b/apps/meteor/ee/app/teams-mention/server/EEMentionQueries.js index 9272bdb35b2..c9dc8208968 100644 --- a/apps/meteor/ee/app/teams-mention/server/EEMentionQueries.js +++ b/apps/meteor/ee/app/teams-mention/server/EEMentionQueries.js @@ -1,4 +1,4 @@ -import { Team } from '../../../../server/sdk'; +import { Team } from '@rocket.chat/core-services'; export const MentionQueriesEnterprise = { getUsers(sup, usernames) { diff --git a/apps/meteor/ee/app/teams-mention/server/EESpotlight.js b/apps/meteor/ee/app/teams-mention/server/EESpotlight.js index 49fd7c007b5..203d62c7ff1 100644 --- a/apps/meteor/ee/app/teams-mention/server/EESpotlight.js +++ b/apps/meteor/ee/app/teams-mention/server/EESpotlight.js @@ -1,4 +1,4 @@ -import { Team } from '../../../../server/sdk'; +import { Team } from '@rocket.chat/core-services'; export const SpotlightEnterprise = { mapTeams(_, teams) { diff --git a/apps/meteor/ee/app/teams-mention/server/index.ts b/apps/meteor/ee/app/teams-mention/server/index.ts index edaa18cecc4..f4cd9ba850e 100644 --- a/apps/meteor/ee/app/teams-mention/server/index.ts +++ b/apps/meteor/ee/app/teams-mention/server/index.ts @@ -1,4 +1,5 @@ import type { ITeamMember, IMessage } from '@rocket.chat/core-typings'; +import { Team } from '@rocket.chat/core-services'; import { onLicense } from '../../license/server'; import { overwriteClassOnLicense } from '../../license/server/license'; @@ -7,7 +8,6 @@ import { Spotlight } from '../../../../server/lib/spotlight'; import { MentionQueries } from '../../../../app/mentions/server/server'; import { callbacks } from '../../../../lib/callbacks'; import { MentionQueriesEnterprise } from './EEMentionQueries'; -import { Team } from '../../../../server/sdk'; interface IExtraDataForNotification { userMentions: any[]; diff --git a/apps/meteor/ee/server/NetworkBroker.ts b/apps/meteor/ee/server/NetworkBroker.ts index f6fb2a1038a..e57421780b0 100644 --- a/apps/meteor/ee/server/NetworkBroker.ts +++ b/apps/meteor/ee/server/NetworkBroker.ts @@ -1,9 +1,6 @@ import type { ServiceBroker, Context, ServiceSchema } from 'moleculer'; - -import { asyncLocalStorage } from '../../server/sdk'; -import type { IBroker, IBrokerNode, IServiceMetrics } from '../../server/sdk/types/IBroker'; -import type { IServiceClass } from '../../server/sdk/types/ServiceClass'; -import type { EventSignatures } from '../../server/sdk/lib/Events'; +import { asyncLocalStorage } from '@rocket.chat/core-services'; +import type { IBroker, IBrokerNode, IServiceMetrics, IServiceClass, EventSignatures } from '@rocket.chat/core-services'; const events: { [k: string]: string } = { onNodeConnected: '$node.connected', @@ -72,7 +69,11 @@ export class NetworkBroker implements IBroker { } destroyService(instance: IServiceClass): void { - this.broker.destroyService(instance.getName()); + const name = instance.getName(); + if (!name) { + return; + } + this.broker.destroyService(name); } createService(instance: IServiceClass): void { @@ -85,6 +86,9 @@ export class NetworkBroker implements IBroker { const serviceInstance = instance as any; const name = instance.getName(); + if (!name) { + return; + } if (!instance.isInternal()) { instance.onEvent('shutdown', async (services) => { diff --git a/apps/meteor/ee/server/configuration/videoConference.ts b/apps/meteor/ee/server/configuration/videoConference.ts index f13776cee8b..60c0f511ea4 100644 --- a/apps/meteor/ee/server/configuration/videoConference.ts +++ b/apps/meteor/ee/server/configuration/videoConference.ts @@ -2,12 +2,12 @@ import { Meteor } from 'meteor/meteor'; import type { IRoom, IUser, VideoConference } from '@rocket.chat/core-typings'; import { VideoConferenceStatus } from '@rocket.chat/core-typings'; import { Rooms, Subscriptions } from '@rocket.chat/models'; +import { VideoConf } from '@rocket.chat/core-services'; import { onLicense } from '../../app/license/server'; import { videoConfTypes } from '../../../server/lib/videoConfTypes'; import { addSettings } from '../settings/video-conference'; import { callbacks } from '../../../lib/callbacks'; -import { VideoConf } from '../../../server/sdk'; Meteor.startup(() => onLicense('videoconference-enterprise', () => { diff --git a/apps/meteor/ee/server/lib/ldap/Manager.ts b/apps/meteor/ee/server/lib/ldap/Manager.ts index 716ce921baf..23eacc35894 100644 --- a/apps/meteor/ee/server/lib/ldap/Manager.ts +++ b/apps/meteor/ee/server/lib/ldap/Manager.ts @@ -1,6 +1,7 @@ import type ldapjs from 'ldapjs'; 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 { Team } from '@rocket.chat/core-services'; import type { ImporterAfterImportCallback } from '../../../../app/importer/server/definitions/IConversionCallbacks'; import { settings } from '../../../../app/settings/server'; @@ -11,7 +12,6 @@ import { LDAPManager } from '../../../../server/lib/ldap/Manager'; import { logger, searchLogger, mapLogger } from '../../../../server/lib/ldap/Logger'; import { addUserToRoom, removeUserFromRoom, createRoom } from '../../../../app/lib/server/functions'; import { syncUserRoles } from '../syncUserRoles'; -import { Team } from '../../../../server/sdk'; import { ensureArray } from '../../../../lib/utils/arrayUtils'; import { copyCustomFieldsLDAP } from './copyCustomFieldsLDAP'; diff --git a/apps/meteor/ee/server/lib/syncUserRoles.ts b/apps/meteor/ee/server/lib/syncUserRoles.ts index 9d637a7848e..8779bf8fdc7 100644 --- a/apps/meteor/ee/server/lib/syncUserRoles.ts +++ b/apps/meteor/ee/server/lib/syncUserRoles.ts @@ -1,8 +1,8 @@ import type { IUser, IRole, AtLeast } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { settings } from '../../../app/settings/server'; -import { api } from '../../../server/sdk/api'; import { addUserRolesAsync } from '../../../server/lib/roles/addUserRoles'; import { removeUserFromRolesAsync } from '../../../server/lib/roles/removeUserFromRoles'; import { canAddNewUser } from '../../app/license/server/license'; diff --git a/apps/meteor/ee/server/local-services/ldap/service.ts b/apps/meteor/ee/server/local-services/ldap/service.ts index 8cdd2e5463c..4fb5a18e502 100644 --- a/apps/meteor/ee/server/local-services/ldap/service.ts +++ b/apps/meteor/ee/server/local-services/ldap/service.ts @@ -1,6 +1,7 @@ -import { LDAPEEManager } from '../../lib/ldap/Manager'; +import { ServiceClassInternal } from '@rocket.chat/core-services'; + import type { ILDAPEEService } from '../../sdk/types/ILDAPEEService'; -import { ServiceClassInternal } from '../../../../server/sdk/types/ServiceClass'; +import { LDAPEEManager } from '../../lib/ldap/Manager'; export class LDAPEEService extends ServiceClassInternal implements ILDAPEEService { protected name = 'ldap-enterprise'; diff --git a/apps/meteor/ee/server/requestSeatsRoute.ts b/apps/meteor/ee/server/requestSeatsRoute.ts index 69db2143bbd..1eac0db9c30 100644 --- a/apps/meteor/ee/server/requestSeatsRoute.ts +++ b/apps/meteor/ee/server/requestSeatsRoute.ts @@ -2,9 +2,9 @@ import type { IncomingMessage, ServerResponse } from 'http'; import { Meteor } from 'meteor/meteor'; import { WebApp } from 'meteor/webapp'; +import { Analytics } from '@rocket.chat/core-services'; import { getSeatsRequestLink } from '../app/license/server/getSeatsRequestLink'; -import { Analytics } from '../../server/sdk'; Meteor.startup(() => { WebApp.connectHandlers.use( diff --git a/apps/meteor/ee/server/sdk/index.ts b/apps/meteor/ee/server/sdk/index.ts index bff3a66f12b..0a463a49884 100644 --- a/apps/meteor/ee/server/sdk/index.ts +++ b/apps/meteor/ee/server/sdk/index.ts @@ -1,4 +1,5 @@ +import { proxifyWithWait } from '@rocket.chat/core-services'; + import type { ILDAPEEService } from './types/ILDAPEEService'; -import { proxifyWithWait } from '../../../server/sdk/lib/proxify'; export const LDAPEE = proxifyWithWait<ILDAPEEService>('ldap-enterprise'); diff --git a/apps/meteor/ee/server/services/Dockerfile b/apps/meteor/ee/server/services/Dockerfile index 62641d57abe..e1dbd9825b6 100644 --- a/apps/meteor/ee/server/services/Dockerfile +++ b/apps/meteor/ee/server/services/Dockerfile @@ -11,6 +11,7 @@ COPY ./.yarnrc.yml . COPY ./.yarn/plugins .yarn/plugins COPY ./.yarn/releases .yarn/releases +COPY ./packages/core-services packages/core-services COPY ./packages/core-typings packages/core-typings COPY ./packages/eslint-config packages/eslint-config COPY ./packages/rest-typings packages/rest-typings @@ -32,6 +33,9 @@ ARG SERVICE WORKDIR /app +COPY --from=build /app/packages/core-services/package.json /app/packages/core-services/package.json +COPY --from=build /app/packages/core-services/dist /app/packages/core-services/dist + COPY --from=build /app/packages/core-typings/package.json /app/packages/core-typings/package.json COPY --from=build /app/packages/core-typings/dist /app/packages/core-typings/dist diff --git a/apps/meteor/ee/server/services/ecdh-proxy/ECDHProxy.ts b/apps/meteor/ee/server/services/ecdh-proxy/ECDHProxy.ts index b29a82ad7c9..7a065d3d00c 100644 --- a/apps/meteor/ee/server/services/ecdh-proxy/ECDHProxy.ts +++ b/apps/meteor/ee/server/services/ecdh-proxy/ECDHProxy.ts @@ -1,4 +1,4 @@ -import { ServiceClass } from '../../../../server/sdk/types/ServiceClass'; +import { ServiceClass } from '@rocket.chat/core-services'; import './lib/server'; diff --git a/apps/meteor/ee/server/services/ecdh-proxy/service.ts b/apps/meteor/ee/server/services/ecdh-proxy/service.ts index 23533d0d6fe..7ef3e8d26dc 100755 --- a/apps/meteor/ee/server/services/ecdh-proxy/service.ts +++ b/apps/meteor/ee/server/services/ecdh-proxy/service.ts @@ -1,6 +1,7 @@ import '../../startup/broker'; -import { api } from '../../../../server/sdk/api'; +import { api } from '@rocket.chat/core-services'; + import { ECDHProxy } from './ECDHProxy'; api.registerService(new ECDHProxy()); diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json index 56ce9f5c2b5..e8c248e13b5 100644 --- a/apps/meteor/ee/server/services/package.json +++ b/apps/meteor/ee/server/services/package.json @@ -19,6 +19,7 @@ "license": "MIT", "dependencies": { "@rocket.chat/apps-engine": "^1.32.0", + "@rocket.chat/core-services": "workspace:^", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/emitter": "next", "@rocket.chat/message-parser": "next", diff --git a/apps/meteor/ee/server/startup/broker.ts b/apps/meteor/ee/server/startup/broker.ts index e435d143cec..4d841c425b5 100644 --- a/apps/meteor/ee/server/startup/broker.ts +++ b/apps/meteor/ee/server/startup/broker.ts @@ -1,8 +1,8 @@ import EJSON from 'ejson'; import { Errors, Serializers, ServiceBroker } from 'moleculer'; import { pino } from 'pino'; +import { isMeteorError, MeteorError } from '@rocket.chat/core-services'; -import { isMeteorError, MeteorError } from '../../../server/sdk/errors'; import { NetworkBroker } from '../NetworkBroker'; const { diff --git a/apps/meteor/ee/server/startup/index.ts b/apps/meteor/ee/server/startup/index.ts index 2cbfa70443d..4610795884a 100644 --- a/apps/meteor/ee/server/startup/index.ts +++ b/apps/meteor/ee/server/startup/index.ts @@ -3,7 +3,8 @@ import './engagementDashboard'; import './seatsCap'; import './services'; import './upsell'; -import { api } from '../../../server/sdk/api'; +import { api } from '@rocket.chat/core-services'; + import { isRunningMs } from '../../../server/lib/isRunningMs'; // only starts network broker if running in micro services mode diff --git a/apps/meteor/ee/server/startup/services.ts b/apps/meteor/ee/server/startup/services.ts index a3294a943a4..37ecf9a21a9 100644 --- a/apps/meteor/ee/server/startup/services.ts +++ b/apps/meteor/ee/server/startup/services.ts @@ -1,4 +1,5 @@ -import { api } from '../../../server/sdk/api'; +import { api } from '@rocket.chat/core-services'; + import { EnterpriseSettings } from '../../app/settings/server/settings.internalService'; import { LDAPEEService } from '../local-services/ldap/service'; import { LicenseService } from '../../app/license/server/license.internalService'; diff --git a/apps/meteor/package.json b/apps/meteor/package.json index ecc9a09b6c8..b40da4cac3f 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -209,6 +209,7 @@ "@rocket.chat/api-client": "workspace:^", "@rocket.chat/apps-engine": "1.36.0", "@rocket.chat/cas-validate": "workspace:^", + "@rocket.chat/core-services": "workspace:^", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/css-in-js": "next", "@rocket.chat/emitter": "next", diff --git a/apps/meteor/server/configuration/ldap.ts b/apps/meteor/server/configuration/ldap.ts index 2d88331cad8..46a57613e9f 100644 --- a/apps/meteor/server/configuration/ldap.ts +++ b/apps/meteor/server/configuration/ldap.ts @@ -1,7 +1,7 @@ import { Accounts } from 'meteor/accounts-base'; +import { LDAP } from '@rocket.chat/core-services'; import { callbacks } from '../../lib/callbacks'; -import { LDAP } from '../sdk'; import { settings } from '../../app/settings/server'; // Register ldap login handler diff --git a/apps/meteor/server/cron/nps.js b/apps/meteor/server/cron/nps.js index 20e1cc7f95c..c6b66b0dac5 100644 --- a/apps/meteor/server/cron/nps.js +++ b/apps/meteor/server/cron/nps.js @@ -1,5 +1,6 @@ +import { NPS } from '@rocket.chat/core-services'; + import { settings } from '../../app/settings/server'; -import { NPS } from '../sdk'; function runNPS() { // if NPS is disabled close any pending scheduled survey diff --git a/apps/meteor/server/cron/videoConferences.ts b/apps/meteor/server/cron/videoConferences.ts index 2d77c4c6fa6..da62aa28841 100644 --- a/apps/meteor/server/cron/videoConferences.ts +++ b/apps/meteor/server/cron/videoConferences.ts @@ -2,8 +2,7 @@ import type { SyncedCron } from 'meteor/littledata:synced-cron'; 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'; +import { VideoConf } from '@rocket.chat/core-services'; // 24 hours const VIDEO_CONFERENCE_TTL = 24 * 60 * 60 * 1000; diff --git a/apps/meteor/server/lib/roles/addUserRoles.ts b/apps/meteor/server/lib/roles/addUserRoles.ts index d12764e5a05..ea687ad113c 100644 --- a/apps/meteor/server/lib/roles/addUserRoles.ts +++ b/apps/meteor/server/lib/roles/addUserRoles.ts @@ -1,8 +1,8 @@ import type { IRole, IUser, IRoom } from '@rocket.chat/core-typings'; import { Users, Roles } from '@rocket.chat/models'; +import { MeteorError } from '@rocket.chat/core-services'; import { validateRoleList } from './validateRoleList'; -import { MeteorError } from '../../sdk/errors'; export const addUserRolesAsync = async (userId: IUser['_id'], roleIds: IRole['_id'][], scope?: IRoom['_id']): Promise<boolean> => { if (!userId || !roleIds?.length) { diff --git a/apps/meteor/server/lib/roles/insertRole.ts b/apps/meteor/server/lib/roles/insertRole.ts index 500dab3e153..e3cb95fb05c 100644 --- a/apps/meteor/server/lib/roles/insertRole.ts +++ b/apps/meteor/server/lib/roles/insertRole.ts @@ -1,9 +1,8 @@ -import type { IRole } from '@rocket.chat/core-typings'; +import { api, MeteorError } from '@rocket.chat/core-services'; import { Roles } from '@rocket.chat/models'; +import type { IRole } from '@rocket.chat/core-typings'; -import { MeteorError } from '../../sdk/errors'; import { isValidRoleScope } from '../../../lib/roles/isValidRoleScope'; -import { api } from '../../sdk/api'; type InsertRoleOptions = { broadcastUpdate?: boolean; diff --git a/apps/meteor/server/lib/roles/removeUserFromRoles.ts b/apps/meteor/server/lib/roles/removeUserFromRoles.ts index bdf75fd897a..4df55b42532 100644 --- a/apps/meteor/server/lib/roles/removeUserFromRoles.ts +++ b/apps/meteor/server/lib/roles/removeUserFromRoles.ts @@ -1,8 +1,8 @@ import type { IRole, IUser, IRoom } from '@rocket.chat/core-typings'; import { Users, Roles } from '@rocket.chat/models'; +import { MeteorError } from '@rocket.chat/core-services'; import { validateRoleList } from './validateRoleList'; -import { MeteorError } from '../../sdk/errors'; export const removeUserFromRolesAsync = async (userId: IUser['_id'], roleIds: IRole['_id'][], scope?: IRoom['_id']): Promise<boolean> => { if (!userId || !roleIds) { diff --git a/apps/meteor/server/lib/roles/updateRole.ts b/apps/meteor/server/lib/roles/updateRole.ts index b69f54f873d..694a954a7c1 100644 --- a/apps/meteor/server/lib/roles/updateRole.ts +++ b/apps/meteor/server/lib/roles/updateRole.ts @@ -1,9 +1,8 @@ import type { IRole } from '@rocket.chat/core-typings'; import { Roles } from '@rocket.chat/models'; +import { api, MeteorError } from '@rocket.chat/core-services'; -import { MeteorError } from '../../sdk/errors'; import { isValidRoleScope } from '../../../lib/roles/isValidRoleScope'; -import { api } from '../../sdk/api'; type UpdateRoleOptions = { broadcastUpdate?: boolean; diff --git a/apps/meteor/server/methods/addRoomLeader.js b/apps/meteor/server/methods/addRoomLeader.js index 979b9df51d9..9560cc0d02c 100644 --- a/apps/meteor/server/methods/addRoomLeader.js +++ b/apps/meteor/server/methods/addRoomLeader.js @@ -1,11 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { check } from 'meteor/check'; +import { api, Team } from '@rocket.chat/core-services'; import { hasPermission } from '../../app/authorization'; import { Users, Subscriptions, Messages } from '../../app/models/server'; import { settings } from '../../app/settings/server'; -import { api } from '../sdk/api'; -import { Team } from '../sdk'; Meteor.methods({ addRoomLeader(rid, userId) { diff --git a/apps/meteor/server/methods/addRoomModerator.js b/apps/meteor/server/methods/addRoomModerator.js index 3feadda06eb..a4f136f7e4c 100644 --- a/apps/meteor/server/methods/addRoomModerator.js +++ b/apps/meteor/server/methods/addRoomModerator.js @@ -1,11 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { check } from 'meteor/check'; +import { api, Team } from '@rocket.chat/core-services'; import { hasPermission } from '../../app/authorization'; import { Users, Subscriptions, Messages } from '../../app/models/server'; import { settings } from '../../app/settings/server'; -import { api } from '../sdk/api'; -import { Team } from '../sdk'; Meteor.methods({ addRoomModerator(rid, userId) { diff --git a/apps/meteor/server/methods/addRoomOwner.js b/apps/meteor/server/methods/addRoomOwner.js index 01af5a76858..665dbd6ce0f 100644 --- a/apps/meteor/server/methods/addRoomOwner.js +++ b/apps/meteor/server/methods/addRoomOwner.js @@ -1,11 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { check } from 'meteor/check'; +import { api, Team } from '@rocket.chat/core-services'; import { hasPermission } from '../../app/authorization'; import { Users, Subscriptions, Messages } from '../../app/models/server'; -import { Team } from '../sdk'; import { settings } from '../../app/settings/server'; -import { api } from '../sdk/api'; Meteor.methods({ addRoomOwner(rid, userId) { diff --git a/apps/meteor/server/methods/browseChannels.js b/apps/meteor/server/methods/browseChannels.js index 747ce3df9a6..0770bc8b2e5 100644 --- a/apps/meteor/server/methods/browseChannels.js +++ b/apps/meteor/server/methods/browseChannels.js @@ -4,6 +4,7 @@ import s from 'underscore.string'; import mem from 'mem'; import { escapeRegExp } from '@rocket.chat/string-helpers'; import { Rooms, Users } from '@rocket.chat/models'; +import { Team } from '@rocket.chat/core-services'; import { hasPermission } from '../../app/authorization/server'; import { Subscriptions } from '../../app/models/server'; @@ -11,7 +12,6 @@ import { settings } from '../../app/settings/server'; import { getFederationDomain } from '../../app/federation/server/lib/getFederationDomain'; import { isFederationEnabled } from '../../app/federation/server/lib/isFederationEnabled'; import { federationSearchUsers } from '../../app/federation/server/handler'; -import { Team } from '../sdk'; const sortChannels = function (field, direction) { switch (field) { diff --git a/apps/meteor/server/methods/eraseRoom.ts b/apps/meteor/server/methods/eraseRoom.ts index 7610f937a62..4474ab750f3 100644 --- a/apps/meteor/server/methods/eraseRoom.ts +++ b/apps/meteor/server/methods/eraseRoom.ts @@ -1,5 +1,6 @@ import { Meteor } from 'meteor/meteor'; import { check } from 'meteor/check'; +import { Team } from '@rocket.chat/core-services'; import { methodDeprecationLogger } from '../../app/lib/server/lib/deprecationWarningLogger'; import { deleteRoom } from '../../app/lib/server/functions/deleteRoom'; @@ -7,7 +8,6 @@ import { hasPermission } from '../../app/authorization/server'; import { Rooms, Messages } from '../../app/models/server'; import { Apps } from '../../app/apps/server'; import { roomCoordinator } from '../lib/rooms/roomCoordinator'; -import { Team } from '../sdk'; export async function eraseRoom(rid: string, uid: string): Promise<void> { const room = Rooms.findOneById(rid); diff --git a/apps/meteor/server/methods/removeRoomLeader.js b/apps/meteor/server/methods/removeRoomLeader.js index 7fef6f36b11..6504e408f15 100644 --- a/apps/meteor/server/methods/removeRoomLeader.js +++ b/apps/meteor/server/methods/removeRoomLeader.js @@ -1,11 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { check } from 'meteor/check'; +import { api, Team } from '@rocket.chat/core-services'; import { hasPermission } from '../../app/authorization'; import { Users, Subscriptions, Messages } from '../../app/models/server'; import { settings } from '../../app/settings/server'; -import { api } from '../sdk/api'; -import { Team } from '../sdk'; Meteor.methods({ removeRoomLeader(rid, userId) { diff --git a/apps/meteor/server/methods/removeRoomModerator.js b/apps/meteor/server/methods/removeRoomModerator.js index 7312c6f2e10..8382b27185e 100644 --- a/apps/meteor/server/methods/removeRoomModerator.js +++ b/apps/meteor/server/methods/removeRoomModerator.js @@ -1,11 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { check } from 'meteor/check'; +import { api, Team } from '@rocket.chat/core-services'; import { hasPermission } from '../../app/authorization'; import { Users, Subscriptions, Messages } from '../../app/models/server'; import { settings } from '../../app/settings/server'; -import { api } from '../sdk/api'; -import { Team } from '../sdk'; Meteor.methods({ removeRoomModerator(rid, userId) { diff --git a/apps/meteor/server/methods/removeRoomOwner.ts b/apps/meteor/server/methods/removeRoomOwner.ts index 37a1aeac4e8..0cd9b546d81 100644 --- a/apps/meteor/server/methods/removeRoomOwner.ts +++ b/apps/meteor/server/methods/removeRoomOwner.ts @@ -1,11 +1,10 @@ import { Meteor } from 'meteor/meteor'; import { check } from 'meteor/check'; +import { api, Team } from '@rocket.chat/core-services'; import { hasPermission, getUsersInRole } from '../../app/authorization/server'; import { Users, Subscriptions, Messages } from '../../app/models/server'; import { settings } from '../../app/settings/server'; -import { api } from '../sdk/api'; -import { Team } from '../sdk'; Meteor.methods({ async removeRoomOwner(rid, userId) { diff --git a/apps/meteor/server/methods/removeUserFromRoom.ts b/apps/meteor/server/methods/removeUserFromRoom.ts index cada69ad136..31ad9a6473d 100644 --- a/apps/meteor/server/methods/removeUserFromRoom.ts +++ b/apps/meteor/server/methods/removeUserFromRoom.ts @@ -1,11 +1,11 @@ import { Meteor } from 'meteor/meteor'; import { Match, check } from 'meteor/check'; +import { Team } from '@rocket.chat/core-services'; import { hasPermission, hasRole, getUsersInRole } from '../../app/authorization/server'; import { removeUserFromRolesAsync } from '../lib/roles/removeUserFromRoles'; import { Users, Subscriptions, Rooms, Messages } from '../../app/models/server'; import { callbacks } from '../../lib/callbacks'; -import { Team } from '../sdk'; import { roomCoordinator } from '../lib/rooms/roomCoordinator'; import { RoomMemberActions } from '../../definition/IRoomTypeConfig'; diff --git a/apps/meteor/server/methods/resetAvatar.js b/apps/meteor/server/methods/resetAvatar.js index a57586a4d48..8ea1d815901 100644 --- a/apps/meteor/server/methods/resetAvatar.js +++ b/apps/meteor/server/methods/resetAvatar.js @@ -1,11 +1,11 @@ import { Meteor } from 'meteor/meteor'; import { DDPRateLimiter } from 'meteor/ddp-rate-limiter'; +import { api } from '@rocket.chat/core-services'; import { FileUpload } from '../../app/file-upload'; import { Users } from '../../app/models/server'; import { settings } from '../../app/settings/server'; import { hasPermission } from '../../app/authorization/server'; -import { api } from '../sdk/api'; Meteor.methods({ resetAvatar(userId) { diff --git a/apps/meteor/server/methods/userPresence.ts b/apps/meteor/server/methods/userPresence.ts index 1797dc839e2..716310b78d6 100644 --- a/apps/meteor/server/methods/userPresence.ts +++ b/apps/meteor/server/methods/userPresence.ts @@ -1,7 +1,6 @@ import { UserStatus } from '@rocket.chat/core-typings'; import { Meteor } from 'meteor/meteor'; - -import { Presence } from '../sdk'; +import { Presence } from '@rocket.chat/core-services'; Meteor.methods({ 'UserPresence:setDefaultStatus'(status): Promise<boolean> | undefined { diff --git a/apps/meteor/server/modules/core-apps/banner.module.ts b/apps/meteor/server/modules/core-apps/banner.module.ts index b5fec72162d..bc850fea207 100644 --- a/apps/meteor/server/modules/core-apps/banner.module.ts +++ b/apps/meteor/server/modules/core-apps/banner.module.ts @@ -1,5 +1,5 @@ -import type { IUiKitCoreApp } from '../../sdk/types/IUiKitCoreApp'; -import { Banner } from '../../sdk'; +import { Banner } from '@rocket.chat/core-services'; +import type { IUiKitCoreApp } from '@rocket.chat/core-services'; export class BannerModule implements IUiKitCoreApp { appId = 'banner-core'; diff --git a/apps/meteor/server/modules/core-apps/nps.module.ts b/apps/meteor/server/modules/core-apps/nps.module.ts index 2bc5eb601fe..68ebeffd97c 100644 --- a/apps/meteor/server/modules/core-apps/nps.module.ts +++ b/apps/meteor/server/modules/core-apps/nps.module.ts @@ -1,5 +1,6 @@ -import type { IUiKitCoreApp } from '../../sdk/types/IUiKitCoreApp'; -import { Banner, NPS } from '../../sdk'; +import type { IUiKitCoreApp } from '@rocket.chat/core-services'; +import { Banner, NPS } from '@rocket.chat/core-services'; + import { createModal } from './nps/createModal'; export class Nps implements IUiKitCoreApp { diff --git a/apps/meteor/server/modules/core-apps/videoconf.module.ts b/apps/meteor/server/modules/core-apps/videoconf.module.ts index cf8954e0795..f67616f17b6 100644 --- a/apps/meteor/server/modules/core-apps/videoconf.module.ts +++ b/apps/meteor/server/modules/core-apps/videoconf.module.ts @@ -1,7 +1,6 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; - -import type { IUiKitCoreApp } from '../../sdk/types/IUiKitCoreApp'; -import { VideoConf } from '../../sdk'; +import type { IUiKitCoreApp } from '@rocket.chat/core-services'; +import { VideoConf } from '@rocket.chat/core-services'; export class VideoConfModule implements IUiKitCoreApp { appId = 'videoconf-core'; diff --git a/apps/meteor/server/modules/listeners/listeners.module.ts b/apps/meteor/server/modules/listeners/listeners.module.ts index 0f546ac8d50..1209434b5f3 100644 --- a/apps/meteor/server/modules/listeners/listeners.module.ts +++ b/apps/meteor/server/modules/listeners/listeners.module.ts @@ -1,9 +1,9 @@ import { UserStatus, isSettingColor } from '@rocket.chat/core-typings'; import { parse } from '@rocket.chat/message-parser'; +import type { IServiceClass } from '@rocket.chat/core-services'; +import { EnterpriseSettings } from '@rocket.chat/core-services'; -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'; const isMessageParserDisabled = process.env.DISABLE_MESSAGE_PARSER === 'true'; @@ -209,6 +209,7 @@ export class ListenersModule { service.onEvent('watch.settings', async ({ clientAction, setting }): Promise<void> => { if (clientAction !== 'removed') { + // TODO check if setting is EE before calling this const result = await EnterpriseSettings.changeSettingValue(setting); if (result !== undefined && !(result instanceof Error)) { setting.value = result; diff --git a/apps/meteor/server/modules/notifications/notifications.module.ts b/apps/meteor/server/modules/notifications/notifications.module.ts index 92b5f90112c..e21a4d9a953 100644 --- a/apps/meteor/server/modules/notifications/notifications.module.ts +++ b/apps/meteor/server/modules/notifications/notifications.module.ts @@ -1,8 +1,8 @@ import type { IStreamer, IStreamerConstructor, IPublication } from 'meteor/rocketchat:streamer'; import type { ISubscription, IOmnichannelRoom, IUser } from '@rocket.chat/core-typings'; import { Rooms, Subscriptions, Users, Settings } from '@rocket.chat/models'; +import { Authorization, VideoConf } from '@rocket.chat/core-services'; -import { Authorization, VideoConf } from '../../sdk'; import { emit, StreamPresence } from '../../../app/notifications/server/lib/Presence'; import { SystemLogger } from '../../lib/logger/system'; import { streamDeprecationLogger } from '../../../app/lib/server/lib/deprecationWarningLogger'; diff --git a/apps/meteor/server/modules/streamer/streamer.module.ts b/apps/meteor/server/modules/streamer/streamer.module.ts index ea54a8ef672..bbd8a735383 100644 --- a/apps/meteor/server/modules/streamer/streamer.module.ts +++ b/apps/meteor/server/modules/streamer/streamer.module.ts @@ -1,8 +1,8 @@ import { EventEmitter } from 'eventemitter3'; import type { IPublication, Rule, Connection, DDPSubscription, IStreamer, IRules, TransformMessage } from 'meteor/rocketchat:streamer'; +import { MeteorError } from '@rocket.chat/core-services'; import { SystemLogger } from '../../lib/logger/system'; -import { MeteorError } from '../../sdk/errors'; class StreamerCentralClass extends EventEmitter { public instances: Record<string, Streamer> = {}; diff --git a/apps/meteor/server/modules/watchers/watchers.module.ts b/apps/meteor/server/modules/watchers/watchers.module.ts index c8390caddb7..de784340b2f 100644 --- a/apps/meteor/server/modules/watchers/watchers.module.ts +++ b/apps/meteor/server/modules/watchers/watchers.module.ts @@ -34,9 +34,9 @@ import { PbxEvents, Permissions, } from '@rocket.chat/models'; +import type { EventSignatures } from '@rocket.chat/core-services'; import { subscriptionFields, roomFields } from './publishFields'; -import type { EventSignatures } from '../../sdk/lib/Events'; import type { DatabaseWatcher } from '../../database/DatabaseWatcher'; type BroadcastCallback = <T extends keyof EventSignatures>(event: T, ...args: Parameters<EventSignatures[T]>) => Promise<void>; diff --git a/apps/meteor/server/sdk/api.ts b/apps/meteor/server/sdk/api.ts deleted file mode 100644 index e99fc6bfcc1..00000000000 --- a/apps/meteor/server/sdk/api.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { isRunningMs } from '../lib/isRunningMs'; -import { Api } from './lib/Api'; -import { LocalBroker } from './lib/LocalBroker'; - -export const api = new Api(); - -if (!isRunningMs()) { - api.setBroker(new LocalBroker()); - api.start(); -} diff --git a/apps/meteor/server/sdk/index.ts b/apps/meteor/server/sdk/index.ts deleted file mode 100644 index 6ffccfce083..00000000000 --- a/apps/meteor/server/sdk/index.ts +++ /dev/null @@ -1,50 +0,0 @@ -import type { IServiceContext } from './types/ServiceClass'; -import { proxify, proxifyWithWait } from './lib/proxify'; -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'; -import type { IUploadService } from './types/IUploadService'; - -// TODO think in a way to not have to pass the service name to proxify here as well -export const Authorization = proxifyWithWait<IAuthorization>('authorization'); -export const Presence = proxifyWithWait<IPresence>('presence'); -export const Account = proxifyWithWait<IAccount>('accounts'); -export const License = proxifyWithWait<ILicense>('license'); -export const MeteorService = proxifyWithWait<IMeteor>('meteor'); -export const Banner = proxifyWithWait<IBannerService>('banner'); -export const UiKitCoreApp = proxifyWithWait<IUiKitCoreAppService>('uikit-core-app'); -export const NPS = proxifyWithWait<INPSService>('nps'); -export const Team = proxifyWithWait<ITeamService>('team'); -export const Room = proxifyWithWait<IRoomService>('room'); -export const Media = proxifyWithWait<IMediaService>('media'); -export const Voip = proxifyWithWait<IVoipService>('voip'); -export const LivechatVoip = proxifyWithWait<IOmnichannelVoipService>('omnichannel-voip'); -export const Analytics = proxifyWithWait<IAnalyticsService>('analytics'); -export const LDAP = proxifyWithWait<ILDAPService>('ldap'); -export const SAUMonitor = proxifyWithWait<ISAUMonitorService>('sau-monitor'); -export const DeviceManagement = proxifyWithWait<IDeviceManagementService>('device-management'); -export const VideoConf = proxifyWithWait<IVideoConfService>('video-conference'); -export const Upload = proxifyWithWait<IUploadService>('upload'); -// Calls without wait. Means that the service is optional and the result may be an error -// of service/method not available -export const EnterpriseSettings = proxify<IEnterpriseSettings>('ee-settings'); - -// TODO Evalute again using AsyncContextStore instead of FibersContextStore in a future Meteor release (after 2.5) -export const asyncLocalStorage = new FibersContextStore<IServiceContext>(); diff --git a/apps/meteor/server/services/analytics/service.ts b/apps/meteor/server/services/analytics/service.ts index 06e7b63ee46..3feb520a550 100644 --- a/apps/meteor/server/services/analytics/service.ts +++ b/apps/meteor/server/services/analytics/service.ts @@ -1,8 +1,7 @@ import type { IAnalyticsSeatRequest } from '@rocket.chat/core-typings'; import { Analytics } from '@rocket.chat/models'; - -import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import type { IAnalyticsService } from '../../sdk/types/IAnalyticsService'; +import { ServiceClassInternal } from '@rocket.chat/core-services'; +import type { IAnalyticsService } from '@rocket.chat/core-services'; export class AnalyticsService extends ServiceClassInternal implements IAnalyticsService { protected name = 'analytics'; diff --git a/apps/meteor/server/services/apps-engine/service.ts b/apps/meteor/server/services/apps-engine/service.ts index f8485299e9a..37c1abf74a7 100644 --- a/apps/meteor/server/services/apps-engine/service.ts +++ b/apps/meteor/server/services/apps-engine/service.ts @@ -1,5 +1,6 @@ -import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import type { IAppsEngineService } from '../../sdk/types/IAppsEngineService'; +import { ServiceClassInternal } from '@rocket.chat/core-services'; +import type { IAppsEngineService } from '@rocket.chat/core-services'; + import { Apps, AppEvents } from '../../../app/apps/server/orchestrator'; export class AppsEngineService extends ServiceClassInternal implements IAppsEngineService { diff --git a/apps/meteor/server/services/authorization/canAccessRoom.ts b/apps/meteor/server/services/authorization/canAccessRoom.ts index d2876ac7dc1..b96cae69a20 100644 --- a/apps/meteor/server/services/authorization/canAccessRoom.ts +++ b/apps/meteor/server/services/authorization/canAccessRoom.ts @@ -1,9 +1,9 @@ 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 '@rocket.chat/core-services'; +import type { RoomAccessValidator } from '@rocket.chat/core-services'; -import { Authorization } from '../../sdk'; -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 e9a0ae3bd45..e31dd3c009c 100644 --- a/apps/meteor/server/services/authorization/canAccessRoomLivechat.ts +++ b/apps/meteor/server/services/authorization/canAccessRoomLivechat.ts @@ -1,9 +1,7 @@ import type { IOmnichannelRoom } from '@rocket.chat/core-typings'; import { Rooms } from '@rocket.chat/models'; - -import type { IAuthorizationLivechat } from '../../sdk/types/IAuthorizationLivechat'; -import { proxifyWithWait } from '../../sdk/lib/proxify'; -import type { RoomAccessValidator } from '../../sdk/types/IAuthorization'; +import type { IAuthorizationLivechat, RoomAccessValidator } from '@rocket.chat/core-services'; +import { proxifyWithWait } from '@rocket.chat/core-services'; export const AuthorizationLivechat = proxifyWithWait<IAuthorizationLivechat>('authorization-livechat'); diff --git a/apps/meteor/server/services/authorization/canAccessRoomVoip.ts b/apps/meteor/server/services/authorization/canAccessRoomVoip.ts index fc2ea3aa54b..e4c9515a06c 100644 --- a/apps/meteor/server/services/authorization/canAccessRoomVoip.ts +++ b/apps/meteor/server/services/authorization/canAccessRoomVoip.ts @@ -1,8 +1,6 @@ import { Rooms } from '@rocket.chat/models'; - -import type { IAuthorizationVoip } from '../../sdk/types/IAuthorizationVoip'; -import { proxifyWithWait } from '../../sdk/lib/proxify'; -import type { RoomAccessValidator } from '../../sdk/types/IAuthorization'; +import type { IAuthorizationVoip, RoomAccessValidator } from '@rocket.chat/core-services'; +import { proxifyWithWait } from '@rocket.chat/core-services'; export const AuthorizationVoip = proxifyWithWait<IAuthorizationVoip>('authorization-livechat'); diff --git a/apps/meteor/server/services/authorization/service.ts b/apps/meteor/server/services/authorization/service.ts index 57b762a8d1d..223ca0e0852 100644 --- a/apps/meteor/server/services/authorization/service.ts +++ b/apps/meteor/server/services/authorization/service.ts @@ -1,12 +1,11 @@ import mem from 'mem'; import type { IUser, IRole, IRoom, ISubscription } from '@rocket.chat/core-typings'; import { Subscriptions, Rooms, Users, Roles, Permissions } from '@rocket.chat/models'; +import type { IAuthorization, RoomAccessValidator } from '@rocket.chat/core-services'; +import { License, ServiceClass } from '@rocket.chat/core-services'; -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'; -import { License } from '../../sdk'; import './canAccessRoomLivechat'; diff --git a/apps/meteor/server/services/banner/service.ts b/apps/meteor/server/services/banner/service.ts index d45933376d0..36eb388ccae 100644 --- a/apps/meteor/server/services/banner/service.ts +++ b/apps/meteor/server/services/banner/service.ts @@ -1,10 +1,8 @@ import { v4 as uuidv4 } from 'uuid'; 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 type { IBannerService } from '../../sdk/types/IBannerService'; -import { api } from '../../sdk/api'; +import { api, ServiceClassInternal } from '@rocket.chat/core-services'; +import type { IBannerService } from '@rocket.chat/core-services'; export class BannerService extends ServiceClassInternal implements IBannerService { protected name = 'banner'; diff --git a/apps/meteor/server/services/device-management/service.ts b/apps/meteor/server/services/device-management/service.ts index 1b620ce2e69..75f36390889 100644 --- a/apps/meteor/server/services/device-management/service.ts +++ b/apps/meteor/server/services/device-management/service.ts @@ -1,6 +1,7 @@ -import type { IDeviceManagementService } from '../../sdk/types/IDeviceManagementService'; +import type { IDeviceManagementService } from '@rocket.chat/core-services'; +import { ServiceClassInternal } from '@rocket.chat/core-services'; + import { deviceManagementEvents } from './events'; -import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; export class DeviceManagementService extends ServiceClassInternal implements IDeviceManagementService { protected name = 'device-management'; diff --git a/apps/meteor/server/services/federation/service.ts b/apps/meteor/server/services/federation/service.ts index 5601e3efc14..151a567753f 100644 --- a/apps/meteor/server/services/federation/service.ts +++ b/apps/meteor/server/services/federation/service.ts @@ -1,5 +1,6 @@ -import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import type { IFederationService } from '../../sdk/types/IFederationService'; +import { ServiceClassInternal } from '@rocket.chat/core-services'; +import type { IFederationService } from '@rocket.chat/core-services'; + import { federationUserServiceSender } from '../../../app/federation-v2/server'; import { settings } from '../../../app/settings/server'; diff --git a/apps/meteor/server/services/image/service.ts b/apps/meteor/server/services/image/service.ts index e5fd9682f76..ae88e53d0e1 100644 --- a/apps/meteor/server/services/image/service.ts +++ b/apps/meteor/server/services/image/service.ts @@ -4,9 +4,8 @@ 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 type { IMediaService, ResizeResult } from '../../sdk/types/IMediaService'; +import { ServiceClassInternal } from '@rocket.chat/core-services'; +import type { IMediaService, ResizeResult } from '@rocket.chat/core-services'; /* 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 b420c25b840..f730a9aeaa6 100644 --- a/apps/meteor/server/services/ldap/service.ts +++ b/apps/meteor/server/services/ldap/service.ts @@ -1,8 +1,8 @@ import type { LDAPLoginResult } from '@rocket.chat/core-typings'; +import type { ILDAPService } from '@rocket.chat/core-services'; +import { ServiceClassInternal } from '@rocket.chat/core-services'; import { LDAPManager } from '../../lib/ldap/Manager'; -import type { ILDAPService } from '../../sdk/types/ILDAPService'; -import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; export class LDAPService extends ServiceClassInternal implements ILDAPService { protected name = 'ldap'; diff --git a/apps/meteor/server/services/meteor/service.ts b/apps/meteor/server/services/meteor/service.ts index ed5d53497ab..cbc8bb1f3da 100644 --- a/apps/meteor/server/services/meteor/service.ts +++ b/apps/meteor/server/services/meteor/service.ts @@ -3,15 +3,13 @@ import { ServiceConfiguration } from 'meteor/service-configuration'; import { MongoInternals } from 'meteor/mongo'; import { Users } from '@rocket.chat/models'; import type { ILivechatAgent } from '@rocket.chat/core-typings'; +import { api, ServiceClassInternal } from '@rocket.chat/core-services'; +import type { AutoUpdateRecord, IMeteor } from '@rocket.chat/core-services'; import { metrics } from '../../../app/metrics'; -import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -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'; import { setValue, updateValue } from '../../../app/settings/server/raw'; -import { RoutingManager } from '../../../app/livechat/server/lib/RoutingManager'; import { onlineAgents, monitorAgents } from '../../../app/livechat/server/lib/stream/agentStatus'; import { matrixBroadCastActions } from '../../stream/streamBroadcast'; import { triggerHandler } from '../../../app/integrations/server/lib/triggerHandler'; @@ -19,7 +17,6 @@ import { ListenersModule } from '../../modules/listeners/listeners.module'; import notifications from '../../../app/notifications/server/lib/Notifications'; import { configureEmailInboxes } from '../../features/EmailInbox/EmailInbox'; import { use } from '../../../app/settings/server/Middleware'; -import type { IRoutingManagerConfig } from '../../../definition/IRoutingManagerConfig'; type Callbacks = { added(id: string, record: object): void; @@ -292,11 +289,4 @@ export class MeteorService extends ServiceClassInternal implements IMeteor { async notifyGuestStatusChanged(token: string, status: string): Promise<void> { return Livechat.notifyGuestStatusChanged(token, status); } - - getRoutingManagerConfig(): IRoutingManagerConfig { - // return false if called before routing method is set - // this will cause that oplog events received on early stages of server startup - // won't be fired (at least, inquiry events) - return RoutingManager.isMethodSet() && RoutingManager.getConfig(); - } } diff --git a/apps/meteor/server/services/nps/getAndCreateNpsSurvey.ts b/apps/meteor/server/services/nps/getAndCreateNpsSurvey.ts index c62e30c205d..9c0ca13a3e4 100644 --- a/apps/meteor/server/services/nps/getAndCreateNpsSurvey.ts +++ b/apps/meteor/server/services/nps/getAndCreateNpsSurvey.ts @@ -1,10 +1,10 @@ import { HTTP } from 'meteor/http'; import { Meteor } from 'meteor/meteor'; import type { UiKitBannerPayload, IBanner, BannerPlatform } from '@rocket.chat/core-typings'; +import { Banner } from '@rocket.chat/core-services'; import { settings } from '../../../app/settings/server'; import { getWorkspaceAccessToken } from '../../../app/cloud/server'; -import { Banner } from '../../sdk'; import { SystemLogger } from '../../lib/logger/system'; type NpsSurveyData = { diff --git a/apps/meteor/server/services/nps/service.ts b/apps/meteor/server/services/nps/service.ts index 4c0110b65b9..dcbe235a323 100644 --- a/apps/meteor/server/services/nps/service.ts +++ b/apps/meteor/server/services/nps/service.ts @@ -3,10 +3,9 @@ import { createHash } from 'crypto'; 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 type { INPSService, NPSVotePayload, NPSCreatePayload } from '@rocket.chat/core-services'; +import { ServiceClassInternal, Banner, NPS } from '@rocket.chat/core-services'; -import type { INPSService, NPSVotePayload, NPSCreatePayload } from '../../sdk/types/INPSService'; -import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import { Banner, NPS } from '../../sdk'; import { sendNpsResults } from './sendNpsResults'; import { getBannerForAdmins, notifyAdmins } from './notification'; import { SystemLogger } from '../../lib/logger/system'; diff --git a/apps/meteor/server/services/omnichannel-voip/internalTypes.ts b/apps/meteor/server/services/omnichannel-voip/internalTypes.ts index 704af7bd7a6..6a42321a980 100644 --- a/apps/meteor/server/services/omnichannel-voip/internalTypes.ts +++ b/apps/meteor/server/services/omnichannel-voip/internalTypes.ts @@ -1,22 +1,3 @@ -import type { IVoipRoom, IMessage } from '@rocket.chat/core-typings'; -import type { FindOptions } from 'mongodb'; - -export type FindVoipRoomsParams = { - agents?: string[]; - open?: boolean; - createdAt?: { start?: string; end?: string }; - closedAt?: { start?: string; end?: string }; - tags?: string[]; - queue?: string; - visitorId?: string; - options?: { - sort?: FindOptions<IVoipRoom>['sort']; - count?: number; - fields?: Record<string, unknown>; - offset?: number; - }; - direction?: IVoipRoom['direction']; - roomName?: string; -}; +import type { IMessage } from '@rocket.chat/core-typings'; export type IOmniRoomClosingMessage = Pick<IMessage, 't' | 'groupable'> & Partial<Pick<IMessage, 'msg'>>; diff --git a/apps/meteor/server/services/omnichannel-voip/service.ts b/apps/meteor/server/services/omnichannel-voip/service.ts index 19de573d24a..1d4b58a33fd 100644 --- a/apps/meteor/server/services/omnichannel-voip/service.ts +++ b/apps/meteor/server/services/omnichannel-voip/service.ts @@ -14,14 +14,12 @@ import type { 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 type { IOmnichannelVoipService, FindVoipRoomsParams } from '@rocket.chat/core-services'; +import { api, ServiceClassInternal, Voip } from '@rocket.chat/core-services'; -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 type { FindVoipRoomsParams, IOmniRoomClosingMessage } from './internalTypes'; -import { api } from '../../sdk/api'; +import type { IOmniRoomClosingMessage } from './internalTypes'; export class OmnichannelVoipService extends ServiceClassInternal implements IOmnichannelVoipService { protected name = 'omnichannel-voip'; diff --git a/apps/meteor/server/services/omnichannel/service.ts b/apps/meteor/server/services/omnichannel/service.ts index bf0063446f8..a0208c29461 100644 --- a/apps/meteor/server/services/omnichannel/service.ts +++ b/apps/meteor/server/services/omnichannel/service.ts @@ -1,5 +1,6 @@ -import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import type { IOmnichannelService } from '../../sdk/types/IOmnichannelService'; +import { ServiceClassInternal } from '@rocket.chat/core-services'; +import type { IOmnichannelService } from '@rocket.chat/core-services'; + import { Livechat } from '../../../app/livechat/server'; export class OmnichannelService extends ServiceClassInternal implements IOmnichannelService { diff --git a/apps/meteor/server/services/push/service.ts b/apps/meteor/server/services/push/service.ts index c123d2a4b94..87f96a3aae2 100644 --- a/apps/meteor/server/services/push/service.ts +++ b/apps/meteor/server/services/push/service.ts @@ -1,7 +1,6 @@ import { PushToken } from '@rocket.chat/models'; - -import type { IPushService } from '../../sdk/types/IPushService'; -import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; +import type { IPushService } from '@rocket.chat/core-services'; +import { ServiceClassInternal } from '@rocket.chat/core-services'; export class PushService extends ServiceClassInternal implements IPushService { protected name = 'push'; diff --git a/apps/meteor/server/services/room/service.ts b/apps/meteor/server/services/room/service.ts index b1c880d7f79..4bf24606be4 100644 --- a/apps/meteor/server/services/room/service.ts +++ b/apps/meteor/server/services/room/service.ts @@ -1,9 +1,8 @@ import type { IRoom, IUser } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; +import { ServiceClassInternal, Authorization } from '@rocket.chat/core-services'; +import type { ICreateRoomParams, IRoomService } from '@rocket.chat/core-services'; -import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import type { ICreateRoomParams, IRoomService } from '../../sdk/types/IRoomService'; -import { Authorization } from '../../sdk'; import { createRoom } from '../../../app/lib/server/functions/createRoom'; // TODO remove this import export class RoomService extends ServiceClassInternal implements IRoomService { diff --git a/apps/meteor/server/services/sauMonitor/service.ts b/apps/meteor/server/services/sauMonitor/service.ts index a7cc83531ea..a0b36bb2016 100644 --- a/apps/meteor/server/services/sauMonitor/service.ts +++ b/apps/meteor/server/services/sauMonitor/service.ts @@ -1,7 +1,8 @@ // import type { Db } from 'mongodb'; -import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import type { ISAUMonitorService } from '../../sdk/types/ISAUMonitorService'; +import { ServiceClassInternal } from '@rocket.chat/core-services'; +import type { ISAUMonitorService } from '@rocket.chat/core-services'; + import { sauEvents } from './events'; export class SAUMonitorService extends ServiceClassInternal implements ISAUMonitorService { diff --git a/apps/meteor/server/services/startup.ts b/apps/meteor/server/services/startup.ts index 90ac1e9ed83..79be55d3a1e 100644 --- a/apps/meteor/server/services/startup.ts +++ b/apps/meteor/server/services/startup.ts @@ -1,7 +1,7 @@ import { MongoInternals } from 'meteor/mongo'; +import { api } from '@rocket.chat/core-services'; import { AnalyticsService } from './analytics/service'; -import { api } from '../sdk/api'; import { AppsEngineService } from './apps-engine/service'; import { AuthorizationLivechat } from '../../app/livechat/server/roomAccessValidator.internalService'; import { BannerService } from './banner/service'; diff --git a/apps/meteor/server/services/team/service.ts b/apps/meteor/server/services/team/service.ts index e99c527ae79..dab34cab30b 100644 --- a/apps/meteor/server/services/team/service.ts +++ b/apps/meteor/server/services/team/service.ts @@ -14,13 +14,7 @@ import type { 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'; - -import { checkUsernameAvailability } from '../../../app/lib/server/functions'; -import { addUserToRoom } from '../../../app/lib/server/functions/addUserToRoom'; -import { removeUserFromRoom } from '../../../app/lib/server/functions/removeUserFromRoom'; -import { getSubscribedRoomsForUserWithDetails } from '../../../app/lib/server/functions/getRoomsWithSingleOwner'; -import { Messages } from '../../../app/models/server'; -import { Room, Authorization } from '../../sdk'; +import { Room, Authorization, ServiceClassInternal } from '@rocket.chat/core-services'; import type { IListRoomsFilter, ITeamAutocompleteResult, @@ -30,8 +24,13 @@ import type { ITeamMemberParams, ITeamService, ITeamUpdateData, -} from '../../sdk/types/ITeamService'; -import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; +} from '@rocket.chat/core-services'; + +import { checkUsernameAvailability } from '../../../app/lib/server/functions'; +import { addUserToRoom } from '../../../app/lib/server/functions/addUserToRoom'; +import { removeUserFromRoom } from '../../../app/lib/server/functions/removeUserFromRoom'; +import { getSubscribedRoomsForUserWithDetails } from '../../../app/lib/server/functions/getRoomsWithSingleOwner'; +import { Messages } from '../../../app/models/server'; import { saveRoomName } from '../../../app/channel-settings/server'; import { saveRoomType } from '../../../app/channel-settings/server/functions/saveRoomType'; diff --git a/apps/meteor/server/services/uikit-core-app/service.ts b/apps/meteor/server/services/uikit-core-app/service.ts index 4eef47aa0a0..a9eddf69ce8 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 type { IUiKitCoreApp, IUiKitCoreAppService } from '../../sdk/types/IUiKitCoreApp'; +import { ServiceClassInternal } from '@rocket.chat/core-services'; +import type { IUiKitCoreApp, IUiKitCoreAppService } from '@rocket.chat/core-services'; const registeredApps = new Map(); diff --git a/apps/meteor/server/services/upload/service.ts b/apps/meteor/server/services/upload/service.ts index 3bdc910ee80..8166012c17e 100644 --- a/apps/meteor/server/services/upload/service.ts +++ b/apps/meteor/server/services/upload/service.ts @@ -1,13 +1,8 @@ -import type { IMessage, IUpload } from '@rocket.chat/core-typings'; +import { ServiceClassInternal } from '@rocket.chat/core-services'; import { Meteor } from 'meteor/meteor'; +import type { IMessage, IUpload } from '@rocket.chat/core-typings'; +import type { ISendFileLivechatMessageParams, ISendFileMessageParams, IUploadFileParams, IUploadService } from '@rocket.chat/core-services'; -import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; -import type { - ISendFileLivechatMessageParams, - ISendFileMessageParams, - IUploadFileParams, - IUploadService, -} from '../../sdk/types/IUploadService'; import { FileUpload } from '../../../app/file-upload/server'; export class UploadService extends ServiceClassInternal implements IUploadService { diff --git a/apps/meteor/server/services/video-conference/service.ts b/apps/meteor/server/services/video-conference/service.ts index 39894ed85ed..0785fbd0fb0 100644 --- a/apps/meteor/server/services/video-conference/service.ts +++ b/apps/meteor/server/services/video-conference/service.ts @@ -30,16 +30,15 @@ import type { IBlock } from '@rocket.chat/apps-engine/definition/uikit'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import type { PaginatedResult } from '@rocket.chat/rest-typings'; import { Users, VideoConference as VideoConferenceModel, Rooms, Messages, Subscriptions } from '@rocket.chat/models'; +import type { IVideoConfService, VideoConferenceJoinOptions } from '@rocket.chat/core-services'; +import { api, ServiceClassInternal } from '@rocket.chat/core-services'; -import type { IVideoConfService, VideoConferenceJoinOptions } from '../../sdk/types/IVideoConfService'; -import { ServiceClassInternal } from '../../sdk/types/ServiceClass'; import { Apps } from '../../../app/apps/server'; import { sendMessage } from '../../../app/lib/server/functions/sendMessage'; import { settings } from '../../../app/settings/server'; import { videoConfProviders } from '../../lib/videoConfProviders'; import { videoConfTypes } from '../../lib/videoConfTypes'; import { updateCounter } from '../../../app/statistics/server/functions/updateStatsCounter'; -import { api } from '../../sdk/api'; import { readSecondaryPreferred } from '../../database/readSecondaryPreferred'; import { availabilityErrors } from '../../../lib/videoConference/constants'; import { callbacks } from '../../../lib/callbacks'; 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 2aef44cd957..30744ce888d 100644 --- a/apps/meteor/server/services/voip/connector/asterisk/ami/ContinuousMonitor.ts +++ b/apps/meteor/server/services/voip/connector/asterisk/ami/ContinuousMonitor.ts @@ -44,12 +44,12 @@ import { isICallHangupEvent, } from '@rocket.chat/core-typings'; import { Users, PbxEvents } from '@rocket.chat/models'; +import { api } from '@rocket.chat/core-services'; import { Command, CommandType } from '../Command'; import { Logger } from '../../../../../lib/logger/Logger'; import { CallbackContext } from './CallbackContext'; // import { sendMessage } from '../../../../../../app/lib/server/functions/sendMessage'; -import { api } from '../../../../../sdk/api'; import { ACDQueue } from './ACDQueue'; import { Commands } from '../Commands'; diff --git a/apps/meteor/server/services/voip/service.ts b/apps/meteor/server/services/voip/service.ts index 4e892735009..380b45b667e 100644 --- a/apps/meteor/server/services/voip/service.ts +++ b/apps/meteor/server/services/voip/service.ts @@ -12,15 +12,14 @@ import type { IQueueMembershipSubscription, IRegistrationInfo, } from '@rocket.chat/core-typings'; +import type { IVoipService } from '@rocket.chat/core-services'; +import { api, ServiceClassInternal } from '@rocket.chat/core-services'; -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'; import { CommandType } from './connector/asterisk/Command'; import { Commands } from './connector/asterisk/Commands'; import { getServerConfigDataFromSettings, voipEnabled } from './lib/Helper'; -import { api } from '../../sdk/api'; export class VoipService extends ServiceClassInternal implements IVoipService { protected name = 'voip'; @@ -95,10 +94,6 @@ export class VoipService extends ServiceClassInternal implements IVoipService { return getServerConfigDataFromSettings(type); } - getConnector(): CommandHandler { - return this.commandHandler; - } - async getQueueSummary(): Promise<IVoipConnectorResult> { return this.commandHandler.executeCommand(Commands.queue_summary); } diff --git a/apps/meteor/server/startup/index.ts b/apps/meteor/server/startup/index.ts index 44f291a9f82..cb2ef39b7a9 100644 --- a/apps/meteor/server/startup/index.ts +++ b/apps/meteor/server/startup/index.ts @@ -13,6 +13,7 @@ import { isRunningMs } from '../lib/isRunningMs'; // only starts network broker if running in micro services mode if (!isRunningMs()) { + require('./localServices'); require('./watchDb'); require('./presence'); } diff --git a/apps/meteor/server/startup/localServices.ts b/apps/meteor/server/startup/localServices.ts new file mode 100644 index 00000000000..e1ab692bb2b --- /dev/null +++ b/apps/meteor/server/startup/localServices.ts @@ -0,0 +1,12 @@ +import { api, LocalBroker } from '@rocket.chat/core-services'; + +import { StreamerCentral } from '../modules/streamer/streamer.module'; + +const broker = new LocalBroker(); + +broker.onBroadcast((eventName: string, args: unknown[]) => { + StreamerCentral.emit('broadcast', 'local', 'broadcast', [{ eventName, args }]); +}); + +api.setBroker(broker); +api.start(); diff --git a/apps/meteor/server/startup/presence.ts b/apps/meteor/server/startup/presence.ts index e56bb7283bb..f8fd1ef4508 100644 --- a/apps/meteor/server/startup/presence.ts +++ b/apps/meteor/server/startup/presence.ts @@ -1,8 +1,7 @@ import { Accounts } from 'meteor/accounts-base'; import { Meteor } from 'meteor/meteor'; import { InstanceStatus } from 'meteor/konecty:multiple-instances-status'; - -import { Presence } from '../sdk'; +import { Presence } from '@rocket.chat/core-services'; Meteor.startup(function () { const nodeId = InstanceStatus.id(); diff --git a/apps/meteor/server/startup/presenceTroubleshoot.ts b/apps/meteor/server/startup/presenceTroubleshoot.ts index 6b949dd0239..168e5eae4eb 100644 --- a/apps/meteor/server/startup/presenceTroubleshoot.ts +++ b/apps/meteor/server/startup/presenceTroubleshoot.ts @@ -1,5 +1,6 @@ +import { Presence } from '@rocket.chat/core-services'; + import { settings } from '../../app/settings/server'; -import { Presence } from '../sdk'; // maybe this setting should disable the listener to 'presence.status' event on listerners.module.ts settings.watch('Troubleshoot_Disable_Presence_Broadcast', async function (value) { diff --git a/apps/meteor/server/startup/watchDb.ts b/apps/meteor/server/startup/watchDb.ts index 8579b1f670f..b932553cb27 100644 --- a/apps/meteor/server/startup/watchDb.ts +++ b/apps/meteor/server/startup/watchDb.ts @@ -1,9 +1,9 @@ import { MongoInternals } from 'meteor/mongo'; +import { api } from '@rocket.chat/core-services'; import { DatabaseWatcher } from '../database/DatabaseWatcher'; import { db } from '../database/utils'; import { initWatchers } from '../modules/watchers/watchers.module'; -import { api } from '../sdk/api'; import { metrics } from '../../app/metrics/server/lib/metrics'; import { SystemLogger } from '../lib/logger/system'; import { Logger } from '../lib/logger/Logger'; diff --git a/apps/meteor/tests/unit/server/sdk/errors.tests.ts b/apps/meteor/tests/unit/server/sdk/errors.tests.ts index 212ffa5d84d..1793775ba1e 100644 --- a/apps/meteor/tests/unit/server/sdk/errors.tests.ts +++ b/apps/meteor/tests/unit/server/sdk/errors.tests.ts @@ -1,6 +1,5 @@ import { expect } from 'chai'; - -import { MeteorError } from '../../../../server/sdk/errors'; +import { MeteorError } from '@rocket.chat/core-services'; describe('MeteorError', () => { it('should create an error with no reason like Meteor.Error', () => { diff --git a/ee/apps/account-service/Dockerfile b/ee/apps/account-service/Dockerfile index c27bf31f9e5..53c9f739420 100644 --- a/ee/apps/account-service/Dockerfile +++ b/ee/apps/account-service/Dockerfile @@ -4,12 +4,18 @@ ARG SERVICE WORKDIR /app +COPY ./packages/core-services/package.json packages/core-services/package.json +COPY ./packages/core-services/dist packages/core-services/dist + COPY ./packages/core-typings/package.json packages/core-typings/package.json COPY ./packages/core-typings/dist packages/core-typings/dist + COPY ./packages/rest-typings/package.json packages/rest-typings/package.json COPY ./packages/rest-typings/dist packages/rest-typings/dist + COPY ./packages/model-typings/package.json packages/model-typings/package.json COPY ./packages/model-typings/dist packages/model-typings/dist + COPY ./packages/models/package.json packages/models/package.json COPY ./packages/models/dist packages/models/dist diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json index afbaa4d3e61..e4a7b53c95a 100644 --- a/ee/apps/account-service/package.json +++ b/ee/apps/account-service/package.json @@ -15,6 +15,7 @@ ], "author": "Rocket.Chat", "dependencies": { + "@rocket.chat/core-services": "workspace:^", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/emitter": "next", "@rocket.chat/model-typings": "workspace:^", diff --git a/ee/apps/account-service/src/Account.ts b/ee/apps/account-service/src/Account.ts index 34dce6271dc..36d474d3da8 100644 --- a/ee/apps/account-service/src/Account.ts +++ b/ee/apps/account-service/src/Account.ts @@ -1,7 +1,7 @@ import { Settings } from '@rocket.chat/models'; +import { ServiceClass } from '@rocket.chat/core-services'; +import type { IAccount, ILoginResult } from '@rocket.chat/core-services'; -import { ServiceClass } from '../../../../apps/meteor/server/sdk/types/ServiceClass'; -import type { IAccount, ILoginResult } from '../../../../apps/meteor/server/sdk/types/IAccount'; import { removeSession } from './lib/removeSession'; import { loginViaResume } from './lib/loginViaResume'; import { loginViaUsername } from './lib/loginViaUsername'; diff --git a/ee/apps/account-service/src/lib/loginViaResume.ts b/ee/apps/account-service/src/lib/loginViaResume.ts index 265f5779726..ab9272053da 100644 --- a/ee/apps/account-service/src/lib/loginViaResume.ts +++ b/ee/apps/account-service/src/lib/loginViaResume.ts @@ -1,9 +1,9 @@ import type { IUser } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; +import type { ILoginResult } from '@rocket.chat/core-services'; +import { MeteorError } from '@rocket.chat/core-services'; import { _hashLoginToken, _tokenExpiration } from './utils'; -import type { ILoginResult } from '../../../../../apps/meteor/server/sdk/types/IAccount'; -import { MeteorError } from '../../../../../apps/meteor/server/sdk/errors'; export async function loginViaResume(resume: string, loginExpiration: number): Promise<false | ILoginResult> { const hashedToken = _hashLoginToken(resume); diff --git a/ee/apps/account-service/src/lib/loginViaUsername.ts b/ee/apps/account-service/src/lib/loginViaUsername.ts index c5f7cd6afbc..c630238bd08 100644 --- a/ee/apps/account-service/src/lib/loginViaUsername.ts +++ b/ee/apps/account-service/src/lib/loginViaUsername.ts @@ -1,8 +1,8 @@ import type { IUser } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; +import type { ILoginResult } from '@rocket.chat/core-services'; import { _generateStampedLoginToken, _hashStampedToken, _tokenExpiration, validatePassword } from './utils'; -import type { ILoginResult } from '../../../../../apps/meteor/server/sdk/types/IAccount'; import { saveSession } from './saveSession'; export async function loginViaUsername( diff --git a/ee/apps/account-service/src/service.ts b/ee/apps/account-service/src/service.ts index 94885a74ff3..65f219650f8 100755 --- a/ee/apps/account-service/src/service.ts +++ b/ee/apps/account-service/src/service.ts @@ -1,7 +1,7 @@ import type { Document } from 'mongodb'; import polka from 'polka'; +import { api } from '@rocket.chat/core-services'; -import { api } from '../../../../apps/meteor/server/sdk/api'; import { broker } from '../../../../apps/meteor/ee/server/startup/broker'; import { Collections, getCollection, getConnection } from '../../../../apps/meteor/ee/server/services/mongo'; import { registerServiceModels } from '../../../../apps/meteor/ee/server/lib/registerServiceModels'; diff --git a/ee/apps/authorization-service/Dockerfile b/ee/apps/authorization-service/Dockerfile index c27bf31f9e5..53c9f739420 100644 --- a/ee/apps/authorization-service/Dockerfile +++ b/ee/apps/authorization-service/Dockerfile @@ -4,12 +4,18 @@ ARG SERVICE WORKDIR /app +COPY ./packages/core-services/package.json packages/core-services/package.json +COPY ./packages/core-services/dist packages/core-services/dist + COPY ./packages/core-typings/package.json packages/core-typings/package.json COPY ./packages/core-typings/dist packages/core-typings/dist + COPY ./packages/rest-typings/package.json packages/rest-typings/package.json COPY ./packages/rest-typings/dist packages/rest-typings/dist + COPY ./packages/model-typings/package.json packages/model-typings/package.json COPY ./packages/model-typings/dist packages/model-typings/dist + COPY ./packages/models/package.json packages/models/package.json COPY ./packages/models/dist packages/models/dist diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json index aa084d9a5b4..ca5bd41d0e7 100644 --- a/ee/apps/authorization-service/package.json +++ b/ee/apps/authorization-service/package.json @@ -15,6 +15,7 @@ ], "author": "Rocket.Chat", "dependencies": { + "@rocket.chat/core-services": "workspace:^", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/emitter": "next", "@rocket.chat/model-typings": "workspace:^", diff --git a/ee/apps/authorization-service/src/service.ts b/ee/apps/authorization-service/src/service.ts index 9abfddf9ed8..5fd78d143a0 100755 --- a/ee/apps/authorization-service/src/service.ts +++ b/ee/apps/authorization-service/src/service.ts @@ -1,7 +1,7 @@ import type { Document } from 'mongodb'; import polka from 'polka'; +import { api } from '@rocket.chat/core-services'; -import { api } from '../../../../apps/meteor/server/sdk/api'; import { broker } from '../../../../apps/meteor/ee/server/startup/broker'; import { Collections, getCollection, getConnection } from '../../../../apps/meteor/ee/server/services/mongo'; import { registerServiceModels } from '../../../../apps/meteor/ee/server/lib/registerServiceModels'; diff --git a/ee/apps/ddp-streamer/Dockerfile b/ee/apps/ddp-streamer/Dockerfile index c27bf31f9e5..53c9f739420 100644 --- a/ee/apps/ddp-streamer/Dockerfile +++ b/ee/apps/ddp-streamer/Dockerfile @@ -4,12 +4,18 @@ ARG SERVICE WORKDIR /app +COPY ./packages/core-services/package.json packages/core-services/package.json +COPY ./packages/core-services/dist packages/core-services/dist + COPY ./packages/core-typings/package.json packages/core-typings/package.json COPY ./packages/core-typings/dist packages/core-typings/dist + COPY ./packages/rest-typings/package.json packages/rest-typings/package.json COPY ./packages/rest-typings/dist packages/rest-typings/dist + COPY ./packages/model-typings/package.json packages/model-typings/package.json COPY ./packages/model-typings/dist packages/model-typings/dist + COPY ./packages/models/package.json packages/models/package.json COPY ./packages/models/dist packages/models/dist diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json index 56daab2e2cd..added8c88cb 100644 --- a/ee/apps/ddp-streamer/package.json +++ b/ee/apps/ddp-streamer/package.json @@ -16,6 +16,7 @@ "author": "Rocket.Chat", "dependencies": { "@rocket.chat/apps-engine": "^1.32.0", + "@rocket.chat/core-services": "workspace:^", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/emitter": "next", "@rocket.chat/model-typings": "workspace:^", diff --git a/ee/apps/ddp-streamer/src/DDPStreamer.ts b/ee/apps/ddp-streamer/src/DDPStreamer.ts index 23f24701ba8..acd620003af 100644 --- a/ee/apps/ddp-streamer/src/DDPStreamer.ts +++ b/ee/apps/ddp-streamer/src/DDPStreamer.ts @@ -2,12 +2,11 @@ import crypto from 'crypto'; import polka from 'polka'; import WebSocket from 'ws'; +import { MeteorService, Presence, ServiceClass } from '@rocket.chat/core-services'; import type { NotificationsModule } from '../../../../apps/meteor/server/modules/notifications/notifications.module'; import { ListenersModule } from '../../../../apps/meteor/server/modules/listeners/listeners.module'; import { StreamerCentral } from '../../../../apps/meteor/server/modules/streamer/streamer.module'; -import { MeteorService, Presence } from '../../../../apps/meteor/server/sdk'; -import { ServiceClass } from '../../../../apps/meteor/server/sdk/types/ServiceClass'; import { Client } from './Client'; import { events, server } from './configureServer'; import { DDP_EVENTS } from './constants'; @@ -99,13 +98,13 @@ export class DDPStreamer extends ServiceClass { const { userId, connection } = info; Presence.newConnection(userId, connection.id, nodeID); - this.api.broadcast('accounts.login', { userId, connection }); + this.api?.broadcast('accounts.login', { userId, connection }); }); server.on(DDP_EVENTS.LOGGEDOUT, (info) => { const { userId, connection } = info; - this.api.broadcast('accounts.logout', { userId, connection }); + this.api?.broadcast('accounts.logout', { userId, connection }); if (!userId) { return; @@ -116,7 +115,7 @@ export class DDPStreamer extends ServiceClass { server.on(DDP_EVENTS.DISCONNECTED, (info) => { const { userId, connection } = info; - this.api.broadcast('socket.disconnected', connection); + this.api?.broadcast('socket.disconnected', connection); if (!userId) { return; @@ -125,7 +124,7 @@ export class DDPStreamer extends ServiceClass { }); server.on(DDP_EVENTS.CONNECTED, ({ connection }) => { - this.api.broadcast('socket.connected', connection); + this.api?.broadcast('socket.connected', connection); }); } @@ -141,7 +140,7 @@ export class DDPStreamer extends ServiceClass { .use(proxy()) .get('/health', async (_req, res) => { try { - await this.api.nodeList(); + await this.api?.nodeList(); res.end('ok'); } catch (err) { console.error('Service not healthy', err); diff --git a/ee/apps/ddp-streamer/src/Server.ts b/ee/apps/ddp-streamer/src/Server.ts index 84ba8511e1a..c4c6a53c8e1 100644 --- a/ee/apps/ddp-streamer/src/Server.ts +++ b/ee/apps/ddp-streamer/src/Server.ts @@ -3,13 +3,12 @@ import { EventEmitter } from 'events'; import type WebSocket from 'ws'; import ejson from 'ejson'; import { v1 as uuidv1 } from 'uuid'; +import { MeteorService, isMeteorError, MeteorError } from '@rocket.chat/core-services'; import { DDP_EVENTS } from './constants'; import { Publication } from './Publication'; 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'; const logger = new Logger('DDP-Streamer'); diff --git a/ee/apps/ddp-streamer/src/Streamer.ts b/ee/apps/ddp-streamer/src/Streamer.ts index a4d15a8477f..fdde06e7a5d 100644 --- a/ee/apps/ddp-streamer/src/Streamer.ts +++ b/ee/apps/ddp-streamer/src/Streamer.ts @@ -1,11 +1,11 @@ import WebSocket from 'ws'; import type { DDPSubscription, Connection, TransformMessage } from 'meteor/rocketchat:streamer'; +import { api } from '@rocket.chat/core-services'; import { server } from './configureServer'; import { DDP_EVENTS } from './constants'; import { isEmpty } from './lib/utils'; import { Streamer, StreamerCentral } from '../../../../apps/meteor/server/modules/streamer/streamer.module'; -import { api } from '../../../../apps/meteor/server/sdk/api'; StreamerCentral.on('broadcast', (name, eventName, args) => { api.broadcast('stream', [name, eventName, args]); diff --git a/ee/apps/ddp-streamer/src/configureServer.ts b/ee/apps/ddp-streamer/src/configureServer.ts index d8165ca1156..5b5e339c0e3 100644 --- a/ee/apps/ddp-streamer/src/configureServer.ts +++ b/ee/apps/ddp-streamer/src/configureServer.ts @@ -1,11 +1,10 @@ import { EventEmitter } from 'events'; import { UserStatus } from '@rocket.chat/core-typings'; +import { Account, Presence, MeteorService, MeteorError } from '@rocket.chat/core-services'; import { DDP_EVENTS, WS_ERRORS } from './constants'; -import { Account, Presence, MeteorService } from '../../../../apps/meteor/server/sdk'; import { Server } from './Server'; -import { MeteorError } from '../../../../apps/meteor/server/sdk/errors'; import { Autoupdate } from './lib/Autoupdate'; export const server = new Server(); diff --git a/ee/apps/ddp-streamer/src/lib/Autoupdate.ts b/ee/apps/ddp-streamer/src/lib/Autoupdate.ts index 206e9a93b32..944e7ab56da 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 type { AutoUpdateRecord } from '../../../../../apps/meteor/server/sdk/types/IMeteor'; +import type { AutoUpdateRecord } from '@rocket.chat/core-services'; class AutoupdateSingleton extends EventEmitter { private versions = new Map<string, Omit<AutoUpdateRecord, '_id'>>(); diff --git a/ee/apps/ddp-streamer/src/service.ts b/ee/apps/ddp-streamer/src/service.ts index 9b4bc463192..06f13ce3cf5 100755 --- a/ee/apps/ddp-streamer/src/service.ts +++ b/ee/apps/ddp-streamer/src/service.ts @@ -1,6 +1,6 @@ import type { Document } from 'mongodb'; +import { api } from '@rocket.chat/core-services'; -import { api } from '../../../../apps/meteor/server/sdk/api'; import { broker } from '../../../../apps/meteor/ee/server/startup/broker'; import { Collections, getCollection, getConnection } from '../../../../apps/meteor/ee/server/services/mongo'; import { registerServiceModels } from '../../../../apps/meteor/ee/server/lib/registerServiceModels'; diff --git a/ee/apps/presence-service/Dockerfile b/ee/apps/presence-service/Dockerfile index b1e116ee833..53bf8c1af4a 100644 --- a/ee/apps/presence-service/Dockerfile +++ b/ee/apps/presence-service/Dockerfile @@ -6,14 +6,22 @@ WORKDIR /app COPY ./packages/presence/package.json packages/presence/package.json COPY ./packages/presence/dist packages/presence/dist + +COPY ./packages/core-services/package.json packages/core-services/package.json +COPY ./packages/core-services/dist packages/core-services/dist + COPY ./packages/core-typings/package.json packages/core-typings/package.json COPY ./packages/core-typings/dist packages/core-typings/dist + COPY ./packages/rest-typings/package.json packages/rest-typings/package.json COPY ./packages/rest-typings/dist packages/rest-typings/dist + COPY ./packages/model-typings/package.json packages/model-typings/package.json COPY ./packages/model-typings/dist packages/model-typings/dist + COPY ./packages/models/package.json packages/models/package.json COPY ./packages/models/dist packages/models/dist + COPY ./packages/ui-contexts/package.json packages/ui-contexts/package.json COPY ./packages/ui-contexts/dist packages/ui-contexts/dist diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json index 259cc7c7ca4..accdb4bb692 100644 --- a/ee/apps/presence-service/package.json +++ b/ee/apps/presence-service/package.json @@ -15,6 +15,7 @@ ], "author": "Rocket.Chat", "dependencies": { + "@rocket.chat/core-services": "workspace:^", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/emitter": "next", "@rocket.chat/model-typings": "workspace:^", diff --git a/ee/apps/presence-service/src/service.ts b/ee/apps/presence-service/src/service.ts index df02af8325c..9915f6732e0 100755 --- a/ee/apps/presence-service/src/service.ts +++ b/ee/apps/presence-service/src/service.ts @@ -1,7 +1,7 @@ import type { Document } from 'mongodb'; import polka from 'polka'; +import { api } from '@rocket.chat/core-services'; -import { api } from '../../../../apps/meteor/server/sdk/api'; import { broker } from '../../../../apps/meteor/ee/server/startup/broker'; import { Collections, getCollection, getConnection } from '../../../../apps/meteor/ee/server/services/mongo'; import { registerServiceModels } from '../../../../apps/meteor/ee/server/lib/registerServiceModels'; diff --git a/ee/apps/stream-hub-service/Dockerfile b/ee/apps/stream-hub-service/Dockerfile index c27bf31f9e5..53c9f739420 100644 --- a/ee/apps/stream-hub-service/Dockerfile +++ b/ee/apps/stream-hub-service/Dockerfile @@ -4,12 +4,18 @@ ARG SERVICE WORKDIR /app +COPY ./packages/core-services/package.json packages/core-services/package.json +COPY ./packages/core-services/dist packages/core-services/dist + COPY ./packages/core-typings/package.json packages/core-typings/package.json COPY ./packages/core-typings/dist packages/core-typings/dist + COPY ./packages/rest-typings/package.json packages/rest-typings/package.json COPY ./packages/rest-typings/dist packages/rest-typings/dist + COPY ./packages/model-typings/package.json packages/model-typings/package.json COPY ./packages/model-typings/dist packages/model-typings/dist + COPY ./packages/models/package.json packages/models/package.json COPY ./packages/models/dist packages/models/dist diff --git a/ee/apps/stream-hub-service/package.json b/ee/apps/stream-hub-service/package.json index 492d4b06947..de6ba1de100 100644 --- a/ee/apps/stream-hub-service/package.json +++ b/ee/apps/stream-hub-service/package.json @@ -15,6 +15,7 @@ ], "author": "Rocket.Chat", "dependencies": { + "@rocket.chat/core-services": "workspace:^", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/emitter": "next", "@rocket.chat/model-typings": "workspace:^", diff --git a/ee/apps/stream-hub-service/src/StreamHub.ts b/ee/apps/stream-hub-service/src/StreamHub.ts index 85af31e78f2..50808a175f2 100755 --- a/ee/apps/stream-hub-service/src/StreamHub.ts +++ b/ee/apps/stream-hub-service/src/StreamHub.ts @@ -1,5 +1,6 @@ -import type { IServiceClass } from '../../../../apps/meteor/server/sdk/types/ServiceClass'; -import { ServiceClass } from '../../../../apps/meteor/server/sdk/types/ServiceClass'; +import type { IServiceClass } from '@rocket.chat/core-services'; +import { ServiceClass } from '@rocket.chat/core-services'; + import { initWatchers } from '../../../../apps/meteor/server/modules/watchers/watchers.module'; import type { DatabaseWatcher } from '../../../../apps/meteor/server/database/DatabaseWatcher'; import type { Logger } from '../../../../apps/meteor/server/lib/logger/Logger'; @@ -17,6 +18,9 @@ export class StreamHub extends ServiceClass implements IServiceClass { } async created(): Promise<void> { + if (!this.api) { + return; + } initWatchers(this.watcher, this.api.broadcast.bind(this.api)); try { diff --git a/ee/apps/stream-hub-service/src/service.ts b/ee/apps/stream-hub-service/src/service.ts index 469b7c0e3e2..81175a3e216 100755 --- a/ee/apps/stream-hub-service/src/service.ts +++ b/ee/apps/stream-hub-service/src/service.ts @@ -1,7 +1,7 @@ import type { Document } from 'mongodb'; import polka from 'polka'; +import { api } from '@rocket.chat/core-services'; -import { api } from '../../../../apps/meteor/server/sdk/api'; import { broker } from '../../../../apps/meteor/ee/server/startup/broker'; import { Collections, getCollection, getConnection } from '../../../../apps/meteor/ee/server/services/mongo'; import { registerServiceModels } from '../../../../apps/meteor/ee/server/lib/registerServiceModels'; diff --git a/packages/core-services/.eslintrc.json b/packages/core-services/.eslintrc.json new file mode 100644 index 00000000000..56a6f6602e3 --- /dev/null +++ b/packages/core-services/.eslintrc.json @@ -0,0 +1,12 @@ +{ + "extends": ["@rocket.chat/eslint-config"], + "overrides": [ + { + "files": ["**/*.spec.js", "**/*.spec.jsx"], + "env": { + "jest": true + } + } + ], + "ignorePatterns": ["**/dist"] +} diff --git a/packages/core-services/package.json b/packages/core-services/package.json new file mode 100644 index 00000000000..cf3816aa0e9 --- /dev/null +++ b/packages/core-services/package.json @@ -0,0 +1,35 @@ +{ + "name": "@rocket.chat/core-services", + "version": "0.0.1", + "private": true, + "devDependencies": { + "@rocket.chat/eslint-config": "workspace:^", + "eslint": "^8.29.0", + "mongodb": "^4.12.1", + "prettier": "^2.7.1", + "typescript": "~4.5.5" + }, + "scripts": { + "lint": "eslint --ext .js,.jsx,.ts,.tsx .", + "lint:fix": "eslint --ext .js,.jsx,.ts,.tsx . --fix", + "test": "echo \"Error: no test specified\" && exit 1", + "dev": "tsc --watch --preserveWatchOutput -p tsconfig.json", + "build": "rm -rf dist && tsc -p tsconfig.json" + }, + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "files": [ + "/dist" + ], + "dependencies": { + "@rocket.chat/apps-engine": "^1.32.0", + "@rocket.chat/core-typings": "workspace:^", + "@rocket.chat/icons": "next", + "@rocket.chat/message-parser": "0.31.22", + "@rocket.chat/models": "workspace:^", + "@rocket.chat/rest-typings": "workspace:^", + "@rocket.chat/ui-kit": "next", + "@types/fibers": "^3.1.1", + "fibers": "^5.0.3" + } +} diff --git a/apps/meteor/server/sdk/lib/Events.ts b/packages/core-services/src/Events.ts similarity index 99% rename from apps/meteor/server/sdk/lib/Events.ts rename to packages/core-services/src/Events.ts index 236dcea72be..71e5694faba 100644 --- a/apps/meteor/server/sdk/lib/Events.ts +++ b/packages/core-services/src/Events.ts @@ -26,7 +26,7 @@ import type { UserStatus, } from '@rocket.chat/core-typings'; -import type { 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/packages/core-services/src/LocalBroker.ts similarity index 89% rename from apps/meteor/server/sdk/lib/LocalBroker.ts rename to packages/core-services/src/LocalBroker.ts index d7205c72cae..af6a6afaad5 100644 --- a/apps/meteor/server/sdk/lib/LocalBroker.ts +++ b/packages/core-services/src/LocalBroker.ts @@ -2,11 +2,10 @@ import { EventEmitter } from 'events'; import { InstanceStatus } from '@rocket.chat/models'; -import type { IBroker, IBrokerNode } from '../types/IBroker'; -import type { ServiceClass, IServiceClass } from '../types/ServiceClass'; -import { asyncLocalStorage } from '..'; +import type { IBroker, IBrokerNode } from './types/IBroker'; +import type { ServiceClass, IServiceClass } from './types/ServiceClass'; +import { asyncLocalStorage } from '.'; import type { EventSignatures } from './Events'; -import { StreamerCentral } from '../../modules/streamer/streamer.module'; export class LocalBroker implements IBroker { private methods = new Map<string, (...params: any) => any>(); @@ -80,10 +79,14 @@ export class LocalBroker implements IBroker { } } + onBroadcast(callback: (eventName: string, args: unknown[]) => void): void { + this.events.on('broadcast', callback); + } + async broadcast<T extends keyof EventSignatures>(event: T, ...args: Parameters<EventSignatures[T]>): Promise<void> { this.broadcastLocal(event, ...args); - StreamerCentral.emit('broadcast', 'local', 'broadcast', [{ eventName: event, args }]); + this.events.emit('broadcast', event, args); } async broadcastLocal<T extends keyof EventSignatures>(event: T, ...args: Parameters<EventSignatures[T]>): Promise<void> { diff --git a/apps/meteor/server/sdk/errors.ts b/packages/core-services/src/MeteorError.ts similarity index 100% rename from apps/meteor/server/sdk/errors.ts rename to packages/core-services/src/MeteorError.ts diff --git a/packages/core-services/src/api.ts b/packages/core-services/src/api.ts new file mode 100644 index 00000000000..754bab29955 --- /dev/null +++ b/packages/core-services/src/api.ts @@ -0,0 +1,4 @@ +import { Api } from './lib/Api'; + +// Singleton instance of the Service API +export const api = new Api(); diff --git a/packages/core-services/src/index.ts b/packages/core-services/src/index.ts new file mode 100644 index 00000000000..20b6761377b --- /dev/null +++ b/packages/core-services/src/index.ts @@ -0,0 +1,126 @@ +import { proxify, proxifyWithWait } from './lib/proxify'; +import type { ISendFileLivechatMessageParams, ISendFileMessageParams, IUploadFileParams, IUploadService } from './types/IUploadService'; +import type { IAuthorization, RoomAccessValidator } from './types/IAuthorization'; +import type { IAuthorizationLivechat } from './types/IAuthorizationLivechat'; +import type { IAuthorizationVoip } from './types/IAuthorizationVoip'; +import type { IAppsEngineService } from './types/IAppsEngineService'; +import type { IPresence } from './types/IPresence'; +import type { IAccount, ILoginResult } from './types/IAccount'; +import type { ILicense } from './types/ILicense'; +import type { IMeteor, AutoUpdateRecord } from './types/IMeteor'; +import type { IUiKitCoreApp, IUiKitCoreAppService } from './types/IUiKitCoreApp'; +import type { IEnterpriseSettings } from './types/IEnterpriseSettings'; +import type { IBannerService } from './types/IBannerService'; +import type { IFederationService } from './types/IFederationService'; +import type { INPSService, NPSCreatePayload, NPSVotePayload } from './types/INPSService'; +import type { + ITeamService, + ITeamUpdateData, + ITeamMemberParams, + ITeamMemberInfo, + ITeamInfo, + ITeamCreateParams, + ITeamAutocompleteResult, + IListRoomsFilter, +} from './types/ITeamService'; +import type { IRoomService, ICreateRoomParams, ISubscriptionExtraData } from './types/IRoomService'; +import type { IMediaService, ResizeResult } from './types/IMediaService'; +import type { IVoipService } from './types/IVoipService'; +import type { IOmnichannelVoipService, FindVoipRoomsParams } from './types/IOmnichannelVoipService'; +import type { IAnalyticsService } from './types/IAnalyticsService'; +import type { ILDAPService } from './types/ILDAPService'; +import type { IVideoConfService, VideoConferenceJoinOptions } from './types/IVideoConfService'; +import type { ISAUMonitorService } from './types/ISAUMonitorService'; +import type { IDeviceManagementService } from './types/IDeviceManagementService'; +import type { IPushService } from './types/IPushService'; +import type { IOmnichannelService } from './types/IOmnichannelService'; +import type { ITelemetryEvent, TelemetryMap, TelemetryEvents } from './types/ITelemetryEvent'; + +export { asyncLocalStorage } from './lib/asyncLocalStorage'; +export { MeteorError, isMeteorError } from './MeteorError'; +export { api } from './api'; +export { EventSignatures } from './Events'; +export { LocalBroker } from './LocalBroker'; + +export { IBroker, IBrokerNode, BaseMetricOptions, IServiceMetrics } from './types/IBroker'; + +export { IServiceContext, ServiceClass, IServiceClass, ServiceClassInternal } from './types/ServiceClass'; + +export { + AutoUpdateRecord, + FindVoipRoomsParams, + IAccount, + IAnalyticsService, + IAppsEngineService, + IAuthorization, + IAuthorizationLivechat, + IAuthorizationVoip, + IBannerService, + ICreateRoomParams, + IDeviceManagementService, + IEnterpriseSettings, + IFederationService, + ILDAPService, + ILicense, + IListRoomsFilter, + ILoginResult, + IMediaService, + IMeteor, + INPSService, + IOmnichannelService, + IOmnichannelVoipService, + IPresence, + IPushService, + IRoomService, + ISAUMonitorService, + ISubscriptionExtraData, + ITeamAutocompleteResult, + ITeamCreateParams, + ITeamInfo, + ITeamMemberInfo, + ITeamMemberParams, + ITeamService, + ITeamUpdateData, + ITelemetryEvent, + IUiKitCoreApp, + IUiKitCoreAppService, + IVideoConfService, + IVoipService, + NPSCreatePayload, + NPSVotePayload, + proxifyWithWait, + ResizeResult, + RoomAccessValidator, + TelemetryEvents, + TelemetryMap, + VideoConferenceJoinOptions, + ISendFileLivechatMessageParams, + ISendFileMessageParams, + IUploadFileParams, + IUploadService, +}; + +// TODO think in a way to not have to pass the service name to proxify here as well +export const Authorization = proxifyWithWait<IAuthorization>('authorization'); +export const Presence = proxifyWithWait<IPresence>('presence'); +export const Account = proxifyWithWait<IAccount>('accounts'); +export const License = proxifyWithWait<ILicense>('license'); +export const MeteorService = proxifyWithWait<IMeteor>('meteor'); +export const Banner = proxifyWithWait<IBannerService>('banner'); +export const UiKitCoreApp = proxifyWithWait<IUiKitCoreAppService>('uikit-core-app'); +export const NPS = proxifyWithWait<INPSService>('nps'); +export const Team = proxifyWithWait<ITeamService>('team'); +export const Room = proxifyWithWait<IRoomService>('room'); +export const Media = proxifyWithWait<IMediaService>('media'); +export const Voip = proxifyWithWait<IVoipService>('voip'); +export const LivechatVoip = proxifyWithWait<IOmnichannelVoipService>('omnichannel-voip'); +export const Analytics = proxifyWithWait<IAnalyticsService>('analytics'); +export const LDAP = proxifyWithWait<ILDAPService>('ldap'); +export const SAUMonitor = proxifyWithWait<ISAUMonitorService>('sau-monitor'); +export const DeviceManagement = proxifyWithWait<IDeviceManagementService>('device-management'); +export const VideoConf = proxifyWithWait<IVideoConfService>('video-conference'); +export const Upload = proxifyWithWait<IUploadService>('upload'); + +// Calls without wait. Means that the service is optional and the result may be an error +// of service/method not available +export const EnterpriseSettings = proxify<IEnterpriseSettings>('ee-settings'); diff --git a/apps/meteor/server/sdk/lib/Api.ts b/packages/core-services/src/lib/Api.ts similarity index 76% rename from apps/meteor/server/sdk/lib/Api.ts rename to packages/core-services/src/lib/Api.ts index f16bdd18a03..9d9eb3e416f 100644 --- a/apps/meteor/server/sdk/lib/Api.ts +++ b/packages/core-services/src/lib/Api.ts @@ -1,18 +1,18 @@ import type { IApiService } from '../types/IApiService'; import type { IBroker, IBrokerNode } from '../types/IBroker'; import type { IServiceClass } from '../types/ServiceClass'; -import type { EventSignatures } from './Events'; +import type { EventSignatures } from '../Events'; export class Api implements IApiService { private services: Set<IServiceClass> = new Set<IServiceClass>(); - private broker: IBroker; + private broker?: IBroker; // set a broker for the API and registers all services in the broker setBroker(broker: IBroker): void { this.broker = broker; - this.services.forEach((service) => this.broker.createService(service)); + this.services.forEach((service) => this.broker?.createService(service)); } destroyService(instance: IServiceClass): void { @@ -38,15 +38,15 @@ export class Api implements IApiService { } async call(method: string, data?: unknown): Promise<any> { - return this.broker.call(method, data); + return this.broker?.call(method, data); } async waitAndCall(method: string, data: any): Promise<any> { - return this.broker.waitAndCall(method, data); + return this.broker?.waitAndCall(method, data); } async broadcast<T extends keyof EventSignatures>(event: T, ...args: Parameters<EventSignatures[T]>): Promise<void> { - return this.broker.broadcast(event, ...args); + return this.broker?.broadcast(event, ...args); } async broadcastToServices<T extends keyof EventSignatures>( @@ -54,14 +54,17 @@ export class Api implements IApiService { event: T, ...args: Parameters<EventSignatures[T]> ): Promise<void> { - return this.broker.broadcastToServices(services, event, ...args); + return this.broker?.broadcastToServices(services, event, ...args); } async broadcastLocal<T extends keyof EventSignatures>(event: T, ...args: Parameters<EventSignatures[T]>): Promise<void> { - return this.broker.broadcastLocal(event, ...args); + return this.broker?.broadcastLocal(event, ...args); } nodeList(): Promise<IBrokerNode[]> { + if (!this.broker) { + throw new Error('No broker set to start.'); + } return this.broker.nodeList(); } diff --git a/apps/meteor/server/sdk/lib/ContextStore.ts b/packages/core-services/src/lib/ContextStore.ts similarity index 100% rename from apps/meteor/server/sdk/lib/ContextStore.ts rename to packages/core-services/src/lib/ContextStore.ts diff --git a/packages/core-services/src/lib/asyncLocalStorage.ts b/packages/core-services/src/lib/asyncLocalStorage.ts new file mode 100644 index 00000000000..04352e99f95 --- /dev/null +++ b/packages/core-services/src/lib/asyncLocalStorage.ts @@ -0,0 +1,5 @@ +import type { IServiceContext } from '../types/ServiceClass'; +import { FibersContextStore } from './ContextStore'; + +// TODO Evalute again using AsyncContextStore instead of FibersContextStore in a future Meteor release (after 2.5) +export const asyncLocalStorage = new FibersContextStore<IServiceContext>(); diff --git a/apps/meteor/server/sdk/lib/proxify.ts b/packages/core-services/src/lib/proxify.ts similarity index 100% rename from apps/meteor/server/sdk/lib/proxify.ts rename to packages/core-services/src/lib/proxify.ts diff --git a/apps/meteor/server/sdk/types/IAccount.ts b/packages/core-services/src/types/IAccount.ts similarity index 100% rename from apps/meteor/server/sdk/types/IAccount.ts rename to packages/core-services/src/types/IAccount.ts diff --git a/apps/meteor/server/sdk/types/IAnalyticsService.ts b/packages/core-services/src/types/IAnalyticsService.ts similarity index 100% rename from apps/meteor/server/sdk/types/IAnalyticsService.ts rename to packages/core-services/src/types/IAnalyticsService.ts diff --git a/apps/meteor/server/sdk/types/IApiService.ts b/packages/core-services/src/types/IApiService.ts similarity index 93% rename from apps/meteor/server/sdk/types/IApiService.ts rename to packages/core-services/src/types/IApiService.ts index fad6c768fce..e21ab6aad58 100644 --- a/apps/meteor/server/sdk/types/IApiService.ts +++ b/packages/core-services/src/types/IApiService.ts @@ -1,6 +1,6 @@ import type { IBroker, IBrokerNode } from './IBroker'; import type { IServiceClass } from './ServiceClass'; -import type { EventSignatures } from '../lib/Events'; +import type { EventSignatures } from '../Events'; export interface IApiService { setBroker(broker: IBroker): void; diff --git a/apps/meteor/server/sdk/types/IAppsEngineService.ts b/packages/core-services/src/types/IAppsEngineService.ts similarity index 100% rename from apps/meteor/server/sdk/types/IAppsEngineService.ts rename to packages/core-services/src/types/IAppsEngineService.ts diff --git a/apps/meteor/server/sdk/types/IAuthorization.ts b/packages/core-services/src/types/IAuthorization.ts similarity index 100% rename from apps/meteor/server/sdk/types/IAuthorization.ts rename to packages/core-services/src/types/IAuthorization.ts diff --git a/apps/meteor/server/sdk/types/IAuthorizationLivechat.ts b/packages/core-services/src/types/IAuthorizationLivechat.ts similarity index 100% rename from apps/meteor/server/sdk/types/IAuthorizationLivechat.ts rename to packages/core-services/src/types/IAuthorizationLivechat.ts diff --git a/apps/meteor/server/sdk/types/IAuthorizationVoip.ts b/packages/core-services/src/types/IAuthorizationVoip.ts similarity index 100% rename from apps/meteor/server/sdk/types/IAuthorizationVoip.ts rename to packages/core-services/src/types/IAuthorizationVoip.ts diff --git a/apps/meteor/server/sdk/types/IBannerService.ts b/packages/core-services/src/types/IBannerService.ts similarity index 100% rename from apps/meteor/server/sdk/types/IBannerService.ts rename to packages/core-services/src/types/IBannerService.ts diff --git a/apps/meteor/server/sdk/types/IBroker.ts b/packages/core-services/src/types/IBroker.ts similarity index 97% rename from apps/meteor/server/sdk/types/IBroker.ts rename to packages/core-services/src/types/IBroker.ts index a56d4fa8ba3..9dc0676f1dc 100644 --- a/apps/meteor/server/sdk/types/IBroker.ts +++ b/packages/core-services/src/types/IBroker.ts @@ -1,5 +1,5 @@ import type { IServiceClass } from './ServiceClass'; -import type { EventSignatures } from '../lib/Events'; +import type { EventSignatures } from '../Events'; export interface IBrokerNode { id: string; diff --git a/apps/meteor/server/sdk/types/IDeviceManagementService.ts b/packages/core-services/src/types/IDeviceManagementService.ts similarity index 100% rename from apps/meteor/server/sdk/types/IDeviceManagementService.ts rename to packages/core-services/src/types/IDeviceManagementService.ts diff --git a/apps/meteor/server/sdk/types/IEnterpriseSettings.ts b/packages/core-services/src/types/IEnterpriseSettings.ts similarity index 100% rename from apps/meteor/server/sdk/types/IEnterpriseSettings.ts rename to packages/core-services/src/types/IEnterpriseSettings.ts diff --git a/apps/meteor/server/sdk/types/IFederationService.ts b/packages/core-services/src/types/IFederationService.ts similarity index 100% rename from apps/meteor/server/sdk/types/IFederationService.ts rename to packages/core-services/src/types/IFederationService.ts diff --git a/apps/meteor/server/sdk/types/ILDAPService.ts b/packages/core-services/src/types/ILDAPService.ts similarity index 100% rename from apps/meteor/server/sdk/types/ILDAPService.ts rename to packages/core-services/src/types/ILDAPService.ts diff --git a/apps/meteor/server/sdk/types/ILicense.ts b/packages/core-services/src/types/ILicense.ts similarity index 100% rename from apps/meteor/server/sdk/types/ILicense.ts rename to packages/core-services/src/types/ILicense.ts diff --git a/apps/meteor/server/sdk/types/IMediaService.ts b/packages/core-services/src/types/IMediaService.ts similarity index 100% rename from apps/meteor/server/sdk/types/IMediaService.ts rename to packages/core-services/src/types/IMediaService.ts diff --git a/apps/meteor/server/sdk/types/IMeteor.ts b/packages/core-services/src/types/IMeteor.ts similarity index 81% rename from apps/meteor/server/sdk/types/IMeteor.ts rename to packages/core-services/src/types/IMeteor.ts index a9a619d3c6b..80939d171c4 100644 --- a/apps/meteor/server/sdk/types/IMeteor.ts +++ b/packages/core-services/src/types/IMeteor.ts @@ -1,4 +1,3 @@ -import type { IRoutingManagerConfig } from '../../../definition/IRoutingManagerConfig'; import type { IServiceClass } from './ServiceClass'; export type AutoUpdateRecord = { @@ -18,5 +17,4 @@ export interface IMeteor extends IServiceClass { getLoginServiceConfiguration(): Promise<any[]>; callMethodWithToken(userId: string | undefined, token: string | undefined, method: string, args: any[]): Promise<void | any>; notifyGuestStatusChanged(token: string, status: string): Promise<void>; - getRoutingManagerConfig(): IRoutingManagerConfig; } diff --git a/apps/meteor/server/sdk/types/INPSService.ts b/packages/core-services/src/types/INPSService.ts similarity index 100% rename from apps/meteor/server/sdk/types/INPSService.ts rename to packages/core-services/src/types/INPSService.ts diff --git a/apps/meteor/server/sdk/types/IOmnichannelService.ts b/packages/core-services/src/types/IOmnichannelService.ts similarity index 100% rename from apps/meteor/server/sdk/types/IOmnichannelService.ts rename to packages/core-services/src/types/IOmnichannelService.ts diff --git a/apps/meteor/server/sdk/types/IOmnichannelVoipService.ts b/packages/core-services/src/types/IOmnichannelVoipService.ts similarity index 78% rename from apps/meteor/server/sdk/types/IOmnichannelVoipService.ts rename to packages/core-services/src/types/IOmnichannelVoipService.ts index a224adbbbb5..81c9f8c9e4c 100644 --- a/apps/meteor/server/sdk/types/IOmnichannelVoipService.ts +++ b/packages/core-services/src/types/IOmnichannelVoipService.ts @@ -3,16 +3,32 @@ import type { IAgentExtensionMap, IRoomCreationResponse, ILivechatVisitor, - IVoipRoom, IRoom, IUser, IVoipExtensionWithAgentInfo, ILivechatAgent, VoipClientEvents, + IVoipRoom, } from '@rocket.chat/core-typings'; import type { PaginatedResult } from '@rocket.chat/rest-typings'; -import type { FindVoipRoomsParams } from '../../services/omnichannel-voip/internalTypes'; +export type FindVoipRoomsParams = { + agents?: string[]; + open?: boolean; + createdAt?: { start?: string; end?: string }; + closedAt?: { start?: string; end?: string }; + tags?: string[]; + queue?: string; + visitorId?: string; + options?: { + sort?: FindOptions<IVoipRoom>['sort']; + count?: number; + fields?: Record<string, unknown>; + offset?: number; + }; + direction?: IVoipRoom['direction']; + roomName?: string; +}; export interface IOmnichannelVoipService { getFreeExtensions(): Promise<string[]>; diff --git a/apps/meteor/server/sdk/types/IPresence.ts b/packages/core-services/src/types/IPresence.ts similarity index 100% rename from apps/meteor/server/sdk/types/IPresence.ts rename to packages/core-services/src/types/IPresence.ts diff --git a/apps/meteor/server/sdk/types/IPushService.ts b/packages/core-services/src/types/IPushService.ts similarity index 100% rename from apps/meteor/server/sdk/types/IPushService.ts rename to packages/core-services/src/types/IPushService.ts diff --git a/apps/meteor/server/sdk/types/IRoomService.ts b/packages/core-services/src/types/IRoomService.ts similarity index 100% rename from apps/meteor/server/sdk/types/IRoomService.ts rename to packages/core-services/src/types/IRoomService.ts diff --git a/apps/meteor/server/sdk/types/ISAUMonitorService.ts b/packages/core-services/src/types/ISAUMonitorService.ts similarity index 100% rename from apps/meteor/server/sdk/types/ISAUMonitorService.ts rename to packages/core-services/src/types/ISAUMonitorService.ts diff --git a/apps/meteor/server/sdk/types/ITeamService.ts b/packages/core-services/src/types/ITeamService.ts similarity index 100% rename from apps/meteor/server/sdk/types/ITeamService.ts rename to packages/core-services/src/types/ITeamService.ts diff --git a/apps/meteor/server/sdk/types/ITelemetryEvent.ts b/packages/core-services/src/types/ITelemetryEvent.ts similarity index 100% rename from apps/meteor/server/sdk/types/ITelemetryEvent.ts rename to packages/core-services/src/types/ITelemetryEvent.ts diff --git a/apps/meteor/server/sdk/types/IUiKitCoreApp.ts b/packages/core-services/src/types/IUiKitCoreApp.ts similarity index 100% rename from apps/meteor/server/sdk/types/IUiKitCoreApp.ts rename to packages/core-services/src/types/IUiKitCoreApp.ts diff --git a/apps/meteor/server/sdk/types/IUploadService.ts b/packages/core-services/src/types/IUploadService.ts similarity index 100% rename from apps/meteor/server/sdk/types/IUploadService.ts rename to packages/core-services/src/types/IUploadService.ts diff --git a/apps/meteor/server/sdk/types/IVideoConfService.ts b/packages/core-services/src/types/IVideoConfService.ts similarity index 100% rename from apps/meteor/server/sdk/types/IVideoConfService.ts rename to packages/core-services/src/types/IVideoConfService.ts diff --git a/apps/meteor/server/sdk/types/IVoipService.ts b/packages/core-services/src/types/IVoipService.ts similarity index 90% rename from apps/meteor/server/sdk/types/IVoipService.ts rename to packages/core-services/src/types/IVoipService.ts index 95f2e2cbb03..a2179a5df79 100644 --- a/apps/meteor/server/sdk/types/IVoipService.ts +++ b/packages/core-services/src/types/IVoipService.ts @@ -7,11 +7,8 @@ import type { IManagementServerConnectionStatus, } from '@rocket.chat/core-typings'; -import type { CommandHandler } from '../../services/voip/connector/asterisk/CommandHandler'; - export interface IVoipService { getServerConfigData(serverType: ServerType): IVoipCallServerConfig | IVoipManagementServerConfig; - getConnector(): CommandHandler; getConnectorVersion(): string; getQueueSummary(): Promise<IVoipConnectorResult>; getQueuedCallsForThisExtension(requestParams: any): Promise<IVoipConnectorResult>; diff --git a/apps/meteor/server/sdk/types/ServiceClass.ts b/packages/core-services/src/types/ServiceClass.ts similarity index 92% rename from apps/meteor/server/sdk/types/ServiceClass.ts rename to packages/core-services/src/types/ServiceClass.ts index 8e9a6d65c54..427d9d7b7d0 100644 --- a/apps/meteor/server/sdk/types/ServiceClass.ts +++ b/packages/core-services/src/types/ServiceClass.ts @@ -1,8 +1,8 @@ import { EventEmitter } from 'events'; -import { asyncLocalStorage } from '..'; +import { asyncLocalStorage } from '../lib/asyncLocalStorage'; import type { IBroker, IBrokerNode } from './IBroker'; -import type { EventSignatures } from '../lib/Events'; +import type { EventSignatures } from '../Events'; import type { IApiService } from './IApiService'; export interface IServiceContext { @@ -26,7 +26,7 @@ export interface IServiceContext { } export interface IServiceClass { - getName(): string; + getName(): string | undefined; onNodeConnected?({ node, reconnected }: { node: IBrokerNode; reconnected: boolean }): void; onNodeUpdated?({ node }: { node: IBrokerNode }): void; onNodeDisconnected?({ node, unexpected }: { node: IBrokerNode; unexpected: boolean }): Promise<void>; @@ -45,13 +45,13 @@ export interface IServiceClass { } export abstract class ServiceClass implements IServiceClass { - protected name: string; + protected name?: string; protected events = new EventEmitter(); protected internal = false; - protected api: IApiService; + protected api?: IApiService; constructor() { this.emit = this.emit.bind(this); @@ -65,7 +65,7 @@ export abstract class ServiceClass implements IServiceClass { return this.events.eventNames() as unknown as Array<keyof EventSignatures>; } - getName(): string { + getName(): string | undefined { return this.name; } diff --git a/packages/core-services/tsconfig.json b/packages/core-services/tsconfig.json new file mode 100644 index 00000000000..52e9dd8c497 --- /dev/null +++ b/packages/core-services/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.base.server.json", + "compilerOptions": { + "declaration": true, + "rootDir": "./src", + "outDir": "./dist" + }, + "include": ["./src/**/*"] +} diff --git a/packages/presence/package.json b/packages/presence/package.json index be2fd4e7f86..cbbec35eb43 100644 --- a/packages/presence/package.json +++ b/packages/presence/package.json @@ -23,12 +23,13 @@ "testunit": "jest tests/**/*.test.ts", "typecheck": "tsc --noEmit --skipLibCheck -p tsconfig.json" }, - "main": "./dist/packages/presence/src/Presence.js", - "typings": "./dist/packages/presence/src/Presence.d.ts", + "main": "./dist/Presence.js", + "typings": "./dist/Presence.d.ts", "files": [ "/dist" ], "dependencies": { + "@rocket.chat/core-services": "workspace:^", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/models": "workspace:^", "mongodb": "^4.12.1" diff --git a/packages/presence/src/Presence.ts b/packages/presence/src/Presence.ts index 7e6a3bf70cf..c4f0a088981 100755 --- a/packages/presence/src/Presence.ts +++ b/packages/presence/src/Presence.ts @@ -1,11 +1,10 @@ +import type { IPresence, IBrokerNode } from '@rocket.chat/core-services'; import type { IUser } from '@rocket.chat/core-typings'; +import { ServiceClass } from '@rocket.chat/core-services'; import { UserStatus } from '@rocket.chat/core-typings'; import { Users, UsersSessions } from '@rocket.chat/models'; import { processPresenceAndStatus } from './lib/processConnectionStatus'; -import type { IPresence } from '../../../apps/meteor/server/sdk/types/IPresence'; -import type { IBrokerNode } from '../../../apps/meteor/server/sdk/types/IBroker'; -import { ServiceClass } from '../../../apps/meteor/server/sdk/types/ServiceClass'; export class Presence extends ServiceClass implements IPresence { protected name = 'presence'; @@ -96,7 +95,7 @@ export class Presence extends ServiceClass implements IPresence { return affectedUsers.map(({ _id }) => _id); } - const nodes = await this.api.nodeList(); + const nodes = (await this.api?.nodeList()) || []; const ids = nodes.filter((node) => node.available).map(({ id }) => id); if (ids.length === 0) { @@ -181,7 +180,7 @@ export class Presence extends ServiceClass implements IPresence { if (!this.broadcastEnabled) { return; } - this.api.broadcast('presence.status', { + this.api?.broadcast('presence.status', { user, previousStatus, }); diff --git a/packages/presence/tsconfig.json b/packages/presence/tsconfig.json index fb32de4565d..efae6b329dd 100644 --- a/packages/presence/tsconfig.json +++ b/packages/presence/tsconfig.json @@ -1,11 +1,12 @@ { "extends": "../../tsconfig.base.server.json", "compilerOptions": { + "lib": ["es2020"], + "target": "es2020", "strictPropertyInitialization": false, // TODO: Remove this line "declaration": true, - "outDir": "./dist" + "outDir": "./dist", + "rootDir": "./src", }, - "include": ["../../apps/meteor/definition/externals/meteor/rocketchat-streamer.d.ts"], - "exclude": ["./dist"], "files": ["./src/Presence.ts"] } diff --git a/yarn.lock b/yarn.lock index 051733f7f62..7277ee1563e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6163,6 +6163,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/account-service@workspace:ee/apps/account-service" dependencies: + "@rocket.chat/core-services": "workspace:^" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/emitter": next "@rocket.chat/eslint-config": "workspace:^" @@ -6262,6 +6263,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/authorization-service@workspace:ee/apps/authorization-service" dependencies: + "@rocket.chat/core-services": "workspace:^" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/emitter": next "@rocket.chat/eslint-config": "workspace:^" @@ -6300,6 +6302,27 @@ __metadata: languageName: unknown linkType: soft +"@rocket.chat/core-services@workspace:^, @rocket.chat/core-services@workspace:packages/core-sdk": + version: 0.0.0-use.local + resolution: "@rocket.chat/core-services@workspace:packages/core-sdk" + dependencies: + "@rocket.chat/apps-engine": ^1.32.0 + "@rocket.chat/core-typings": "workspace:^" + "@rocket.chat/eslint-config": "workspace:^" + "@rocket.chat/icons": next + "@rocket.chat/message-parser": 0.31.22 + "@rocket.chat/models": "workspace:^" + "@rocket.chat/rest-typings": "workspace:^" + "@rocket.chat/ui-kit": next + "@types/fibers": ^3.1.1 + eslint: ^8.29.0 + fibers: ^5.0.3 + mongodb: ^4.12.1 + prettier: ^2.7.1 + typescript: ~4.5.5 + languageName: unknown + linkType: soft + "@rocket.chat/core-typings@workspace:^, @rocket.chat/core-typings@workspace:packages/core-typings": version: 0.0.0-use.local resolution: "@rocket.chat/core-typings@workspace:packages/core-typings" @@ -6343,6 +6366,7 @@ __metadata: resolution: "@rocket.chat/ddp-streamer@workspace:ee/apps/ddp-streamer" dependencies: "@rocket.chat/apps-engine": ^1.32.0 + "@rocket.chat/core-services": "workspace:^" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/emitter": next "@rocket.chat/eslint-config": "workspace:^" @@ -6817,6 +6841,7 @@ __metadata: "@rocket.chat/api-client": "workspace:^" "@rocket.chat/apps-engine": 1.36.0 "@rocket.chat/cas-validate": "workspace:^" + "@rocket.chat/core-services": "workspace:^" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/css-in-js": next "@rocket.chat/emitter": next @@ -7203,6 +7228,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/presence-service@workspace:ee/apps/presence-service" dependencies: + "@rocket.chat/core-services": "workspace:^" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/emitter": next "@rocket.chat/eslint-config": "workspace:^" @@ -7235,6 +7261,7 @@ __metadata: "@babel/preset-env": ^7.20.2 "@babel/preset-typescript": ^7.18.6 "@rocket.chat/apps-engine": ^1.32.0 + "@rocket.chat/core-services": "workspace:^" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/eslint-config": "workspace:^" "@rocket.chat/models": "workspace:^" @@ -7293,6 +7320,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/stream-hub-service@workspace:ee/apps/stream-hub-service" dependencies: + "@rocket.chat/core-services": "workspace:^" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/emitter": next "@rocket.chat/eslint-config": "workspace:^" @@ -31383,6 +31411,7 @@ __metadata: resolution: "rocketchat-services@workspace:apps/meteor/ee/server/services" dependencies: "@rocket.chat/apps-engine": ^1.32.0 + "@rocket.chat/core-services": "workspace:^" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/emitter": next "@rocket.chat/icons": next -- GitLab