@messenger-box/platform-server 10.0.3-alpha.6 → 10.0.3-alpha.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/containers/containers.js +3 -1
- package/lib/containers/containers.js.map +1 -1
- package/lib/containers/context-services-from-container.d.ts +2 -2
- package/lib/containers/context-services-from-container.js +2 -1
- package/lib/containers/context-services-from-container.js.map +1 -1
- package/lib/graphql/resolvers/channel-member.d.ts +3 -3
- package/lib/graphql/resolvers/channel-member.js +30 -5
- package/lib/graphql/resolvers/channel-member.js.map +1 -1
- package/lib/graphql/resolvers/channel.d.ts +3 -3
- package/lib/graphql/resolvers/channel.js +275 -53
- package/lib/graphql/resolvers/channel.js.map +1 -1
- package/lib/graphql/resolvers/extended-token-account.d.ts +3 -32
- package/lib/graphql/resolvers/extended-token-account.js +90 -23
- package/lib/graphql/resolvers/extended-token-account.js.map +1 -1
- package/lib/graphql/resolvers/index.d.ts +1 -31
- package/lib/graphql/resolvers/post-thread.d.ts +2 -3
- package/lib/graphql/resolvers/post-thread.js +294 -132
- package/lib/graphql/resolvers/post-thread.js.map +1 -1
- package/lib/graphql/resolvers/post.d.ts +2 -3
- package/lib/graphql/resolvers/post.js +697 -234
- package/lib/graphql/resolvers/post.js.map +1 -1
- package/lib/graphql/resolvers/reaction.d.ts +3 -3
- package/lib/graphql/resolvers/reaction.js +96 -14
- package/lib/graphql/resolvers/reaction.js.map +1 -1
- package/lib/graphql/schema/channel-member.graphql +110 -21
- package/lib/graphql/schema/channel-member.graphql.js +1 -1
- package/lib/graphql/schema/channel.graphql +331 -38
- package/lib/graphql/schema/channel.graphql.js +1 -1
- package/lib/graphql/schema/post-thread.graphql +166 -21
- package/lib/graphql/schema/post-thread.graphql.js +1 -1
- package/lib/graphql/schema/post.graphql +280 -40
- package/lib/graphql/schema/post.graphql.js +1 -1
- package/lib/graphql/schema/reaction.graphql +71 -13
- package/lib/graphql/schema/reaction.graphql.js +1 -1
- package/lib/graphql/schema/services.graphql +2 -0
- package/lib/graphql/schema/users.graphql +76 -13
- package/lib/graphql/schema/users.graphql.js +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/interfaces/index.d.ts +0 -1
- package/lib/interfaces/services.d.ts +1 -2
- package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.d.ts +17 -0
- package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js +44 -0
- package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js.map +1 -0
- package/lib/migrations/dbMigrations/index.d.ts +1 -0
- package/lib/migrations/index.d.ts +1 -0
- package/lib/migrations/mail-template-migration.js +1 -1
- package/lib/migrations/message-notification-template-migration.d.ts +1 -1
- package/lib/migrations/message-notification-template-migration.js +1 -1
- package/lib/plugins/channel-moleculer-service.d.ts +21 -1
- package/lib/plugins/channel-moleculer-service.js +417 -115
- package/lib/plugins/channel-moleculer-service.js.map +1 -1
- package/lib/plugins/extended-token-account-moleculer-service.d.ts +25 -1
- package/lib/plugins/extended-token-account-moleculer-service.js +348 -22
- package/lib/plugins/extended-token-account-moleculer-service.js.map +1 -1
- package/lib/plugins/messenger-notification-moleculer-service.d.ts +27 -3
- package/lib/plugins/messenger-notification-moleculer-service.js +404 -58
- package/lib/plugins/messenger-notification-moleculer-service.js.map +1 -1
- package/lib/plugins/post-moleculer-service.d.ts +85 -21
- package/lib/plugins/post-moleculer-service.js +986 -256
- package/lib/plugins/post-moleculer-service.js.map +1 -1
- package/lib/plugins/post-thread-moleculer-service.d.ts +33 -1
- package/lib/plugins/post-thread-moleculer-service.js +326 -8
- package/lib/plugins/post-thread-moleculer-service.js.map +1 -1
- package/lib/plugins/reaction-moleculer-service.js +1 -1
- package/lib/plugins/reaction-moleculer-service.js.map +1 -1
- package/lib/preferences/settings/post-settings.d.ts +2 -0
- package/lib/preferences/settings/post-settings.js +47 -9
- package/lib/preferences/settings/post-settings.js.map +1 -1
- package/lib/services/channel-service.d.ts +178 -33
- package/lib/services/channel-service.js +735 -276
- package/lib/services/channel-service.js.map +1 -1
- package/lib/services/extended-token-account-service.d.ts +130 -14
- package/lib/services/extended-token-account-service.js +462 -52
- package/lib/services/extended-token-account-service.js.map +1 -1
- package/lib/services/messenger-notification-service.d.ts +106 -13
- package/lib/services/messenger-notification-service.js +824 -442
- package/lib/services/messenger-notification-service.js.map +1 -1
- package/lib/services/post-service.d.ts +172 -16
- package/lib/services/post-service.js +580 -113
- package/lib/services/post-service.js.map +1 -1
- package/lib/services/post-thread-service.d.ts +114 -5
- package/lib/services/post-thread-service.js +400 -13
- package/lib/services/post-thread-service.js.map +1 -1
- package/lib/services/proxy-services/channel-microservice.d.ts +5 -3
- package/lib/services/proxy-services/channel-microservice.js +19 -10
- package/lib/services/proxy-services/channel-microservice.js.map +1 -1
- package/lib/services/proxy-services/messenger-notification-microservice.d.ts +128 -8
- package/lib/services/proxy-services/messenger-notification-microservice.js +324 -29
- package/lib/services/proxy-services/messenger-notification-microservice.js.map +1 -1
- package/lib/services/proxy-services/post-microservice.d.ts +186 -12
- package/lib/services/proxy-services/post-microservice.js +543 -54
- package/lib/services/proxy-services/post-microservice.js.map +1 -1
- package/lib/services/proxy-services/post-thread-microservice.d.ts +134 -3
- package/lib/services/proxy-services/post-thread-microservice.js +388 -6
- package/lib/services/proxy-services/post-thread-microservice.js.map +1 -1
- package/lib/services/proxy-services/reaction-microservice.d.ts +161 -3
- package/lib/services/proxy-services/reaction-microservice.js +474 -2
- package/lib/services/proxy-services/reaction-microservice.js.map +1 -1
- package/lib/services/reaction-service.d.ts +124 -4
- package/lib/services/reaction-service.js +415 -3
- package/lib/services/reaction-service.js.map +1 -1
- package/lib/store/models/account-token-store.d.ts +1 -1
- package/lib/store/models/account-token-store.js.map +1 -1
- package/lib/store/models/channel.d.ts +2 -3
- package/lib/store/models/channel.js +180 -71
- package/lib/store/models/channel.js.map +1 -1
- package/lib/store/models/post-thread.d.ts +3 -3
- package/lib/store/models/post-thread.js +96 -14
- package/lib/store/models/post-thread.js.map +1 -1
- package/lib/store/models/post.d.ts +2 -3
- package/lib/store/models/post.js +143 -23
- package/lib/store/models/post.js.map +1 -1
- package/lib/store/models/reaction.d.ts +2 -3
- package/lib/store/models/reaction.js +67 -8
- package/lib/store/models/reaction.js.map +1 -1
- package/lib/store/repositories/__tests__/__fixtures__/team-repository.d.ts +3 -3
- package/lib/store/repositories/channel-repository.d.ts +6 -6
- package/lib/store/repositories/channel-repository.js +5 -2
- package/lib/store/repositories/channel-repository.js.map +1 -1
- package/lib/store/repositories/post-repository.d.ts +6 -6
- package/lib/store/repositories/post-repository.js +5 -2
- package/lib/store/repositories/post-repository.js.map +1 -1
- package/lib/store/repositories/post-thread-repository.d.ts +6 -6
- package/lib/store/repositories/post-thread-repository.js +5 -2
- package/lib/store/repositories/post-thread-repository.js.map +1 -1
- package/lib/store/repositories/reaction-repository.d.ts +6 -6
- package/lib/store/repositories/reaction-repository.js +5 -2
- package/lib/store/repositories/reaction-repository.js.map +1 -1
- package/lib/templates/constants/SERVER_TYPES.ts.template +0 -3
- package/lib/templates/repositories/ChannelRepository.ts.template +3 -3
- package/lib/templates/repositories/PostRepository.ts.template +3 -3
- package/lib/templates/repositories/PostThreadRepository.ts.template +3 -3
- package/lib/templates/repositories/ReactionRepository.ts.template +3 -4
- package/lib/templates/services/ChannelService.ts.template +278 -39
- package/lib/templates/services/ExtendedTokenAccountService.ts.template +107 -3
- package/lib/templates/services/MessengerNotificationService.ts.template +94 -19
- package/lib/templates/services/PostService.ts.template +184 -20
- package/lib/templates/services/PostThreadService.ts.template +151 -6
- package/lib/templates/services/ReactionService.ts.template +129 -3
- package/package.json +4 -4
- package/lib/interfaces/context.d.ts +0 -14
- package/lib/store/models/common-options.js +0 -20
- package/lib/store/models/common-options.js.map +0 -1
|
@@ -1,44 +1,189 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { Disposable, DisposableCollection, Emitter } from '@adminide-stack/core';
|
|
2
|
+
import { IChannelModel, IChannelUnread, IPost, IUserAccount, IChannelRepository, IChannelService, IPostService, ISaveChannelParams, ISaveDirectChannelParams, ISavePublicChannelParams, INotificationProps, ICreateDirectChannelParams, ISaveMembersToChannelParams, AsDomainType, IUserContext } from 'common/server';
|
|
3
|
+
import { BaseService2 } from '@common-stack/store-mongo';
|
|
4
|
+
import { CdmLogger } from '@cdm-logger/core';
|
|
5
|
+
import { ServiceBroker } from 'moleculer';
|
|
6
|
+
import type { Redis } from 'ioredis';
|
|
7
|
+
/**
|
|
8
|
+
* Modern implementation of the Channel Service
|
|
9
|
+
*
|
|
10
|
+
* This service handles comprehensive channel management within the messenger platform,
|
|
11
|
+
* providing operations for managing channels, their members, and related messaging workflows.
|
|
12
|
+
*
|
|
13
|
+
* Key capabilities:
|
|
14
|
+
* - Channel lifecycle management (creation, updates, deletion)
|
|
15
|
+
* - Member management (adding, removing, role assignment)
|
|
16
|
+
* - Direct and public channel handling
|
|
17
|
+
* - Message and post management within channels
|
|
18
|
+
* - Channel visibility and access control
|
|
19
|
+
* - Notification and unread message tracking
|
|
20
|
+
* - Team-based channel organization
|
|
21
|
+
* - Channel discovery and filtering
|
|
22
|
+
* - Redis caching for performance optimization
|
|
23
|
+
* - Comprehensive error handling and logging
|
|
24
|
+
* - Event-driven architecture with proper disposal
|
|
25
|
+
*
|
|
26
|
+
* The service layer abstracts the underlying data access operations and
|
|
27
|
+
* provides a cohesive API for channel-related functionality throughout
|
|
28
|
+
* the messaging platform, handling complex business rules and cross-cutting concerns.
|
|
29
|
+
*/
|
|
30
|
+
export declare class ChannelService extends BaseService2<IChannelModel> implements IChannelService, Disposable {
|
|
4
31
|
readonly repository: IChannelRepository;
|
|
5
32
|
private readonly postService;
|
|
6
|
-
|
|
33
|
+
protected readonly broker?: ServiceBroker;
|
|
34
|
+
protected readonly redisClient?: Redis;
|
|
35
|
+
protected readonly onChannelCreated: Emitter<{
|
|
36
|
+
channel: AsDomainType<IChannelModel>;
|
|
37
|
+
userContext?: IUserContext;
|
|
38
|
+
}>;
|
|
39
|
+
protected readonly onChannelUpdated: Emitter<{
|
|
40
|
+
channel: AsDomainType<IChannelModel>;
|
|
41
|
+
oldChannel: AsDomainType<IChannelModel>;
|
|
42
|
+
userContext?: IUserContext;
|
|
43
|
+
}>;
|
|
44
|
+
protected readonly onChannelDeleted: Emitter<{
|
|
45
|
+
channelId: string;
|
|
46
|
+
channelName?: string;
|
|
47
|
+
userContext?: IUserContext;
|
|
48
|
+
}>;
|
|
49
|
+
protected readonly onChannelRestored: Emitter<{
|
|
50
|
+
channel: AsDomainType<IChannelModel>;
|
|
51
|
+
userContext?: IUserContext;
|
|
52
|
+
}>;
|
|
53
|
+
protected readonly onMemberAdded: Emitter<{
|
|
54
|
+
channelId: string;
|
|
55
|
+
memberId: string;
|
|
56
|
+
userContext?: IUserContext;
|
|
57
|
+
}>;
|
|
58
|
+
protected readonly onMemberRemoved: Emitter<{
|
|
59
|
+
channelId: string;
|
|
60
|
+
memberId: string;
|
|
61
|
+
userContext?: IUserContext;
|
|
62
|
+
}>;
|
|
63
|
+
protected readonly onChannelViewed: Emitter<{
|
|
64
|
+
channelId: string;
|
|
65
|
+
userId: string;
|
|
66
|
+
timestamp: Date;
|
|
67
|
+
}>;
|
|
68
|
+
protected readonly toDispose: DisposableCollection;
|
|
69
|
+
private logger;
|
|
70
|
+
constructor(repository: IChannelRepository, postService: IPostService, broker?: ServiceBroker, redisClient?: Redis, logger?: CdmLogger.ILogger);
|
|
71
|
+
/**
|
|
72
|
+
* Disposes of resources used by the service
|
|
73
|
+
*/
|
|
74
|
+
dispose(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Helper method to make service calls
|
|
77
|
+
* @param command - Command to execute
|
|
78
|
+
* @param params - Command parameters
|
|
79
|
+
* @param topic - Service topic
|
|
80
|
+
* @param opts - Call options
|
|
81
|
+
* @returns Command result
|
|
82
|
+
*/
|
|
83
|
+
private callAction;
|
|
84
|
+
/**
|
|
85
|
+
* Enhanced method to check if a user is a member of a specific channel
|
|
86
|
+
*
|
|
87
|
+
* @description Verifies channel membership with proper error handling and logging
|
|
88
|
+
*
|
|
89
|
+
* @param {string} channelId - The ID of the channel to check
|
|
90
|
+
* @param {string} user - The ID of the user
|
|
91
|
+
* @returns {Promise<boolean>} - True if the user is a member
|
|
92
|
+
*/
|
|
7
93
|
isMember(channelId: string, user: string): Promise<boolean>;
|
|
8
|
-
|
|
94
|
+
/**
|
|
95
|
+
* Enhanced method to get default notification properties
|
|
96
|
+
*
|
|
97
|
+
* @description Retrieves default notification settings with extensibility
|
|
98
|
+
*
|
|
99
|
+
* @returns {INotificationProps} - Default notification properties
|
|
100
|
+
*/
|
|
9
101
|
get defaultNotifyProps(): INotificationProps;
|
|
102
|
+
/**
|
|
103
|
+
* Enhanced method to get maximum channels per team with configuration support
|
|
104
|
+
*
|
|
105
|
+
* @description Retrieves channel limit with future configuration support
|
|
106
|
+
*
|
|
107
|
+
* @param {string} teamId - The ID of the team
|
|
108
|
+
* @returns {Promise<number>} - Maximum number of channels allowed
|
|
109
|
+
*/
|
|
10
110
|
private static getMaxChannelsPerTeam;
|
|
111
|
+
/**
|
|
112
|
+
* Enhanced method to get current channel count per team
|
|
113
|
+
*
|
|
114
|
+
* @description Counts active channels for a team with proper error handling
|
|
115
|
+
*
|
|
116
|
+
* @param {string} team - The team identifier
|
|
117
|
+
* @returns {Promise<number>} - Current channel count
|
|
118
|
+
*/
|
|
11
119
|
private getCurrentChannelCountPerTeam;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
120
|
+
/**
|
|
121
|
+
* Enhanced method to generate DM name from user IDs
|
|
122
|
+
*
|
|
123
|
+
* @description Creates a standardized direct message channel name
|
|
124
|
+
*
|
|
125
|
+
* @param {string} senderId - The sender's user ID
|
|
126
|
+
* @param {string} receiverId - The receiver's user ID
|
|
127
|
+
* @returns {string} - Generated DM name
|
|
128
|
+
*/
|
|
129
|
+
private static getDmNameFromIds;
|
|
130
|
+
/**
|
|
131
|
+
* Enhanced method to create a direct channel between users
|
|
132
|
+
*
|
|
133
|
+
* @description Creates direct channels with comprehensive validation and error handling
|
|
134
|
+
*
|
|
135
|
+
* @param {ICreateDirectChannelParams} data - The direct channel creation parameters
|
|
136
|
+
* @returns {Promise<AsDomainType<IChannelModel> | Error>} - The created channel or error
|
|
137
|
+
*/
|
|
138
|
+
createDirectChannel(data: ICreateDirectChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
|
|
139
|
+
/**
|
|
140
|
+
* Enhanced method to save a direct channel
|
|
141
|
+
*
|
|
142
|
+
* @description Saves direct channels with comprehensive validation
|
|
143
|
+
*
|
|
144
|
+
* @param {ISaveDirectChannelParams} channel - The direct channel parameters
|
|
145
|
+
* @returns {Promise<AsDomainType<IChannelModel> | Error>} - The created channel or error
|
|
146
|
+
*/
|
|
147
|
+
saveDirectChannel(channel: ISaveDirectChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
|
|
148
|
+
/**
|
|
149
|
+
* Enhanced method to add a member to a channel
|
|
150
|
+
*
|
|
151
|
+
* @description Adds a single member to a channel with comprehensive validation and event firing
|
|
152
|
+
*
|
|
153
|
+
* @param {string} channelId - The ID of the channel
|
|
154
|
+
* @param {string} memberId - The ID of the member to add
|
|
155
|
+
* @returns {Promise<AsDomainType<IChannelModel> | Error>} - The updated channel or error
|
|
156
|
+
*/
|
|
157
|
+
addMemberToChannel(channelId: string, memberId: string): Promise<AsDomainType<IChannelModel> | Error>;
|
|
158
|
+
saveMembersToChannel(data: ISaveMembersToChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
|
|
159
|
+
saveChannel(data: ISaveChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
|
|
160
|
+
savePublicChannel(data: ISavePublicChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
|
|
161
|
+
getChannelUnread(channelId: string, userId: string): Promise<IChannelUnread | Error>;
|
|
162
|
+
getPinnedPosts(channelId: string): Promise<IPost[] | Error>;
|
|
163
|
+
getFromMaster(id: string): Promise<AsDomainType<IChannelModel> | Error>;
|
|
164
|
+
restore(channelId: string, time: Date): Promise<void>;
|
|
165
|
+
getByName(title: string): Promise<AsDomainType<IChannelModel>>;
|
|
166
|
+
getByNameIncludeDeleted(teamId: string, name: string): Promise<AsDomainType<IChannelModel> | Error>;
|
|
167
|
+
getByNames(teamId: string, names: string[]): Promise<Array<AsDomainType<IChannelModel>> | Error>;
|
|
168
|
+
getChannelCounts(teamId: string, userId: string): Promise<any | Error>;
|
|
169
|
+
getChannels(teamId: string, userId: string, includeDeleted: boolean, lastDeleteAt: number, orgId: string): Promise<Array<AsDomainType<IChannelModel>> | Error>;
|
|
26
170
|
private generateCriteria;
|
|
27
|
-
deleteChannel(id: string): Promise<boolean>;
|
|
28
|
-
getDeleted(teamId: string, offset: number, limit: number, userId: string): Promise<
|
|
29
|
-
getDeletedByName(teamId: string, name: string): Promise<
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
getTeamChannels(teamId: string): Promise<IChannel[]>;
|
|
171
|
+
deleteChannel(id: string): Promise<boolean | Error>;
|
|
172
|
+
getDeleted(teamId: string, offset: number, limit: number, userId: string): Promise<Array<AsDomainType<IChannelModel>> | Error>;
|
|
173
|
+
getDeletedByName(teamId: string, name: string): Promise<AsDomainType<IChannelModel> | Error>;
|
|
174
|
+
getMoreChannels(teamId: string, userId: string, offset: number, limit: number): Promise<Array<AsDomainType<IChannelModel>> | Error>;
|
|
175
|
+
getPrivateChannelsForTeam(teamId: string, offset: number, limit: number): Promise<Array<AsDomainType<IChannelModel>> | Error>;
|
|
176
|
+
getPublicChannelsByIdsForTeam(teamId: string, channelsIds: string[]): Promise<Array<AsDomainType<IChannelModel>> | Error>;
|
|
177
|
+
getPublicChannelsForTeam(teamId: string, offset: number, limit: number): Promise<Array<AsDomainType<IChannelModel>> | Error>;
|
|
178
|
+
getTeamChannels(teamId: string): Promise<Array<AsDomainType<IChannelModel>> | Error>;
|
|
36
179
|
hideChannel(id: string): Promise<boolean>;
|
|
37
|
-
invalidateChannelByName(teamId: string, name: string): Promise<void>;
|
|
38
180
|
leaveChannel(id: string): Promise<boolean>;
|
|
39
181
|
viewChannel(id: string, user: string): Promise<boolean>;
|
|
40
|
-
permanentDelete(channelId: string): void
|
|
41
|
-
permanentDeleteByTeam(teamId: string): void
|
|
42
|
-
permanentDeleteMembersByChannel(channelId: string): void
|
|
43
|
-
saveMultipleMembers(members: IUserAccount[]): Promise<IUserAccount[]>;
|
|
182
|
+
permanentDelete(channelId: string): Promise<void | Error>;
|
|
183
|
+
permanentDeleteByTeam(teamId: string): Promise<void | Error>;
|
|
184
|
+
permanentDeleteMembersByChannel(channelId: string): Promise<void | Error>;
|
|
185
|
+
saveMultipleMembers(members: IUserAccount[]): Promise<IUserAccount[] | Error>;
|
|
186
|
+
invalidateChannelByName(teamId: string, name: string): Promise<void>;
|
|
44
187
|
}
|
|
188
|
+
declare const _default: any;
|
|
189
|
+
export default _default;
|