@messenger-box/platform-server 10.0.3-alpha.7 → 10.0.3-alpha.72

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.
Files changed (149) hide show
  1. package/lib/containers/containers.js +4 -1
  2. package/lib/containers/containers.js.map +1 -1
  3. package/lib/containers/context-services-from-container.d.ts +1 -1
  4. package/lib/containers/context-services-from-container.js +1 -1
  5. package/lib/containers/context-services-from-container.js.map +1 -1
  6. package/lib/graphql/resolvers/channel-member.d.ts +3 -2
  7. package/lib/graphql/resolvers/channel-member.js +30 -5
  8. package/lib/graphql/resolvers/channel-member.js.map +1 -1
  9. package/lib/graphql/resolvers/channel.d.ts +3 -2
  10. package/lib/graphql/resolvers/channel.js +279 -53
  11. package/lib/graphql/resolvers/channel.js.map +1 -1
  12. package/lib/graphql/resolvers/extended-token-account.d.ts +3 -2
  13. package/lib/graphql/resolvers/extended-token-account.js +90 -23
  14. package/lib/graphql/resolvers/extended-token-account.js.map +1 -1
  15. package/lib/graphql/resolvers/index.d.ts +1 -1
  16. package/lib/graphql/resolvers/post-thread.d.ts +1 -1
  17. package/lib/graphql/resolvers/post-thread.js +294 -132
  18. package/lib/graphql/resolvers/post-thread.js.map +1 -1
  19. package/lib/graphql/resolvers/post.d.ts +2 -3
  20. package/lib/graphql/resolvers/post.js +696 -234
  21. package/lib/graphql/resolvers/post.js.map +1 -1
  22. package/lib/graphql/resolvers/reaction.d.ts +3 -2
  23. package/lib/graphql/resolvers/reaction.js +96 -14
  24. package/lib/graphql/resolvers/reaction.js.map +1 -1
  25. package/lib/graphql/schema/channel-member.graphql +110 -21
  26. package/lib/graphql/schema/channel-member.graphql.js +1 -1
  27. package/lib/graphql/schema/channel.graphql +337 -38
  28. package/lib/graphql/schema/channel.graphql.js +1 -1
  29. package/lib/graphql/schema/post-thread.graphql +167 -21
  30. package/lib/graphql/schema/post-thread.graphql.js +1 -1
  31. package/lib/graphql/schema/post.graphql +284 -40
  32. package/lib/graphql/schema/post.graphql.js +1 -1
  33. package/lib/graphql/schema/reaction.graphql +71 -13
  34. package/lib/graphql/schema/reaction.graphql.js +1 -1
  35. package/lib/graphql/schema/services.graphql +2 -0
  36. package/lib/graphql/schema/users.graphql +76 -13
  37. package/lib/graphql/schema/users.graphql.js +1 -1
  38. package/lib/index.js +1 -1
  39. package/lib/index.js.map +1 -1
  40. package/lib/interfaces/index.d.ts +0 -1
  41. package/lib/interfaces/services.d.ts +1 -1
  42. package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.d.ts +17 -0
  43. package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js +44 -0
  44. package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js.map +1 -0
  45. package/lib/migrations/dbMigrations/index.d.ts +1 -0
  46. package/lib/migrations/index.d.ts +1 -0
  47. package/lib/migrations/mail-template-migration.js +1 -1
  48. package/lib/migrations/message-notification-template-migration.d.ts +1 -1
  49. package/lib/migrations/message-notification-template-migration.js +1 -1
  50. package/lib/plugins/channel-moleculer-service.d.ts +21 -1
  51. package/lib/plugins/channel-moleculer-service.js +417 -115
  52. package/lib/plugins/channel-moleculer-service.js.map +1 -1
  53. package/lib/plugins/extended-token-account-moleculer-service.d.ts +25 -1
  54. package/lib/plugins/extended-token-account-moleculer-service.js +348 -22
  55. package/lib/plugins/extended-token-account-moleculer-service.js.map +1 -1
  56. package/lib/plugins/messenger-notification-moleculer-service.d.ts +27 -3
  57. package/lib/plugins/messenger-notification-moleculer-service.js +404 -58
  58. package/lib/plugins/messenger-notification-moleculer-service.js.map +1 -1
  59. package/lib/plugins/post-moleculer-service.d.ts +85 -21
  60. package/lib/plugins/post-moleculer-service.js +986 -256
  61. package/lib/plugins/post-moleculer-service.js.map +1 -1
  62. package/lib/plugins/post-thread-moleculer-service.d.ts +33 -1
  63. package/lib/plugins/post-thread-moleculer-service.js +326 -8
  64. package/lib/plugins/post-thread-moleculer-service.js.map +1 -1
  65. package/lib/plugins/reaction-moleculer-service.js +1 -1
  66. package/lib/plugins/reaction-moleculer-service.js.map +1 -1
  67. package/lib/preferences/settings/post-settings.d.ts +2 -0
  68. package/lib/preferences/settings/post-settings.js +47 -9
  69. package/lib/preferences/settings/post-settings.js.map +1 -1
  70. package/lib/services/channel-service.d.ts +179 -33
  71. package/lib/services/channel-service.js +821 -274
  72. package/lib/services/channel-service.js.map +1 -1
  73. package/lib/services/extended-token-account-service.d.ts +130 -14
  74. package/lib/services/extended-token-account-service.js +462 -52
  75. package/lib/services/extended-token-account-service.js.map +1 -1
  76. package/lib/services/index.d.ts +1 -0
  77. package/lib/services/messenger-notification-service.d.ts +106 -13
  78. package/lib/services/messenger-notification-service.js +824 -442
  79. package/lib/services/messenger-notification-service.js.map +1 -1
  80. package/lib/services/post-service.d.ts +182 -16
  81. package/lib/services/post-service.js +731 -115
  82. package/lib/services/post-service.js.map +1 -1
  83. package/lib/services/post-thread-service.d.ts +114 -5
  84. package/lib/services/post-thread-service.js +400 -13
  85. package/lib/services/post-thread-service.js.map +1 -1
  86. package/lib/services/proxy-services/channel-microservice.d.ts +5 -3
  87. package/lib/services/proxy-services/channel-microservice.js +19 -10
  88. package/lib/services/proxy-services/channel-microservice.js.map +1 -1
  89. package/lib/services/proxy-services/messenger-notification-microservice.d.ts +128 -8
  90. package/lib/services/proxy-services/messenger-notification-microservice.js +324 -29
  91. package/lib/services/proxy-services/messenger-notification-microservice.js.map +1 -1
  92. package/lib/services/proxy-services/post-microservice.d.ts +186 -12
  93. package/lib/services/proxy-services/post-microservice.js +543 -54
  94. package/lib/services/proxy-services/post-microservice.js.map +1 -1
  95. package/lib/services/proxy-services/post-thread-microservice.d.ts +134 -3
  96. package/lib/services/proxy-services/post-thread-microservice.js +388 -6
  97. package/lib/services/proxy-services/post-thread-microservice.js.map +1 -1
  98. package/lib/services/proxy-services/reaction-microservice.d.ts +161 -3
  99. package/lib/services/proxy-services/reaction-microservice.js +474 -2
  100. package/lib/services/proxy-services/reaction-microservice.js.map +1 -1
  101. package/lib/services/reaction-service.d.ts +124 -4
  102. package/lib/services/reaction-service.js +415 -3
  103. package/lib/services/reaction-service.js.map +1 -1
  104. package/lib/services/redis-cache-manager.d.ts +18 -0
  105. package/lib/services/redis-cache-manager.js +83 -0
  106. package/lib/services/redis-cache-manager.js.map +1 -0
  107. package/lib/store/models/account-token-store.d.ts +1 -1
  108. package/lib/store/models/account-token-store.js.map +1 -1
  109. package/lib/store/models/channel.d.ts +2 -3
  110. package/lib/store/models/channel.js +181 -72
  111. package/lib/store/models/channel.js.map +1 -1
  112. package/lib/store/models/post-thread.d.ts +3 -3
  113. package/lib/store/models/post-thread.js +96 -14
  114. package/lib/store/models/post-thread.js.map +1 -1
  115. package/lib/store/models/post.d.ts +2 -3
  116. package/lib/store/models/post.js +143 -23
  117. package/lib/store/models/post.js.map +1 -1
  118. package/lib/store/models/reaction.d.ts +2 -3
  119. package/lib/store/models/reaction.js +67 -8
  120. package/lib/store/models/reaction.js.map +1 -1
  121. package/lib/store/repositories/__tests__/__fixtures__/team-repository.d.ts +3 -3
  122. package/lib/store/repositories/channel-repository.d.ts +6 -6
  123. package/lib/store/repositories/channel-repository.js +5 -2
  124. package/lib/store/repositories/channel-repository.js.map +1 -1
  125. package/lib/store/repositories/post-repository.d.ts +6 -6
  126. package/lib/store/repositories/post-repository.js +5 -2
  127. package/lib/store/repositories/post-repository.js.map +1 -1
  128. package/lib/store/repositories/post-thread-repository.d.ts +6 -6
  129. package/lib/store/repositories/post-thread-repository.js +5 -2
  130. package/lib/store/repositories/post-thread-repository.js.map +1 -1
  131. package/lib/store/repositories/reaction-repository.d.ts +6 -6
  132. package/lib/store/repositories/reaction-repository.js +5 -2
  133. package/lib/store/repositories/reaction-repository.js.map +1 -1
  134. package/lib/templates/constants/SERVER_TYPES.ts.template +0 -3
  135. package/lib/templates/repositories/ChannelRepository.ts.template +3 -3
  136. package/lib/templates/repositories/PostRepository.ts.template +3 -3
  137. package/lib/templates/repositories/PostThreadRepository.ts.template +3 -3
  138. package/lib/templates/repositories/ReactionRepository.ts.template +3 -4
  139. package/lib/templates/services/ChannelService.ts.template +280 -39
  140. package/lib/templates/services/ExtendedTokenAccountService.ts.template +104 -9
  141. package/lib/templates/services/MessengerNotificationService.ts.template +94 -19
  142. package/lib/templates/services/PostService.ts.template +184 -20
  143. package/lib/templates/services/PostThreadService.ts.template +151 -6
  144. package/lib/templates/services/ReactionService.ts.template +129 -3
  145. package/lib/templates/services/RedisCacheManager.ts.template +22 -0
  146. package/package.json +6 -5
  147. package/lib/interfaces/context.d.ts +0 -14
  148. package/lib/store/models/common-options.js +0 -20
  149. package/lib/store/models/common-options.js.map +0 -1
