@messenger-box/platform-server 10.0.3-alpha.50 → 10.0.3-alpha.54

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 (111) hide show
  1. package/lib/containers/containers.js.map +1 -1
  2. package/lib/graphql/resolvers/channel-member.d.ts +2 -1
  3. package/lib/graphql/resolvers/channel-member.js +13 -3
  4. package/lib/graphql/resolvers/channel-member.js.map +1 -1
  5. package/lib/graphql/resolvers/channel.d.ts +2 -1
  6. package/lib/graphql/resolvers/channel.js +260 -126
  7. package/lib/graphql/resolvers/channel.js.map +1 -1
  8. package/lib/graphql/resolvers/extended-token-account.d.ts +2 -1
  9. package/lib/graphql/resolvers/extended-token-account.js +90 -23
  10. package/lib/graphql/resolvers/extended-token-account.js.map +1 -1
  11. package/lib/graphql/resolvers/post-thread.js +285 -179
  12. package/lib/graphql/resolvers/post-thread.js.map +1 -1
  13. package/lib/graphql/resolvers/post.js +669 -242
  14. package/lib/graphql/resolvers/post.js.map +1 -1
  15. package/lib/graphql/resolvers/reaction.d.ts +2 -1
  16. package/lib/graphql/resolvers/reaction.js +96 -14
  17. package/lib/graphql/resolvers/reaction.js.map +1 -1
  18. package/lib/graphql/schema/channel.graphql +331 -39
  19. package/lib/graphql/schema/channel.graphql.js +1 -1
  20. package/lib/graphql/schema/post-thread.graphql +157 -21
  21. package/lib/graphql/schema/post-thread.graphql.js +1 -1
  22. package/lib/graphql/schema/post.graphql +265 -40
  23. package/lib/graphql/schema/post.graphql.js +1 -1
  24. package/lib/graphql/schema/reaction.graphql +71 -13
  25. package/lib/graphql/schema/reaction.graphql.js +1 -1
  26. package/lib/graphql/schema/users.graphql +76 -13
  27. package/lib/graphql/schema/users.graphql.js +1 -1
  28. package/lib/plugins/channel-moleculer-service.d.ts +21 -1
  29. package/lib/plugins/channel-moleculer-service.js +417 -115
  30. package/lib/plugins/channel-moleculer-service.js.map +1 -1
  31. package/lib/plugins/extended-token-account-moleculer-service.d.ts +25 -1
  32. package/lib/plugins/extended-token-account-moleculer-service.js +348 -22
  33. package/lib/plugins/extended-token-account-moleculer-service.js.map +1 -1
  34. package/lib/plugins/messenger-notification-moleculer-service.d.ts +26 -3
  35. package/lib/plugins/messenger-notification-moleculer-service.js +403 -57
  36. package/lib/plugins/messenger-notification-moleculer-service.js.map +1 -1
  37. package/lib/plugins/post-moleculer-service.d.ts +84 -20
  38. package/lib/plugins/post-moleculer-service.js +891 -259
  39. package/lib/plugins/post-moleculer-service.js.map +1 -1
  40. package/lib/plugins/post-thread-moleculer-service.d.ts +33 -1
  41. package/lib/plugins/post-thread-moleculer-service.js +320 -13
  42. package/lib/plugins/post-thread-moleculer-service.js.map +1 -1
  43. package/lib/services/channel-service.d.ts +185 -33
  44. package/lib/services/channel-service.js +767 -282
  45. package/lib/services/channel-service.js.map +1 -1
  46. package/lib/services/extended-token-account-service.d.ts +127 -14
  47. package/lib/services/extended-token-account-service.js +459 -52
  48. package/lib/services/extended-token-account-service.js.map +1 -1
  49. package/lib/services/messenger-notification-service.d.ts +106 -13
  50. package/lib/services/messenger-notification-service.js +824 -442
  51. package/lib/services/messenger-notification-service.js.map +1 -1
  52. package/lib/services/post-service.d.ts +176 -16
  53. package/lib/services/post-service.js +553 -119
  54. package/lib/services/post-service.js.map +1 -1
  55. package/lib/services/post-thread-service.d.ts +114 -6
  56. package/lib/services/post-thread-service.js +397 -18
  57. package/lib/services/post-thread-service.js.map +1 -1
  58. package/lib/services/proxy-services/channel-microservice.d.ts +4 -3
  59. package/lib/services/proxy-services/channel-microservice.js +12 -9
  60. package/lib/services/proxy-services/channel-microservice.js.map +1 -1
  61. package/lib/services/proxy-services/messenger-notification-microservice.d.ts +128 -8
  62. package/lib/services/proxy-services/messenger-notification-microservice.js +324 -29
  63. package/lib/services/proxy-services/messenger-notification-microservice.js.map +1 -1
  64. package/lib/services/proxy-services/post-microservice.d.ts +186 -13
  65. package/lib/services/proxy-services/post-microservice.js +543 -59
  66. package/lib/services/proxy-services/post-microservice.js.map +1 -1
  67. package/lib/services/proxy-services/post-thread-microservice.d.ts +134 -4
  68. package/lib/services/proxy-services/post-thread-microservice.js +387 -10
  69. package/lib/services/proxy-services/post-thread-microservice.js.map +1 -1
  70. package/lib/services/proxy-services/reaction-microservice.d.ts +161 -3
  71. package/lib/services/proxy-services/reaction-microservice.js +474 -2
  72. package/lib/services/proxy-services/reaction-microservice.js.map +1 -1
  73. package/lib/services/reaction-service.d.ts +124 -4
  74. package/lib/services/reaction-service.js +415 -3
  75. package/lib/services/reaction-service.js.map +1 -1
  76. package/lib/store/models/channel.d.ts +2 -3
  77. package/lib/store/models/channel.js +169 -71
  78. package/lib/store/models/channel.js.map +1 -1
  79. package/lib/store/models/post-thread.d.ts +3 -3
  80. package/lib/store/models/post-thread.js +96 -14
  81. package/lib/store/models/post-thread.js.map +1 -1
  82. package/lib/store/models/post.d.ts +2 -3
  83. package/lib/store/models/post.js +85 -18
  84. package/lib/store/models/post.js.map +1 -1
  85. package/lib/store/models/reaction.d.ts +2 -3
  86. package/lib/store/models/reaction.js +67 -8
  87. package/lib/store/models/reaction.js.map +1 -1
  88. package/lib/store/repositories/channel-repository.d.ts +6 -6
  89. package/lib/store/repositories/channel-repository.js +5 -2
  90. package/lib/store/repositories/channel-repository.js.map +1 -1
  91. package/lib/store/repositories/post-repository.d.ts +6 -6
  92. package/lib/store/repositories/post-repository.js +5 -2
  93. package/lib/store/repositories/post-repository.js.map +1 -1
  94. package/lib/store/repositories/post-thread-repository.d.ts +6 -6
  95. package/lib/store/repositories/post-thread-repository.js +5 -2
  96. package/lib/store/repositories/post-thread-repository.js.map +1 -1
  97. package/lib/store/repositories/reaction-repository.d.ts +6 -6
  98. package/lib/store/repositories/reaction-repository.js +5 -2
  99. package/lib/store/repositories/reaction-repository.js.map +1 -1
  100. package/lib/templates/repositories/ChannelRepository.ts.template +3 -3
  101. package/lib/templates/repositories/PostRepository.ts.template +3 -3
  102. package/lib/templates/repositories/PostThreadRepository.ts.template +3 -3
  103. package/lib/templates/repositories/ReactionRepository.ts.template +3 -4
  104. package/lib/templates/services/ChannelService.ts.template +277 -38
  105. package/lib/templates/services/ExtendedTokenAccountService.ts.template +93 -8
  106. package/lib/templates/services/PostService.ts.template +182 -20
  107. package/lib/templates/services/PostThreadService.ts.template +100 -5
  108. package/lib/templates/services/ReactionService.ts.template +129 -2
  109. package/package.json +3 -3
  110. package/lib/store/models/common-options.js +0 -20
  111. package/lib/store/models/common-options.js.map +0 -1
