@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.
Files changed (144) hide show
  1. package/lib/containers/containers.js +3 -1
  2. package/lib/containers/containers.js.map +1 -1
  3. package/lib/containers/context-services-from-container.d.ts +2 -2
  4. package/lib/containers/context-services-from-container.js +2 -1
  5. package/lib/containers/context-services-from-container.js.map +1 -1
  6. package/lib/graphql/resolvers/channel-member.d.ts +3 -3
  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 -3
  10. package/lib/graphql/resolvers/channel.js +275 -53
  11. package/lib/graphql/resolvers/channel.js.map +1 -1
  12. package/lib/graphql/resolvers/extended-token-account.d.ts +3 -32
  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 -31
  16. package/lib/graphql/resolvers/post-thread.d.ts +2 -3
  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 +697 -234
  21. package/lib/graphql/resolvers/post.js.map +1 -1
  22. package/lib/graphql/resolvers/reaction.d.ts +3 -3
  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 +331 -38
  28. package/lib/graphql/schema/channel.graphql.js +1 -1
  29. package/lib/graphql/schema/post-thread.graphql +166 -21
  30. package/lib/graphql/schema/post-thread.graphql.js +1 -1
  31. package/lib/graphql/schema/post.graphql +280 -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 -2
  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 +178 -33
  71. package/lib/services/channel-service.js +735 -276
  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/messenger-notification-service.d.ts +106 -13
  77. package/lib/services/messenger-notification-service.js +824 -442
  78. package/lib/services/messenger-notification-service.js.map +1 -1
  79. package/lib/services/post-service.d.ts +172 -16
  80. package/lib/services/post-service.js +580 -113
  81. package/lib/services/post-service.js.map +1 -1
  82. package/lib/services/post-thread-service.d.ts +114 -5
  83. package/lib/services/post-thread-service.js +400 -13
  84. package/lib/services/post-thread-service.js.map +1 -1
  85. package/lib/services/proxy-services/channel-microservice.d.ts +5 -3
  86. package/lib/services/proxy-services/channel-microservice.js +19 -10
  87. package/lib/services/proxy-services/channel-microservice.js.map +1 -1
  88. package/lib/services/proxy-services/messenger-notification-microservice.d.ts +128 -8
  89. package/lib/services/proxy-services/messenger-notification-microservice.js +324 -29
  90. package/lib/services/proxy-services/messenger-notification-microservice.js.map +1 -1
  91. package/lib/services/proxy-services/post-microservice.d.ts +186 -12
  92. package/lib/services/proxy-services/post-microservice.js +543 -54
  93. package/lib/services/proxy-services/post-microservice.js.map +1 -1
  94. package/lib/services/proxy-services/post-thread-microservice.d.ts +134 -3
  95. package/lib/services/proxy-services/post-thread-microservice.js +388 -6
  96. package/lib/services/proxy-services/post-thread-microservice.js.map +1 -1
  97. package/lib/services/proxy-services/reaction-microservice.d.ts +161 -3
  98. package/lib/services/proxy-services/reaction-microservice.js +474 -2
  99. package/lib/services/proxy-services/reaction-microservice.js.map +1 -1
  100. package/lib/services/reaction-service.d.ts +124 -4
  101. package/lib/services/reaction-service.js +415 -3
  102. package/lib/services/reaction-service.js.map +1 -1
  103. package/lib/store/models/account-token-store.d.ts +1 -1
  104. package/lib/store/models/account-token-store.js.map +1 -1
  105. package/lib/store/models/channel.d.ts +2 -3
  106. package/lib/store/models/channel.js +180 -71
  107. package/lib/store/models/channel.js.map +1 -1
  108. package/lib/store/models/post-thread.d.ts +3 -3
  109. package/lib/store/models/post-thread.js +96 -14
  110. package/lib/store/models/post-thread.js.map +1 -1
  111. package/lib/store/models/post.d.ts +2 -3
  112. package/lib/store/models/post.js +143 -23
  113. package/lib/store/models/post.js.map +1 -1
  114. package/lib/store/models/reaction.d.ts +2 -3
  115. package/lib/store/models/reaction.js +67 -8
  116. package/lib/store/models/reaction.js.map +1 -1
  117. package/lib/store/repositories/__tests__/__fixtures__/team-repository.d.ts +3 -3
  118. package/lib/store/repositories/channel-repository.d.ts +6 -6
  119. package/lib/store/repositories/channel-repository.js +5 -2
  120. package/lib/store/repositories/channel-repository.js.map +1 -1
  121. package/lib/store/repositories/post-repository.d.ts +6 -6
  122. package/lib/store/repositories/post-repository.js +5 -2
  123. package/lib/store/repositories/post-repository.js.map +1 -1
  124. package/lib/store/repositories/post-thread-repository.d.ts +6 -6
  125. package/lib/store/repositories/post-thread-repository.js +5 -2
  126. package/lib/store/repositories/post-thread-repository.js.map +1 -1
  127. package/lib/store/repositories/reaction-repository.d.ts +6 -6
  128. package/lib/store/repositories/reaction-repository.js +5 -2
  129. package/lib/store/repositories/reaction-repository.js.map +1 -1
  130. package/lib/templates/constants/SERVER_TYPES.ts.template +0 -3
  131. package/lib/templates/repositories/ChannelRepository.ts.template +3 -3
  132. package/lib/templates/repositories/PostRepository.ts.template +3 -3
  133. package/lib/templates/repositories/PostThreadRepository.ts.template +3 -3
  134. package/lib/templates/repositories/ReactionRepository.ts.template +3 -4
  135. package/lib/templates/services/ChannelService.ts.template +278 -39
  136. package/lib/templates/services/ExtendedTokenAccountService.ts.template +107 -3
  137. package/lib/templates/services/MessengerNotificationService.ts.template +94 -19
  138. package/lib/templates/services/PostService.ts.template +184 -20
  139. package/lib/templates/services/PostThreadService.ts.template +151 -6
  140. package/lib/templates/services/ReactionService.ts.template +129 -3
  141. package/package.json +4 -4
  142. package/lib/interfaces/context.d.ts +0 -14
  143. package/lib/store/models/common-options.js +0 -20
  144. package/lib/store/models/common-options.js.map +0 -1
@@ -1,44 +1,189 @@
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, 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 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
- private static getDmNameFromIds;
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
- 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[]>;
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<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[]>;
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;