@@ -1,44 +1,190 @@
1
- import { IChannel, IChannelUnread, IPost, IUserAccount, IChannelRepository, IChannelService, IPostService, ISaveChannelParams, ISaveDirectChannelParams, ISavePublicChannelParams, INotificationProps, ICreateDirectChannelParams, ISaveMembersToChannelParams } from 'common';
2
- import { BaseService } from '@common-stack/store-mongo';
3
- export declare class ChannelService extends BaseService<IChannel, Omit<IChannel, 'id'>> implements IChannelService {
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, IRedisCacheManager, 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
- constructor(repository: IChannelRepository, postService: IPostService);
33
+ protected readonly broker?: ServiceBroker;
34
+ protected readonly redisCacheManager?: IRedisCacheManager;
35
+ protected readonly redisClient?: Redis;
36
+ protected readonly onChannelCreated: Emitter<{
37
+ channel: AsDomainType<IChannelModel>;
38
+ userContext?: IUserContext;
39
+ }>;
40
+ protected readonly onChannelUpdated: Emitter<{
41
+ channel: AsDomainType<IChannelModel>;
42
+ oldChannel: AsDomainType<IChannelModel>;
43
+ userContext?: IUserContext;
44
+ }>;
45
+ protected readonly onChannelDeleted: Emitter<{
46
+ channelId: string;
47
+ channelName?: string;
48
+ userContext?: IUserContext;
49
+ }>;
50
+ protected readonly onChannelRestored: Emitter<{
51
+ channel: AsDomainType<IChannelModel>;
52
+ userContext?: IUserContext;
53
+ }>;
54
+ protected readonly onMemberAdded: Emitter<{
55
+ channelId: string;
56
+ memberId: string;
57
+ userContext?: IUserContext;
58
+ }>;
59
+ protected readonly onMemberRemoved: Emitter<{
60
+ channelId: string;
61
+ memberId: string;
62
+ userContext?: IUserContext;
63
+ }>;
64
+ protected readonly onChannelViewed: Emitter<{
65
+ channelId: string;
66
+ userId: string;
67
+ timestamp: Date;
68
+ }>;
69
+ protected readonly toDispose: DisposableCollection;
70
+ private logger;
71
+ constructor(repository: IChannelRepository, postService: IPostService, broker?: ServiceBroker, redisCacheManager?: IRedisCacheManager, redisClient?: Redis, logger?: CdmLogger.ILogger);
72
+ /**
73
+ * Disposes of resources used by the service
74
+ */
75
+ dispose(): void;
76
+ /**
77
+ * Helper method to make service calls
78
+ * @param command - Command to execute
79
+ * @param params - Command parameters
80
+ * @param topic - Service topic
81
+ * @param opts - Call options
82
+ * @returns Command result
83
+ */
84
+ private callAction;
85
+ /**
86
+ * Enhanced method to check if a user is a member of a specific channel
87
+ *
88
+ * @description Verifies channel membership with proper error handling and logging
89
+ *
90
+ * @param {string} channelId - The ID of the channel to check
91
+ * @param {string} user - The ID of the user
92
+ * @returns {Promise<boolean>} - True if the user is a member
93
+ */
7
94
  isMember(channelId: string, user: string): Promise<boolean>;
8
- private static getDmNameFromIds;
95
+ /**
96
+ * Enhanced method to get default notification properties
97
+ *
98
+ * @description Retrieves default notification settings with extensibility
99
+ *
100
+ * @returns {INotificationProps} - Default notification properties
101
+ */
9
102
  get defaultNotifyProps(): INotificationProps;
103
+ /**
104
+ * Enhanced method to get maximum channels per team with configuration support
105
+ *
106
+ * @description Retrieves channel limit with future configuration support
107
+ *
108
+ * @param {string} teamId - The ID of the team
109
+ * @returns {Promise<number>} - Maximum number of channels allowed
110
+ */
10
111
  private static getMaxChannelsPerTeam;
112
+ /**
113
+ * Enhanced method to get current channel count per team
114
+ *
115
+ * @description Counts active channels for a team with proper error handling
116
+ *
117
+ * @param {string} team - The team identifier
118
+ * @returns {Promise<number>} - Current channel count
119
+ */
11
120
  private getCurrentChannelCountPerTeam;
12
- createDirectChannel(data: ICreateDirectChannelParams): Promise<IChannel>;
13
- saveDirectChannel(channel: ISaveDirectChannelParams): Promise<IChannel>;
14
- addMemberToChannel(channelId: any, memberId: any): Promise<IChannel>;
15
- saveMembersToChannel(data: ISaveMembersToChannelParams): Promise<any>;
16
- saveChannel(data: ISaveChannelParams): Promise<IChannel>;
17
- savePublicChannel(data: ISavePublicChannelParams): Promise<IChannel>;
18
- getChannelUnread(channelId: string, userId: string): Promise<IChannelUnread>;
19
- getPinnedPosts(channelId: string): Promise<IPost[]>;
20
- restore(channelId: string, time: Date): Promise<IChannel>;
21
- getByName(title: string): Promise<IChannel>;
22
- getByNameIncludeDeleted(team: string, title: string): Promise<IChannel>;
23
- getByNames(team: string, titles: string[]): Promise<IChannel[]>;
24
- getChannelCounts(team: string, user: string): Promise<any>;
25
- getChannels(team: string, user: string, includeDeleted: boolean, lastDeleteAt: number, orgName: string): Promise<IChannel[]>;
121
+ /**
122
+ * Enhanced method to generate DM name from user IDs
123
+ *
124
+ * @description Creates a standardized direct message channel name
125
+ *
126
+ * @param {string} senderId - The sender's user ID
127
+ * @param {string} receiverId - The receiver's user ID
128
+ * @returns {string} - Generated DM name
129
+ */
130
+ private static getDmNameFromIds;
131
+ /**
132
+ * Enhanced method to create a direct channel between users
133
+ *
134
+ * @description Creates direct channels with comprehensive validation and error handling
135
+ *
136
+ * @param {ICreateDirectChannelParams} data - The direct channel creation parameters
137
+ * @returns {Promise<AsDomainType<IChannelModel> | Error>} - The created channel or error
138
+ */
139
+ createDirectChannel(data: ICreateDirectChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
140
+ /**
141
+ * Enhanced method to save a direct channel
142
+ *
143
+ * @description Saves direct channels with comprehensive validation
144
+ *
145
+ * @param {ISaveDirectChannelParams} channel - The direct channel parameters
146
+ * @returns {Promise<AsDomainType<IChannelModel> | Error>} - The created channel or error
147
+ */
148
+ saveDirectChannel(channel: ISaveDirectChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
149
+ /**
150
+ * Enhanced method to add a member to a channel
151
+ *
152
+ * @description Adds a single member to a channel with comprehensive validation and event firing
153
+ *
154
+ * @param {string} channelId - The ID of the channel
155
+ * @param {string} memberId - The ID of the member to add
156
+ * @returns {Promise<AsDomainType<IChannelModel> | Error>} - The updated channel or error
157
+ */
158
+ addMemberToChannel(channelId: string, memberId: string): Promise<AsDomainType<IChannelModel> | Error>;
159
+ saveMembersToChannel(data: ISaveMembersToChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
160
+ saveChannel(data: ISaveChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
161
+ savePublicChannel(data: ISavePublicChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
162
+ getChannelUnread(channelId: string, userId: string): Promise<IChannelUnread | Error>;
163
+ getPinnedPosts(channelId: string): Promise<IPost[] | Error>;
164
+ getFromMaster(id: string): Promise<AsDomainType<IChannelModel> | Error>;
165
+ restore(channelId: string, time: Date): Promise<void>;
166
+ getByName(title: string): Promise<AsDomainType<IChannelModel>>;
167
+ getByNameIncludeDeleted(teamId: string, name: string): Promise<AsDomainType<IChannelModel> | Error>;
168
+ getByNames(teamId: string, names: string[]): Promise<Array<AsDomainType<IChannelModel>> | Error>;
169
+ getChannelCounts(teamId: string, userId: string): Promise<any | Error>;
170
+ getChannels(teamId: string, userId: string, includeDeleted: boolean, lastDeleteAt: number, orgId: string): Promise<Array<AsDomainType<IChannelModel>> | Error>;
26
171
  private generateCriteria;
27
- deleteChannel(id: string): Promise<boolean>;
28
- getDeleted(teamId: string, offset: number, limit: number, userId: string): Promise<IChannel[]>;
29
- getDeletedByName(teamId: string, name: string): Promise<IChannel>;
30
- getFromMaster(id: string): Promise<IChannel>;
31
- getMoreChannels(teamId: string, userId: string, offset: number, limit: number): Promise<IChannel[]>;
32
- getPrivateChannelsForTeam(teamId: string, offset: number, limit: number): Promise<IChannel[]>;
33
- getPublicChannelsByIdsForTeam(teamId: string, channelsIds: string[]): Promise<IChannel[]>;
34
- getPublicChannelsForTeam(teamId: string, offset: number, limit: number): Promise<IChannel[]>;
35
- getTeamChannels(teamId: string): Promise<IChannel[]>;
172
+ deleteChannel(id: string): Promise<boolean | Error>;
173
+ getDeleted(teamId: string, offset: number, limit: number, userId: string): Promise<Array<AsDomainType<IChannelModel>> | Error>;
174
+ getDeletedByName(teamId: string, name: string): Promise<AsDomainType<IChannelModel> | Error>;
175
+ getMoreChannels(teamId: string, userId: string, offset: number, limit: number): Promise<Array<AsDomainType<IChannelModel>> | Error>;
176
+ getPrivateChannelsForTeam(teamId: string, offset: number, limit: number): Promise<Array<AsDomainType<IChannelModel>> | Error>;
177
+ getPublicChannelsByIdsForTeam(teamId: string, channelsIds: string[]): Promise<Array<AsDomainType<IChannelModel>> | Error>;
178
+ getPublicChannelsForTeam(teamId: string, offset: number, limit: number): Promise<Array<AsDomainType<IChannelModel>> | Error>;
179
+ getTeamChannels(teamId: string): Promise<Array<AsDomainType<IChannelModel>> | Error>;
36
180
  hideChannel(id: string): Promise<boolean>;
37
- invalidateChannelByName(teamId: string, name: string): Promise<void>;
38
181
  leaveChannel(id: string): Promise<boolean>;
39
182
  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[]>;
183
+ permanentDelete(channelId: string): Promise<void | Error>;
184
+ permanentDeleteByTeam(teamId: string): Promise<void | Error>;
185
+ permanentDeleteMembersByChannel(channelId: string): Promise<void | Error>;
186
+ saveMultipleMembers(members: IUserAccount[]): Promise<IUserAccount[] | Error>;
187
+ invalidateChannelByName(teamId: string, name: string): Promise<void>;
44
188
  }
189
+ declare const _default: any;
190
+ export default _default;