@@ -1,44 +1,196 @@
1
- import { IChannel, IChannelUnread, IPost, IUserAccount, IChannelRepository, IChannelService, IPostService, ISaveChannelParams, ISaveDirectChannelParams, ISavePublicChannelParams, INotificationProps, ICreateDirectChannelParams, ISaveMembersToChannelParams } from 'common/server';
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
+ * Invalidates channel cache entries
87
+ * @param channelId - Channel ID
88
+ * @param channelName - Channel name
89
+ */
90
+ private invalidateChannelCache;
91
+ /**
92
+ * Enhanced method to check if a user is a member of a specific channel
93
+ *
94
+ * @description Verifies channel membership with proper error handling and logging
95
+ *
96
+ * @param {string} channelId - The ID of the channel to check
97
+ * @param {string} user - The ID of the user
98
+ * @returns {Promise<boolean>} - True if the user is a member
99
+ */
7
100
  isMember(channelId: string, user: string): Promise<boolean>;
8
- private static getDmNameFromIds;
101
+ /**
102
+ * Enhanced method to get default notification properties
103
+ *
104
+ * @description Retrieves default notification settings with extensibility
105
+ *
106
+ * @returns {INotificationProps} - Default notification properties
107
+ */
9
108
  get defaultNotifyProps(): INotificationProps;
109
+ /**
110
+ * Enhanced method to get maximum channels per team with configuration support
111
+ *
112
+ * @description Retrieves channel limit with future configuration support
113
+ *
114
+ * @param {string} teamId - The ID of the team
115
+ * @returns {Promise<number>} - Maximum number of channels allowed
116
+ */
10
117
  private static getMaxChannelsPerTeam;
118
+ /**
119
+ * Enhanced method to get current channel count per team
120
+ *
121
+ * @description Counts active channels for a team with proper error handling
122
+ *
123
+ * @param {string} team - The team identifier
124
+ * @returns {Promise<number>} - Current channel count
125
+ */
11
126
  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[]>;
127
+ /**
128
+ * Enhanced method to generate DM name from user IDs
129
+ *
130
+ * @description Creates a standardized direct message channel name
131
+ *
132
+ * @param {string} senderId - The sender's user ID
133
+ * @param {string} receiverId - The receiver's user ID
134
+ * @returns {string} - Generated DM name
135
+ */
136
+ private static getDmNameFromIds;
137
+ /**
138
+ * Enhanced method to create a direct channel between users
139
+ *
140
+ * @description Creates direct channels with comprehensive validation and error handling
141
+ *
142
+ * @param {ICreateDirectChannelParams} data - The direct channel creation parameters
143
+ * @returns {Promise<AsDomainType<IChannelModel> | Error>} - The created channel or error
144
+ */
145
+ createDirectChannel(data: ICreateDirectChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
146
+ /**
147
+ * Enhanced method to save a direct channel
148
+ *
149
+ * @description Saves direct channels with comprehensive validation
150
+ *
151
+ * @param {ISaveDirectChannelParams} channel - The direct channel parameters
152
+ * @returns {Promise<AsDomainType<IChannelModel> | Error>} - The created channel or error
153
+ */
154
+ saveDirectChannel(channel: ISaveDirectChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
155
+ /**
156
+ * Enhanced method to add a member to a channel
157
+ *
158
+ * @description Adds a single member to a channel with comprehensive validation and event firing
159
+ *
160
+ * @param {string} channelId - The ID of the channel
161
+ * @param {string} memberId - The ID of the member to add
162
+ * @returns {Promise<AsDomainType<IChannelModel> | Error>} - The updated channel or error
163
+ */
164
+ addMemberToChannel(channelId: string, memberId: string): Promise<AsDomainType<IChannelModel> | Error>;
165
+ saveMembersToChannel(data: ISaveMembersToChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
166
+ saveChannel(data: ISaveChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
167
+ savePublicChannel(data: ISavePublicChannelParams): Promise<AsDomainType<IChannelModel> | Error>;
168
+ getChannelUnread(channelId: string, userId: string): Promise<IChannelUnread | Error>;
169
+ getPinnedPosts(channelId: string): Promise<IPost[] | Error>;
170
+ getFromMaster(id: string): Promise<AsDomainType<IChannelModel> | Error>;
171
+ restore(channelId: string, time: Date): Promise<void>;
172
+ getByName(title: string): Promise<IChannelModel>;
173
+ getByNameIncludeDeleted(teamId: string, name: string): Promise<AsDomainType<IChannelModel> | Error>;
174
+ getByNames(teamId: string, names: string[]): Promise<Array<AsDomainType<IChannelModel>> | Error>;
175
+ getChannelCounts(teamId: string, userId: string): Promise<any | Error>;
176
+ getChannels(teamId: string, userId: string, includeDeleted: boolean, lastDeleteAt: number, orgId: string): Promise<Array<AsDomainType<IChannelModel>> | Error>;
26
177
  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[]>;
178
+ deleteChannel(id: string): Promise<boolean | Error>;
179
+ getDeleted(teamId: string, offset: number, limit: number, userId: string): Promise<Array<AsDomainType<IChannelModel>> | Error>;
180
+ getDeletedByName(teamId: string, name: string): Promise<AsDomainType<IChannelModel> | Error>;
181
+ getMoreChannels(teamId: string, userId: string, offset: number, limit: number): Promise<Array<AsDomainType<IChannelModel>> | Error>;
182
+ getPrivateChannelsForTeam(teamId: string, offset: number, limit: number): Promise<Array<AsDomainType<IChannelModel>> | Error>;
183
+ getPublicChannelsByIdsForTeam(teamId: string, channelsIds: string[]): Promise<Array<AsDomainType<IChannelModel>> | Error>;
184
+ getPublicChannelsForTeam(teamId: string, offset: number, limit: number): Promise<Array<AsDomainType<IChannelModel>> | Error>;
185
+ getTeamChannels(teamId: string): Promise<Array<AsDomainType<IChannelModel>> | Error>;
36
186
  hideChannel(id: string): Promise<boolean>;
37
- invalidateChannelByName(teamId: string, name: string): Promise<void>;
38
187
  leaveChannel(id: string): Promise<boolean>;
39
188
  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[]>;
189
+ permanentDelete(channelId: string): Promise<void | Error>;
190
+ permanentDeleteByTeam(teamId: string): Promise<void | Error>;
191
+ permanentDeleteMembersByChannel(channelId: string): Promise<void | Error>;
192
+ saveMultipleMembers(members: IUserAccount[]): Promise<IUserAccount[] | Error>;
193
+ invalidateChannelByName(teamId: string, name: string): Promise<void>;
44
194
  }
195
+ declare const _default: any;
196
+ export default _default;